public InGame(EInGameState _inGameState, List<PlayerStuff.Player> _playerList) { currentInGameState = _inGameState; Console.WriteLine(_playerList.Count); playerList = _playerList; handleInGameState(); }
public EGameState update(Microsoft.Xna.Framework.GameTime gameTime) { currentInGameState = inGameState.update(gameTime); if (currentInGameState == EInGameState.ExitInGame) return EGameState.MainMenu; if (currentInGameState == EInGameState.ExitInGame) return EGameState.Exit; return EGameState.InGame; }
// Start is called before the first frame update void Start() { // // Context eInGameState = EInGameState.countdown; // // Time-related if (EInGameEndRules.stock_and_time == Rules || EInGameEndRules.time == Rules) { RoundDurationMinute = (uint)(Mathf.Min(99, RoundDurationMinute)); RoundDurationSeconds = (uint)(Mathf.Min(59, RoundDurationSeconds)); fTotalTime = RoundDurationMinute * 60.0f + RoundDurationSeconds; fRemainingTime = fTotalTime; UiTime.gameObject.SetActive(true); } // // Player-related { int iPlayerCount = System.Enum.GetValues(typeof(EPlayerEnum)).Length; PlayerArray = new PlayerUI[iPlayerCount]; for (int iPlayerUIIndex = 0; iPlayerUIIndex < iPlayerCount; ++iPlayerUIIndex) { PlayerArray[iPlayerUIIndex].Player = null; } if (null != Player1) { PlayerArray[(int)(EPlayerEnum.p1)].Player = Player1; PlayerArray[(int)(EPlayerEnum.p1)].UiPercentage = UiP1Percentage; PlayerArray[(int)(EPlayerEnum.p1)].UiPanelStock = UiPanelStockP1; PlayerArray[(int)(EPlayerEnum.p1)].UiPanelStock1 = UiPanelStockP1Stock1; PlayerArray[(int)(EPlayerEnum.p1)].UiPanelStock2 = UiPanelStockP1Stock2; PlayerArray[(int)(EPlayerEnum.p1)].UiPanelStock3 = UiPanelStockP1Stock3; PlayerArray[(int)(EPlayerEnum.p1)].UiPanelStockX = UiPanelStockP1StockX; PlayerArray[(int)(EPlayerEnum.p1)].UiImageStockX = UiImageStockP1StockX; PlayerArray[(int)(EPlayerEnum.p1)].UiTextStockX = UiTextStockP1StockX; } if (null != Player2) { PlayerArray[(int)(EPlayerEnum.p2)].Player = Player2; PlayerArray[(int)(EPlayerEnum.p2)].UiPercentage = UiP2Percentage; PlayerArray[(int)(EPlayerEnum.p2)].UiPanelStock = UiPanelStockP2; PlayerArray[(int)(EPlayerEnum.p2)].UiPanelStock1 = UiPanelStockP2Stock1; PlayerArray[(int)(EPlayerEnum.p2)].UiPanelStock2 = UiPanelStockP2Stock2; PlayerArray[(int)(EPlayerEnum.p2)].UiPanelStock3 = UiPanelStockP2Stock3; PlayerArray[(int)(EPlayerEnum.p2)].UiPanelStockX = UiPanelStockP2StockX; PlayerArray[(int)(EPlayerEnum.p2)].UiImageStockX = UiImageStockP2StockX; PlayerArray[(int)(EPlayerEnum.p2)].UiTextStockX = UiTextStockP2StockX; } foreach (PlayerUI playerUI in PlayerArray) { if (null != playerUI.Player) { playerUI.Player.SetUiManager(this); playerUI.Player.SetStocks(iRoundStocksCount); playerUI.UiPercentage.text = 0.ToString("D3") + "%"; } } } // // Stock related if (EInGameEndRules.stock_and_time == Rules || EInGameEndRules.stock_and_time == Rules) { iRoundStocksCount = RoundStocksCount; foreach (PlayerUI playerUI in PlayerArray) { if (null != playerUI.Player) { playerUI.UiPanelStock.SetActive(true); playerUI.UiImageStockX.GetComponent <RawImage>().material = playerUI.Player.GetComponent <PlayerGameplay>().Head.material; playerUI.UiImageStockX.GetComponent <RawImage>().material.shader = Shader.Find("UI/Unlit/Detail"); RawImage[] images1 = playerUI.UiPanelStock1.GetComponentsInChildren <RawImage>(); foreach (RawImage image in images1) { image.material = playerUI.Player.GetComponent <PlayerGameplay>().Head.material; image.material.shader = Shader.Find("UI/Unlit/Detail"); } RawImage[] images2 = playerUI.UiPanelStock2.GetComponentsInChildren <RawImage>(); foreach (RawImage image in images2) { image.material = playerUI.Player.GetComponent <PlayerGameplay>().Head.material; image.material.shader = Shader.Find("UI/Unlit/Detail"); } RawImage[] images3 = playerUI.UiPanelStock3.GetComponentsInChildren <RawImage>(); foreach (RawImage image in images3) { image.material = playerUI.Player.GetComponent <PlayerGameplay>().Head.material; image.material.shader = Shader.Find("UI/Unlit/Detail"); } if (iRoundStocksCount < 2) { playerUI.UiPanelStock1.SetActive(true); } else if (iRoundStocksCount < 3) { playerUI.UiPanelStock2.SetActive(true); } else if (iRoundStocksCount < 4) { playerUI.UiPanelStock3.SetActive(true); } else { playerUI.UiPanelStockX.SetActive(true); playerUI.UiTextStockX.text = ((int)iRoundStocksCount).ToString("D2"); } } } } else { iRoundStocksCount = null; } }
// Update is called once per frame void Update() { // // Inputs if (Input.GetKeyUp(KeyCode.Escape)) { if (EInGameState.paused == eInGameState) { eInGameState = EInGameState.playing; } else { eInGameState = EInGameState.paused; } } switch (eInGameState) { case EInGameState.countdown: { eInGameState = EInGameState.playing; break; } case EInGameState.playing: { // // Check time if (EInGameEndRules.time == Rules || EInGameEndRules.stock_and_time == Rules) { fRemainingTime = Mathf.Max(fRemainingTime - Time.deltaTime, 0.0f); int iMinutesNb = (int)(fRemainingTime / 60); int iSecondsNb = (int)(fRemainingTime - iMinutesNb * 60.0f); UiTime.text = iMinutesNb.ToString("D2") + ":" + iSecondsNb.ToString("D2"); if (fRemainingTime == 0.0f) { bFinished |= true; } } if (bFinished) { eInGameState = EInGameState.finished; } break; } case EInGameState.paused: { break; } case EInGameState.finished: { UiPanelVictory.SetActive(true); if (0 == Player1.GetRemainingStocks()) { UiTextWinner.text = "P2"; } else if (0 == Player2.GetRemainingStocks()) { UiTextWinner.text = "P1"; } else { if (Player1.GetRemainingStocks() == Player2.GetRemainingStocks()) { if (Player1.GetPercentage() > Player2.GetPercentage()) { UiTextWinner.text = "P2"; } else { UiTextWinner.text = "P1"; } } else { if (Player1.GetRemainingStocks() > Player2.GetRemainingStocks()) { UiTextWinner.text = "P1"; } else { UiTextWinner.text = "P2"; } } } break; } } }
// Update is called once per frame void Update() { // // Inputs if (Input.GetKeyUp(KeyCode.Escape)) { if (EInGameState.paused == eInGameState) { eInGameState = EInGameState.playing; } else { eInGameState = EInGameState.paused; // // Disable spawning spawnerManager.DisableSpawning(); } } if (Debug.isDebugBuild) { if (Input.GetKey(KeyCode.R)) { // Go on victory screen eInGameState = EInGameState.finished; fRemainingTime = 0.0f; } } switch (eInGameState) { case EInGameState.countdown: { eInGameState = EInGameState.playing; // // Enable spawning spawnerManager.EnableSpawning(); break; } case EInGameState.playing: { // // Check time if (EInGameEndRules.time == Rules || EInGameEndRules.stock_and_time == Rules) { fRemainingTime = Mathf.Max(fRemainingTime - Time.deltaTime, 0.0f); int iMinutesNb = (int)(fRemainingTime / 60); int iSecondsNb = (int)(fRemainingTime - iMinutesNb * 60.0f); UiTime.text = iMinutesNb.ToString("D2") + ":" + iSecondsNb.ToString("D2"); if (fRemainingTime == 0.0f) { bFinished |= true; } } if (bFinished) { eInGameState = EInGameState.finished; fRemainingTime = 0.0f; // // Disable spawning spawnerManager.DisableSpawning(); } break; } case EInGameState.paused: { break; } case EInGameState.finished: { if (fRemainingTime == 0.0f) { UiPanelVictory.SetActive(true); if (0 == Player1.GetRemainingStocks()) { UiTextWinner.text = "P2"; } else if (0 == Player2.GetRemainingStocks()) { UiTextWinner.text = "P1"; } else { if (Player1.GetRemainingStocks() == Player2.GetRemainingStocks()) { if (Player1.GetPercentage() > Player2.GetPercentage()) { UiTextWinner.text = "P2"; } else { UiTextWinner.text = "P1"; } } else { if (Player1.GetRemainingStocks() > Player2.GetRemainingStocks()) { UiTextWinner.text = "P1"; } else { UiTextWinner.text = "P2"; } } } } fRemainingTime += Time.deltaTime; if (fRemainingTime >= 2.0f && (Input.GetKeyUp(KeyCode.Keypad0) || Input.GetKeyUp(KeyCode.Space))) { // Return to champ select SceneManager.LoadScene("ChampSelect", LoadSceneMode.Single); } break; } } }
// Start is called before the first frame update void OnEnable() { // // Context spawnerManager.Initialize(); eInGameState = EInGameState.countdown; // // Time-related if (EInGameEndRules.stock_and_time == Rules || EInGameEndRules.time == Rules) { RoundDurationMinute = (uint)(Mathf.Min(99, RoundDurationMinute)); RoundDurationSeconds = (uint)(Mathf.Min(59, RoundDurationSeconds)); fTotalTime = RoundDurationMinute * 60.0f + RoundDurationSeconds; fRemainingTime = fTotalTime; UiTime.gameObject.SetActive(true); } // // Player-related { int iPlayerCount = System.Enum.GetValues(typeof(EPlayerEnum)).Length; PlayerArray = new PlayerUI[iPlayerCount]; for (int iPlayerUIIndex = 0; iPlayerUIIndex < iPlayerCount; ++iPlayerUIIndex) { PlayerArray[iPlayerUIIndex].Player = null; } if (null != Player1) { PlayerArray[(int)(EPlayerEnum.p1)].Player = Player1; PlayerArray[(int)(EPlayerEnum.p1)].UiPercentage = UiP1Percentage; PlayerArray[(int)(EPlayerEnum.p1)].UiPanelStock = UiPanelStockP1; PlayerArray[(int)(EPlayerEnum.p1)].UiPanelStock1 = UiPanelStockP1Stock1; PlayerArray[(int)(EPlayerEnum.p1)].UiPanelStock2 = UiPanelStockP1Stock2; PlayerArray[(int)(EPlayerEnum.p1)].UiPanelStock3 = UiPanelStockP1Stock3; PlayerArray[(int)(EPlayerEnum.p1)].UiPanelStockX = UiPanelStockP1StockX; PlayerArray[(int)(EPlayerEnum.p1)].UiImageStockX = UiImageStockP1StockX; PlayerArray[(int)(EPlayerEnum.p1)].UiTextStockX = UiTextStockP1StockX; } if (null != Player2) { PlayerArray[(int)(EPlayerEnum.p2)].Player = Player2; PlayerArray[(int)(EPlayerEnum.p2)].UiPercentage = UiP2Percentage; PlayerArray[(int)(EPlayerEnum.p2)].UiPanelStock = UiPanelStockP2; PlayerArray[(int)(EPlayerEnum.p2)].UiPanelStock1 = UiPanelStockP2Stock1; PlayerArray[(int)(EPlayerEnum.p2)].UiPanelStock2 = UiPanelStockP2Stock2; PlayerArray[(int)(EPlayerEnum.p2)].UiPanelStock3 = UiPanelStockP2Stock3; PlayerArray[(int)(EPlayerEnum.p2)].UiPanelStockX = UiPanelStockP2StockX; PlayerArray[(int)(EPlayerEnum.p2)].UiImageStockX = UiImageStockP2StockX; PlayerArray[(int)(EPlayerEnum.p2)].UiTextStockX = UiTextStockP2StockX; } ArrayList aSpawnLocations = new ArrayList(); foreach (PlayerUI playerUI in PlayerArray) { if (null != playerUI.Player) { // // Update properties playerUI.Player.SetUiManager(this); playerUI.Player.SetStocks(iRoundStocksCount); // // Update % text playerUI.UiPercentage.text = 0.ToString("D3") + "%"; // // Set CountdownSpawn Transform newPose = spawnerManager.playerSpawnerManager.GetSpawnLocation(); int iMaxLoopCount = 5; int iLoopIndex = 0; while (aSpawnLocations.Contains(newPose)) { if (iLoopIndex > iMaxLoopCount) { // Must at least have PlayerCount spawner locations Assert.IsFalse(true); } ++iLoopIndex; newPose = spawnerManager.playerSpawnerManager.GetSpawnLocation(); } playerUI.Player.SetNextSpawnLocation(newPose); // // Hide character playerUI.Player.HideMeshes(); } } } // // Stock related if (EInGameEndRules.stock_and_time == Rules || EInGameEndRules.stock_and_time == Rules) { iRoundStocksCount = RoundStocksCount; foreach (PlayerUI playerUI in PlayerArray) { if (null != playerUI.Player) { playerUI.UiPanelStock.SetActive(true); playerUI.UiImageStockX.GetComponent <RawImage>().material = playerUI.Player.GetComponent <PlayerGameplay>().Head.material; playerUI.UiImageStockX.GetComponent <RawImage>().material.shader = Shader.Find("UI/Unlit/Detail"); RawImage[] images1 = playerUI.UiPanelStock1.GetComponentsInChildren <RawImage>(); foreach (RawImage image in images1) { image.enabled = true; image.material = playerUI.Player.GetComponent <PlayerGameplay>().Head.material; image.material.shader = Shader.Find("UI/Unlit/Detail"); } RawImage[] images2 = playerUI.UiPanelStock2.GetComponentsInChildren <RawImage>(); foreach (RawImage image in images2) { image.enabled = true; image.material = playerUI.Player.GetComponent <PlayerGameplay>().Head.material; image.material.shader = Shader.Find("UI/Unlit/Detail"); } RawImage[] images3 = playerUI.UiPanelStock3.GetComponentsInChildren <RawImage>(); foreach (RawImage image in images3) { image.enabled = true; image.material = playerUI.Player.GetComponent <PlayerGameplay>().Head.material; image.material.shader = Shader.Find("UI/Unlit/Detail"); } if (iRoundStocksCount < 2) { playerUI.UiPanelStock1.SetActive(true); } else if (iRoundStocksCount < 3) { playerUI.UiPanelStock2.SetActive(true); } else if (iRoundStocksCount < 4) { playerUI.UiPanelStock3.SetActive(true); } else { playerUI.UiPanelStockX.SetActive(true); playerUI.UiTextStockX.text = ((int)iRoundStocksCount).ToString("D2"); } } } } else { iRoundStocksCount = null; } }
/// <summary> /// Handles the GameStateChange, pretty basic /// </summary> public void handleInGameState() { List<PlayerStuff.Player> newPlayerList = playerList; switch (currentInGameState) { case EInGameState.NeedForIngrediance: inGameState = new InGameStates.NeedForIngrediance(newPlayerList); break; case EInGameState.RushHour: inGameState = new InGameStates.RushHour(newPlayerList); break; case EInGameState.Rumble: throw new NotImplementedException(); break; case EInGameState.Exit: //handle winning foreach (Player p in inGameState.getPlayerList()) { if (p.hasWon) { isWon = true; won = new Won(p.getViewportPosition(), true); break; } if (!isWon) { won = new Won(Player.EPlayerViewportPosition.fullscreen, false); isWon = true; } } Game1.sounds.inGameSound.Stop(); Game1.sounds.menuSound.Play(); break; } prevInGameState = currentInGameState; }
public override EGameState update(ownGameTime gameTime) { if (isWon) { bool w = won.update(gameTime); if (w) return EGameState.MainMenu; } else { gamePad1 = GamePad.GetState(PlayerIndex.One); gamePad2 = GamePad.GetState(PlayerIndex.Two); gamePad3 = GamePad.GetState(PlayerIndex.Three); gamePad4 = GamePad.GetState(PlayerIndex.Four); keyboard = Keyboard.GetState(); prevInGameState = currentInGameState; currentInGameState = inGameState.update(gameTime); if (currentInGameState != prevInGameState) handleInGameState(); if (isPaused) { Pause.EPausState pauseState = Pause.update(); if (pauseState == Pause.EPausState.pause) isPaused = true; if (pauseState == Pause.EPausState.game) { isPaused = false; gameTime.resume(); } if (pauseState == Pause.EPausState.mainMenu) { gameTime.resume(); //wird sonst nicht vorher aufgerufen Game1.sounds.inGameSound.Stop(); Game1.sounds.menuSound.Play(); //currentInGameState = EInGameState.Exit; return EGameState.MainMenu; } } //if (currentInGameState == EInGameState.Exit) // return EGameState.CharacterSelection; //activate pause Keyboard if (keyboard.IsKeyDown(Keys.Escape) && !isPaused) { isPaused = true; gameTime.pause(); pause = new Pause(PlayerStuff.Player.EPlayerControlls.Keyboard1); } if (gamePad1.IsButtonDown(Buttons.Back) && !isPaused) { isPaused = true; gameTime.pause(); pause = new Pause(PlayerStuff.Player.EPlayerControlls.Gamepad1); } if (gamePad2.IsButtonDown(Buttons.Back) && !isPaused) { isPaused = true; gameTime.pause(); pause = new Pause(PlayerStuff.Player.EPlayerControlls.Gamepad2); } if (gamePad3.IsButtonDown(Buttons.Back) && !isPaused) { isPaused = true; gameTime.pause(); pause = new Pause(PlayerStuff.Player.EPlayerControlls.Gamepad3); } if (gamePad4.IsButtonDown(Buttons.Back) && !isPaused) { isPaused = true; gameTime.pause(); pause = new Pause(PlayerStuff.Player.EPlayerControlls.Gamepad4); } } return EGameState.InGame; }