Game saving updates.

This commit is contained in:
Steve 2018-02-10 19:03:55 +00:00
parent 55dabbb018
commit 34b97bcc27
3 changed files with 31 additions and 2 deletions

View File

@ -253,7 +253,14 @@ static void save(cJSON *root)
i = (Item*)self; i = (Item*)self;
cJSON_AddStringToObject(root, "type", "Item"); if (i->type != ET_KEY)
{
cJSON_AddStringToObject(root, "type", "Item");
}
else
{
cJSON_AddStringToObject(root, "type", i->sprite[0]->name);
}
cJSON_AddNumberToObject(root, "canBeCarried", i->canBeCarried); cJSON_AddNumberToObject(root, "canBeCarried", i->canBeCarried);
cJSON_AddNumberToObject(root, "canBePickedUp", i->canBePickedUp); cJSON_AddNumberToObject(root, "canBePickedUp", i->canBePickedUp);
cJSON_AddNumberToObject(root, "isMissionTarget", i->isMissionTarget); cJSON_AddNumberToObject(root, "isMissionTarget", i->isMissionTarget);

View File

@ -213,6 +213,8 @@ void dropCarriedItems(void)
/* items can only be collected if they have a thinktime of 0 */ /* items can only be collected if they have a thinktime of 0 */
item->thinkTime = FPS * 9999; item->thinkTime = FPS * 9999;
} }
world.bob->items[i] = NULL;
} }
} }
} }

View File

@ -25,6 +25,7 @@ static void saveTriggers(cJSON *root);
static void saveBob(cJSON *root); static void saveBob(cJSON *root);
static void saveEntities(cJSON *root); static void saveEntities(cJSON *root);
static void saveObjectives(cJSON *root); static void saveObjectives(cJSON *root);
static int canPersistEntity(void);
void saveWorld(void) void saveWorld(void)
{ {
@ -130,7 +131,7 @@ static void saveEntities(cJSON *root)
for (self = world.entityHead.next ; self != NULL ; self = self->next) for (self = world.entityHead.next ; self != NULL ; self = self->next)
{ {
if (self->type != ET_NONE && self->type != ET_BOB && self->health > 0 && self->alive == ALIVE_ALIVE) if (canPersistEntity())
{ {
entityJSON = cJSON_CreateObject(); entityJSON = cJSON_CreateObject();
@ -147,6 +148,25 @@ static void saveEntities(cJSON *root)
cJSON_AddItemToObject(root, "entities", entitiesJSON); cJSON_AddItemToObject(root, "entities", entitiesJSON);
} }
static int canPersistEntity(void)
{
switch (self->type)
{
case ET_NONE:
case ET_BOB:
case ET_DECORATION:
case ET_CONSUMABLE:
return 0;
break;
default:
return self->health > 0 && self->alive == ALIVE_ALIVE;
break;
}
return 0;
}
static void saveObjectives(cJSON *root) static void saveObjectives(cJSON *root)
{ {
Objective *o; Objective *o;