public Treasure(string name, Texture2D cardTexture, Texture2D cardBack, Dictionary <string, Button> buttons, Dictionary <string, Texture2D> dieTextures, Dictionary <string, SoundEffect> dieSounds) : base(name, cardTexture, cardBack, buttons) { treasureTurnState = TreasureTurnState.GOLD_AWARD; CurrentButtons = new List <Button>(); DieTextures = dieTextures; DieSounds = dieSounds; TreasureDie = new Die(DieTextures, 840, 400); }
//---------------------- METHODS ----------------------------- public override bool HandleCard(Player player, MouseState current, MouseState previous, float xPos, float yPos) { XPos = xPos; YPos = yPos; CurrentMouseState = current; PreviousMouseState = previous; switch (treasureTurnState) { case TreasureTurnState.GOLD_AWARD: Success = false; TreasureAwarded = false; TreasureRoll = false; if (player.HasFoughtMonster) { GoldAward = 2; } else { GoldAward = 1; } HandleButtons(player); return(false); case TreasureTurnState.ROLLANIMATION: if (AnimationCounter < 60) { RollAnimation(); } else { DieSoundPlayed = false; if (TreasureRoll) { AnimationCounter = 0; TreasureResult = player.playerDice.RollDice(); TreasureDie.CurrentTexture = TreasureDie.DieTextures["Roll " + TreasureResult]; switch (TreasureResult) { case 1: player.Armor++; break; case 2: player.Experience += 2; break; case 3: AwardedSpell = "Fire"; break; case 4: AwardedSpell = "Ice"; break; case 5: AwardedSpell = "Poison"; break; case 6: AwardedSpell = "Healing"; break; default: break; } if (TreasureResult > 2 && player.Spells.Count == 2) { treasureTurnState = TreasureTurnState.REMOVESPELL; } else { treasureTurnState = TreasureTurnState.REVIEW; } } else { AnimationCounter = 0; ExtTreasureResult = player.playerDice.RollDice(); TreasureDie.CurrentTexture = TreasureDie.DieTextures["Roll " + ExtTreasureResult]; if (ExtTreasureResult >= 5) { Success = true; treasureTurnState = TreasureTurnState.EXTRA_TREASURE_ROLL; } else { treasureTurnState = TreasureTurnState.REVIEW; } } } return(false); case TreasureTurnState.EXTRA_TREASURE_ROLL: HandleButtons(player); return(false); case TreasureTurnState.REMOVESPELL: HandleButtons(player); return(false); case TreasureTurnState.REVIEW: if (TreasureResult > 2 && !TreasureAwarded) { player.AddSpell(AwardedSpell); TreasureAwarded = true; } HandleButtons(player); return(false); case TreasureTurnState.COMPLETE: return(true); default: return(false); } }
public void HandleButtons(Player player) { if (SingleMouseClick()) { switch (treasureTurnState) { case TreasureTurnState.GOLD_AWARD: player.Gold += GoldAward; if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672) { treasureTurnState = TreasureTurnState.ROLLANIMATION; } break; case TreasureTurnState.EXTRA_TREASURE_ROLL: if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672) { TreasureRoll = true; treasureTurnState = TreasureTurnState.ROLLANIMATION; } break; case TreasureTurnState.REMOVESPELL: if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672) { treasureTurnState = TreasureTurnState.COMPLETE; } if (XPos > 1130 && XPos < 1175 && YPos > 20 && YPos < 65) { player.RemoveSpell(0); player.AddSpell(AwardedSpell); TreasureAwarded = true; treasureTurnState = TreasureTurnState.REVIEW; } if (player.Spells.Count == 2) { if (XPos > 1180 && XPos < 1225 && YPos > 20 && YPos < 65) { player.RemoveSpell(1); player.AddSpell(AwardedSpell); TreasureAwarded = true; treasureTurnState = TreasureTurnState.REVIEW; } } break; case TreasureTurnState.REVIEW: if (XPos > 770 && XPos < 1018 && YPos > 600 && YPos < 672) { treasureTurnState = TreasureTurnState.COMPLETE; } break; default: break; } } }