public BossLevel(Dictionary <int, int> staringDistances) { stars = -1; starD = staringDistances; HudManager.init(new HudManager.HudElement[] { HudManager.HudElement.Life, HudManager.HudElement.Stars, HudManager.HudElement.Clock, HudManager.HudElement.DistanceIcon }); door = new GameObject(0, 0, 0, 0); key = new Key(new Point(0, 0)); coin = new Coin(new Point(0, 0)); sea = null; RemoveFromGame(player); ListHandler(); bg = new ScrollingBackground(AssetManager.getSprite("Level" + levelNum), new Point(0, 0)); secondaryBackground = new ScrollingBackground(AssetManager.getSprite("SuperLong"), new Point(0, groundLevel)); ground = new Platform(0, groundLevel, winWidth, winWidth); groundVx = speeds[0]; toCreate = new Queue <Tree.TreeShape>(); lastObst = TreeShape.Small; ///ground must be created before the boss and the player player = new BossPlayer(ground); bestBrain = DataHandler.ReadFromBinaryFile <Network>(NeatManager.bestPlayerUrl); boss = new Boss(bestBrain, ground); obsticles = new List <Tree>(); clouds = new List <Drawable>(); AddToGame(boss); AddToGame(player); AddToGame(ground); AddToGame(secondaryBackground); getGame().bossLevel = this; }
protected virtual void ReciveGameInput() { BossPlayer p = (BossPlayer)player; if (InputHandler.KeyStrokeFull(Keys.LeftShift)) { MediaManager.muteAction(); } if (InputHandler.KeyStrokeFull(Keys.Escape)) { game.pauseGame(); } if (!InputHandler.IsInputBlocked()) { if (InputHandler.KeyDown(Keys.W)) { p.smallJump(); } if (InputHandler.KeyDown(Keys.Space)) { p.bigJump(); } } }
void Awake() { singleton = this; Players = new List <Player>(); ActiveEffects = new List <Effect>(); unresolvedCards = new List <CardDisplay>(); playerTargetZones = new List <TargetingZone>(); GameObject PlayerObject = new GameObject(); PlayerObject.name = "Player 1_Object"; PlayerObject.AddComponent <ActivePlayer>(); ActivePlayer player = PlayerObject.GetComponent <ActivePlayer>(); player.Username = "******"; self = player; GameObject AceObject = new GameObject(); AceObject.name = "AceObject"; AceObject.AddComponent <BossPlayer>(); Boss = AceObject.GetComponent <BossPlayer>(); Boss.Username = "******"; }
public async Task <BossLevelState> ReportBossDamage(int startLevel, long startXp, bool useHealAbility, int damageToBoss, int damageTaken) { for (int i = 0; i < 5; i++) { try { var message = $"{{action}}Reporting boss damage {{value}}+{damageToBoss.ToString("#,##0")}"; if (damageTaken > 0) { message += $"{{action}}, {{negvalue}}-{damageTaken.ToString("#,##0")}"; } if (useHealAbility) { message += $"{{action}}, {{value}}+Heal"; } message += $"{{action}}..."; this.Logger?.LogMessage(message); var response = await SaliensApi.ReportBossDamageAsync(this.Token, useHealAbility, damageToBoss, damageTaken); if (response.BossStatus == null) { return(BossLevelState.WaitingForPlayers); } BossPlayer currentPlayer = null; var bossHpColor = MathUtils.ScaleColor(response.BossStatus.BossMaxHp - response.BossStatus.BossHp, response.BossStatus.BossMaxHp, new[] { "{svlow}", "{slow}", "{smed}", "{shigh}", "{svhigh}" }); this.Logger?.LogMessage($"{bossHpColor}Boss HP: {response.BossStatus.BossHp.ToString("#,##0")}/{response.BossStatus.BossMaxHp.ToString("#,##0")}{{reset}} - {{lasers}}{response.NumLaserUses} lasers{{reset}} - {{heals}}{response.NumTeamHeals} heals"); foreach (var player in response.BossStatus.BossPlayers.OrderBy(p => p.Name)) { var playerStartLevel = player.LevelOnJoin; long.TryParse(player.ScoreOnJoin, out long playerStartXp); var isCurrentPlayer = playerStartLevel == startLevel && playerStartXp == startXp; if (isCurrentPlayer) { currentPlayer = player; } var playerColor = isCurrentPlayer ? "{player}" : "{reset}"; var hpColor = MathUtils.ScaleColor(player.MaxHp - player.Hp, player.MaxHp, new[] { "{svlow}", "{slow}", "{smed}", "{shigh}", "{svhigh}" }); this.Logger?.LogMessage($"{playerColor}{(player.Name.Length > 16 ? player.Name.Substring(0, 16) : player.Name).PadLeft(16)}: " + $"{hpColor}HP {player.Hp.ToString("#,##0").PadLeft(7)}/{player.MaxHp.ToString("#,##0").PadLeft(7)}{playerColor} - " + $"XP {player.XpEarned.ToString("#,##0").PadLeft(9)}/{(playerStartXp + player.XpEarned).ToString("#,##0").PadLeft(12)}"); } if (response.GameOver && currentPlayer != null && long.TryParse(this.PlayerInfo.Score, out long oldScore)) { // States this.PlayerInfo.Score = (oldScore + currentPlayer.XpEarned).ToString(); this.PlayerInfo.Level = currentPlayer.NewLevel; this.PlayerInfo.NextLevelScore = currentPlayer.NextLevelScore; } return(response.GameOver ? BossLevelState.GameOver : BossLevelState.Active); } catch (SaliensApiException ex) { switch (ex.EResult) { case EResult.Fail: case EResult.Busy: case EResult.RateLimitExceeded: this.Logger?.LogMessage($"{{warn}}Failed to report boss damage: {ex.Message} - Giving it a second ({i + 1}/5)..."); await Task.Delay(1000); continue; case EResult.Expired: case EResult.NoMatch: default: this.Logger?.LogMessage($"{{warn}}Failed to report boss damage: {ex.Message}"); ResetState(); throw; } } catch (WebException ex) { this.Logger?.LogMessage($"{{warn}}Failed to report boss damage: {ex.Message} - Giving it a second ({i + 1}/5)..."); await Task.Delay(1000); continue; } } // States, only set when failed ResetState(); void ResetState() { this.ActiveZone = null; this.PlayerInfo.ActiveBossGame = null; this.PlayerInfo.ActiveZonePosition = null; this.State = BotState.ForcedZoneLeave; } return(BossLevelState.Error); }
private void Start() { thePlayer = FindObjectOfType <BossPlayer>(); thePig = GetComponent <Pig>(); nav = GetComponent <NavMeshAgent>(); }
IEnumerator StartGameRoutine() { if (!isTitleHidden) { isTitleHidden = true; titleView.Hide(); yield return(new WaitForSeconds(0.4f)); } //Flash flashView.Show(); //0.2f to show, and 0.2f to hide yield return(new WaitForSeconds(0.2f)); //Let flash finish on all screen SpawnAIs(); //SpawnAIs if needed //Clean Bullet[] bullets = FindObjectsOfType <Bullet>(); for (int i = 0; i < bullets.Length; i++) { if (bullets[i].gameObject.activeInHierarchy) { ObjectPool.Instance.SaveObjectToPool(bullets[i].gameObject); } } ring.Restart(); if (lastManRingCanons != null) { Destroy(lastManRingCanons.gameObject); lastManRingCanons = null; } HealAll(); RepositionPlayers(); //Change Mode if (State.Equals(GameState.Initializing)) { MusicController.Instance.PlayNormalMusic(0.1f); State = GameState.LastManStanding; //Change View yield return(StartCoroutine(lastManStandingCounter.StartCountRoutine(null))); MusicController.Instance.PlayClip(0.6f, 4f); } else if (State.Equals(GameState.LastManStanding) && lastManStandingCounts >= 3) { State = GameState.PlayersVsPlayerBoss; //Change View yield return(StartCoroutine(playerBossCounter.StartCountRoutine(null))); //Flash flashView.Show(); //0.2f to show, and 0.2f to hide yield return(new WaitForSeconds(0.2f)); //Let flash finish on all screen } else if (State.Equals(GameState.PlayersVsPlayerBoss) && (playerBossKilledWin || playersVsBossPlayerCounts >= 1)) { State = GameState.PlayersVsLastBoss; if (bossPlayer != null) { Destroy(bossPlayer.gameObject); bossPlayer = null; players[firstBloodedPlayer.DeviceId] = firstBloodedPlayer; firstBloodedPlayer.gameObject.SetActive(true); } RepositionPlayers(); MusicController.Instance.StopClip(3f); //Introduction dialogue yield return(StartCoroutine(bossDialogueBox.StartRoutine("Are you having fun...", null, 0.5f))); yield return(StartCoroutine(bossDialogueBox.StartRoutine("... Player?", null))); yield return(StartCoroutine(bossDialogueBox.StartRoutine("LET", null, 0.5f))); yield return(StartCoroutine(bossDialogueBox.StartRoutine("ME", null, 0.5f))); yield return(StartCoroutine(bossDialogueBox.StartRoutine("JOIN", null, 0.5f))); yield return(new WaitForSeconds(0.5f)); //Flash flashView.Show(); //0.2f to show, and 0.2f to hide yield return(new WaitForSeconds(0.2f)); //Let flash finish on all screen postProcessVolume.profile = finalProfile; } else if (State.Equals(GameState.PlayersVsLastBoss) && (finalBossKilledWin || finalBossCounts >= 3)) { MusicController.Instance.StopClip(0.5f); //Boss dialogues yield return(StartCoroutine(bossDialogueBox.StartRoutine("Oh no. Did you really think you could WIN?", null))); yield return(StartCoroutine(hahaView.StartCountRoutine(null))); //HA HA finalBoss.Heal(15000); yield return(StartCoroutine(bossDialogueBox.StartRoutine("It's my world...", null, 0.5f))); yield return(StartCoroutine(bossDialogueBox.StartRoutine("... Player", null, 1f))); yield return(StartCoroutine(bossDialogueBox.StartRoutine("And, in my world, I do what I wish", null))); //Kill all players yield return(new WaitForSeconds(1f)); foreach (var item in players) { item.Value.HardKill(); } yield return(new WaitForSeconds(1f)); //HA HA HA HA HA HA yield return(StartCoroutine(bossDialogueBox.StartRoutine("HA HA HA HA HA HA HA...", null, 0.1f))); //Obscure screen. Ready for credits gameOverView.Show(); State = GameState.Credits; postProcessVolume.profile = normalProfile; } bool willGameActivate = true; if (State.Equals(GameState.LastManStanding)) { lastManStandingCounts++; } else if (State.Equals(GameState.PlayersVsPlayerBoss)) { if (bossPlayer == null) { //Instantiate player prefab, store device id + player script in a dictionary GameObject bossPlayerGo = Instantiate(playerBossPrefab, Vector3.zero, Quaternion.Euler(0f, 0f, -90f)) as GameObject; bossPlayer = bossPlayerGo.GetComponent <BossPlayer>(); //Replace players[firstBloodedPlayer.DeviceId] = bossPlayer; //Set position and color bossPlayer.SetColor(firstBloodedPlayer.myColor); bossPlayer.SetDeviceId(firstBloodedPlayer.DeviceId); //Unactive old firstBloodedPlayer.gameObject.SetActive(false); } bossPlayer.ForceCenterLook(); bossPlayer.transform.position = Vector3.zero; playersVsBossPlayerCounts++; } else if (State.Equals(GameState.PlayersVsLastBoss)) { //Create Final Boss if (finalBoss == null) { GameObject finalBossGo = Instantiate(finalBossPrefab, Vector3.zero, Quaternion.Euler(0f, 0f, 0f)) as GameObject; finalBoss = finalBossGo.GetComponent <FinalBoss>(); //Its show time yield return(StartCoroutine(finalBossTitle.StartCountRoutine(null))); MusicController.Instance.PlayBossMusic(0.75f); } finalBoss.Heal(15000); finalBossCounts++; } else if (State.Equals(GameState.Credits)) //Credits { //Delete boss if (finalBoss != null) { Destroy(finalBoss.gameObject); //Its show time } State = GameState.Initializing; lastManStandingCounts = 0; playersVsBossPlayerCounts = 0; finalBossCounts = 0; firstBloodedPlayer = null; yield return(new WaitForSeconds(5f)); gameOverView.Hide(); creditsView.Show();//Show credits yield return(new WaitForSeconds(0.5f)); yield return(new WaitForSeconds(10f)); //Wait creditsView.Hide(); //Hide willGameActivate = false; Invoke("StartGame", 1f); } if (willGameActivate) { mainCounter.StartCount(ActivateGame); } }