/
puma
/
ppa
Обзор
Документация
Войти
/
puma
/
ppa
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
EtoUI/MainForm.cs
198 строк
6 KB
Margarita
obnova
28 май 2026, 14:34
28 май 2026, 14:34
7c0ec51
Код
Авторство
О чём код?
using System; using Eto.Forms; using Eto.Drawing; public class MainForm : Eto.Forms.Form { private readonly GameFlowController _gameFlowController; private readonly Eto.Forms.Panel _contentHost; private Player? _player1; private Player? _player2; private NewGameSetup? _currentSetup; public MainForm(GameFlowController gameFlowController) { _gameFlowController = gameFlowController ?? throw new ArgumentNullException(nameof(gameFlowController)); Title = "Добро пожаловать в игру"; ClientSize = new Eto.Drawing.Size(900, 475); MinimumSize = new Eto.Drawing.Size(700, 400); Resizable = true; Maximizable = true; _contentHost = new Eto.Forms.Panel(); Content = _contentHost; KeyDown += OnFormKeyDown; ShowMainMenu(); } private void ShowMainMenu() { var titleLabel = new Eto.Forms.Label { Text = "ДОБРО ПОЖАЛОВАТЬ В ИГРУ", TextAlignment = Eto.Forms.TextAlignment.Center }; var newGameButton = new Eto.Forms.Button { Text = "Начать новую игру" }; var loadGameButton = new Eto.Forms.Button { Text = "Загрузить сохранённую игру" }; var proxySettingsButton = new Eto.Forms.Button { Text = "Настройки наблюдателей" }; var exitButton = new Eto.Forms.Button { Text = "Выход" }; newGameButton.Click += (_, _) => ShowNewGameView(); loadGameButton.Click += (_, _) => OnLoadGame(); proxySettingsButton.Click += (_, _) => ShowObserverSettings(); exitButton.Click += (_, _) => Eto.Forms.Application.Instance.Quit(); _contentHost.Content = new Eto.Forms.TableLayout { Padding = new Eto.Drawing.Padding(20), Spacing = new Eto.Drawing.Size(10, 10), Rows = { new Eto.Forms.TableRow(titleLabel), new Eto.Forms.TableRow(new Eto.Forms.Panel()), new Eto.Forms.TableRow(newGameButton), new Eto.Forms.TableRow(loadGameButton), new Eto.Forms.TableRow(proxySettingsButton), new Eto.Forms.TableRow(exitButton), new Eto.Forms.TableRow { ScaleHeight = true } } }; } private void ShowNewGameView() { _contentHost.Content = new NewGameView( ShowMainMenu, OnNewGameSetupCompleted); } private void ShowManualArmyBuilderForPlayer1() { if (_currentSetup == null || _player1 == null) return; _contentHost.Content = new ManualArmyBuilderView( _player1.Name, _currentSetup.Budget, ShowMainMenu, army => { _player1.Army = army; if (_currentSetup.Player2Mode == ArmyCreationMode.Manual) { ShowManualArmyBuilderForPlayer2(); } else { ShowArmyReview(); } }); } private void ShowManualArmyBuilderForPlayer2() { if (_currentSetup == null || _player2 == null) return; _contentHost.Content = new ManualArmyBuilderView( _player2.Name, _currentSetup.Budget, ShowMainMenu, army => { _player2.Army = army; ShowArmyReview(); }); } private void ShowArmyReview() { if (_player1 == null || _player2 == null || _player1.Army == null || _player2.Army == null) return; _contentHost.Content = new ArmyReviewView( _player1, _player2, ShowMainMenu, () => ShowBattleView(_player1, _player2)); } private void ShowBattleView(Player player1, Player player2) { DamageLogViewer.ClearLog(); _contentHost.Content = new BattleView(player1, player2, ShowMainMenu); } private void ShowBattleViewLoaded(Player player1, Player player2, Player currentPlayer, int roundNumber, string gameMode) { _contentHost.Content = new BattleView(player1, player2, ShowMainMenu, currentPlayer, roundNumber, gameMode); } private void ShowLoadGameView() { _contentHost.Content = new LoadGameView(ShowMainMenu, ShowBattleViewLoaded); } private void OnNewGameSetupCompleted(NewGameSetup setup) { _currentSetup = setup; _player1 = new Player(setup.Player1Name); _player2 = new Player(setup.Player2Name); var armyCreationManager = new ArmyCreationManager(); if (setup.Player1Mode == ArmyCreationMode.Random) { _player1.Army = armyCreationManager.CreateArmy( setup.Player1Name, setup.Budget, isManual: false); } if (setup.Player2Mode == ArmyCreationMode.Random) { _player2.Army = armyCreationManager.CreateArmy( setup.Player2Name, setup.Budget, isManual: false); } if (setup.Player1Mode == ArmyCreationMode.Manual) { ShowManualArmyBuilderForPlayer1(); return; } if (setup.Player2Mode == ArmyCreationMode.Manual) { ShowManualArmyBuilderForPlayer2(); return; } ShowArmyReview(); } private void OnFormKeyDown(object? sender, Eto.Forms.KeyEventArgs e) { if (_contentHost.Content is not BattleView battleView) return; if (e.Modifiers.HasFlag(Eto.Forms.Keys.Control)) { if (e.Key == Eto.Forms.Keys.X) battleView.TriggerUndo(); else if (e.Key == Eto.Forms.Keys.Z) battleView.TriggerRedo(); } } private void ShowObserverSettings() { _contentHost.Content = new ObserverSettingsView(ShowMainMenu); } private void OnLoadGame() { ShowLoadGameView(); } }