mirror of
https://github.com/CTurt/dsgmLib.git
synced 2025-06-18 22:55:33 -04:00
Room saving
This commit is contained in:
parent
b7ff224a95
commit
f7764eaa3f
@ -216,41 +216,6 @@ void DSGM_LeaveRoom(DSGM_Room *room) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char DSGM_SaveRoom(DSGM_Room *room, char *filename) {
|
|
||||||
/*u8 screen;
|
|
||||||
int layerNumber;
|
|
||||||
int group;
|
|
||||||
int object;
|
|
||||||
FILE *f = fopen(filename, "ab");
|
|
||||||
if(!f) return 0;
|
|
||||||
|
|
||||||
DSGM_Debug("Saving room...\n");
|
|
||||||
|
|
||||||
for(screen = 0; screen < 2; screen++) {
|
|
||||||
// Save backgrounds
|
|
||||||
for(layerNumber = 0; layerNumber < 4; layerNumber++) {
|
|
||||||
// Store pointer to background
|
|
||||||
fwrite(&room->layers[screen][layerNumber].background, sizeof(DSGM_Background *), 1, f) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(screen = 0; screen < 2; screen++) {
|
|
||||||
// Save object instances
|
|
||||||
for(group = 0; group < room->objectGroupCount[screen]; group++) {
|
|
||||||
for(object = 0; object < room->objectGroups[screen][group].objectInstanceCount; object++) {
|
|
||||||
DSGM_ObjectInstance *objectInstance = &room->objectGroups[screen][group].objectInstances[object];
|
|
||||||
fwrite(objectInstance, sizeof(DSGM_ObjectInstance), 1, f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
|
|
||||||
DSGM_Debug("Saved\n");*/
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline int DSGM_GetRoomNumberFull(DSGM_Room *rooms, DSGM_Room *room) {
|
inline int DSGM_GetRoomNumberFull(DSGM_Room *rooms, DSGM_Room *room) {
|
||||||
return room - rooms;
|
return room - rooms;
|
||||||
}
|
}
|
||||||
|
@ -12,3 +12,78 @@ inline bool DSGM_StartSaving(void) {
|
|||||||
inline void DSGM_FinishSaving(void) {
|
inline void DSGM_FinishSaving(void) {
|
||||||
fclose(DSGM_save);
|
fclose(DSGM_save);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DSGM_WriteRoomFull(DSGM_Room *room) {
|
||||||
|
u8 screen;
|
||||||
|
int layerNumber;
|
||||||
|
int group;
|
||||||
|
int object;
|
||||||
|
|
||||||
|
DSGM_Debug("Saving room...\n");
|
||||||
|
|
||||||
|
fprintf(DSGM_save, "ROOM");
|
||||||
|
|
||||||
|
for(screen = 0; screen < 2; screen++) {
|
||||||
|
for(layerNumber = 0; layerNumber < 4; layerNumber++) {
|
||||||
|
// Save layer
|
||||||
|
fwrite(&room->layers[screen][layerNumber], sizeof(DSGM_Layer), 1, DSGM_save);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(screen = 0; screen < 2; screen++) {
|
||||||
|
// Save object instances
|
||||||
|
fwrite(&room->objectGroupCount[screen], sizeof(int), 1, DSGM_save);
|
||||||
|
|
||||||
|
for(group = 0; group < room->objectGroupCount[screen]; group++) {
|
||||||
|
fwrite(&room->objectGroups[screen][group].objectInstanceCount, sizeof(int), 1, DSGM_save);
|
||||||
|
|
||||||
|
for(object = 0; object < room->objectGroups[screen][group].objectInstanceCount; object++) {
|
||||||
|
DSGM_ObjectInstance *objectInstance = &room->objectGroups[screen][group].objectInstances[object];
|
||||||
|
fwrite(objectInstance, sizeof(DSGM_ObjectInstance), 1, DSGM_save);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DSGM_Debug("Saved room\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void DSGM_ReadRoomFull(DSGM_Room *room) {
|
||||||
|
u8 screen;
|
||||||
|
int layerNumber;
|
||||||
|
int group;
|
||||||
|
int object;
|
||||||
|
|
||||||
|
DSGM_Debug("Loading room...\n");
|
||||||
|
|
||||||
|
char magic[5] = { 0 };
|
||||||
|
fread(magic, sizeof(char), 4, DSGM_save);
|
||||||
|
if(strncmp(magic, "ROOM", 4)) {
|
||||||
|
DSGM_Debug("Failed! Bad magic...\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(screen = 0; screen < 2; screen++) {
|
||||||
|
for(layerNumber = 0; layerNumber < 4; layerNumber++) {
|
||||||
|
// Load layer
|
||||||
|
fread(&room->layers[screen][layerNumber], sizeof(DSGM_Layer), 1, DSGM_save);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(screen = 0; screen < 2; screen++) {
|
||||||
|
// Load object instances
|
||||||
|
fread(&room->objectGroupCount[screen], sizeof(int), 1, DSGM_save);
|
||||||
|
room->objectGroups[screen] = realloc(room->objectGroups[screen], room->objectGroupCount[screen] * sizeof(DSGM_ObjectGroup));
|
||||||
|
|
||||||
|
for(group = 0; group < room->objectGroupCount[screen]; group++) {
|
||||||
|
fread(&room->objectGroups[screen][group].objectInstanceCount, sizeof(int), 1, DSGM_save);
|
||||||
|
room->objectGroups[screen][group].objectInstances = realloc(room->objectGroups[screen][group].objectInstances, room->objectGroups[screen][group].objectInstanceCount * sizeof(DSGM_ObjectInstance));
|
||||||
|
|
||||||
|
for(object = 0; object < room->objectGroups[screen][group].objectInstanceCount; object++) {
|
||||||
|
DSGM_ObjectInstance *objectInstance = &room->objectGroups[screen][group].objectInstances[object];
|
||||||
|
fread(objectInstance, sizeof(DSGM_ObjectInstance), 1, DSGM_save);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DSGM_Debug("Loaded room\n");
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user