/
MrFish
/
CSharpGameProject
Обзор
Документация
Войти
/
MrFish
/
CSharpGameProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
MainGameProject/GameState.cs
68 строк
2 KB
Yaroslav4444-bauer
Кодстайл - исправлены сообщения
20 дек 2025, 14:46
20 дек 2025, 14:46
5149f1a
Код
Авторство
О чём код?
using System; namespace MainGameProject { // Класс игрового састояния на текущий ход (для возможности отмены ходов) [Serializable] public class GameState { public Board Board { get; set; } = new Board(); public Player Player1 { get; set; } = new Player(); public Player Player2 { get; set; } = new Player(); public bool IsPlayer1Turn { get; set; } = true; public int GameIteration { get; set; } = 0; public GameState() {} // Конструктор для добавления информации по состоянию на текущий ход public GameState(Board board, Player player1, Player player2, bool isPlayer1Turn, int gameIteration) { Board = DeepCopyBoard(board); Player1 = DeepCopyPlayer(player1); Player2 = DeepCopyPlayer(player2); IsPlayer1Turn = isPlayer1Turn; GameIteration = gameIteration; } //Туда-сюда копируем ячеечки private static Board DeepCopyBoard(Board original) { var copy = new Board(); for (int r = 0; r < Board.Size; r++) { for (int c = 0; c < Board.Size; c++) { copy.Cells[r][c] = new Cell(original.Cells[r][c].Terrain) { HasTotem = original.Cells[r][c].HasTotem, PlayerId = original.Cells[r][c].PlayerId }; } } return copy; } //Туда-сюда копируем все что можем про игрока (тотем... одно и то же) private static Player DeepCopyPlayer(Player original) { var copy = new Player { Id = original.Id, Name = original.Name, Mana = original.Mana, Totem = new Totem(original.Totem.PlayerId, original.Totem.Position) { Health = original.Totem.Health }, Hand = [] }; foreach (var rune in original.Hand) { copy.Hand.Add(new Rune(rune.Type)); } return copy; } } }