Example #1
0
        public void SaveProgress(GameProperties props)
        {
            string saveName = $"Console {props.GameMode} - {DateTime.Now}"; // save name template: Type Game mode - saving time

            if (SaveManager.Saves == null)
            {
                SaveManager.LoadSaves();
            }

            if (props.Round > 1 && !SaveManager.ContainsThisName(saveName))
            {
                props.LoadPlayer1FieldToArray(); // convert 2D arrays to 1D array for saving
                props.LoadPlayer2FieldToArray();

                GameProperties save = props.DeepClone(); // DataUtils.DeepClone(obj)
                if (props.GameMode == "Player vs AI" || props.GameMode == "Fast Game")
                {
                    TimeManager.SaveRoundHistory(save.Id); // save round history if its Player vs AI mode
                }

                SaveManager.SaveGame(new Save(saveName, save));
                AddToBattleHistory(props, message: $"{Color.YellowText}Game was saved successfully!{Color.Reset}");
            }
            else if (props.Round == 0)
            {
                AddToBattleHistory(props, message: $"{Color.RedText}You can't save game on first round!{Color.Reset}");
            }
            else
            {
                AddToBattleHistory(props, message: $"{Color.RedText}Your game already saved!{Color.Reset}");
            }
        }
        public void WritePreviousStep(GameProperties props)
        {
            if (_history == null)
            {
                LoadRoundHistory(props.Id);
            }

            if (_history.Count == _stepsBackCount)
            {
                _history.RemoveAt(_stepsBackCount - 1);
            }
            props.LoadPlayer1FieldToArray();
            props.LoadPlayer2FieldToArray();
            GameProperties propsToWrite = props.DeepClone();

            propsToWrite.Round--;
            _history.Insert(0, propsToWrite);
        }