コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
        }
コード例 #4
0
    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);
            }
        }
    }
コード例 #5
0
        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