Exemple #1
0
 //public void AddItem(Item item)
 //{
 //    if (inventory.Count < inventoryMax)
 //    {
 //        inventory.Add(item);
 //        String content = "You receive " + item.Name + "!";
 //        Window.SetContent(content);
 //        Window.SetPosition();
 //        Window.DrawWindow();
 //    }
 //}
 public bool AddItem(Item item)
 {
     if (inventory.Count < inventoryMax)
     {
         inventory.Add(item);
         String content = "You receive " + item.Name + "!";
         SpriteManager.PlayCue("pickup");
         UI.ShowMessage(content);
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemple #2
0
        public void AddContent(UserControlledSprite player)
        {
            if (location == new Point(26, 26))
            {
                //Victory
                String content = "    Contratiations, brav warriar.  You have proofed yourself a true" + Environment.NewLine +
                                 "     hero.  Not manny could have fought there way thrugh this dank," + Environment.NewLine +
                                 "   dangerous dungeon and livved too tell the tail.  You're exploits" + Environment.NewLine +
                                 "    will be told thrugh the anals of history.  Bards will sing of" + Environment.NewLine +
                                 "     your glourius deeds.  Thou you still have not found an exit," + Environment.NewLine +
                                 "      no that you're efforts were not in vane.  There is a piece" + Environment.NewLine +
                                 "     of chalk on the ground where you may right your name. If you" + Environment.NewLine +
                                 "    are lucky, someone will see it someday and be like \"whoa, this" + Environment.NewLine +
                                 "   dude made it all the way through.\" and then all that cool stuff" + Environment.NewLine +
                                 "    I said earlier about the bards and your exploits will probably" + Environment.NewLine +
                                 "                                  happen." + Environment.NewLine +
                                 "                         Thank you for playing Dank!" + Environment.NewLine +
                                 "                           Press Enter to Exit Game";
                Game1.WON = true;
                UI.ShowDialogue(content, 13, 70);
            }
            else
            {
                player.Difficulty = difficulty;

                if (items.Count > 0)//Items in room
                {
                    List <Item> tItems = new List <Item>(items);
                    foreach (Item i in tItems)
                    {
                        if (player.AddItem(i))
                        {
                            items.Remove(i);
                        }
                        else
                        {
                            UI.ShowMessage("Inventory Full");
                            return;
                        }
                    }
                }
            }
        }
Exemple #3
0
 public void GainExp(int amount, Random rand)
 {
     exp += amount;
     if (exp >= level * 10)
     {
         UI.ShowMessage("Level up!");
         exp    = exp % amount;
         level += 1;
         if (level == 5)
         {
             UI.ShowMessage("Learned Skill: Alternate Route!");
             UI.ShowMessage("Press H for controls");
         }
         Strength          += rand.Next(1, 3);
         Defense           += rand.Next(1, 3);
         Speed             += rand.Next(1, 3);
         HealthMax         += rand.Next(2, 5);
         rotationEnergyMax += rand.Next(2, 5);
         Health             = HealthMax;
         rotationEnergy     = rotationEnergyMax;
     }
 }
Exemple #4
0
        /// <summary>
        /// Allows the game component to update itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        public override void Update(GameTime gameTime)
        {
            if (Game1.GAMEOVER)
            {
                base.Update(gameTime);
                return;
            }
            #region bgm
            //control the bgm
            MediaPlayer.Volume = Game1.Volume;
            audioEngine.Update();
            if (MediaPlayer.State == MediaState.Stopped)
            {
                int randSongNum = rand.Next(1, 2); //pick value 1..6
                song = Game.Content.Load <Song>(@"Audio\dungeon" + randSongNum);
                MediaPlayer.Play(song);
            }
            #endregion

            UI.Update(gameTime, player);
            // TODO: Add your update code here

            if (Game1.BATTLE)
            {
                List <Sprite> enemies = new List <Sprite>(player.CurrentRoom.Enemies);
                /**DEBUG - No Battles**/
                //foreach (Sprite e in enemies)
                //{
                //    player.CurrentRoom.Enemies.Remove(e);
                //    this.enemies.Remove(e);
                //}
                //Game1.BATTLE = false;
                //return;
                player.Animations.CurrentAnimation = "fight";
                int exp         = 0;
                int health      = 0;
                int eHealth     = 0;
                int eMaxHealth  = 0;
                int eStrength   = 0;
                int eDefense    = 0;
                int eSpeed      = 0;
                int eCount      = player.CurrentRoom.Enemies.Count;
                int eDifficulty = 0;
                foreach (Sprite e in enemies)
                {
                    eHealth     += e.Health;
                    eSpeed      += e.Speed;
                    eStrength   += e.Strength;
                    eDefense    += e.Defense;
                    eDifficulty += e.Difficulty;
                }
                eDifficulty += eCount;
                //bonus exp for fighting groups
                if (eCount > 1)
                {
                    eDifficulty += eCount;
                }
                eSpeed     = eSpeed - eCount + 1;
                eDefense   = eDefense - eCount + 1;
                eStrength  = eStrength - eCount + 1;
                eMaxHealth = eHealth;
                do
                {
                    //Player deals damage first
                    if (player.Speed > eSpeed)
                    {
                        if (player.Strength >= eDefense)
                        {
                            eHealth -= player.Strength - eDefense;
                            if (eHealth <= 0)
                            {
                                exp += eDifficulty;
                                player.GainExp(eDifficulty, rand);
                                foreach (Sprite e in enemies)
                                {
                                    player.CurrentRoom.Enemies.Remove(e);
                                    this.enemies.Remove(e);
                                }
                            }
                            else if (eHealth <= eMaxHealth / eCount)
                            {
                                eStrength  /= eCount;
                                eDefense   /= eCount;
                                eSpeed     /= eCount;
                                eMaxHealth /= eCount;
                                eCount--;
                            }
                        }
                        if (eStrength >= player.Defense)
                        {
                            player.SubtractHealth(eStrength - player.Defense);
                            health += eStrength - player.Defense;
                        }
                    }
                    else
                    {
                        if (eStrength >= player.Defense)
                        {
                            player.SubtractHealth(eStrength - player.Defense);
                            health += eStrength - player.Defense;
                        }
                        if (player.Strength >= eDefense)
                        {
                            eHealth -= player.Strength - eDefense;
                            if (eHealth <= 0)
                            {
                                exp += eDifficulty;
                                player.GainExp(eDifficulty, rand);
                                foreach (Sprite e in enemies)
                                {
                                    player.CurrentRoom.Enemies.Remove(e);
                                    this.enemies.Remove(e);
                                }
                            }
                            else if (eHealth <= eMaxHealth / eCount)
                            {
                                eStrength  /= eCount;
                                eDefense   /= eCount;
                                eSpeed     /= eCount;
                                eMaxHealth /= eCount;
                                eCount--;
                            }
                        }
                    }
                    enemies = new List <Sprite>(player.CurrentRoom.Enemies);
                } while (player.CurrentRoom.Enemies.Count > 0 && !Game1.GAMEOVER);
                UI.ShowMessage("You cleared the room!");
                UI.ShowMessage("Lost " + health.ToString() + " health!");
                UI.ShowMessage("Gained " + exp.ToString() + " experience!");


                Game1.BATTLE = BattleChecker();
            }
            else
            {
                if (!enemyTurn)
                {
                    player.Turn = true;
                    eTurnSet    = false;
                    //Game1.BATTLE = BattleChecker(player);
                }

                //player turn


                player.Update(gameTime, Game.Window.ClientBounds, floor, this);

                if (!player.Turn && !eTurnSet)
                {
                    //setting the enemy turns

                    if (!SpriteManager.SkipTurn)
                    {
                        foreach (Sprite e in enemies)
                        {
                            e.Turn = true;
                        }
                        eTurnSet = true;
                    }
                    //before players turn taken for battle
                    //Battle(player);
                }

                eTurnCount = 0;
                foreach (Sprite e in enemies)
                {
                    //enemies take their turns
                    e.Update(gameTime, Game.Window.ClientBounds, floor, player, rand);
                    if (e.Turn)
                    {
                        eTurnCount += 1;
                    }
                }


                if (eTurnCount > 0)
                {
                    enemyTurn = true;
                }
                else
                {
                    enemyTurn = false;
                }


                float x    = player.Location.X;
                float y    = player.Location.Y;
                float xMax = x + 1;
                float yMax = y + 1;
                if (x - 1 <= 0)
                {
                    x = 0;
                }
                else
                {
                    x = x - 1;
                }
                if (y - 1 <= 0)
                {
                    y = 0;
                }
                else
                {
                    y = y - 1;
                }
                if (xMax > 26)
                {
                    xMax = 26;
                }
                if (yMax > 26)
                {
                    yMax = 26;
                }
                for (int i = (int)x; i <= xMax; i++)
                {
                    for (int j = (int)y; j <= yMax; j++)
                    {
                        floor[i, j].Update(gameTime);
                    }
                }


                camera.Update(gameTime, player);
            }

            base.Update(gameTime);
        }
Exemple #5
0
        private KeyboardState UpdateInput(KeyboardState oldState, Floor floor, SpriteManager spriteManager)
        {
            KeyboardState newState = Keyboard.GetState();

            //checking if at the top of the map
            if (Location.Y != 0)
            {
                if (oldState.IsKeyDown(Keys.Up) && !(newState.IsKeyDown(Keys.Up)))
                {
                    dir = 1;
                    move(floor, new Vector2(0, 1));
                }
            }
            //checking right
            if (Location.X != 26)
            {
                if (oldState.IsKeyDown(Keys.Right) && !(newState.IsKeyDown(Keys.Right)))
                {
                    dir = 2;
                    move(floor, new Vector2(-1, 0));
                }
            }
            //checking down
            if (Location.Y != 26)
            {
                if (oldState.IsKeyDown(Keys.Down) && !(newState.IsKeyDown(Keys.Down)))
                {
                    dir = 3;
                    move(floor, new Vector2(0, -1));
                }
            }
            //checking left
            if (Location.X != 0)
            {
                if (oldState.IsKeyDown(Keys.Left) && !(newState.IsKeyDown(Keys.Left)))
                {
                    dir = 4;
                    move(floor, new Vector2(1, 0));
                }
            }
            if (oldState.IsKeyDown(Keys.Enter) && !(newState.IsKeyDown(Keys.Enter)))
            {
                //ROTATE ADJACENT ROOMS

                if (newState.IsKeyDown(Keys.A) && Location.X > 0 && rotationEnergy >= 5)
                {
                    rotate(floor, spriteManager, new Vector2(1, 0));
                }
                else if (newState.IsKeyDown(Keys.D) && Location.X < 26 && rotationEnergy >= 5)
                {
                    rotate(floor, spriteManager, new Vector2(-1, 0));
                }
                else if (newState.IsKeyDown(Keys.W) && Location.Y > 0 && rotationEnergy >= 5)
                {
                    rotate(floor, spriteManager, new Vector2(0, 1));
                }
                else if (newState.IsKeyDown(Keys.S) && Location.Y < 26 && rotationEnergy >= 5)
                {
                    rotate(floor, spriteManager, new Vector2(0, -1));
                }
                else if ((newState.GetPressedKeys().Length == 0) && rotationEnergy >= 2)
                {
                    //Rotate current room
                    rotate(floor, spriteManager, Vector2.Zero);
                }
                //else
                //spriteManager.PlayCue("error");
            }

            if (oldState.IsKeyDown(Keys.Back) && !(newState.IsKeyDown(Keys.Back)) && level >= 5)
            {
                if (newState.IsKeyDown(Keys.A) && Location.X > 0)
                {
                    if (SubtractEnergy(10))
                    {
                        CurrentRoom.AddExit(4);
                        floor[Location.X - 1, Location.Y].AddExit(2);
                    }
                }
                else if (newState.IsKeyDown(Keys.D) && Location.X < 26)
                {
                    if (SubtractEnergy(10))
                    {
                        CurrentRoom.AddExit(2);
                        floor[Location.X + 1, Location.Y].AddExit(4);
                    }
                }
                else if (newState.IsKeyDown(Keys.W) && Location.Y > 0)
                {
                    if (SubtractEnergy(10))
                    {
                        CurrentRoom.AddExit(1);
                        floor[Location.X, Location.Y - 1].AddExit(3);
                    }
                }
                else if (newState.IsKeyDown(Keys.S) && Location.Y < 26)
                {
                    if (SubtractEnergy(10))
                    {
                        CurrentRoom.AddExit(3);
                        floor[Location.X, Location.Y + 1].AddExit(1);
                    }
                }
            }
            //if (oldState.IsKeyDown(Keys.Delete) && !(newState.IsKeyDown(Keys.Delete)))
            //{
            //    if (newState.IsKeyDown(Keys.A) && Location.X > 0)
            //    {
            //        CurrentRoom.RemoveExit(4);
            //        floor[Location.X - 1, Location.Y].RemoveExit(2);
            //    }
            //    else if (newState.IsKeyDown(Keys.D) && Location.X < 26)
            //    {
            //        CurrentRoom.RemoveExit(2);
            //        floor[Location.X + 1, Location.Y].RemoveExit(4);
            //    }
            //    else if (newState.IsKeyDown(Keys.W) && Location.Y > 0)
            //    {
            //        CurrentRoom.RemoveExit(1);
            //        floor[Location.X, Location.Y - 1].RemoveExit(3);
            //    }
            //    else if (newState.IsKeyDown(Keys.S) && Location.Y < 26)
            //    {
            //        CurrentRoom.RemoveExit(3);
            //        floor[Location.X, Location.Y + 1].RemoveExit(1);
            //    }

            //}
            if (oldState.IsKeyDown(Keys.Home) && !(newState.IsKeyDown(Keys.Home)))
            {
                SpriteManager.SkipTurn = !SpriteManager.SkipTurn;
            }
            if (oldState.IsKeyDown(Keys.E) && !(newState.IsKeyDown(Keys.E)))
            {
                Item check = checkInventory(ItemList.Get("Energy Potion"));
                if (check != null)
                {
                    check.Use(this);
                }
            }
            if (oldState.IsKeyDown(Keys.P) && !(newState.IsKeyDown(Keys.P)))
            {
                Item check = checkInventory(ItemList.Get("Potion"));
                if (check != null)
                {
                    check.Use(this);
                }
            }
            //if (oldState.IsKeyDown(Keys.F) && !newState.IsKeyDown(Keys.F))
            //{
            //    AddItem(ItemList.Get("Elixir of Strength"));
            //    AddItem(ItemList.Get("Stoneskin Potion"));
            //}
            if (oldState.IsKeyDown(Keys.Escape) && !newState.IsKeyDown(Keys.Escape))
            {
                SpriteManager.ShowOptions();
            }
            if (oldState.IsKeyDown(Keys.Space) && !newState.IsKeyDown(Keys.Space))
            {
                turnTaken = true;
            }
            if (oldState.IsKeyDown(Keys.I) && !newState.IsKeyDown(Keys.I))
            {
                ShowInventory();
            }
            if (oldState.IsKeyDown(Keys.C) && !newState.IsKeyDown(Keys.C))
            {
                ShowStatus();
            }
            if (oldState.IsKeyDown(Keys.H) && !newState.IsKeyDown(Keys.H))
            {
                UI.ShowMessage("Controls:  ");
                UI.ShowMessage("Skip Turn: SPACE  Quick Use Energy Potion: E  Quick Use Potion: P");
                UI.ShowMessage("Status: C  Inventory: I  Volume Controls: ESC  Help: H  Move: ARROWS");
                UI.ShowMessage("Rotate Room: ENTER  Rotate Adjacent room: W,A,S,D + ENTER");
                UI.ShowMessage("Rotating rooms consumes your energy. 2 for your room, 5 for adjacent");
                if (level >= 5)
                {
                    UI.ShowMessage("(Level 5)Alternate Exit blasts a hole into an adjacent room");
                    UI.ShowMessage("Alternate Exit: W,A,S,D + BACKSPACE  Costs 10 energy");
                }
            }
            oldState = newState;
            return(oldState);
        }
Exemple #6
0
        public void Update(GameTime gameTime, UserControlledSprite player)
        {
            if (wContent != "")
            {
                Game1.PAUSED = true;
                unpause      = false;
            }
            KeyboardState newState = Keyboard.GetState();

            volumePer += gameTime.ElapsedGameTime.Milliseconds;

            if (unpause)
            {
                pauseTime += gameTime.ElapsedGameTime.Milliseconds;
                if (pauseTime >= 200)
                {
                    Game1.PAUSED = false;
                    unpause      = false;
                    pauseTime    = 0;
                }
            }



            if (wType == "inventory")
            {
                Window description = new Window();
                if (wContent != "Empty")
                {
                    description = UI.ShowMessage(player.Inventory[wIndex].Description + "  Worth: " + player.Inventory[wIndex].Value.ToString(), new Point(this.wPosition.X + this.wPosition.Width + borderWidth * 2 + 5, this.wPosition.Y), "description");
                }

                setSelection();
                if (oldState.IsKeyDown(Keys.Up) && !newState.IsKeyDown(Keys.Up))
                {
                    if (wIndex != 0)
                    {
                        wIndex--;
                    }
                }
                if (oldState.IsKeyDown(Keys.Down) && !newState.IsKeyDown(Keys.Down))
                {
                    if (wIndex < wLines - 1)
                    {
                        wIndex++;
                    }
                }
                if (oldState.IsKeyDown(Keys.Enter) && !newState.IsKeyDown(Keys.Enter))
                {
                    //Use Item
                    if (wContent != "Empty")
                    {
                        if (player.UseItem(wIndex) <= 0 && wIndex != 0)
                        {
                            wIndex--;
                        }
                        player.ShowInventory();
                        if (wContent == "Empty")
                        {
                            description.closeWindow();
                        }
                    }
                }
                if (oldState.IsKeyDown(Keys.I) && !newState.IsKeyDown(Keys.I))
                {
                    closeWindow();
                    description.closeWindow();
                }
                if (oldState.IsKeyDown(Keys.Escape) && !newState.IsKeyDown(Keys.Escape))
                {
                    closeWindow();
                    description.closeWindow();
                }
            }
            else if (wType == "options")
            {
                setSelection();
                if (oldState.IsKeyDown(Keys.Up) && !newState.IsKeyDown(Keys.Up))
                {
                    if (wIndex != 0)
                    {
                        wIndex--;
                    }
                }
                if (oldState.IsKeyDown(Keys.Down) && !newState.IsKeyDown(Keys.Down))
                {
                    if (wIndex < wLines - 1)
                    {
                        wIndex++;
                    }
                }
                if (wIndex == 0) //Music
                {
                    if (newState.IsKeyDown(Keys.Left))
                    {
                        if (Game1.Volume > 0.0f || oldVolume > 0.0f)
                        {
                            if (volumePer >= volumeMax)
                            {
                                if (oldVolume > 0)
                                {
                                    Game1.Volume = oldVolume;
                                    oldVolume    = 0;
                                }
                                if (Game1.Volume > 0.0f)
                                {
                                    Game1.Volume -= .01f;
                                }
                                volumePer = 0;
                                SpriteManager.ShowOptions();
                            }
                        }
                    }
                    if (newState.IsKeyDown(Keys.Right))
                    {
                        if (Game1.Volume < 1.0f)
                        {
                            //volumePer += gameTime.ElapsedGameTime.Milliseconds;
                            if (volumePer >= volumeMax)
                            {
                                if (oldVolume > 0)
                                {
                                    Game1.Volume = oldVolume;
                                    oldVolume    = 0;
                                }
                                if (Game1.Volume < 1.0f)
                                {
                                    Game1.Volume += .01f;
                                }
                                volumePer = 0;
                                SpriteManager.ShowOptions();
                            }
                        }
                    }
                    if (oldState.IsKeyDown(Keys.Enter) && !newState.IsKeyDown(Keys.Enter))
                    {
                        if (oldVolume > 0)
                        {
                            Game1.Volume = oldVolume;
                            oldVolume    = 0f;
                            SpriteManager.ShowOptions();
                        }
                        else
                        {
                            oldVolume    = Game1.Volume;
                            Game1.Volume = 0.0f;
                            SpriteManager.ShowOptions();
                        }
                    }
                }
                else if (wIndex == 1)
                {
                    if (newState.IsKeyDown(Keys.Left))
                    {
                        if (Game1.SEVolume > 0.0f || oldSEVolume > 0.0f)
                        {
                            if (volumePer >= volumeMax)
                            {
                                if (oldSEVolume > 0)
                                {
                                    Game1.SEVolume = oldSEVolume;
                                    Game1.SE       = true;
                                    oldSEVolume    = 0;
                                }
                                if (Game1.SEVolume > 0.0f)
                                {
                                    Game1.SEVolume -= .01f;
                                }
                                volumePer = 0;
                                SpriteManager.SetVolumeSE();
                                SpriteManager.ShowOptions();
                            }
                        }
                    }
                    if (newState.IsKeyDown(Keys.Right))
                    {
                        if (Game1.SEVolume < 1.0f)
                        {
                            //volumePer += gameTime.ElapsedGameTime.Milliseconds;
                            if (volumePer >= volumeMax)
                            {
                                if (oldSEVolume > 0)
                                {
                                    Game1.SEVolume = oldSEVolume;
                                    Game1.SE       = true;
                                    oldSEVolume    = 0;
                                }
                                if (Game1.SEVolume < 1.0f)
                                {
                                    Game1.SEVolume += .01f;
                                }
                                volumePer = 0;
                                SpriteManager.SetVolumeSE();
                                SpriteManager.ShowOptions();
                            }
                        }
                    }
                    if (oldState.IsKeyDown(Keys.Enter) && !newState.IsKeyDown(Keys.Enter))
                    {
                        if (oldSEVolume > 0)
                        {
                            Game1.SEVolume = oldSEVolume;
                            Game1.SE       = !Game1.SE;
                            SpriteManager.ShowOptions();
                        }
                        else
                        {
                            oldSEVolume = Game1.SEVolume;
                            Game1.SE    = !Game1.SE;
                            SpriteManager.ShowOptions();
                        }
                    }
                }
                if (oldState.IsKeyDown(Keys.Escape) && !newState.IsKeyDown(Keys.Escape))
                {
                    closeWindow();
                }
            }
            if (wType == "message")
            {
                if (oldState.GetPressedKeys().Length > 0 && newState.GetPressedKeys().Length <= 0)
                {
                    closeWindow();
                }
            }
            if (wType == "status")
            {
                if (oldState.GetPressedKeys().Length > 0 && newState.GetPressedKeys().Length <= 0)
                {
                    closeWindow();
                }
            }
            if (wType == "shop")
            {
                setSelection();
                if (oldState.IsKeyDown(Keys.Up) && !newState.IsKeyDown(Keys.Up))
                {
                    if (wIndex != 0)
                    {
                        wIndex--;
                    }
                }
                if (oldState.IsKeyDown(Keys.Down) && !newState.IsKeyDown(Keys.Down))
                {
                    if (wIndex < wLines - 1)
                    {
                        wIndex++;
                    }
                }
                if (oldState.IsKeyDown(Keys.Enter) && !newState.IsKeyDown(Keys.Enter))
                {
                    if (wIndex == 0) //Buy
                    {
                    }
                    if (wIndex == 1) //Sell
                    {
                    }
                }
            }
            if (wType == "dialogue")
            {
                if (oldState.IsKeyDown(Keys.Escape) && !newState.IsKeyDown(Keys.Escape) && !Game1.WON)
                {
                    closeWindow();
                }
                if (newState.IsKeyDown(Keys.Enter) && contentIndex < wContent.Length)
                {
                    messageSpeedMax = 15;
                    speedText       = true;
                }
                if (!oldState.IsKeyUp(Keys.Enter) && newState.IsKeyUp(Keys.Enter) && contentIndex >= wContent.Length && !speedText)
                {
                    if (Game1.WON)
                    {
                        Game1.CLOSEGAME = true;
                    }
                    else
                    {
                        closeWindow();
                    }
                }
                if (!newState.IsKeyDown(Keys.Enter))
                {
                    messageSpeedMax = 50;
                    speedText       = false;
                }
            }
            oldState = newState;
        }