Exemplo n.º 1
0
        // This method calls other methods to load the stage.
        public void LoadStage()
        {
            NAudio.PlayFile(Area.maps[player.Stage][player.StageDepth].Music);

            scene.EraseLayers();
            scene.ConsoleWriteImage();
            scene.DisplayBackground();
            scene.DisplayObjectsScene();
            player.PrintObject(scene);
            player.PlayerDisplayed = false;
            scene.DisplayPlayerInfo();
            scene.DisplayHealthBar();
        }
Exemplo n.º 2
0
        // Prints and redraws the player to the screen.
        public void UpdatePlayerDisplay()
        {
            player.PrintObject(scene);
            scene.DisplayArea(player.Location[0] - 1, player.Location[1] + 3, player.Height, player.Width);
            if (!player.battleInit)
            {
                if (Area.maps[player.Stage][player.StageDepth].Boss != null)
                {
                    Area.maps[player.Stage][player.StageDepth].Boss.PrintObject(scene);
                    opponent = Area.maps[player.Stage][player.StageDepth].Boss;
                    if (opponent.Music != null)
                    {
                        NAudio.PlayFile(opponent.Music);
                    }
                    player.battleInit      = true;
                    player.BattleMapXYZ[0] = player.Stage;
                    player.BattleMapXYZ[1] = player.Location[1];
                    player.BattleMapXYZ[2] = player.Location[0];
                    player.BattleMapXYZ[3] = player.StageDepth;
                    scene.DisplayObjectSceneLayer(player, ConsoleView.bkgLayer, false);
                    scene.DisplayObjectSceneLayer(opponent, opponent.Layer);
                    player.Location[1] = 10;
                    player.Location[0] = floor;
                    player.Animation   = 0;
                    UpdatePlayerDisplay();
                    scene.DisplayText("Battle Text", opponent.Name + " has beckoned you!", 36, 0, 8, 192, 8, 5);

                    if (opponent.Music != null)
                    {
                        NAudio.PlayFile(opponent.Music);
                    }
                    else
                    {
                        NAudio.PlayFile(@"\TBQuestMusic\Standard Battle\encounter.mp3");
                    }

                    scene.DisplayPlayerInfo(1, 0);
                    scene.DisplayEnemyInfo(opponent.Level, opponent.Name);
                }
                if (Area.maps[player.Stage][player.StageDepth].Spawns.Count > 0)
                {
                    int chance = 0;
                    foreach (var mobSpawn in Area.maps[player.Stage][player.StageDepth].Spawns)
                    {
                        chance += mobSpawn._chance;
                    }

                    int    i    = 0;
                    Random rng  = new Random();
                    int    rand = rng.Next(0, chance);
                    while ((rand -= Area.maps[player.Stage][player.StageDepth].Spawns[i]._chance) >= 0)
                    {
                        i++;
                    }

                    if (Area.maps[player.Stage][player.StageDepth].Spawns[i]._mob != null)
                    {
                        Area.maps[player.Stage][player.StageDepth].Spawns[i]._mob.PrintObject(scene);
                        opponent               = new Enemy(Area.maps[player.Stage][player.StageDepth].Spawns[i]._mob);
                        player.battleInit      = true;
                        player.BattleMapXYZ[0] = player.Stage;
                        player.BattleMapXYZ[1] = player.Location[1];
                        player.BattleMapXYZ[2] = player.Location[0];
                        player.BattleMapXYZ[3] = player.StageDepth;
                        scene.DisplayObjectSceneLayer(player, ConsoleView.bkgLayer, false);
                        scene.DisplayObjectSceneLayer(opponent, opponent.Layer);
                        player.Location[1] = 10;
                        player.Location[0] = floor;
                        player.Animation   = 0;
                        UpdatePlayerDisplay();
                        scene.DisplayText("Battle Text", "You've encountered " + opponent.Name + "!", 36, 0, 8, 192, 8, 5);
                        NAudio.PlayFile(@"\TBQuestMusic\Standard Battle\encounter.mp3");
                        scene.DisplayPlayerInfo(1, 0);
                        scene.DisplayEnemyInfo(opponent.Level, opponent.Name);
                    }
                }
            }
        }
