I give you the two scripts
Saving:
#include "scripts\base.inc"
#include "scripts\keys.inc"
#include "scripts\puzzle.inc"
var yellow1 = Scene.GetNode("yellow1");
var yellow2 = Scene.GetNode("yellow2");
var yellow3 = Scene.GetNode("yellow3");
var blue1 = Scene.GetNode("blue1");
var blue2 = Scene.GetNode("blue2");
var blue3 = Scene.GetNode("blue3");
on "Keypress"
{if(Keyboard.KeyCode==VK_F5 || Keyboard.KeyCode==VK_F5)
{save_yellow1X = (yellow1.X); // save the peg position's
save_yellow1Y = (yellow1.Y);
save_yellow2X = (yellow2.X);
save_yellow2Y = (yellow2.Y);
save_yellow3X = (yellow3.X);
save_yellow3Y = (yellow3.Y);
save_blue1X = (blue1.X);
save_blue1Y = (blue1.Y);
save_blue2X = (blue2.X);
save_blue2Y = (blue2.Y);
save_blue3X = (blue3.X);
save_blue3Y = (blue3.Y);
Game.ChangeScene("scenes/options/options.scene"); // and load the options menu
}
}
and loading:
#include "scripts\base.inc"
#include "scripts\puzzle.inc"
// here comes the stuff which initializes the scene
actor.Active = false;
// get the peg's from scene
var yellow1 = Scene.GetNode("yellow1");
var yellow2 = Scene.GetNode("yellow2");
var yellow3 = Scene.GetNode("yellow3");
var blue1 = Scene.GetNode("blue1");
var blue2 = Scene.GetNode("blue2");
var blue3 = Scene.GetNode("blue3");
if(Game.PrevScene=="options") // if we came back from options
{ yellow1.SkipTo(save_yellow1X, save_yellow1Y);
yellow2.SkipTo(save_yellow2X, save_yellow2Y);
yellow3.SkipTo(save_yellow3X, save_yellow3Y);
blue1.SkipTo(save_blue1X, save_blue1Y);
blue2.SkipTo(save_blue2X, save_blue2Y);
blue3.SkipTo(save_blue3X, save_blue3Y); // recover the peg's placement
if (yellow1_selected == true) yellow1.PlayAnimAsync("scenes\puzzle\sprites\yellow_sel.sprite");
if (yellow2_selected == true) yellow2.PlayAnimAsync("scenes\puzzle\sprites\yellow_sel.sprite");
if (yellow3_selected == true) yellow3.PlayAnimAsync("scenes\puzzle\sprites\yellow_sel.sprite");
if (blue1_selected == true) blue1.PlayAnimAsync("scenes\puzzle\sprites\blue_sel.sprite");
if (blue2_selected == true) blue2.PlayAnimAsync("scenes\puzzle\sprites\blue_sel.sprite");
if (blue3_selected == true) blue3.PlayAnimAsync("scenes\puzzle\sprites\blue_sel.sprite"); // recover selected peg
}
else // Init a new game
{
// peg's are not selected
yellow1_selected = false;
yellow2_selected = false;
yellow3_selected = false;
blue1_selected = false;
blue2_selected = false;
blue3_selected = false;
// peg placement
state_yellow1 = 1;
state_yellow2 = 2;
state_yellow3 = 3;
state_blue1 = 6;
state_blue2 = 7;
state_blue3 = 8;
// field's states
state_1 = true; // occupied
state_2 = true; // occupied
state_3 = true; // occupied
state_4 = false;// free
state_5 = false;// free
state_6 = true; // occupied
state_7 = true; // occupied
state_8 = true; // occupied
}
// load options
Game.AttachScript("scripts/options.script");
////////////////////////////////////////////////////////////////////////////////
// scene state
global Statepuzzle;
// default values
if(Statepuzzle==null)
{
Statepuzzle.Visited = false;
// add scene states here
}
////////////////////////////////////////////////////////////////////////////////
// setup scene according to state variables
////////////////////////////////////////////////////////////////////////////////
if(!Statepuzzle.Visited)
{
Statepuzzle.Visited = true;
// this is our first visit in this scene...
music_on = true;
sound_on = true;
music_vol = 70;
}
////////////////////////////////////////////////////////////////////////////////
// Some music
if(music_on == true)
{Game.SetGlobalMusicVolume(music_vol); // volume
if(!Game.IsMusicPlaying()) //if music is already playing, game wouldend start it new
{
Game.PlayMusic("music\bongobongo.ogg");
}
}