private void SetReagents(int amount) { ItemStoneGroup group = m_Groups[1]; for (int i = 0; i < group.Items.Length; ++i) { ItemStoneInfo info = group.Items[i]; info.Amount = amount; } }
public int GetCost() { int amount = 0; for (int i = 0; i < m_Groups.Length; ++i) { ItemStoneGroup group = m_Groups[i]; for (int j = 0; j < group.Items.Length; ++j) { ItemStoneInfo info = group.Items[j]; amount += ((info.Price + m_Stone.Markup) * info.Amount); } } return(amount); }
public ItemStoneGump(Mobile from, ItemStone stone, ItemStoneGroup[] usergroup, ItemStoneGroup selected) : base(155, 50) { m_Mobile = from; m_Stone = stone; if (usergroup != null) { m_Groups = usergroup; } m_Selected = selected; m_Mobile.CloseGump(typeof(ItemStoneGump)); AddPage(0); int headerSpace = 65; int bodySpace = (m_Groups.Length * 25); if (selected != null) { bodySpace += (selected.Items.Length * 20); } int footerSpace = 110; int totalHeight = headerSpace + bodySpace + footerSpace; AddBackground(0, 0, 330, totalHeight, 5054); AddImageTiled(10, 10, 310, 20, 2624); AddAlphaRegion(10, 10, 310, 20); AddHtml(10, 10, 310, 20, "<BASEFONT COLOR=\"#FFFFFF\"><CENTER>Mythik Item Menu</CENTER></BASEFONT>", false, false); AddImageTiled(10, 35, 310, 20, 2624); AddAlphaRegion(10, 35, 310, 20); AddHtml(195, 35, 60, 20, "<BASEFONT COLOR=\"#FFFFFF\"><CENTER>Amount</CENTER></BASEFONT>", false, false); AddHtml(260, 35, 60, 20, "<BASEFONT COLOR=\"#FFFFFF\"><CENTER>Price</CENTER></BASEFONT>", false, false); AddImageTiled(10, 60, 180, bodySpace, 2624); AddAlphaRegion(10, 60, 180, bodySpace); AddImageTiled(195, 60, 60, bodySpace, 2624); AddAlphaRegion(195, 60, 60, bodySpace); AddImageTiled(260, 60, 60, bodySpace, 2624); AddAlphaRegion(260, 60, 60, bodySpace); AddImageTiled(10, headerSpace + bodySpace, 310, 75, 2624); AddAlphaRegion(10, headerSpace + bodySpace, 310, 75); AddImageTiled(10, headerSpace + bodySpace + 80, 180, 20, 2624); AddAlphaRegion(10, headerSpace + bodySpace + 80, 180, 20); AddImageTiled(195, headerSpace + bodySpace + 80, 125, 20, 2624); AddAlphaRegion(195, headerSpace + bodySpace + 80, 125, 20); int y = 65; for (int i = 0; i < m_Groups.Length; ++i) { ItemStoneGroup group = m_Groups[i]; if (group != selected) { AddButton(15, y + 2, 0x15E1, 0x15E5, GetButtonID(0, i), GumpButtonType.Reply, 0); } else { AddLabel(15, y, 0x1153, "*"); } AddHtml(35, y, 180, 25, String.Format("<BASEFONT COLOR=\"#FFFFFF\">{0}</BASEFONT>", group.Name), false, false); if (group == selected) { for (int j = 0; j < group.Items.Length; ++j) { y += 20; ItemStoneInfo info = group.Items[j]; AddLabel(40, y, 0x481, info.Name); TextEntry(200, y, 50, 20, j, info.Amount.ToString()); AddLabel(265, y, 0x481, String.Format("{0}", info.Price + m_Stone.Markup)); } } y += 25; } int price = GetCost(); int tax = GetTax(price); int total = price + tax; AddHtml(200, headerSpace + bodySpace, 110, 20, String.Format("<BASEFONT COLOR=\"#FFFFFF\">Cost: {0}</CENTER></BASEFONT>", price), false, false); AddHtml(200, headerSpace + bodySpace + 20, 110, 20, String.Format("<BASEFONT COLOR=\"#FFFFFF\">Tax: {0}</CENTER></BASEFONT>", tax), false, false); AddHtml(200, headerSpace + bodySpace + 55, 110, 20, String.Format("<BASEFONT COLOR=\"#FFFFFF\">Total: {0}</CENTER></BASEFONT>", total), false, false); AddHtml(15, headerSpace + bodySpace + 80, 170, 20, String.Format("<BASEFONT COLOR=\"#FFFFFF\">Tax: {0}% Markup: +{1}</BASEFONT>", m_Stone.Tax, m_Stone.Markup), false, false); AddHtml(230, headerSpace + bodySpace + 80, 70, 20, "<BASEFONT COLOR=\"#FFFFFF\"><CENTER>Purchase</CENTER></BASEFONT>", false, false); AddButton(300, headerSpace + bodySpace + 82, 0x15E1, 0x15E5, GetButtonID(0, 100), GumpButtonType.Reply, 0); AddHtml(35, headerSpace + bodySpace, 155, 20, "<BASEFONT COLOR=\"#FFFFFF\">50 Reagents</BASEFONT>", false, false); AddButton(15, headerSpace + bodySpace + 2, 0x15E1, 0x15E5, GetButtonID(0, 101), GumpButtonType.Reply, 0); AddHtml(35, headerSpace + bodySpace + 20, 155, 20, "<BASEFONT COLOR=\"#FFFFFF\">100 Reagents</BASEFONT>", false, false); AddButton(15, headerSpace + bodySpace + 22, 0x15E1, 0x15E5, GetButtonID(0, 102), GumpButtonType.Reply, 0); }
public override void OnResponse(Server.Network.NetState sender, RelayInfo info) { m_Mobile.Frozen = false; int buttonID = info.ButtonID - 1; if (buttonID != -1) { UpdateTotals(info); } int index = buttonID / m_Groups.Length; int type = buttonID % m_Groups.Length; switch (type) { case 0: { if (index > m_Groups.Length) { switch (index) { case 100: { int price = GetCost(); int tax = GetTax(price); int total = price + tax; if (m_Mobile.Backpack.ConsumeTotal(typeof(Gold), total, true) || Banker.Withdraw(m_Mobile, total)) { for (int i = 0; i < m_Groups.Length; ++i) { ItemStoneGroup group = m_Groups[i]; for (int j = 0; j < group.Items.Length; ++j) { ItemStoneInfo iteminfo = group.Items[j]; if (iteminfo.Amount > 0) { if (iteminfo.Stackable) { Item item = iteminfo.Create(); item.Amount = iteminfo.Amount; GiveItem(m_Mobile, item); } else { for (int k = 0; k < iteminfo.Amount; ++k) { Item item = iteminfo.Create(); GiveItem(m_Mobile, item); } } } } } m_Mobile.SendMessage("The items you have purchased may have been placed in either your backpack or bankbox!"); } else { m_Mobile.SendMessage("You do not have {0} gold pieces to pay for these items."); } break; } case 101: { SetReagents(50); m_Mobile.SendMessage("All reagents purchase amounts have been set to 50."); m_Mobile.SendGump(new ItemStoneGump(m_Mobile, m_Stone, m_Groups, m_Groups[1])); break; } case 102: { SetReagents(100); m_Mobile.SendMessage("All reagents purchase amounts have been set to 100."); m_Mobile.SendGump(new ItemStoneGump(m_Mobile, m_Stone, m_Groups, m_Groups[1])); break; } } } else { m_Mobile.SendGump(new ItemStoneGump(m_Mobile, m_Stone, m_Groups, m_Groups[index])); } break; } } }