-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathk_save.c
92 lines (77 loc) · 2.87 KB
/
k_save.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <stdio.h>
#include "simple_json.h"
#include "simple_logger.h"
#include "k_save.h"
SaveBlock1 *LoadSave(char* filename) {
SJson *json;
time_t time;
char *map, *timec;
if (!filename) return NULL;
json = sj_load(filename);
if (!json) {
NewSave(filename);
return &save1;
}
timec = sj_get_string_value(sj_object_get_value(json,"time"));
time = SDL_strtoll(timec, timec+sizeof(timec), 10);
map = sj_get_string_value(sj_object_get_value(json, "map"));
gfc_word_cpy(save1.client.name, sj_get_string_value(sj_object_get_value(json, "player_name")));
sj_get_integer_value(sj_object_get_value(json, "player_id"), &save1.client.id);
sj_get_bool_value(sj_object_get_value(json, "gender"), &save1.client.id+2);
sj_get_integer_value(sj_object_get_value(json, "player_x"), &save1.position.x);
sj_get_integer_value(sj_object_get_value(json, "player_y"), &save1.position.y);
save1.map = LoadMap(map);
sj_free(json);
return &save1;
}
void NewSave(char* filename) {
SJson* json = sj_object_new();
save1.playTime = 0;
save1.client.id= (int)(65535*gfc_random());
gfc_word_cpy(save1.client.name, "Ben");//Placeholder
save1.client.gender = 0;//Placeholder
save1.position = cell(0,0);
slog("Initializing save");
save1.map = LoadMap("maps/oatwheeltown.json");
if (save1.map == NULL) {
slog("Map not loaded");
}
else {
slog(save1.map->name);
slog(save1.map->tileset.filename);
}
save1.inventory = gfc_allocate_array(sizeof(u16), ITEM_MAX);
party.party = gfc_allocate_array(sizeof(MonDict), 6);
party.partyPersonal = gfc_allocate_array(sizeof(PersonalDict), 6);
sj_object_insert(json, "time", sj_new_str("0"));
sj_object_insert(json, "map", sj_new_str("maps/oatwheeltown.json"));
sj_object_insert(json, "player_name", sj_new_str(save1.client.name));
sj_object_insert(json, "player_id", sj_new_int(save1.client.id));
sj_object_insert(json, "gender", sj_new_bool(save1.client.gender));
sj_object_insert(json, "player_x", sj_new_int(0));
sj_object_insert(json, "player_y", sj_new_int(0));
sj_save(json, filename);
sj_free(json);
}
void WriteSave(char* filename) {
SJson* json;
SJString* str=NULL;
char buff[sizeof(time_t) * 8 + 1];
if (!filename) return;
json = sj_load(filename);
if (!json) return;
/*sj_string_set(str, SDL_lltoa(save1.playTime,buff,10));
sj_object_insert(json, "time", sj_string_to_value(str));
sj_string_set(str, save1.map->name);
sj_object_insert(json, "map", sj_string_to_value(str));
sj_string_set(str, save1.client.name);
sj_object_insert(json, "player_name", sj_string_to_value(str));
sj_object_insert(json, "player_id", sj_new_int(save1.client.id));
sj_object_insert(json, "gender", sj_new_bool(save1.client.gender));
save1.position = player->cellPos;
sj_object_insert(json, "player_x", sj_new_int(save1.position.x));
sj_object_insert(json, "player_y", sj_new_int(save1.position.y));
sj_save(json, filename);
sj_string_free(str);*/
sj_free(json);
}