public void HandleButtons(Player player) { if (SingleMouseClick()) { switch (combatState) { case CombatState.ENEMYHEALTHROLL: if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672) { monsterHealth = player.DungeonArea + player.playerDice.RollDice(); combatState = CombatState.ROLLDIE; } break; case CombatState.ROLLDIE: if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672) { combatState = CombatState.ROLLANIMATION; } break; case CombatState.RESOLVEDIE: if (CombatDice["Combat Die 1"].Active) { if (XPos > 550 && XPos < 650 && YPos > 300 && YPos < 400 && (!CombatDice["Combat Die 1"].FeatUsed || CombatDice["Combat Die 1"].CritRollAvailable)) { if (!CombatDice["Combat Die 1"].CritRollAvailable) { CombatDice["Combat Die 1"].FeatUsed = true; CombatDice["Combat Die 1"].NeedsRoll = true; } InUseDie = 1; combatState = CombatState.USEFEAT; } } if (CombatDice["Combat Die 2"].Active) { if (XPos > 735 && XPos < 835 && YPos > 300 && YPos < 400 && (!CombatDice["Combat Die 2"].FeatUsed || CombatDice["Combat Die 2"].CritRollAvailable)) { if (!CombatDice["Combat Die 2"].CritRollAvailable) { CombatDice["Combat Die 2"].FeatUsed = true; CombatDice["Combat Die 2"].NeedsRoll = true; } InUseDie = 2; combatState = CombatState.USEFEAT; } } if (CombatDice["Combat Die 3"].Active) { if (XPos > 920 && XPos < 1020 && YPos > 300 && YPos < 400 && !CombatDice["Combat Die 3"].FeatUsed) { if (!CombatDice["Combat Die 3"].CritRollAvailable) { CombatDice["Combat Die 3"].FeatUsed = true; CombatDice["Combat Die 3"].NeedsRoll = true; } InUseDie = 3; combatState = CombatState.USEFEAT; } } if (CombatDice["Combat Die 4"].Active) { if (XPos > 1105 && XPos < 1205 && YPos > 300 && YPos < 400 && !CombatDice["Combat Die 4"].FeatUsed) { if (!CombatDice["Combat Die 4"].CritRollAvailable) { CombatDice["Combat Die 4"].FeatUsed = true; CombatDice["Combat Die 4"].NeedsRoll = true; } InUseDie = 4; combatState = CombatState.USEFEAT; } } if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672) { for (int i = 0; i < 3; i++) { CombatDice["Combat Die " + (i + 1)].FeatUsed = false; } combatState = CombatState.DEALDAMAGE; } break; case CombatState.USEFEAT: AnimationCounter = 0; if (CombatDice["Combat Die 1"].Active) { if (XPos > 550 && XPos < 650 && YPos > 300 && YPos < 400 && InUseDie == 1) { CombatDice["Combat Die 1"].FeatUsed = false; CombatDice["Combat Die 1"].NeedsRoll = false; InUseDie = 0; combatState = CombatState.RESOLVEDIE; } } if (CombatDice["Combat Die 2"].Active) { if (XPos > 735 && XPos < 835 && YPos > 300 && YPos < 400 && InUseDie == 2) { CombatDice["Combat Die 2"].FeatUsed = false; CombatDice["Combat Die 2"].NeedsRoll = false; InUseDie = 0; combatState = CombatState.RESOLVEDIE; } } if (CombatDice["Combat Die 3"].Active) { if (XPos > 920 && XPos < 1020 && YPos > 300 && YPos < 400 && InUseDie == 3) { CombatDice["Combat Die 3"].FeatUsed = false; CombatDice["Combat Die 3"].NeedsRoll = false; InUseDie = 0; combatState = CombatState.RESOLVEDIE; } } if (CombatDice["Combat Die 4"].Active) { if (XPos > 1105 && XPos < 1205 && YPos > 300 && YPos < 400 && InUseDie == 4) { CombatDice["Combat Die 4"].FeatUsed = false; CombatDice["Combat Die 4"].NeedsRoll = false; InUseDie = 0; combatState = CombatState.RESOLVEDIE; } } if (InUseDie != 0) { if (HealthFeatAvailable && !CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable) { if (XPos > 600 && XPos < 848 && YPos > 600 && YPos < 672) { player.Health -= 2; combatState = CombatState.ROLLANIMATION; } } if (ExperienceFeatAvailable && !CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable) { if (XPos > 900 && XPos < 1148 && YPos > 600 && YPos < 672) { player.Experience--; combatState = CombatState.ROLLANIMATION; } } if (CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable) { if (XPos > 750 && XPos < 998 && YPos > 500 && YPos < 572) { combatState = CombatState.ROLLANIMATION; } } } break; case CombatState.DEALDAMAGE: break; case CombatState.USESPELL: if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672) { combatState = CombatState.DAMAGEPLAYER; } if (player.Spells.Count >= 1 && SpellUsedThisRound == false) { if (XPos > 1130 && XPos < 1175 && YPos > 20 && YPos < 65) { CastSpell(player.Spells[0].Name, player); player.RemoveSpell(0); if (MonsterHealth <= 0) { player.Experience += ExpReward; player.Gold += GoldReward; combatState = CombatState.RESULTS; } } } if (player.Spells.Count == 2 && SpellUsedThisRound == false) { if (XPos > 1180 && XPos < 1225 && YPos > 20 && YPos < 65) { CastSpell(player.Spells[1].Name, player); player.RemoveSpell(1); if (MonsterHealth <= 0) { player.Experience += ExpReward; player.Gold += GoldReward; combatState = CombatState.RESULTS; } } } break; case CombatState.DAMAGEPLAYER: break; case CombatState.RESULTS: if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672) { combatState = CombatState.COMPLETE; } break; default: break; } } }
public void DrawCombat(SpriteBatch sBatch, SpriteFont dungeonFont) { if (combatState != CombatState.ENEMYHEALTHROLL) { sBatch.DrawString(dungeonFont, "Monster Health: " + monsterHealth, new Vector2(715, 100), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } switch (combatState) { case CombatState.ENEMYHEALTHROLL: sBatch.Draw(CombatButtons["Roll Die"].ButtonTexture, new Vector2(770, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); sBatch.DrawString(dungeonFont, "Roll For Monster Health", new Vector2(665, 150), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); break; case CombatState.ROLLDIE: sBatch.Draw(CombatButtons["Roll Die"].ButtonTexture, new Vector2(770, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); sBatch.DrawString(dungeonFont, "Roll Combat Dice", new Vector2(720, 150), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); break; case CombatState.ROLLANIMATION: if (CombatDice["Combat Die 1"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(550, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 2"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(735, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 3"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(920, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 4"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(1105, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } CombatDice["Combat Die 1"].DrawCombatDie(sBatch); CombatDice["Combat Die 2"].DrawCombatDie(sBatch); CombatDice["Combat Die 3"].DrawCombatDie(sBatch); CombatDice["Combat Die 4"].DrawCombatDie(sBatch); break; case CombatState.RESOLVEDIE: if (CombatDice["Combat Die 1"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(550, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 2"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(735, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 3"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(920, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 4"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(1105, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } CombatDice["Combat Die 1"].DrawCombatDie(sBatch); CombatDice["Combat Die 2"].DrawCombatDie(sBatch); CombatDice["Combat Die 3"].DrawCombatDie(sBatch); CombatDice["Combat Die 4"].DrawCombatDie(sBatch); if (CombatDice["Combat Die 1"].Active) { sBatch.DrawString(dungeonFont, CombatDice["Combat Die 1"].Roll.ToString(), new Vector2(585, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 2"].Active) { sBatch.DrawString(dungeonFont, CombatDice["Combat Die 2"].Roll.ToString(), new Vector2(770, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 3"].Active) { sBatch.DrawString(dungeonFont, CombatDice["Combat Die 3"].Roll.ToString(), new Vector2(955, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 4"].Active) { sBatch.DrawString(dungeonFont, CombatDice["Combat Die 4"].Roll.ToString(), new Vector2(1140, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } sBatch.Draw(CombatButtons["Accept Button"].ButtonTexture, new Vector2(770, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); break; case CombatState.USEFEAT: if (CombatDice["Combat Die 1"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(550, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 2"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(735, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 3"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(920, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 4"].FeatUsed) { sBatch.Draw(CombatButtons["Die Highlight"].ButtonTexture, new Vector2(1105, 300), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } CombatDice["Combat Die 1"].DrawCombatDie(sBatch); CombatDice["Combat Die 2"].DrawCombatDie(sBatch); CombatDice["Combat Die 3"].DrawCombatDie(sBatch); CombatDice["Combat Die 4"].DrawCombatDie(sBatch); if (CombatDice["Combat Die 1"].Active) { sBatch.DrawString(dungeonFont, CombatDice["Combat Die 1"].Roll.ToString(), new Vector2(585, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 2"].Active) { sBatch.DrawString(dungeonFont, CombatDice["Combat Die 2"].Roll.ToString(), new Vector2(770, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 3"].Active) { sBatch.DrawString(dungeonFont, CombatDice["Combat Die 3"].Roll.ToString(), new Vector2(955, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die 4"].Active) { sBatch.DrawString(dungeonFont, CombatDice["Combat Die 4"].Roll.ToString(), new Vector2(1140, 400), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (InUseDie != 0) { if (HealthFeatAvailable && !CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable) { sBatch.Draw(CombatButtons["Spend 2 HP Button"].ButtonTexture, new Vector2(600, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (ExperienceFeatAvailable && !CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable) { sBatch.Draw(CombatButtons["Spend 1 XP Button"].ButtonTexture, new Vector2(900, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } if (CombatDice["Combat Die " + InUseDie.ToString()].CritRollAvailable) { sBatch.Draw(CombatButtons["Crit Roll Button"].ButtonTexture, new Vector2(750, 500), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); } } break; case CombatState.DEALDAMAGE: break; case CombatState.USESPELL: sBatch.DrawString(dungeonFont, "Click on a spell icon to use.", new Vector2(650, 250), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); sBatch.Draw(CombatButtons["Accept Button"].ButtonTexture, new Vector2(770, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); break; case CombatState.DAMAGEPLAYER: break; case CombatState.RESULTS: sBatch.DrawString(dungeonFont, "You killed the monster", new Vector2(680, 250), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); sBatch.DrawString(dungeonFont, "You gained " + ExpReward + " EXP!", new Vector2(700, 300), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); sBatch.Draw(CombatButtons["Accept Button"].ButtonTexture, new Vector2(770, 600), new Rectangle?(), Color.White, 0f, new Vector2(), 1f, SpriteEffects.None, 1); break; default: break; } }