/** LIARS DICE for Ultima Online Copyright: Bobby Kramer 2011, http://www.panthar.net Released under GPL V3. */ using System; using Server; using Server.Gumps; using Server.Network; using Server.Commands; using Server.LiarsDice; using System.Collections.Generic; namespace Server.Gumps { public class StatusDiceGump : Gump { private const int LEFT_BAR=25; private const int LEFT_BAR_BALENCE_OFFSET = 125; private const int LEFT_BAR_DICE_OFFSET = 200; private DiceState ds; private int[] Dice1Values = new int[] { 2,6,5,4,3,2,1,6,6,6,6,6,5,5,5,5,4,4,4,3,3}; private int[] Dice2Values = new int[] { 1,6,5,4,3,2,1,5,4,3,2,1,4,3,2,1,3,2,1,2,1}; public StatusDiceGump(DiceState _ds, string[] playerNames, int[] playerBalances, int[] playPrevRollIdx, int currPlayerIdx) : base( 325, 30 ){ this.ds = _ds; AddStatusGump(); AddInformation(playerNames, playerBalances, playPrevRollIdx, currPlayerIdx); } public StatusDiceGump(DiceState _ds) : base( 325, 30 ) { this.ds = _ds; AddStatusGump(); } private void AddStatusGump(){ this.Closable=false; this.Disposable=false; this.Dragable=true; this.Resizable=false; this.AddPage(0); this.AddBackground(6, 4, 300, 300, 9200); this.AddLabel(31, 25, 0, @"Player"); this.AddLabel(123, 25, 0, @"Balance"); this.AddLabel(195, 25, 0, @"Last Roll"); this.AddLabel(30, 245, 32, @"Exit"); AddButton(30, 265, 4017, 4018, 1, GumpButtonType.Reply, 3); } /** Adds status information */ private void AddInformation(string[] playerNames, int[] playerBalances, int[] playPrevRollIdx, int currPlayerIdx){ int i = 0; foreach (string p in playerNames) { //if current player highlight it if(i == currPlayerIdx){ this.AddLabel(LEFT_BAR, 45+(i*25), 32, @p); }else{ this.AddLabel(LEFT_BAR, 45+(i*25), 0, @p); } i +=1; } //reset i i=0; foreach(int b in playerBalances){ string bal = b + ""; this.AddLabel(LEFT_BAR_BALENCE_OFFSET, 45+(i*25), 0, @bal); this.DisplayDiceCombo(LEFT_BAR_DICE_OFFSET,45+(i*25),Dice1Values[ playPrevRollIdx[i]],Dice2Values[playPrevRollIdx[i]]); i +=1; } } /** Display dice combo as tiles images */ private void DisplayDiceCombo(int x, int y, int first_die, int second_die){ int swap=0; if(second_die > first_die){ swap = first_die; second_die = first_die; second_die = swap; } AddImageTiled(x, y, 21, 21, 11280 + (first_die-1)); AddImageTiled(x+30, y, 21, 21, 11280 + (second_die-1)); } public override void OnResponse( NetState state, RelayInfo info ){ int btd = info.ButtonID; if(btd == 1){ ds.ShowExitConfirmGump(state.Mobile); }else{ state.Mobile.SendMessage( "Illegal option selected"); } } } }