using FSO.Files.Utils; using System.IO; namespace FSO.Files.Formats.IFF.Chunks { public class SIMI : IffChunk { public uint Version; public short[] GlobalData; public short Unknown1; public int Unknown2; public int Unknown3; public int GUID1; public int GUID2; public int Unknown4; public int LotValue; public int ObjectsValue; public int ArchitectureValue; public SIMIBudgetDay[] BudgetDays; public int PurchaseValue { get { return LotValue + ObjectsValue + (ArchitectureValue * 7) / 10; } } public override void Read(IffFile iff, Stream stream) { using (var io = IoBuffer.FromStream(stream, ByteOrder.LITTLE_ENDIAN)) { io.ReadUInt32(); //pad Version = io.ReadUInt32(); string magic = io.ReadCString(4); var items = (Version > 0x3F) ? 0x40 : 0x20; GlobalData = new short[38]; for (int i=0; i 0x3E) ? 0x40 : 0x20; GlobalData = new short[38]; for (int i = 0; i < items; i++) { if (i < GlobalData.Length) io.WriteInt16(GlobalData[i]); else io.WriteInt16(0); } io.WriteInt16(Unknown1); io.WriteInt32(Unknown2); io.WriteInt32(Unknown3); io.WriteInt32(GUID1); io.WriteInt32(GUID2); io.WriteInt32(Unknown4); io.WriteInt32(LotValue); io.WriteInt32(ObjectsValue); io.WriteInt32(ArchitectureValue); for (int i = 0; i < 6; i++) { BudgetDays[i].Write(io); } } return true; } public class SIMIBudgetDay { public int Valid; public int MiscIncome; public int JobIncome; public int ServiceExpense; public int FoodExpense; public int BillsExpense; public int MiscExpense; public int HouseholdExpense; public int ArchitectureExpense; public SIMIBudgetDay() { } public SIMIBudgetDay(IoBuffer io) { Valid = io.ReadInt32(); if (Valid == 0) return; MiscIncome = io.ReadInt32(); JobIncome = io.ReadInt32(); ServiceExpense = io.ReadInt32(); FoodExpense = io.ReadInt32(); BillsExpense = io.ReadInt32(); MiscExpense = io.ReadInt32(); HouseholdExpense = io.ReadInt32(); ArchitectureExpense = io.ReadInt32(); } public void Write(IoWriter io) { io.WriteInt32(Valid); if (Valid == 0) return; io.WriteInt32(MiscIncome); io.WriteInt32(JobIncome); io.WriteInt32(ServiceExpense); io.WriteInt32(FoodExpense); io.WriteInt32(BillsExpense); io.WriteInt32(MiscIncome); io.WriteInt32(HouseholdExpense); io.WriteInt32(ArchitectureExpense); } } } }