public PlayerEntry(GenericReader reader, YahtzeeGame game) { int version = reader.ReadInt(); Game = game; Player = reader.ReadMobile() as PlayerMobile; Aces = reader.ReadInt(); Twos = reader.ReadInt(); Threes = reader.ReadInt(); Fours = reader.ReadInt(); Fives = reader.ReadInt(); Sixes = reader.ReadInt(); ThreeOfAKind = reader.ReadInt(); FourOfAKind = reader.ReadInt(); FullHouse = reader.ReadInt(); SmallStraight = reader.ReadInt(); LargeStraight = reader.ReadInt(); Yahtzee = reader.ReadInt(); Chance = reader.ReadInt(); YahtzeeBonus = reader.ReadInt(); Score = reader.ReadInt(); Completed = reader.ReadDateTime(); ScoreCard = reader.ReadItem() as YahtzeeScoreCard; if (game != null) { ScoreCard.Entry = this; ScoreCard.Game = game; } }
public YahtzeeScoreCard(PlayerEntry entry, YahtzeeGame game) : base(0xE17) { Entry = entry; Game = game; Name = "Yahtzee Score Card"; }
public void RollDice(PlayerMobile pm) { if (CurrentRoll == null || RollIndex == 0) { CurrentRoll = Roll(); } else { CurrentRoll.Reroll(); } RollIndex++; string roll = RollIndex == 1 ? "1st" : RollIndex == 2 ? "2nd" : "final"; bool isYahtzee = PlayerEntry.ValidateTypeFromRoll(CurrentRoll, ScoreType.Yahtzee); Players.ForEach(e => { if (pm == e.Player) { if (isYahtzee) { YahtzeeGame.SendMessage(e.Player, "You have rolled a Yahtzee!!!"); } else { YahtzeeGame.SendMessage(e.Player, String.Format("You have made your {0} roll.", roll)); } } else { if (isYahtzee) { YahtzeeGame.SendMessage(e.Player, String.Format("{0} has rolled a Yahtzee!!!", e.Player.Name)); } else { YahtzeeGame.SendMessage(e.Player, String.Format("{0} has made thier {1} roll.", e.Player.Name, roll)); } } }); if (Board != null) { if (isYahtzee) { Effects.PlaySound(Board.GetWorldLocation(), Board.Map, 0x3D); } else { DoRollEffects(pm); } } Timer.DelayCall(TimeSpan.FromSeconds(.25), SendGumps); }
public void CompleteTurn() { if (CurrentRoll != null) { CurrentRoll.Clear(); } if (UsingJoker) { UsingJoker = false; } if (TurnIndex == Players.Count - 1) { Round++; TurnIndex = 0; } else { TurnIndex++; } if (Round >= Rounds) { EndGame(); return; } PlayerEntry next = Players[TurnIndex]; if (Players.Count > 1) { Players.ForEach(e => { if (e.Player == next.Player) { YahtzeeGame.SendMessage(e.Player, "It's your turn!", 75); } else { if (next.Player.NetState == null) { YahtzeeGame.SendMessage(e.Player, String.Format("It is now {0}'s turn, however they are no longer online!", next.Player.Name), 75); } else { YahtzeeGame.SendMessage(e.Player, String.Format("It is now {0}'s turn!", next.Player.Name), 75); } } }); } RollIndex = 0; Timer.DelayCall(TimeSpan.FromSeconds(.5), SendGumps); }
private void GiveScorecards() { Players.ForEach(e => { var card = new YahtzeeScoreCard(e, this); e.Player.Backpack.DropItem(card); e.ScoreCard = card; YahtzeeGame.SendMessage(e.Player, "A score card has been added to your backpack."); e.ScoreCard.InvalidateProperties(); }); }
public void EndGame() { TallyScore(); Timer.DelayCall(TimeSpan.FromSeconds(.5), SendGumps); if (Games.Contains(this)) { Games.Remove(this); } if (Board != null) { Board.Game = null; Board.InvalidateProperties(); } Players.ForEach(e => { e.Game = null; e.Completed = DateTime.Now; if (e.ScoreCard.Game != null) { e.ScoreCard.Game = null; } e.ScoreCard.InvalidateProperties(); e.ScoreCard = null; if (YahtzeeStats.CheckScore(e)) { Players.ForEach(entry => { if (entry.Player == e.Player) { YahtzeeGame.SendMessage(entry.Player, String.Format("Your score of {0} has been entered into the Yahtzee top 10!", e.Score.ToString())); } else { YahtzeeGame.SendMessage(entry.Player, String.Format("{0}'s score of {1} has been entered into the Yahtzee Top 10!", e.Player.Name, e.Score.ToString())); } }); } }); Timer.DelayCall(TimeSpan.FromSeconds(1), Players.Clear); }
public PlayerEntry(PlayerMobile pm, YahtzeeGame game) { Player = pm; Game = game; Aces = -1; Twos = -1; Threes = -1; Fours = -1; Fives = -1; Sixes = -1; ThreeOfAKind = -1; FourOfAKind = -1; FullHouse = -1; SmallStraight = -1; LargeStraight = -1; Yahtzee = -1; Chance = -1; }
public void CancelGame() { Players.ForEach(entry => { YahtzeeGame.SendMessage(entry.Player, "Your current yahtzee game has been canceled.", 2118); }); if (Board != null) { Board.Game = null; Board.InvalidateProperties(); } CloseGumps(); Timer.DelayCall(TimeSpan.FromSeconds(1), Players.Clear); if (Games.Contains(this)) { Games.Remove(this); } }
public void BeginGame() { if (Players.Count < 1) { CancelGame(); return; } if (Players.Count > 0) { switch (RollOrder) { case RollOrder.AsIs: break; case RollOrder.Random: if (Players.Count == 2) { if (Utility.RandomDouble() > 0.5) { PlayerEntry entry = Players[1]; Players.Remove(entry); Players.Insert(0, entry); } } else { for (int i = 0; i < 25; i++) { int random = Utility.Random(Players.Count); if (random > 0) { PlayerEntry entry = Players[random]; Players.Remove(entry); Players.Insert(0, entry); } } } break; case RollOrder.Roll: Dictionary <PlayerMobile, int> table = new Dictionary <PlayerMobile, int>(); foreach (PlayerEntry e in Players) { table.Add(e.Player, SumRoll(Roll().ToArray())); } Players.Clear(); foreach (KeyValuePair <PlayerMobile, int> kvp in table.OrderBy(k => - k.Value)) { YahtzeeGame.SendMessage(kvp.Key, String.Format("You have rolled a {0}!", kvp.Value)); Players.Add(new PlayerEntry(kvp.Key, this)); } table.Clear(); break; } } TurnIndex = 0; RollIndex = 0; Round = 1; Players.ForEach(e => YahtzeeGame.SendMessage(e.Player, "Yahtzee has begun!")); GiveScorecards(); if (Board != null) { Board.InvalidateProperties(); } Timer.DelayCall(TimeSpan.FromSeconds(.5), new TimerCallback(SendGumps)); }
public YahtzeeGump(PlayerEntry entry, PlayerMobile pm, YahtzeeGame game) : base(pm, 200, 120) { Game = game; Entry = entry; }
public void ApplyScore(ScoreType type, int total) { if (Game == null) { return; } bool yahtzeebonus = false; switch (type) { default: case ScoreType.Aces: Aces = total; break; case ScoreType.Twos: Twos = total; break; case ScoreType.Threes: Threes = total; break; case ScoreType.Fours: Fours = total; break; case ScoreType.Fives: Fives = total; break; case ScoreType.Sixes: Sixes = total; break; case ScoreType.ThreeOfAKind: ThreeOfAKind = total; break; case ScoreType.FourOfAKind: FourOfAKind = total; break; case ScoreType.FullHouse: if (total > 0) { Player.PlaySound(Player.Female ? FemaleHappy : MaleHappy); } FullHouse = total; break; case ScoreType.SmallStraight: if (total > 0) { Player.PlaySound(Player.Female ? FemaleHappy : MaleHappy); } SmallStraight = total; break; case ScoreType.LargeStraight: if (total > 0) { Player.PlaySound(Player.Female ? FemaleHappy : MaleHappy); } LargeStraight = total; break; case ScoreType.Yahtzee: if (total > 0) { Player.PlaySound(Player.Female ? FemaleHappy : MaleHappy); } if (HasScored(ScoreType.Yahtzee) && Yahtzee > 0) { yahtzeebonus = true; YahtzeeBonus++; } else { Yahtzee = total; } break; case ScoreType.Chance: Chance = total; break; } Game.Players.ForEach(e => { if (e.Player != null) { if (e.Player != this.Player) { YahtzeeGame.SendMessage(e.Player, String.Format("{0} takes a score of {1} for {2}.", this.Player.Name, total.ToString(), GetScoreForType(type))); } else { YahtzeeGame.SendMessage(Player, String.Format("You take a score of {0} for {1}.", total.ToString(), GetScoreForType(type))); } } }); if (!yahtzeebonus) { Game.CompleteTurn(); } else { YahtzeeGame.SendMessage(Player, "Apply your joker to any unused box!"); Game.UsingJoker = true; Game.SendGumps(); } }