From fd7c29424979f43bdc0c330f4c6f471c205dc78c Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Mon, 2 Dec 2024 16:45:09 +0100 Subject: working on save state --- src/include/world.h | 2 +- src/scenes/save_state_select.c | 88 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 85 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/include/world.h b/src/include/world.h index 458478b..58e41fa 100644 --- a/src/include/world.h +++ b/src/include/world.h @@ -7,7 +7,7 @@ #ifndef INCLUDE_WORLD #define INCLUDE_WORLD -#define MAX_WORLD_LOCATION_NAME_LENGTH 20 +#define MAX_WORLD_LOCATION_NAME_LENGTH 40 #define MAX_ENPOLYEE_FIRSTNAME_LENGTH 14 #define MAX_ENPOLYEE_LASTNAME_LENGTH 14 #define MAX_EMPLOYEE_NAME_LENGTH 30 diff --git a/src/scenes/save_state_select.c b/src/scenes/save_state_select.c index 9972b7f..464c2fe 100644 --- a/src/scenes/save_state_select.c +++ b/src/scenes/save_state_select.c @@ -184,11 +184,91 @@ static void write_save_file(s32 index) cJSON_AddItemToObject(loc, "employees", employees); } - // TODO: job_offers - // TODO: resumes - // TODO: trucks + cJSON *job_offers = cJSON_CreateArray(); + { + for (s32 x = 0; x < location->job_offers.length; x++) + { + job_offer* o = array_at(&location->job_offers, x); + + cJSON *offer = cJSON_CreateObject(); + cJSON_AddItemToObject(offer, "id", cJSON_CreateNumber(o->id)); + cJSON_AddItemToObject(offer, "expire_date", cJSON_CreateNumber(o->expire_date)); + cJSON_AddItemToObject(offer, "company_id", cJSON_CreateString(o->company->name)); + cJSON_AddItemToObject(offer, "product", cJSON_CreateString(o->product->name)); + cJSON_AddItemToObject(offer, "shipday_count", cJSON_CreateNumber(o->shipday_count)); + + cJSON *shipdays = cJSON_CreateArray(); + for (s32 s = 0; s < MAX_SHIPDAYS; s++) + { + cJSON_AddItemToArray(shipdays, cJSON_CreateNumber(o->shipdays[s])); + } + cJSON_AddItemToObject(offer, "shipdays", shipdays); + cJSON_AddItemToObject(offer, "total_distance", cJSON_CreateNumber(o->total_distance)); + + cJSON_AddItemToObject(offer, "boat_distance", cJSON_CreateNumber(o->boat_distance)); + cJSON_AddItemToObject(offer, "duration_sec_min", cJSON_CreateNumber(o->duration_sec_min)); + cJSON_AddItemToObject(offer, "duration_sec_max", cJSON_CreateNumber(o->duration_sec_max)); + cJSON_AddItemToObject(offer, "duration_sec_min_excluding_boat", cJSON_CreateNumber(o->duration_sec_min_excluding_boat)); + + cJSON *connections = cJSON_CreateArray(); + for (s32 s = 0; s < o->connections.length; s++) + { + world_location* loc = *(world_location**)array_at(&o->connections, s); + cJSON_AddItemToArray(connections, cJSON_CreateNumber(loc->id)); + } + cJSON_AddItemToObject(offer, "connections", connections); + + cJSON_AddItemToArray(job_offers, offer); + } + cJSON_AddItemToObject(loc, "job_offers", job_offers); + } + + cJSON *resumes = cJSON_CreateArray(); + { + for (s32 r = 0; r < location->resumes.length; r++) + { + resume* res = array_at(&location->resumes, r); + + cJSON *resume = cJSON_CreateObject(); + cJSON_AddItemToObject(resume, "employee_id", cJSON_CreateNumber(res->employee->id)); + cJSON_AddItemToObject(resume, "expire_date", cJSON_CreateNumber(res->expire_date)); + cJSON_AddItemToObject(resume, "hired", cJSON_CreateNumber(res->hired)); + + cJSON_AddItemToArray(resumes, resume); + } + + cJSON_AddItemToObject(loc, "resumes", resumes); + } + + cJSON *trucks = cJSON_CreateArray(); + { + for (s32 i = 0; i < location->trucks.length; i++) { + truck* emp = array_at(&location->trucks, i); + + cJSON *truck = cJSON_CreateObject(); + cJSON_AddItemToObject(truck, "id", cJSON_CreateNumber(emp->id)); + cJSON_AddItemToObject(truck, "employee_id", cJSON_CreateNumber(emp->assigned_employee == 0 ? 0 : emp->assigned_employee->id)); + cJSON_AddItemToObject(truck, "type", cJSON_CreateNumber(emp->type)); + + cJSON_AddItemToArray(trucks, truck); + } + + cJSON_AddItemToObject(loc, "trucks", trucks); + } + + cJSON *schedule = cJSON_CreateArray(); + { + for (s32 r = 0; r < location->schedule.jobs.length; r++) + { + scheduled_job* scheduled_job = array_at(&location->schedule.jobs, r); + + // + } + + cJSON_AddItemToObject(loc, "schedule", schedule); + } + // TODO: insights - // TODO: schedule cJSON_AddItemToArray(locations, loc); } -- cgit v1.2.3-70-g09d2