Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void saveLevelState(char* levelname)
- {
- FILE* save_file;
- char savefilepath[50] = "SAVES/CURRENT/";
- int i;
- long object_offset = (long)Game.Objects;
- strcat(levelname, ".SAV");
- strcat(savefilepath, levelname);
- save_file = fopen(savefilepath, "wb");
- if (!save_file)
- {
- perror("fopen");
- delay(60000);
- }
- fwrite(&Game, sizeof(GameData_t), 1, save_file);
- fwrite(Game.Objects, sizeof(Object_t), Game.object_capacity, save_file);
- for (i = 0; i < Game.id_capacity; i++)
- {
- Game.ObjectsById[i] -= object_offset;
- }
- fwrite(Game.ObjectsById, sizeof(void*), Game.object_count, save_file);
- for (i = 0; i < Game.id_capacity; i++)
- {
- Game.ObjectsById[i] += object_offset;
- }
- fwrite(Entities, sizeof(Entity_t), MAX_ENTITIES, save_file);
- fclose(save_file);
- }
- void loadLevelState(char* savename)
- {
- FILE* save_file;
- char savefilepath[50] = "SAVES/CURRENT/";
- int i;
- size_t object_offset;
- strcat(savefilepath, savename);
- save_file = fopen(savefilepath, "rb");
- if (!save_file)
- {
- perror("fopen");
- delay(60000);
- }
- ASSERT(Game.Objects != NULL);
- fseek(save_file, 0x30, SEEK_SET);
- fread(&Game.object_count, 2, 1, save_file);
- fseek(save_file, 0x32, SEEK_SET);
- fread(&Game.object_capacity, 2, 1, save_file);
- fseek(save_file, 0x34, SEEK_SET);
- fread(&Game.id_capacity, 2, 1, save_file);
- initGameData(Game.object_count, Game.id_capacity);
- object_offset = (size_t)Game.Objects;
- fseek(save_file, 0x36, SEEK_SET);
- fread(&Game.player_id, 2, 1, save_file);
- fseek(save_file, 0x38, SEEK_SET);
- fread(Game.Objects, sizeof(Object_t), Game.object_capacity, save_file);
- fread(Game.ObjectsById, sizeof(void*), Game.id_capacity, save_file);
- for (i = 0; i < Game.id_capacity; i++)
- {
- Game.ObjectsById[i] += object_offset;
- }
- fread(Entities, sizeof(Entity_t), MAX_ENTITIES, save_file);
- fclose(save_file);
- for (i = 0; i < Game.object_count; i++)
- {
- Game.Objects[i].texture_id = loadTexture("SPRITES/DUDE1.7UP"); // replace with proper sprite system
- }
- corpse_sprite_id = loadTexture("SPRITES/CORPSE.7UP");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement