コード例 #1
0
ファイル: PlayerDeathView.cs プロジェクト: Gvin/CodeMagic
        private void InitializeControls()
        {
            var buttonsX = Width / 2 - 10;

            startNewGameButton = new StandardButton(20)
            {
                Position = new Point(buttonsX, 16),
                Text     = "Start New Game"
            };
            startNewGameButton.Click += (sender, args) => StartNewGame?.Invoke(this, EventArgs.Empty);
            Add(startNewGameButton);

            backToMenuButton = new StandardButton(20)
            {
                Position = new Point(buttonsX, 20),
                Text     = "Back t0 Menu"
            };
            backToMenuButton.Click += (sender, args) => ExitToMenu?.Invoke(this, EventArgs.Empty);
            Add(backToMenuButton);

            exitGameButton = new StandardButton(20)
            {
                Position = new Point(buttonsX, 24),
                Text     = "Ex1t Game"
            };
            exitGameButton.Click += (sender, args) => Exit?.Invoke(this, EventArgs.Empty);
            Add(exitGameButton);
        }
コード例 #2
0
 protected virtual void OnStartNewGame()
 {
     if (StartNewGame != null)
     {
         StartNewGame.Invoke();
     }
 }
コード例 #3
0
 public override void Update(GameTime gameTime)
 {
     if (Keyboard.GetState().IsKeyDown(Keys.Space))
     {
         StartNewGame?.Invoke(this, null);
     }
 }
コード例 #4
0
 private void startANewGameToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (StartNewGame != null)
     {
         StartNewGame.Invoke(sender, e);
     }
 }
コード例 #5
0
        public void FullShortGameTest()
        {
            var mockCircleRepository = new MockCircleRepository();
            var mockGameRepository   = new MockGameRepository();
            var mockPhraseRepository = new MockPhraseRepository();
            var mockRandomProvider   = new MockRandomProvider();

            mockCircleRepository.Circle = GetCircle();
            mockPhraseRepository.Phrase = "Short Game Test";
            const int indexOneThousand = 7;

            mockRandomProvider.Values.Add((0, 13), indexOneThousand);
            var startNewGamePresenter  = new Presenter <StartNewGame.ResponseModel>();
            var startNewGameInteractor = new StartNewGame(mockPhraseRepository, mockGameRepository);

            startNewGameInteractor.HandleRequest(new StartNewGame.RequestModel()
            {
                PlayerNames = new string[]
                {
                    "Alice", "Bob", "Charlie"
                }
            }, startNewGamePresenter);
            var spinCirclePresenter  = new Presenter <SpinCircle.ResponseModel>();
            var spinCircleInteractor = new SpinCircle(mockGameRepository, mockCircleRepository, mockRandomProvider);

            spinCircleInteractor.HandleRequest(new SpinCircle.RequestModel()
            {
                GameIdentifier = startNewGamePresenter.ResponseModel.GameIdentifier
            }, spinCirclePresenter);
            var pickLetterPresenter  = new Presenter <PickLetter.ResponseModel>();
            var pickLetterInteractor = new PickLetter(mockGameRepository);

            pickLetterInteractor.HandleRequest(new PickLetter.RequestModel()
            {
                GameIdentifier = startNewGamePresenter.ResponseModel.GameIdentifier,
                Letter         = 'e'
            }, pickLetterPresenter);
            var guessPhrasePresenter  = new Presenter <GuessPhrase.ResponseModel>();
            var guessPhraseInteractor = new GuessPhrase(mockGameRepository);

            guessPhraseInteractor.HandleRequest(new GuessPhrase.RequestModel()
            {
                GameIdentifier = startNewGamePresenter.ResponseModel.GameIdentifier,
                Guess          = "Short Game Test"
            }, guessPhrasePresenter);
            Assert.Equal("Short Game Test", guessPhrasePresenter.ResponseModel.Phrase);
            Assert.Equal("Alice", guessPhrasePresenter.ResponseModel.CurrentPlayerName);
            Assert.Equal(2000, guessPhrasePresenter.ResponseModel.Reward);
            Assert.True(mockGameRepository.Games.Single().Value.IsOver);
        }
コード例 #6
0
        public async void TwoPlayerMatch_StartNewGame_Success()
        {
            Dictionary <string, StringValues> reqParams = new Dictionary <string, StringValues>();

            HttpRequest    request;
            OkObjectResult response;

            using (FileStream fs = File.OpenRead(initialBody))
            {
                request  = TestFactory.CreateHttpRequest(reqParams, fs);
                response = (OkObjectResult)await StartNewGame.Run(request, "2b35924a-1f53-487b-814d-035c38c841ed", logger);
            }
            var expected = File.ReadAllText(@"testData/TwoPlayerMatch_newgamestarted.json");

            Assert.Equal(expected, response.Value);
        }
コード例 #7
0
 public void Init(AddNewPlayer addNewPlayer, StartNewGame startNewGame, InitDefusing initDefusing,
                  SetNewDefuseAttempt setNewDefuseAttempt,
                  TryToDefuse tryToDefuse,
                  ChangeCurrentView changeCurrentView,
                  AllPlayerControllers allPlayerControllers, IUIController uiController,
                  NetworkBehaviourChecker networkBehaviourChecker,
                  ISpotTheDefuserNetworkDiscovery spotTheDefuserNetworkDiscovery)
 {
     _initDefusing                   = initDefusing;
     _setNewDefuseAttempt            = setNewDefuseAttempt;
     _spotTheDefuserNetworkDiscovery = spotTheDefuserNetworkDiscovery;
     _networkBehaviourChecker        = networkBehaviourChecker;
     _changeCurrentView              = changeCurrentView;
     _startNewGame                   = startNewGame;
     _addNewPlayer                   = addNewPlayer;
     _tryToDefuse          = tryToDefuse;
     _allPlayerControllers = allPlayerControllers;
     _uiController         = uiController;
 }
コード例 #8
0
        private void InitializeControls()
        {
            var xPosition = GetLabelPosition();

            gameLabel = new GameLogoControl
            {
                Position = new Point(xPosition, 4)
            };
            Add(gameLabel);

            continueGameButton = new StandardButton(20)
            {
                Position = new Point(xPosition - 2, 9),
                Text     = "C0nt1nue Game"
            };
            continueGameButton.Click += (sender, args) => ContinueGame?.Invoke(this, EventArgs.Empty);
            Add(continueGameButton);

            startGameButton = new StandardButton(20)
            {
                Position = new Point(xPosition - 2, 13),
                Text     = "Start New Game"
            };
            startGameButton.Click += (sender, args) => StartNewGame?.Invoke(this, EventArgs.Empty);
            Add(startGameButton);

            exitToMenuButton = new StandardButton(20)
            {
                Position = new Point(xPosition - 2, 17),
                Text     = "Ex1t t0 Menu"
            };
            exitToMenuButton.Click += (sender, args) => ExitToMenu?.Invoke(this, EventArgs.Empty);
            Add(exitToMenuButton);

            exitButton = new StandardButton(20)
            {
                Position = new Point(xPosition - 2, 21),
                Text     = "Ex1t"
            };
            exitButton.Click += (sender, args) => Exit?.Invoke(this, EventArgs.Empty);
            Add(exitButton);
        }
コード例 #9
0
        public void StartsNewGameCorrectly()
        {
            var mockPhraseRepository = new MockPhraseRepository();
            var mockGameRepository   = new MockGameRepository();
            var interactor           = new StartNewGame(mockPhraseRepository, mockGameRepository);

            mockPhraseRepository.Phrase       = "Small Test Phrase";
            mockGameRepository.GameIdentifier = Guid.Parse("00000000-0000-0000-0000-000000000001");
            var requestModel = new StartNewGame.RequestModel()
            {
                PlayerNames = new string[] { "Alice", "Bob", "Charlie" }
            };
            var presenter = new Presenter <StartNewGame.ResponseModel>();

            interactor.HandleRequest(requestModel, presenter);
            var responseModel = presenter.ResponseModel;

            Assert.Equal(Guid.Parse("00000000-0000-0000-0000-000000000001"), responseModel.GameIdentifier);
            Assert.Equal("_____ ____ ______", responseModel.Phrase);
            Assert.Equal("Alice", responseModel.CurrentPlayerName);
        }
コード例 #10
0
        public void Init()
        {
            var allPlayers   = Substitute.For <AllPlayers>();
            var defusingTime = Substitute.For <IDefusingTime>();
            var defusingTimerUpdatedListener = Substitute.For <IDefusingTimerUpdatedListener>();
            var defuseFailedListener         = Substitute.For <IDefuseFailedListener>();
            var defuseSucceededListener      = Substitute.For <IDefuseSucceededListener>();
            var defusingState = Substitute.For <DefusingState>(
                defusingTime, defusingTimerUpdatedListener, defuseFailedListener
                );
            var stdRandom  = Substitute.For <IRandom>();
            var deviceInfo = Substitute.For <IDeviceInfo>();

            _uiController = Substitute.For <IUIController>();

            _addNewPlayer        = Substitute.For <AddNewPlayer>(allPlayers, null);
            _setNewDefuseAttempt = Substitute.For <SetNewDefuseAttempt>(stdRandom, allPlayers,
                                                                        Substitute.For <AllBombs>(stdRandom, new IBomb[0], deviceInfo),
                                                                        defusingState, new DefuserCounter(),
                                                                        Substitute.For <INewDefuseAttemptSetListener>());
            _initDefusing = Substitute.For <InitDefusing>(defusingState);
            _startNewGame = Substitute.For <StartNewGame>(Substitute.For <INewGameStartedListener>());
            _tryToDefuse  = Substitute.For <TryToDefuse>(
                defusingState, defuseSucceededListener, defuseFailedListener,
                Substitute.For <IAnalyticsSubmitter>()
                );
            _changeCurrentView = Substitute.For <ChangeCurrentView>(Substitute.For <IViewManager>());

            _networkBehaviourChecker = Substitute.For <NetworkBehaviourChecker>();

            _allPlayerControllers = new AllPlayerControllers(allPlayers);

            _spotTheDefuserNetworkDiscovery = Substitute.For <ISpotTheDefuserNetworkDiscovery>();

            _playerController = new GameObject().AddComponent <PlayerController>();
            _playerController.Init(_addNewPlayer, _startNewGame, _initDefusing, _setNewDefuseAttempt, _tryToDefuse,
                                   _changeCurrentView, _allPlayerControllers, _uiController, _networkBehaviourChecker,
                                   _spotTheDefuserNetworkDiscovery);
        }
コード例 #11
0
        public MultiPlayerCampaignSetupUI(GUIComponent newGameContainer, GUIComponent loadGameContainer, IEnumerable <SubmarineInfo> submarines, IEnumerable <string> saveFiles = null)
            : base(newGameContainer, loadGameContainer)
        {
            var columnContainer = new GUILayoutGroup(new RectTransform(Vector2.One, newGameContainer.RectTransform), isHorizontal: true)
            {
                Stretch         = true,
                RelativeSpacing = 0.0f
            };

            var leftColumn = new GUILayoutGroup(new RectTransform(Vector2.One, columnContainer.RectTransform))
            {
                Stretch         = true,
                RelativeSpacing = 0.015f
            };

            var rightColumn = new GUILayoutGroup(new RectTransform(Vector2.Zero, columnContainer.RectTransform))
            {
                Stretch         = true,
                RelativeSpacing = 0.015f
            };

            columnContainer.Recalculate();

            // New game left side
            new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.02f), leftColumn.RectTransform)
            {
                MinSize = new Point(0, 20)
            }, TextManager.Get("SaveName"), font: GUI.SubHeadingFont);
            saveNameBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform)
            {
                MinSize = new Point(0, 20)
            }, string.Empty)
            {
                textFilterFunction = (string str) => { return(ToolBox.RemoveInvalidFileNameChars(str)); }
            };

            new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.02f), leftColumn.RectTransform)
            {
                MinSize = new Point(0, 20)
            }, TextManager.Get("MapSeed"), font: GUI.SubHeadingFont);
            seedBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform)
            {
                MinSize = new Point(0, 20)
            }, ToolBox.RandomSeed(8));

            // Spacing to fix the multiplayer campaign setup layout
            CreateMultiplayerCampaignSubList(leftColumn.RectTransform);

            //spacing
            //new GUIFrame(new RectTransform(new Vector2(1.0f, 0.25f), leftColumn.RectTransform), style: null);

            // New game right side
            subPreviewContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), rightColumn.RectTransform))
            {
                Stretch = true
            };

            var buttonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1f, 0.12f),
                                                                       leftColumn.RectTransform)
            {
                MaxSize = new Point(int.MaxValue, 60)
            }, childAnchor: Anchor.BottomRight, isHorizontal: true);

            StartButton = new GUIButton(new RectTransform(new Vector2(0.4f, 1f), buttonContainer.RectTransform, Anchor.BottomRight)
            {
                MaxSize = new Point(350, 60)
            }, TextManager.Get("StartCampaignButton"))
            {
                OnClicked = (GUIButton btn, object userData) =>
                {
                    if (string.IsNullOrWhiteSpace(saveNameBox.Text))
                    {
                        saveNameBox.Flash(GUI.Style.Red);
                        return(false);
                    }

                    SubmarineInfo selectedSub = null;

                    if (GameMain.NetLobbyScreen.SelectedSub == null)
                    {
                        return(false);
                    }
                    selectedSub = GameMain.NetLobbyScreen.SelectedSub;

                    if (selectedSub.SubmarineClass == SubmarineClass.Undefined)
                    {
                        new GUIMessageBox(TextManager.Get("error"), TextManager.Get("undefinedsubmarineselected"));
                        return(false);
                    }

                    if (string.IsNullOrEmpty(selectedSub.MD5Hash.Hash))
                    {
                        ((GUITextBlock)subList.SelectedComponent).TextColor = Color.DarkRed * 0.8f;
                        subList.SelectedComponent.CanBeFocused = false;
                        subList.Deselect();
                        return(false);
                    }

                    string savePath = SaveUtil.CreateSavePath(SaveUtil.SaveType.Multiplayer, saveNameBox.Text);
                    bool   hasRequiredContentPackages = selectedSub.RequiredContentPackagesInstalled;

                    CampaignSettings settings = new CampaignSettings();

                    settings.RadiationEnabled = GameMain.NetLobbyScreen.IsRadiationEnabled();
                    settings.MaxMissionCount  = GameMain.NetLobbyScreen.GetMaxMissionCount();

                    if (selectedSub.HasTag(SubmarineTag.Shuttle) || !hasRequiredContentPackages)
                    {
                        if (!hasRequiredContentPackages)
                        {
                            var msgBox = new GUIMessageBox(TextManager.Get("ContentPackageMismatch"),
                                                           TextManager.GetWithVariable("ContentPackageMismatchWarning", "[requiredcontentpackages]", string.Join(", ", selectedSub.RequiredContentPackages)),
                                                           new string[] { TextManager.Get("Yes"), TextManager.Get("No") });

                            msgBox.Buttons[0].OnClicked  = msgBox.Close;
                            msgBox.Buttons[0].OnClicked += (button, obj) =>
                            {
                                if (GUIMessageBox.MessageBoxes.Count == 0)
                                {
                                    StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text, settings);
                                    CoroutineManager.StartCoroutine(WaitForCampaignSetup(), "WaitForCampaignSetup");
                                }
                                return(true);
                            };

                            msgBox.Buttons[1].OnClicked = msgBox.Close;
                        }

                        if (selectedSub.HasTag(SubmarineTag.Shuttle))
                        {
                            var msgBox = new GUIMessageBox(TextManager.Get("ShuttleSelected"),
                                                           TextManager.Get("ShuttleWarning"),
                                                           new string[] { TextManager.Get("Yes"), TextManager.Get("No") });

                            msgBox.Buttons[0].OnClicked = (button, obj) =>
                            {
                                StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text, settings);
                                CoroutineManager.StartCoroutine(WaitForCampaignSetup(), "WaitForCampaignSetup");
                                return(true);
                            };
                            msgBox.Buttons[0].OnClicked += msgBox.Close;

                            msgBox.Buttons[1].OnClicked = msgBox.Close;
                            return(false);
                        }
                    }
                    else
                    {
                        StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text, settings);
                        CoroutineManager.StartCoroutine(WaitForCampaignSetup(), "WaitForCampaignSetup");
                    }

                    return(true);
                }
            };

            InitialMoneyText = new GUITextBlock(new RectTransform(new Vector2(0.6f, 1f), buttonContainer.RectTransform), "", font: GUI.Style.SmallFont, textColor: GUI.Style.Green)
            {
                TextGetter = () =>
                {
                    int initialMoney = CampaignMode.InitialMoney;
                    if (GameMain.NetLobbyScreen.SelectedSub != null)
                    {
                        initialMoney -= GameMain.NetLobbyScreen.SelectedSub.Price;
                    }
                    initialMoney = Math.Max(initialMoney, MultiPlayerCampaign.MinimumInitialMoney);
                    return(TextManager.GetWithVariable("campaignstartingmoney", "[money]", string.Format(CultureInfo.InvariantCulture, "{0:N0}", initialMoney)));
                }
            };

            columnContainer.Recalculate();
            leftColumn.Recalculate();
            rightColumn.Recalculate();

            if (submarines != null)
            {
                UpdateSubList(submarines);
            }
            UpdateLoadMenu(saveFiles);
        }
コード例 #12
0
 public void Init()
 {
     _newGameStartedListener = Substitute.For <INewGameStartedListener>();
     _startNewGame           = new StartNewGame(_newGameStartedListener);
 }
コード例 #13
0
        private bool FinishSetup(GUIButton btn, object userdata)
        {
            if (string.IsNullOrWhiteSpace(saveNameBox.Text))
            {
                saveNameBox.Flash(GUI.Style.Red);
                return(false);
            }

            SubmarineInfo selectedSub = null;

            if (!(subList.SelectedData is SubmarineInfo))
            {
                return(false);
            }
            selectedSub = subList.SelectedData as SubmarineInfo;

            if (selectedSub.SubmarineClass == SubmarineClass.Undefined)
            {
                new GUIMessageBox(TextManager.Get("error"), TextManager.Get("undefinedsubmarineselected"));
                return(false);
            }

            if (string.IsNullOrEmpty(selectedSub.MD5Hash.Hash))
            {
                ((GUITextBlock)subList.SelectedComponent).TextColor = Color.DarkRed * 0.8f;
                subList.SelectedComponent.CanBeFocused = false;
                subList.Deselect();
                return(false);
            }

            string savePath = SaveUtil.CreateSavePath(SaveUtil.SaveType.Singleplayer, saveNameBox.Text);
            bool   hasRequiredContentPackages = selectedSub.RequiredContentPackagesInstalled;

            CampaignSettings settings = new CampaignSettings();

            settings.RadiationEnabled = EnableRadiationToggle?.Selected ?? false;
            if (MaxMissionCountText != null && Int32.TryParse(MaxMissionCountText.Text, out int missionCount))
            {
                settings.MaxMissionCount = missionCount;
            }
            else
            {
                settings.MaxMissionCount = CampaignSettings.DefaultMaxMissionCount;
            }

            if (selectedSub.HasTag(SubmarineTag.Shuttle) || !hasRequiredContentPackages)
            {
                if (!hasRequiredContentPackages)
                {
                    var msgBox = new GUIMessageBox(TextManager.Get("ContentPackageMismatch"),
                                                   TextManager.GetWithVariable("ContentPackageMismatchWarning", "[requiredcontentpackages]", string.Join(", ", selectedSub.RequiredContentPackages)),
                                                   new string[] { TextManager.Get("Yes"), TextManager.Get("No") });

                    msgBox.Buttons[0].OnClicked  = msgBox.Close;
                    msgBox.Buttons[0].OnClicked += (button, obj) =>
                    {
                        if (GUIMessageBox.MessageBoxes.Count == 0)
                        {
                            StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text, settings);
                        }
                        return(true);
                    };

                    msgBox.Buttons[1].OnClicked = msgBox.Close;
                }

                if (selectedSub.HasTag(SubmarineTag.Shuttle))
                {
                    var msgBox = new GUIMessageBox(TextManager.Get("ShuttleSelected"),
                                                   TextManager.Get("ShuttleWarning"),
                                                   new string[] { TextManager.Get("Yes"), TextManager.Get("No") });

                    msgBox.Buttons[0].OnClicked = (button, obj) =>
                    {
                        StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text, settings);
                        return(true);
                    };
                    msgBox.Buttons[0].OnClicked += msgBox.Close;

                    msgBox.Buttons[1].OnClicked = msgBox.Close;
                    return(false);
                }
            }
            else
            {
                StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text, settings);
            }

            return(true);
        }
コード例 #14
0
ファイル: MainListener.cs プロジェクト: Tatko95/Hero
 public void StartGame(Game game, User you)
 {
     _mainWindowViewModel.LobyViewModelProp._lobyView.Visibility = System.Windows.Visibility.Hidden;
     StartNewGame.StartNewGameGo(game, you);
     _mainWindowViewModel.LobyViewModelProp._lobyView.Close();
 }
コード例 #15
0
 private void StartNewGameMethod(StartNewGame message)
 {
     GameStatus = new GameEvent(message.CreateGameRequest.Id,
                                message.CreateGameRequest.PlayerInfo);
     Context.Parent.Tell(new GameRegister(GameStatus));
 }