1 #include "Debug.h"
2 #include "FileMan.h"
3 #include "LoadSaveBasicSoldierCreateStruct.h"
4 #include "LoadSaveData.h"
5 #include "Soldier_Create.h"
6
7
ExtractBasicSoldierCreateStructFromFile(HWFILE const f,BASIC_SOLDIERCREATE_STRUCT & b)8 void ExtractBasicSoldierCreateStructFromFile(HWFILE const f, BASIC_SOLDIERCREATE_STRUCT& b)
9 {
10 BYTE data[52];
11 FileRead(f, data, sizeof(data));
12
13 DataReader d{data};
14 EXTR_BOOL(d, b.fDetailedPlacement)
15 EXTR_SKIP(d, 1)
16 EXTR_U16( d, b.usStartingGridNo)
17 EXTR_I8( d, b.bTeam)
18 EXTR_I8( d, b.bRelativeAttributeLevel)
19 EXTR_I8( d, b.bRelativeEquipmentLevel)
20 EXTR_I8( d, b.bDirection)
21 EXTR_I8( d, b.bOrders)
22 EXTR_I8( d, b.bAttitude)
23 EXTR_I8( d, b.bBodyType)
24 EXTR_SKIP(d, 1)
25 EXTR_I16A(d, b.sPatrolGrid, lengthof(b.sPatrolGrid))
26 EXTR_I8( d, b.bPatrolCnt)
27 EXTR_BOOL(d, b.fOnRoof)
28 EXTR_U8( d, b.ubSoldierClass)
29 EXTR_U8( d, b.ubCivilianGroup)
30 EXTR_BOOL(d, b.fPriorityExistance)
31 EXTR_BOOL(d, b.fHasKeys)
32 EXTR_SKIP(d, 14)
33 Assert(d.getConsumed() == lengthof(data));
34 }
35
36
InjectBasicSoldierCreateStructIntoFile(HWFILE const f,BASIC_SOLDIERCREATE_STRUCT const & b)37 void InjectBasicSoldierCreateStructIntoFile(HWFILE const f, BASIC_SOLDIERCREATE_STRUCT const& b)
38 {
39 BYTE data[52];
40 DataWriter d{data};
41 INJ_BOOL(d, b.fDetailedPlacement)
42 INJ_SKIP(d, 1)
43 INJ_U16( d, b.usStartingGridNo)
44 INJ_I8( d, b.bTeam)
45 INJ_I8( d, b.bRelativeAttributeLevel)
46 INJ_I8( d, b.bRelativeEquipmentLevel)
47 INJ_I8( d, b.bDirection)
48 INJ_I8( d, b.bOrders)
49 INJ_I8( d, b.bAttitude)
50 INJ_I8( d, b.bBodyType)
51 INJ_SKIP(d, 1)
52 INJ_I16A(d, b.sPatrolGrid, lengthof(b.sPatrolGrid))
53 INJ_I8( d, b.bPatrolCnt)
54 INJ_BOOL(d, b.fOnRoof)
55 INJ_U8( d, b.ubSoldierClass)
56 INJ_U8( d, b.ubCivilianGroup)
57 INJ_BOOL(d, b.fPriorityExistance)
58 INJ_BOOL(d, b.fHasKeys)
59 INJ_SKIP(d, 14)
60 Assert(d.getConsumed() == lengthof(data));
61
62 FileWrite(f, data, sizeof(data));
63 }
64