mirror of
https://github.com/simtactics/mysimulation.git
synced 2025-07-15 18:46:42 -04:00
Added FSO.Files for use with the API server
Don't ask me. FreeSO is the prime example of dependency hell.
This commit is contained in:
parent
4b5e584eeb
commit
8fec258215
104 changed files with 14653 additions and 163 deletions
165
server/tso.files/Formats/IFF/Chunks/SIMI.cs
Executable file
165
server/tso.files/Formats/IFF/Chunks/SIMI.cs
Executable file
|
@ -0,0 +1,165 @@
|
|||
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<items; i++)
|
||||
{
|
||||
var dat = io.ReadInt16();
|
||||
if (i < GlobalData.Length)
|
||||
GlobalData[i] = dat;
|
||||
}
|
||||
|
||||
Unknown1 = io.ReadInt16();
|
||||
Unknown2 = io.ReadInt32();
|
||||
Unknown3 = io.ReadInt32();
|
||||
GUID1 = io.ReadInt32();
|
||||
GUID2 = io.ReadInt32();
|
||||
Unknown4 = io.ReadInt32();
|
||||
LotValue = io.ReadInt32();
|
||||
ObjectsValue = io.ReadInt32();
|
||||
ArchitectureValue = io.ReadInt32();
|
||||
|
||||
//short Unknown1 (0x7E1E, 0x702B)
|
||||
//int Unknown2 (2 on house 1, 1 on house 66)
|
||||
//int Unknown3 (0)
|
||||
//int GUID1
|
||||
//int GUID2 (changes on bulldoze)
|
||||
//int Unknown4 (0)
|
||||
//int LotValue
|
||||
//int ObjectsValue
|
||||
//int ArchitectureValue
|
||||
|
||||
//the sims tracked a sim's budget over the past few days of gameplay.
|
||||
//this drove the budget window, which never actually came of much use to anyone ever.
|
||||
|
||||
BudgetDays = new SIMIBudgetDay[6];
|
||||
for (int i=0; i<6; i++)
|
||||
{
|
||||
BudgetDays[i] = new SIMIBudgetDay(io);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Write(IffFile iff, Stream stream)
|
||||
{
|
||||
using (var io = IoWriter.FromStream(stream, ByteOrder.LITTLE_ENDIAN))
|
||||
{
|
||||
io.WriteInt32(0);
|
||||
io.WriteInt32(0x3E);
|
||||
io.WriteCString("IMIS", 4);
|
||||
var items = (Version > 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue