public override GlobalDataType BuildType(GlobalData globalData) { SkyrimBinaryReader br = CreateDataReader(globalData); MiscStats ms = new MiscStats(); ms.count = br.ReadUInt32(); ms.stats = new MiscStat[ms.count]; for (int i = 0; i < ms.count; i++) { MiscStat m = new MiscStat(); m.name = br.ReadWString(); m.category = br.ReadByte(); m.value = br.ReadInt32(); ms.stats[i] = m; } return ms; }
public override bool CanBuild(GlobalData globalData) { return true; }
public override GlobalDataType BuildType(GlobalData globalData) { return new GlobalDataStub(globalData.type); }
protected SkyrimBinaryReader CreateDataReader(GlobalData globalData) { return new SkyrimBinaryReader(new MemoryStream(globalData.data)); }
public abstract bool CanBuild(GlobalData globalData);
public abstract GlobalDataType BuildType(GlobalData globalData);
private GlobalDataType ParseGlobalData(GlobalData gd) { foreach (var factory in gtypeFactories) { if (factory.CanBuild(gd)) { return factory.BuildType(gd); } } throw new ArgumentException("unknown global data type: " + gd.type); }
private GlobalDataType[] ReadGlobalDataTable(int tableSize) { GlobalDataType[] gtab = new GlobalDataType[tableSize]; for (int i = 0; i < tableSize; i++) { GlobalData gd = new GlobalData(); gd.type = br.ReadUInt32(); gd.length = br.ReadUInt32(); gd.data = br.ReadBytes((int)gd.length); gtab[i] = ParseGlobalData(gd); } return gtab; }
public override bool CanBuild(GlobalData globalData) { return globalData.type == 0; }