/// <summary> /// Lance l'export /// </summary> /// <param name="path"></param> /// <returns></returns> public Enums.ExportState LaunchExport(string path) { //Améliorations //Optimisation matrices /*foreach (VO_Stage valueStage in GameCore.Instance.Game.Stages) * { * CreateWalkableMatrix(valueStage.Dimensions, valueStage, GameCore.Instance.Game.Project.Resolution.MatrixPrecision); * CreateEventsMatrix(valueStage, valueStage.Dimensions, valueStage.ListHotSpots, GameCore.Instance.Game.Project.Resolution.MatrixPrecision); * CreateRegionMatrix(valueStage, valueStage.Dimensions, valueStage.ListRegions, GameCore.Instance.Game.Project.Resolution.MatrixPrecision); * }*/ //TODO // On sauvegarde l'objet string finalPath = path + "\\" + GameCore.Instance.Game.Project.ProjectFileName + "\\"; string finalApp = finalPath + GameCore.Instance.Game.Project.ProjectFileName + GlobalConstants.EXT_EXPORTED_GAME; if (!Directory.Exists(finalPath)) { Directory.CreateDirectory(finalPath); } AppTools.SaveObjectToFile(GameCore.Instance.Game, finalApp); AppTools.CopyFolder(GameCore.Instance.Game.Project.RootPath, finalPath); File.Delete(finalPath + GameCore.Instance.Game.Project.ProjectFileName + GlobalConstants.EXT_PROJECT); return(Enums.ExportState.OK); }
/// <summary> /// Sauvegarde une partie /// </summary> /// <param name="path"></param> public static void SaveGameState(string path) { //Enregistrement des personnages List <VO_Player> players = PlayableCharactersManager.GetPlayers(); State.Players = new List <VO_GameStateCharacter>(); foreach (VO_Player player in players) { VO_GameStateCharacter gameCharacter = new VO_GameStateCharacter(); gameCharacter.Id = player.Id; gameCharacter.CharacterId = player.CharacterSprite.CharacterId; gameCharacter.Coords = new VO_Coords(new System.Drawing.Point(player.CharacterSprite.Location.X, player.CharacterSprite.Location.Y), player.CurrentStage); gameCharacter.CurrentAnim = player.CharacterSprite.CurrentAnimationType; gameCharacter.CurrentDirection = player.CharacterSprite.CurrentDirection; gameCharacter.Actions = new List <Guid>(); gameCharacter.Items = new List <Guid>(); gameCharacter.CurrentExecutingPage = player.CharacterSprite.CurrentExecutingPage; gameCharacter.IsTalking = player.CharacterSprite.IsTalking; gameCharacter.CurrentPath = player.CharacterSprite.CurrentPath; foreach (Guid action in player.Actions) { gameCharacter.Actions.Add(action); } for (int i = 0; i < GameCore.Instance.Game.Menu.GridHeight; i++) { for (int j = 0; j < GameCore.Instance.Game.Menu.GridWidth; j++) { if (player.Items[j, i] != Guid.Empty) { gameCharacter.Items.Add(player.Items[j, i]); } } } GameState.State.Players.Add(gameCharacter); } //Enregistrement de stages VO_Stage stage = GameCore.Instance.GetStageById(PlayableCharactersManager.CurrentPlayerCharacter.CurrentStage); State.CurrentStagePNJ = new List <VO_GameStateCharacter>(); foreach (VO_StageCharacter character in stage.ListCharacters) { VO_CharacterSprite characterSprite = _Service.GetCharacterSprite(character.Id); VO_GameStateCharacter gameCharacter = new VO_GameStateCharacter(); gameCharacter.Id = character.Id; gameCharacter.CharacterId = character.CharacterId; gameCharacter.Coords = new VO_Coords(new System.Drawing.Point(characterSprite.Location.X, character.Location.Y), Guid.Empty); gameCharacter.CurrentAnim = characterSprite.CurrentAnimationType; gameCharacter.CurrentDirection = characterSprite.CurrentDirection; gameCharacter.Actions = new List <Guid>(); gameCharacter.Items = new List <Guid>(); gameCharacter.CurrentExecutingPage = characterSprite.CurrentExecutingPage; gameCharacter.IsTalking = characterSprite.IsTalking; gameCharacter.CurrentPath = characterSprite.CurrentPath; GameState.State.CurrentStagePNJ.Add(gameCharacter); } //Enregistrement des Script courants if (ScriptManager.ParallelScripts != null) { foreach (VO_RunningScript runningScript in ScriptManager.ParallelScripts) { VO_GameStateRunningScript runningScriptState = new VO_GameStateRunningScript(); runningScriptState.CurrentLine = runningScript.Id; runningScriptState.ObjectState = runningScript.ObjectState; runningScriptState.Script = runningScript.Id; runningScriptState.WaitFrames = runningScript.WaitFrames; State.RunningScripts.Add(runningScriptState); } } AppTools.SaveObjectToFile(GameState.State, GameCore.Instance.Game.Project.RootPath + "\\" + path); }