//objButtonCreation.Menu = true;
if GameStarted
{ // for each Critter, drone, planet that exists cycle through and kill them.
instance_activate_all();
//blank all Ds lists that we will be working into.
ds_list_destroy(planetCredits);
planetCredits = ds_list_create();
instance_destroy(obj_enemy);//Destroy all Critters
ds_list_destroy(DS_critter);
DS_critter = ds_list_create();
instance_destroy(objEnemyDrone);//Destroy all Drones
ds_list_destroy(DS_drones); // NEW CODE WE NOW USE DS_DRONES
DS_drones = ds_list_create();
//ds_grid_destroy(global.DroneSquadDetailsGrid); ###OLD CODE WE USED TO LOAD INTO DRONE DETAILS
//global.DroneSquadDetailsGrid = ds_grid_create(droneSquadGridWidth, 0);
ds_grid_destroy(playerInventory);
playerInventory = ds_grid_create(playerInventoryWidth, 0);
}
var roomname = room_get_name(room) ;
if room_get_name(room) != "Galaxy1"
{
room_goto(Galaxy1);
}
loading = true;
globalvar planetsLoaded, planetsInventorysLoaded_Amounts, planetsInventorysLoaded_Names;
globalvar CrittersLoaded;
if (file_exists("SaveGame.sav"))
{
show_debug_message("Loading Game");
//TODO: goto room also need to save the current room on save.
room_goto(Galaxy1);
var _wrapper = LoadJSONFromFile("SaveGame.sav");
#region LOAD PLAYER
var _list = _wrapper[? "PLAYER"];
for (var i = 0; i < ds_list_size(_list); ++i)
{
var _map = _list[| i];
var test = _map[? "x"]
if test != undefined
{
//LOAD SHIP POSITION
playerX = _map[? "x"];
playerY = _map[? "y"];
if player_craft != undefined
{
player_craft.x = playerX;
player_craft.y = playerY;
}
}
var test = _map[? "Credits"];
if test != undefined
{
//LOAD ALL PLAYER DATA
playerCredits = _map[? "Credits"];
maxHP = _map[? "maxHP"];
currentHP = _map[? "currentHP"];
onFire = _map[? "onFire"];
chanceOfFire = _map[? "chanceOfFire"];
fireExtinguishers = _map[? "fireExtinguishers"];
shield = _map[? "shield"];
upgrade_Hull = _map[? "upgrade_Hull" ];
upgrade_Booster = _map[? "upgrade_Booster"];
upgrade_doubleGun = _map[? "upgrade_doubleGun"];
upgrade_Laser = _map[? "upgrade_Laser"];
maxShield = _map[? "maxShield"];
shieldRegenTimer = _map[? "shieldRegenTimer"];
max_thrust = _map [? "max_thrust"];
gun_maxCooldown = _map[? "gun_maxCooldown"];
gun_cooldown = _map[? "gun_cooldown"];
}
test = undefined;
}
ds_list_destroy(_list);
#region LOAD PLAYER INVENTORY
var _list = _wrapper[? "PLAYERINVENTORY"];
for (var b = 0; b < ds_list_size(ds_list_find_value(_list,0)); ++b)
{
var _list1 = ds_list_find_value( ds_list_find_value(_list, 0),0);//Load List of names
var _list2 = ds_list_find_value( ds_list_find_value(_list, 1),0);//Load list of amounts
if ds_list_find_value(_list1, 0)!= undefined && is_string(ds_list_find_value(_list1, 0))
{
for (var a = 0; a< ds_list_size(_list1); ++a)
{//iterate through each list in the list
var details = ItemDetails(ds_list_find_value(_list1,a),0,0);
scr_addItem(playerInventory, ds_list_find_value(_list1,a), ds_list_find_value(_list2,a), details[1], details[2], details[3], details[4], details[5])
}
}
}
#endregion
#endregion
#region LOAD PLANETS
var _list = _wrapper[? "PLANETS"];
planetsLoaded = ds_grid_create(6,0);
for (var i = 0; i < ds_list_size(_list); ++i)
{
var _map = _list[| i];
var test = _map[? "obj"];
if test != undefined && test = "planet"
{
ds_grid_resize(planetsLoaded,6,ds_grid_height(planetsLoaded)+1);
ds_grid_add(planetsLoaded, 0, ds_grid_height(planetsLoaded)-1,_map[? "x"]);
ds_grid_add(planetsLoaded, 1, ds_grid_height(planetsLoaded)-1,_map[? "y"]);
ds_grid_add(planetsLoaded, 2, ds_grid_height(planetsLoaded)-1,_map[? "name"]);
ds_grid_add(planetsLoaded, 3, ds_grid_height(planetsLoaded)-1,_map[? "inventoryLocation"]);
ds_grid_add(planetsLoaded, 4, ds_grid_height(planetsLoaded)-1,_map[? "repairCost"]);
ds_grid_add(planetsLoaded, 5, ds_grid_height(planetsLoaded)-1,_map[? "image_blend"]);
}
test = undefined;
}
//BELOW NEEDS WORK LOADS LIST with 2 INTERNAL LISTS wich contain 6 internal Lists. FIX SAVING
//or LOADING so we pull indevidual lists out of each of the 6 lists.
#endregion
#region LOAD PLANET INVENTORYS/CREDITS
var _list = _wrapper[? "PLANETINVENTORYS"];
planetsInventorysLoaded_Names = ds_grid_create(ds_list_size(ds_list_find_value(_list,0))+1,10);
planetsInventorysLoaded_Amounts = ds_grid_create(ds_list_size(ds_list_find_value(_list,0))+1,10);
for (var b = 0; b < ds_list_size(ds_list_find_value(_list,0)); ++b)
{
var _list1 = ds_list_find_value(ds_list_find_value(_list, 0),b);//first set of names
var _list2 = ds_list_find_value(ds_list_find_value(_list, 1),b);//first set of amounts
for (var item = 0; item< ds_list_size(_list1); ++item)
{//iterate through each list in the list
var debugtest = ds_list_find_value(_list1,item);
ds_grid_add(planetsInventorysLoaded_Names,b,item,ds_list_find_value(_list1,item));
ds_grid_add(planetsInventorysLoaded_Amounts,b,item,ds_list_find_value(_list2,item));
}
}
//planetCredits = ds_list_create();
ds_list_copy(planetCredits, _wrapper[? "PLANETCREDITS"]); // save planet Credits.
#endregion
#region LOAD CRITTERS
var _list = _wrapper[? "CRITTERS"];
CrittersLoaded = ds_list_create();
ds_list_copy(CrittersLoaded, _list);
//for (var i = 0; i < ds_list_size(_list); ++i)
//{
// var _map = _list[| i];
// //var Createdcritter = room_instance_add(Galaxy1,_map[? "x"], _map[? "y"],obj_enemy);
// //var Createdcritter = instance_create_layer(_map[? "x"], _map[? "y"],"Enemy", obj_enemy);
// ds_list_add(CrittersLoaded, ds_map_create());
// ds_map_copy(ds_list_find_value(CrittersLoaded,i), _map);
//}
#endregion
#region LOAD DRONES (MY HOPE IS THE DRONE SCRIPT WILL HANDLE ALL THE SQUAD WORK)
var _list = _wrapper[? "DRONES"];
for (var i = 0; i < ds_list_size(_list); ++i)
{
var _map = _list[| i];
var CreatedDrone = room_instance_add(Galaxy1,_map[? "x"], _map[? "y"],objEnemyDrone);
ds_list_add(DS_drones, CreatedDrone);
with (CreatedDrone)
{
movement_x = _map[? "movement_x"];
movement_y = _map[? "movement_y"];
hp = _map[? "hp"];
direction = _map[? "direction"];
speed = _map[? "speed"];
view_range = _map[? "view_range"];
state = _map[? "state"]
squad = _map[? "squad"];
}
}
#endregion
}
ds_map_destroy(_wrapper);
show_debug_message("Game Loaded")
instance_activate_all();
initialise = 0;
GameStarted = true;