//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); } }
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; } } } } }
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; } }
/// <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); }
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); }
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; }