Exemplo n.º 3
0
        void ProgramLoop()
        {
            int count = 0;

            while (!Keyboard.IsKeyDown(Key.Escape) && gameLoop)
            {
                count++;
                scene.ClearInputBuffer();
                Thread.Sleep(player.Speed);

                if (player.Health <= 0)
                {
                    NAudio.PlayFile(@"\TBQuestMusic\Standard Battle\Sad Trio.mp3");
                    scene.GameOver();
                    break;
                }

                if (player.InventoryInit)
                {
                    ManagePlayerInventory();
                    continue;
                }

                if (player.battleInit)
                {
                    Random rng = new Random();
                    scene.DisplayHealthBar(1, 1);
                    scene.DisplayEnemyHealthBar(opponent.Health, opponent.MaxHealth, scene._scene.GetLength(0) - (int)opponent.MaxHealth - 20);
                    scene.DisplayObjectSceneLayer(opponent, opponent.Layer);
                    if (player.Turn)
                    {
                        int input = scene.DisplayMenu(2, 50, 20, 50, 8, 5, "Attack Menu", "Attack", "Defend", "Items", "Run");
                        switch (input)
                        {
                        case 0:
                            player.Damage = rng.Next(rng.Next(player.Attack), player.Attack) + 10;
                            scene.DisplayText("Battle Text", "You attack " + opponent.Name + " for " + player.Damage + " damage!", 36, 0, 8, 192, 8, 5);
                            opponent.Damage  = rng.Next(rng.Next(opponent.Attack), opponent.Attack);
                            opponent.Health -= player.Damage;
                            break;

                        case 1:
                            scene.DisplayText("Battle Text", "You defend!", 36, 0, 8, 192, 8, 5);
                            opponent.Damage = rng.Next(rng.Next(opponent.Attack), opponent.Attack) / 2;
                            break;

                        case 2:
                            player.InventoryInit = true;
                            opponent.Damage      = rng.Next(rng.Next(opponent.Attack), opponent.Attack);
                            scene.DisplayInventory(2, 27, 20, 50, 8, 5, "Inventory");
                            break;

                        case 3:
                            player.battleInit = false;
                            NAudio.PlayFile(@"\TBQuestMusic\Standard Battle\Run Away.mp3");
                            scene.DisplayText("Battle Text", "You got away!", 36, 0, 8, 192, 8, 5);
                            break;

                        default:
                            break;
                        }
                        if (!player.InventoryInit)
                        {
                            scene.DisplayAreaLayer(2, 50, 20, 50);
                        }
                        player.Turn = false;
                    }
                    else
                    {
                        scene.DisplayText("Battle Text", opponent.Name + " attacked you for " + opponent.Damage + " damage!", 36, 0, 8, 192, 8, 5);
                        player.Health -= opponent.Damage;
                        player.Turn    = true;
                    }
                    if (!player.battleInit || opponent.Health <= 0 || player.Health <= 0)
                    {
                        scene.DisplayHealthBar(1, 1);
                        scene.DisplayEnemyHealthBar(opponent.Health, opponent.MaxHealth, scene._scene.GetLength(0) - (int)opponent.MaxHealth - 20);
                        if (opponent.Health <= 0)
                        {
                            player.Experience += opponent.Experience;
                            player.Gold       += opponent.Gold;
                            UpdatePlayerLevel();
                            NAudio.PlayFile(@"\TBQuestMusic\Standard Battle\Champions_Are_Here.mp3");
                            scene.DisplayText("Battle Text", " Hey you won! You've earned " + opponent.Experience + " experience!", 36, 0, 8, 192, 8, 5);
                            scene.DisplayText("Battle Text", " You've gained " + opponent.Gold + " gold!", 36, 0, 8, 192, 8, 5);
                            if (opponent == Monsters.kingboss)
                            {
                                gameLoop = false;
                                scene.GameWin();
                            }
                        }
                        if (gameLoop)
                        {
                            player.Turn       = true;
                            player.battleInit = false;
                            Area.maps[player.Stage][player.StageDepth].Boss = null;
                            player.Location[1] = player.BattleMapXYZ[1];
                            player.Location[0] = player.BattleMapXYZ[2];
                            LoadStage();
                        }
                    }
                    continue;
                }
                if (gameLoop)
                {
                    KeyControls();

                    if (count % 100 == 0)
                    {
                        foreach (Object item in Area.maps[player.Stage][player.StageDepth].Objects)
                        {
                            if (item.Sprite.Count > 1)
                            {
                                scene.DisplayAreaLayer(item.Location[0], item.Location[1] + 2, item.Height, item.Width, item.GetObjectFrame());
                            }
                        }
                        player.PlayerDisplayed = false;
                    }
                }
            }
            NAudio.KillAudio();
        }