private static int GetFinalScore(WinningScreen winningScreen = null) { // Avg score: // Time Bonus: 6500 (5 mins) // Raw: 60000 // Max Combo: 100 * 100 = 10000 // --> 71500 // 3 mins: 1 / 180 * 2000000 -> 11111 // 5 mins: 1 / 300 * 2000000 -> 6666 // 7 mins: 1 / 420 * 2000000 -> 4761 int rawScore = Scene.Player.Score.Value; int timeBonus = (int)(1f / Scene.Timer.Counter * 2000000); int comboScore = Scene.Player.HighestCombo * 100; if (winningScreen != null) { float updateTime = 1.5f; // in seconds float updateInterval = EntryPoint.Game.Elapsed; winningScreen.ScoreUpdateAmount = rawScore * updateInterval / updateTime; winningScreen.TimeBonusUpdateAmount = timeBonus * updateInterval / updateTime; winningScreen.TimerUpdateAmount = winningScreen.TimeBonusUpdateAmount * Scene.Timer.Counter / timeBonus; winningScreen.ComboUpdateAmount = comboScore * updateInterval / updateTime; } return(rawScore + timeBonus + comboScore); }
public static void WinGame() { AudioManager.PlaySound("WinGame", percent: 1.5f); WinningScreen winningScreen = new WinningScreen(); winningScreen.Title.Text = $"Level {GlobalData.Session.CurrentLevel.ToString()} Passed!"; Scene.FinalScore = GetFinalScore(winningScreen); WindowManager.Open(winningScreen); ChangeState(winningState); }
private void SummerizeScore(WinningScreen winningScreen) { var player = StateMachine.Scene.Player; if (player.Score.Value > 0) { var updateAmount = (int)Math.Ceiling(winningScreen.ScoreUpdateAmount); winningScreen.DisplayedScore += updateAmount; player.Score.Value -= updateAmount; player.Score.Value = Math.Max(0, player.Score.Value); AudioManager.PlaySound("AddScore"); return; } if (player.HighestCombo > 0) { var updateAmount = (int)Math.Ceiling(winningScreen.ComboUpdateAmount); winningScreen.DisplayedScore += updateAmount; player.HighestCombo -= updateAmount; player.HighestCombo = Math.Max(0, player.HighestCombo); AudioManager.PlaySound("AddScore"); return; } if (StateMachine.Scene.Timer.Counter > 0) { var updateAmount = (int)Math.Ceiling(winningScreen.TimeBonusUpdateAmount); winningScreen.DisplayedScore += updateAmount; StateMachine.Scene.Timer.Counter -= winningScreen.TimerUpdateAmount; StateMachine.Scene.Timer.Counter = Math.Max(0, StateMachine.Scene.Timer.Counter); AudioManager.PlaySound("AddScore"); return; } winningScreen.DisplayedScore = StateMachine.Scene.FinalScore; winningScreen.StarCount = GetStars(); winningScreen.Stage = SummerizedStage.Star; }
protected override void Start() { base.Start(); instance = this; if (LevelManager.instance.gameState == LevelManager.GameState.InTutorial) { if (nextLevelButton != null) { nextLevelButton.onClick.AddListener(() => LevelSelection.instance.PlayLevel(LevelManager.instance.currentLevel)); } } if (spawner != null) { for (int i = 0; i < spawner.invObjectPrefabs.Count; i++) { spawner.invObjectPrefabs [i].SetActive(false); } } }
static void Main(string[] args) { //Opening screen functionality Console.WriteLine(TitleScreen.ShowHeader()); Console.WriteLine(TitleScreen.ShowOpeningContent()); Console.Title = "The Castle"; //Instantiating a base player that the user modifies via PlayerCreation() Player player = new Player("", 100, 10, 1000, 1000, 0, Race.Human, null, null, 1, null, null, null); player.PlayerCreation(player); //Instantiating game Bosses List <Monster> bosses = new List <Monster>(); BossCombat.MakeBosses(bosses); //Instantiating and assigning a List of Monsters to call opponents from List <Monster> monsters = new List <Monster>(); PopulateGame.PopulateMonsters(monsters); //Instantiating and assigning List of Items for monsters to carry randomly List <Item> monsterItems = new List <Item>(); PopulateGame.PopulateItems(monsterItems); //initializing variable to keep track of monsters defeated int killcount = 0; //condition to exit game loop bool exit = false; //START OF MAIN GAME LOOP do { //Changing Title to display player stats TitleScreen.DisplayPlayerStatsInTitle(player); //Adding special weapons later as player levels up PopulateGame.AddSpecialWeapon(player, monsterItems); //Getting a random monster from List<>monsters Monster monster = Monster.GetRandomMonster(monsters); //Making sure monster doesn't have an item Monster.UnequipMonster(monster); //equip monster differently Monster.EquipMonster(monster, monsterItems); bool reloadRoom = false; do { Combat.AlertPlayerOfMonster(monster); ConsoleKey userChoice = Console.ReadKey().Key; Console.Clear(); switch (userChoice) { //player chooses attack case ConsoleKey.A: Combat.DoBattle(player, monster); if (monster.Life < 1) { Monster.MonsterIsDead(monster); //if more than 20 items, inventory is full if (player.Inventory.ShowNumberOfItems() >= 20) { Player.PlayerInventoryIsFull(); monster.RemoveMonsterItem(monster); } //if not transfer items else { monster.TransferItem(monster, player); monster.RemoveMonsterItem(monster); } //exit loop to get a new room and monster reloadRoom = true; killcount++; //player assumes monsters XP Player.AddMonsterXPToPlayer(player, monster); Player.CheckLevel(player); Player.PlayerLevelBonus(player); //If the player reaches certain XP thresholds, the player fights a boss BossCombat.CheckXPForBossBattle(player, bosses); if (player.QuestItemsList.Count == 5) { WinningScreen.YouveWon(player); reloadRoom = true; exit = true; } } break; //Run away and get another room and monster case ConsoleKey.R: //gives the monster a chance to attack as player runs away Combat.PlayerRunAwayBattle(player, monster); reloadRoom = true; break; //Display player stats case ConsoleKey.P: Console.WriteLine(player + "\nMonsters Slain: " + killcount); break; //Display monster stats case ConsoleKey.M: Console.WriteLine(monster); break; //leave game case ConsoleKey.Escape: Console.WriteLine("Goodbye brave warrior..."); exit = true; break; //use potion case ConsoleKey.U: //check to see if a potions is equipped before use Player.CheckEquippedPotion(player); break; //View player inventory case ConsoleKey.I: player.Inventory.GetItem(player); break; default: Console.WriteLine("You have made an error. Please select again."); break; } //player death if (player.Life < 1) { Console.WriteLine("You have perished at the hands of the " + monster.Name + "!"); exit = true; } } while (!reloadRoom && !exit); } while (!exit); Console.WriteLine("GAME OVER \n\nYou killed {0} monster{1}! ", killcount, killcount == 1 ? "" : "s"); } //end main