/// <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);
        }
Esempio n. 2
0
        /// <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);
        }