7
7
#include < TFE_Jedi/InfSystem/infSystem.h>
8
8
#include < TFE_Jedi/Task/task.h>
9
9
#include < TFE_Jedi/Level/robject.h>
10
+ #include < TFE_Jedi/Serialization/serialization.h>
11
+ #include < TFE_Jedi/Level/levelData.h>
10
12
#include < TFE_DarkForces/logic.h>
11
13
#include < assert.h>
12
14
#include < stdio.h>
@@ -99,4 +101,52 @@ namespace TFE_Jedi
99
101
inf_sendSectorMessage (sector, msgType);
100
102
inf_sendLinkMessages (sector->infLink , entity, evt, msgType);
101
103
}
104
+
105
+ // Serialisation
106
+ // param0 and param1 are not serialised because they appear to be always set to 0 and never used
107
+ void level_serializeMessageAddresses (Stream* stream)
108
+ {
109
+ if (serialization_getMode () == SMODE_READ)
110
+ {
111
+ message_free ();
112
+ s_messageAddr = allocator_create (sizeof (MessageAddress));
113
+
114
+ s32 msgCount = 0 ;
115
+ SERIALIZE (LevelState_SaveSectorNames, msgCount, 0 );
116
+
117
+ for (s32 m = 0 ; m < msgCount; m++)
118
+ {
119
+ MessageAddress* msgAddr = (MessageAddress*)allocator_newItem (s_messageAddr);
120
+
121
+ u32 nameLength = 0 ;
122
+ SERIALIZE (LevelState_SaveSectorNames, nameLength, 0 );
123
+ for (s32 i = 0 ; i < nameLength; i++)
124
+ {
125
+ SERIALIZE (LevelState_SaveSectorNames, msgAddr->name [i], 0 );
126
+ }
127
+
128
+ serialization_serializeSectorPtr (stream, LevelState_SaveSectorNames, msgAddr->sector );
129
+ }
130
+ }
131
+ else // SMODE_WRITE
132
+ {
133
+ s32 msgCount = allocator_getCount (s_messageAddr);
134
+ SERIALIZE (LevelState_SaveSectorNames, msgCount, 0 );
135
+
136
+ MessageAddress* msgAddr = (MessageAddress*)allocator_getHead (s_messageAddr);
137
+ while (msgAddr)
138
+ {
139
+ u32 nameLength = strlen (msgAddr->name );
140
+ SERIALIZE (LevelState_SaveSectorNames, nameLength, 0 );
141
+ for (s32 i = 0 ; i < nameLength; i++)
142
+ {
143
+ SERIALIZE (LevelState_SaveSectorNames, msgAddr->name [i], 0 );
144
+ }
145
+
146
+ serialization_serializeSectorPtr (stream, LevelState_SaveSectorNames, msgAddr->sector );
147
+
148
+ msgAddr = (MessageAddress*)allocator_getNext (s_messageAddr);
149
+ }
150
+ }
151
+ }
102
152
}
0 commit comments