DatReader class heritage

Start Atlas maker class for generate atlas texture
This commit is contained in:
Troispoils 2024-02-26 17:06:03 +01:00
parent 7fb6345839
commit 18203c539f
6 changed files with 65 additions and 22 deletions

View file

@ -0,0 +1,29 @@
using LandblockExtraction.DatEngine;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;
namespace LandblockExtraction.AtlasMaker;
public class AtlasMaker {
private readonly int TEXTURESIZE = 64;
private PortalEngine portalEngine;
public Dictionary<uint, Vector2> textureCoord;
public AtlasMaker(PortalEngine portalEngine) {
this.portalEngine = portalEngine;
textureCoord = new Dictionary<uint, Vector2>();
}
public void InitTerrainWithTexture() {
Dictionary<uint, uint> TerrainAndSurfaceIndex = new Dictionary<uint, uint>();
foreach(var terrain in portalEngine.cTerrainDesc.terrains) {
TerrainAndSurfaceIndex.Add(terrain.terrainIndex, terrain.surfaceInfo);
}
}
}

View file

@ -1,17 +1,14 @@
using AC2RE.Definitions;
namespace LandblockExtraction.DatEngine {
public class CellEngine {
private DatReader cellReader;
public class CellEngine : DatEngine {
public CellEngine() {
cellReader = new(@"X:\DatFiles\cell_1.dat");
}
public CellEngine() : base(@"X:\DatFiles\cell_1.dat") { }
public CLandBlockData? GetLandBlockData(uint id) {
DataId dataId = new DataId(id);
if (!cellReader.contains(dataId)) return null;
using (var data = cellReader.getFileReader(dataId)) {
if (!datReader.contains(dataId)) return null;
using (var data = datReader.getFileReader(dataId)) {
CLandBlockData cLandBlockData = new(data);
return cLandBlockData;
}

View file

@ -0,0 +1,15 @@
using AC2RE.Definitions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LandblockExtraction.DatEngine;
public class DatEngine {
public DatReader datReader;
public DatEngine(string pathDat) {
datReader = new DatReader(pathDat);
}
}

View file

@ -1,43 +1,40 @@
using AC2RE.Definitions;
namespace LandblockExtraction.DatEngine {
public class PortalEngine {
public class PortalEngine : DatEngine {
private readonly DataId TERRAINDESCID = new DataId(0x12000000);
private readonly DataId SURFACEDESCID = new DataId(0x13000000);
private readonly DataId LANDSCAPEID = new DataId(0x36000000);
private DatReader portalReader;
public CTerrainDesc cTerrainDesc { get; private set; }
public CSurfaceDesc cSurfaceDesc { get; private set; }
public LandScapeDefs landScapeDefs { get; private set; }
public PortalEngine() {
portalReader = new(@"X:\DatFiles\portal.dat");
public PortalEngine() : base(@"X:\DatFiles\portal.dat") {
InitTerrainDesc();
InitSurfaceDesc();
InitLandScapeDesc();
}
public bool InitTerrainDesc() {
if (!portalReader.contains(TERRAINDESCID)) return false;
using (var data = portalReader.getFileReader(TERRAINDESCID)) {
if (!datReader.contains(TERRAINDESCID)) return false;
using (var data = datReader.getFileReader(TERRAINDESCID)) {
if (data == null) return false;
cTerrainDesc = new(data);
}
return true;
}
public bool InitSurfaceDesc() {
if (!portalReader.contains(SURFACEDESCID)) return false;
using (var data = portalReader.getFileReader(SURFACEDESCID)) {
if (!datReader.contains(SURFACEDESCID)) return false;
using (var data = datReader.getFileReader(SURFACEDESCID)) {
if (data == null) return false;
cSurfaceDesc = new(data);
}
return true;
}
public bool InitLandScapeDesc() {
if (!portalReader.contains(LANDSCAPEID)) return false;
using (var data = portalReader.getFileReader(LANDSCAPEID)) {
if (!datReader.contains(LANDSCAPEID)) return false;
using (var data = datReader.getFileReader(LANDSCAPEID)) {
if (data == null) return false;
landScapeDefs = new(data);
}

View file

@ -0,0 +1,9 @@
using AC2RE.Definitions;
namespace LandblockExtraction.DatEngine {
public class TextureEngine : DatEngine {
public TextureEngine() : base(@"X:\DatFiles\highres.dat") {
}
}
}

View file

@ -15,10 +15,6 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Folder Include="AtlasMaker\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Magick.NET-Q16-AnyCPU" Version="13.6.0" />
</ItemGroup>