Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion ChapterMaster.yyp
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,7 @@
"isEcma":false,
"LibraryEmitters":[],
"MetaData":{
"IDEVersion":"2024.1300.0.781",
"IDEVersion":"2024.1300.0.785",
},
"name":"ChapterMaster",
"resources":[
Expand Down Expand Up @@ -736,6 +736,7 @@
{"id":{"name":"scr_fleet_functions","path":"scripts/scr_fleet_functions/scr_fleet_functions.yy",},},
{"id":{"name":"scr_forge_world_functions","path":"scripts/scr_forge_world_functions/scr_forge_world_functions.yy",},},
{"id":{"name":"scr_garrison","path":"scripts/scr_garrison/scr_garrison.yy",},},
{"id":{"name":"scr_general_variable_functions","path":"scripts/scr_general_variable_functions/scr_general_variable_functions.yy",},},
{"id":{"name":"scr_get_diag_integer","path":"scripts/scr_get_diag_integer/scr_get_diag_integer.yy",},},
{"id":{"name":"scr_get_diag_string","path":"scripts/scr_get_diag_string/scr_get_diag_string.yy",},},
{"id":{"name":"scr_get_item_names","path":"scripts/scr_get_item_names/scr_get_item_names.yy",},},
Expand Down Expand Up @@ -814,6 +815,7 @@
{"id":{"name":"scr_save_controller","path":"scripts/scr_save_controller/scr_save_controller.yy",},},
{"id":{"name":"scr_save","path":"scripts/scr_save/scr_save.yy",},},
{"id":{"name":"scr_scrollbar","path":"scripts/scr_scrollbar/scr_scrollbar.yy",},},
{"id":{"name":"scr_serialization_functions","path":"scripts/scr_serialization_functions/scr_serialization_functions.yy",},},
{"id":{"name":"scr_shader_initialize","path":"scripts/scr_shader_initialize/scr_shader_initialize.yy",},},
{"id":{"name":"scr_ship_battle","path":"scripts/scr_ship_battle/scr_ship_battle.yy",},},
{"id":{"name":"scr_ship_count","path":"scripts/scr_ship_count/scr_ship_count.yy",},},
Expand Down
55 changes: 54 additions & 1 deletion objects/obj_controller/Create_0.gml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@

The Machine God watches over you.
*/
show_debug_message("Creating Controller");
log_message("Creating Controller");
marine_surface = surface_create(600, 600);
scr_colors_initialize();
is_test_map=false;
Expand Down Expand Up @@ -1344,6 +1346,41 @@ try{
catch(_exception){
global.star_name_colors[1] = make_color_rgb(col_r[1],col_g[1],col_b[1]);
}

#region save/load serialization

/// Called from save function to take all object variables and convert them to a json savable format and return it
serialize = function(){
var object_controller = self;

var save_data = {
obj: object_get_name(object_index),
x,
y,
chaos_gods,
master_of_forge,
stc_research,
production_research,
player_forge_data,
end_turn_insights,
recruit_data,
marines,
loyalty,
spec_train_data
}
var excluded_from_save = ["temp", "serialize", "deserialize", "build_chaos_gods", "company_data","menu_buttons",
"location_viewer", "production_research_pathways", "specialist_point_handler", "spec_train_data"]
var excluded_from_save_start = ["restart_"];

copy_serializable_fields(object_controller, save_data, excluded_from_save, excluded_from_save_start);

return save_data;
}

// Deserialization is done within scr_load
#endregion


// ** Loads the game **
if (global.load>0){
load_game=global.load;
Expand All @@ -1361,6 +1398,18 @@ if (global.load>0){
exit;
}

///! ************************************************************ */
///! ************************************************************ */
///! ************************************************************ */
///! NOTHING BEYOND THIS POINT WILL BE SET AFTER A LOAD FROM SAVE */
///! ************************************************************ */
///! ************************************************************ */
///! ************************************************************ */
///! ************************************************************ */




var xx,yy,me,dist,go,planet;
global.custom=1;

Expand Down Expand Up @@ -1784,6 +1833,10 @@ if (welcome_pages>=5){
}
}
remov=string_length(string(temp[65])+string(temp[66])+string(temp[67])+string(temp[68])+string(temp[69]))+1;
action_set_alarm(2, 0);

instance_create(0,0,obj_tooltip );

action_set_alarm(2, 0);


//**! DO NOT PUT THINGS AT THE BOTTOM OF THIS FILE IF YOU NEED THEM TO WORK AFTER LOADING FROM A SAVE, SEE LINE 1550 -ish */
46 changes: 46 additions & 0 deletions objects/obj_en_fleet/Create_0.gml
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,49 @@ escort_health=100;

alarm[8]=1;

#region save/load serialization

/// Called from save function to take all object variables and convert them to a json savable format and return it
serialize = function(){
var object_fleet = self;

var save_data = {
obj: object_get_name(object_index),
x,
y,
}

var excluded_from_save = ["temp", "serialize", "deserialize", "cargo_data"]

copy_serializable_fields(object_fleet, save_data, excluded_from_save);

return save_data;
}
deserialize = function(save_data){
var exclusions = ["id"]; // skip automatic setting of certain vars, handle explicitly later

// Automatic var setting
var all_names = struct_get_names(save_data);
var _len = array_length(all_names);
for(var i = 0; i < _len; i++){
var var_name = all_names[i];
if(array_contains(exclusions, var_name)){
continue;
}
var loaded_value = struct_get(save_data, var_name);
// show_debug_message($"en_fleet {en_fleet_instance.id} - var: {var_name} - val: {loaded_value}");
try {
variable_struct_set(self, var_name, loaded_value);
} catch (e){
show_debug_message(e);
}
}

if(save_data.orbiting != 0){
var nearest_star = instance_nearest(x, y, obj_star);
orbiting = nearest_star;
// show_debug_message($"p_fleet id {id} deserialized: {self}");
}
}

#endregion
150 changes: 146 additions & 4 deletions objects/obj_ini/Create_0.gml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ penitent_current=0;
penitent_end=0;
man_size=0;
home_planet = 2;
artifact_struct = array_create(200);

// Equipment- maybe the bikes should go here or something? yes they should
i=-1;
Expand Down Expand Up @@ -103,15 +104,156 @@ gene_slaves = [];
if (obj_creation.custom=0) then scr_initialize_standard();
}*/

adv = [];
dis = [];


if (instance_exists(obj_creation)) then custom=obj_creation.custom;

if (global.load=0) then scr_initialize_custom();

#region save/load serialization

/// Called from save function to take all object variables and convert them to a json savable format and return it
serialize = function(){
var object_ini = self;

var marines = array_create(0);
for(var coy = 0; coy <=10; coy++){
for(var mar = 0; mar <=500; mar++){
var marine_json;
if(obj_ini.name[coy][mar] != ""){
marine_json = jsonify_marine_struct(coy, mar, false);
array_push(marines, marine_json);
} else if(mar > 0){
break;
}
}
}
var squads = [];
if (array_length(object_ini.squads)> 0){
for (var i = 0;i < array_length(object_ini.squads);i++){
array_push(squads, object_ini.squads[i].jsonify(false));
}
}

var artifact_struct_trimmed = [];
for(var i = 0; i < array_length(artifact_struct); i++){
if(artifact_struct[i].name != ""){
array_push(artifact_struct_trimmed, artifact_struct[i]);
}
}


var save_data = {
obj: object_get_name(object_index),
x,
y,
custom_advisors,
full_liveries: full_liveries,
complex_livery_data: complex_livery_data,
squad_types: squad_types,
artifact_struct: artifact_struct_trimmed,
marine_structs: marines,
squad_structs: squads,
// marines,
// squads
}

if(struct_exists(object_ini, "last_ship")){
save_data.last_ship = object_ini.last_ship;
}

var excluded_from_save = ["temp", "serialize", "deserialize", "load_default_gear", "role_spawn_buffs", "TTRPG", "squads", "squad_types", "marines", "last_ship"];

copy_serializable_fields(object_ini, save_data, excluded_from_save);

return save_data;
}

deserialize = function(save_data){
var exclusions = ["complex_livery_data", "full_liveries", "squad_types", "marine_structs", "squad_structs"]; // skip automatic setting of certain vars, handle explicitly later

// Automatic var setting
var all_names = struct_get_names(save_data);
var _len = array_length(all_names);
for(var i = 0; i < _len; i++){
var var_name = all_names[i];
if(array_contains(exclusions, var_name)){
continue;
}

var loaded_value = struct_get(save_data, var_name);
// show_debug_message($"obj_ini var: {var_name} - val: {loaded_value}");
try {
variable_struct_set(obj_ini, var_name, loaded_value);
} catch (e){
show_debug_message(e);
}
}

// Set explicit vars here
var livery_picker = new ColourItem(0,0);
livery_picker.scr_unit_draw_data();
if(struct_exists(save_data, "full_liveries")){
variable_struct_set(obj_ini, "full_liveries", save_data.full_liveries)
} else {
variable_struct_set(obj_ini, "full_liveries", array_create(21,DeepCloneStruct(livery_picker.map_colour)));
}

if(struct_exists(save_data, "complex_livery_data")){
variable_struct_set(obj_ini, "complex_livery_data", save_data.complex_livery_data);
}
if(struct_exists(save_data, "squad_types")){
variable_struct_set(obj_ini, "squad_types", save_data.squad_types);
}

if(struct_exists(save_data, "marine_structs")){
obj_ini.TTRPG = array_create(11, []);
var marines_encoded_arr = save_data.marine_structs;
var _m_ar_len = array_length(marines_encoded_arr);
for(var m = 0; m < _m_ar_len; m++){
var marine_json = marines_encoded_arr[m];
var coy = marine_json.company;
var mar = marine_json.marine_number;
load_marine_struct(coy, mar, marine_json);
}
for(var coy = 0; coy < 11; coy++){
var mar_start = array_length(obj_ini.TTRPG[coy]);
for(var mar = mar_start; mar < 501; mar++){
obj_ini.TTRPG[coy][mar] = new TTRPG_stats("chapter",coy, mar, "blank");
}
}
}

if(struct_exists(save_data, "squad_structs")){
obj_ini.squads = [];
var squad_fetch = save_data.squad_structs;
for (i=0;i<array_length(squad_fetch);i++){
var sq = new UnitSquad();
sq.load_json_data(squad_fetch[i]);
array_push(obj_ini.squads, sq);
}
}

if(struct_exists(save_data, "artifact_struct")){
obj_ini.artifact_struct = [];
var artifact_str_arr = save_data.artifact_struct;
var _len = array_length(artifact_str_arr);
for(var i = 0; i < 200; i++){ // 200 is the max number of artifacts
var arti_struct = new ArtifactStruct(i);
if(i < _len){ // still within the save_data array
var arti = artifact_str_arr[i];
if(arti != -1){ // in the serializer we trim out empty slots so there will be nothing to load
arti_struct.load_json_data(arti);
}
array_push(obj_ini.artifact_struct, arti_struct);
} else {
array_push(obj_ini.artifact_struct, arti_struct); //load empty ones into the rest of the slots
}
}
}
}

// 135;
// with(obj_creation){instance_destroy();}

/* */
/* */
#endregion
47 changes: 47 additions & 0 deletions objects/obj_p_fleet/Create_0.gml
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,50 @@ connected=0;
acted=0;
hurssy=0;
hurssy_time=0;
/// Called from save function to take all object variables and convert them to a json savable format and return it
serialize = function(){
var object_fleet = self;

var save_data = {
obj: object_get_name(object_index),
x,
y,
point_breakdown: point_breakdown
}
var excluded_from_save = ["temp", "serialize", "deserialize"]

copy_serializable_fields(object_fleet, save_data, excluded_from_save);

return save_data;
}
// debugl("obj_p_fleet save data serialized:");
// debugl(json_stringify(serialize(), true));

deserialize = function(save_data){
var exclusions = ["orbiting"]; // skip automatic setting of certain vars, handle explicitly later

// Automatic var setting
var all_names = struct_get_names(save_data);
var _len = array_length(all_names);
for(var i = 0; i < _len; i++){
var var_name = all_names[i];
if(array_contains(exclusions, var_name)){
continue;
}
var loaded_value = struct_get(save_data, var_name);
try {
variable_struct_set(self, var_name, loaded_value);
} catch (e){
show_debug_message(e);
}
}

if(save_data.orbiting != 0){
var nearest_star = instance_nearest(x, y, obj_star);
set_player_fleet_image();
orbiting = nearest_star;
}

}

#endregion
7 changes: 4 additions & 3 deletions objects/obj_popup/Step_0.gml
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,15 @@ try {
if ((image == "fuklaw") && (save > 0)) {
if (press == 1) {
var del = obj_saveload.save[save];
var _save_file = $"save{del}.ini";
var _save_file = string(PATH_save_files, del);
var _save_preview = string(PATH_save_previews, del);
if (file_exists(_save_file)) {
file_delete(_save_file);
if (file_exists($"save{del}log.ini")) {
file_delete($"save{del}log.ini");
}
if (file_exists($"screen{del}.png")) {
file_delete($"screen{del}.png");
if (file_exists(_save_preview)) {
file_delete(_save_preview);
}
with (obj_saveload) {
instance_destroy();
Expand Down
Loading