ping *LoadAndFixAnomalyPing(void) { SaveChunk *chunk; ping *newping; sdword size; chunk = LoadNextChunk(); VerifyChunkNoSize(chunk,VARIABLE_STRUCTURE|SAVE_PING); size = sizeofping(((ping *)chunkContents(chunk))); dbgAssert(size == chunk->contentsSize); newping = memAlloc(size,"Ping!",0); memcpy(newping,chunkContents(chunk),size); memFree(chunk); newping->owner = SpaceObjRegistryGetObj((sdword)newping->owner); newping->userID = (sdword)SpaceObjRegistryGetObj((sdword)newping->userID); newping->evaluate = pingAnomalyPingTimeout; if (newping->userDataSize > 0) { SelectAnyCommand *tempsel = (SelectAnyCommand *)LoadSelectionAndFix(); memcpy((newping + 1),tempsel,sizeofSelectCommand(tempsel->numTargets)); memFree(tempsel); } return newping; }
void SaveCloakStruct(CloakStruct *cloakStruct) { SaveChunk *chunk; CloakStruct *savecontents; chunk = CreateChunk(BASIC_STRUCTURE,sizeof(CloakStruct),cloakStruct); savecontents = (CloakStruct *)chunkContents(chunk); savecontents->spaceobj = (SpaceObj *)SpaceObjRegistryGetID(savecontents->spaceobj); SaveThisChunk(chunk); memFree(chunk); }
void SaveDefenseStruct(DefenseStruct *defenseStruct) { SaveChunk *chunk; DefenseStruct *savecontents; chunk = CreateChunk(BASIC_STRUCTURE,sizeof(DefenseStruct),defenseStruct); savecontents = (DefenseStruct *)chunkContents(chunk); savecontents->bullet = (Bullet *) SpaceObjRegistryGetID((SpaceObj *)savecontents->bullet); savecontents->laser = (Bullet *) SpaceObjRegistryGetID((SpaceObj *)savecontents->laser); SaveThisChunk(chunk); memFree(chunk); }
DefenseStruct *LoadDefenseStruct(void) { SaveChunk *chunk; DefenseStruct *defenseStruct; chunk = LoadNextChunk(); VerifyChunk(chunk,BASIC_STRUCTURE,sizeof(DefenseStruct)); defenseStruct = memAlloc(sizeof(DefenseStruct),"DefenseStruct",0); memcpy(defenseStruct,chunkContents(chunk),sizeof(DefenseStruct)); memFree(chunk); return defenseStruct; }
CloakStruct *LoadCloakStruct(void) { SaveChunk *chunk; CloakStruct *cloakStruct; chunk = LoadNextChunk(); VerifyChunk(chunk,BASIC_STRUCTURE,sizeof(CloakStruct)); cloakStruct = memAlloc(sizeof(CloakStruct),"CloakStruct",0); memcpy(cloakStruct,chunkContents(chunk),sizeof(CloakStruct)); memFree(chunk); return cloakStruct; }
void SaveAnomalyPing(ping *tping) { SaveChunk *chunk; sdword size = sizeofping(tping); ping *savecontents; chunk = CreateChunk(VARIABLE_STRUCTURE|SAVE_PING,size,tping); savecontents = (ping *)chunkContents(chunk); savecontents->owner = (SpaceObj *)SpaceObjRegistryGetID(tping->owner); savecontents->userID = SpaceObjRegistryGetID((SpaceObj *)tping->userID); SaveThisChunk(chunk); memFree(chunk); if (tping->userDataSize > 0) { SaveSelection((SpaceObjSelection *) (tping + 1)); } }