public override void OnResponse(NetState sender, RelayInfo info) { Mobile m_From = sender.Mobile; int buttonID = info.ButtonID - 1; int index = buttonID / 3; int type = buttonID % 3; switch (type) { case 0: { if (index >= 0 && index < m_Groups.Length) { CommandsGumpGroup newSelection = m_Groups[index]; if (m_Selected != newSelection) { m_From.SendGump(new CommandManualGump(newSelection)); } else { m_From.SendGump(new CommandManualGump(null)); } } break; } case 1: { if (m_Selected != null && index >= 0 && index < m_Selected.Commands.Length) { CommandName cn = m_Selected.Commands[index]; m_From.SendGump(new CommandDescriptionGump(sender.Mobile, cn)); m_From.SendGump(new CommandManualGump(m_Selected)); } break; } default: break; } }
public CommandManualGump(CommandsGumpGroup selected) : base(GumpOffsetX, GumpOffsetY) { m_Groups = CommandsGumpGroup.Groups; m_Selected = selected; int count = m_Groups.Length; if (selected != null) count += selected.Commands.Length; int totalHeight = OffsetSize + ((EntryHeight + OffsetSize) * (count + 1)); AddPage(0); AddBackground(0, 0, BackWidth, BorderSize + totalHeight + BorderSize, BackGumpID); AddImageTiled(BorderSize, BorderSize, TotalWidth - (OldStyle ? SetWidth + OffsetSize : 0), totalHeight, OffsetGumpID); int x = BorderSize + OffsetSize; int y = BorderSize + OffsetSize; int emptyWidth = TotalWidth - PrevWidth - NextWidth - (OffsetSize * 4) - (OldStyle ? SetWidth + OffsetSize : 0); if (OldStyle) AddImageTiled(x, y, TotalWidth - (OffsetSize * 3) - SetWidth, EntryHeight, HeaderGumpID); else AddImageTiled(x, y, PrevWidth, EntryHeight, HeaderGumpID); x += PrevWidth + OffsetSize; if (!OldStyle) AddImageTiled(x - (OldStyle ? OffsetSize : 0), y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0), EntryHeight, HeaderGumpID); x += emptyWidth + OffsetSize; if (!OldStyle) AddImageTiled(x, y, NextWidth, EntryHeight, HeaderGumpID); for (int i = 0; i < m_Groups.Length; ++i) { x = BorderSize + OffsetSize; y += EntryHeight + OffsetSize; CommandsGumpGroup group = m_Groups[i]; AddImageTiled(x, y, PrevWidth, EntryHeight, HeaderGumpID); if (group == selected) AddButton(x + PrevOffsetX, y + PrevOffsetY, 0x15E2, 0x15E6, GetButtonID(0, i), GumpButtonType.Reply, 0); else AddButton(x + PrevOffsetX, y + PrevOffsetY, 0x15E1, 0x15E5, GetButtonID(0, i), GumpButtonType.Reply, 0); x += PrevWidth + OffsetSize; x -= (OldStyle ? OffsetSize : 0); AddImageTiled(x, y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0), EntryHeight, EntryGumpID); AddLabel(x + TextOffsetX, y, TextHue, group.Name); x += emptyWidth + (OldStyle ? OffsetSize * 2 : 0); x += OffsetSize; if (SetGumpID != 0) AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID); if (group == selected) { int indentMaskX = BorderSize; int indentMaskY = y + EntryHeight + OffsetSize; for (int j = 0; j < group.Commands.Length; ++j) { CommandName cn = group.Commands[j]; x = BorderSize + OffsetSize; y += EntryHeight + OffsetSize; x += OffsetSize; x += IndentWidth; AddImageTiled(x, y, PrevWidth, EntryHeight, HeaderGumpID); AddButton(x + PrevOffsetX, y + PrevOffsetY, 0x15E1, 0x15E5, GetButtonID(1, j), GumpButtonType.Reply, 0); x += PrevWidth + OffsetSize; x -= (OldStyle ? OffsetSize : 0); AddImageTiled(x, y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0) - OffsetSize - IndentWidth, EntryHeight, EntryGumpID); AddLabel(x + TextOffsetX, y, TextHue, CommandHelper.m_CommandString[(int)cn]); x += emptyWidth + (OldStyle ? OffsetSize * 2 : 0) - OffsetSize - IndentWidth; x += OffsetSize; if (SetGumpID != 0) AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID); } AddImageTiled(indentMaskX, indentMaskY, IndentWidth + OffsetSize, (group.Commands.Length * (EntryHeight + OffsetSize)) - (i < (m_Groups.Length - 1) ? OffsetSize : 0), BackGumpID + 4); } } }
public CommandManualGump(CommandsGumpGroup selected) : base(GumpOffsetX, GumpOffsetY) { m_Groups = CommandsGumpGroup.Groups; m_Selected = selected; int count = m_Groups.Length; if (selected != null) { count += selected.Commands.Length; } int totalHeight = OffsetSize + ((EntryHeight + OffsetSize) * (count + 1)); AddPage(0); AddBackground(0, 0, BackWidth, BorderSize + totalHeight + BorderSize, BackGumpID); AddImageTiled(BorderSize, BorderSize, TotalWidth - (OldStyle ? SetWidth + OffsetSize : 0), totalHeight, OffsetGumpID); int x = BorderSize + OffsetSize; int y = BorderSize + OffsetSize; int emptyWidth = TotalWidth - PrevWidth - NextWidth - (OffsetSize * 4) - (OldStyle ? SetWidth + OffsetSize : 0); if (OldStyle) { AddImageTiled(x, y, TotalWidth - (OffsetSize * 3) - SetWidth, EntryHeight, HeaderGumpID); } else { AddImageTiled(x, y, PrevWidth, EntryHeight, HeaderGumpID); } x += PrevWidth + OffsetSize; if (!OldStyle) { AddImageTiled(x - (OldStyle ? OffsetSize : 0), y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0), EntryHeight, HeaderGumpID); } x += emptyWidth + OffsetSize; if (!OldStyle) { AddImageTiled(x, y, NextWidth, EntryHeight, HeaderGumpID); } for (int i = 0; i < m_Groups.Length; ++i) { x = BorderSize + OffsetSize; y += EntryHeight + OffsetSize; CommandsGumpGroup group = m_Groups[i]; AddImageTiled(x, y, PrevWidth, EntryHeight, HeaderGumpID); if (group == selected) { AddButton(x + PrevOffsetX, y + PrevOffsetY, 0x15E2, 0x15E6, GetButtonID(0, i), GumpButtonType.Reply, 0); } else { AddButton(x + PrevOffsetX, y + PrevOffsetY, 0x15E1, 0x15E5, GetButtonID(0, i), GumpButtonType.Reply, 0); } x += PrevWidth + OffsetSize; x -= (OldStyle ? OffsetSize : 0); AddImageTiled(x, y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0), EntryHeight, EntryGumpID); AddLabel(x + TextOffsetX, y, TextHue, group.Name); x += emptyWidth + (OldStyle ? OffsetSize * 2 : 0); x += OffsetSize; if (SetGumpID != 0) { AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID); } if (group == selected) { int indentMaskX = BorderSize; int indentMaskY = y + EntryHeight + OffsetSize; for (int j = 0; j < group.Commands.Length; ++j) { CommandName cn = group.Commands[j]; x = BorderSize + OffsetSize; y += EntryHeight + OffsetSize; x += OffsetSize; x += IndentWidth; AddImageTiled(x, y, PrevWidth, EntryHeight, HeaderGumpID); AddButton(x + PrevOffsetX, y + PrevOffsetY, 0x15E1, 0x15E5, GetButtonID(1, j), GumpButtonType.Reply, 0); x += PrevWidth + OffsetSize; x -= (OldStyle ? OffsetSize : 0); AddImageTiled(x, y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0) - OffsetSize - IndentWidth, EntryHeight, EntryGumpID); AddLabel(x + TextOffsetX, y, TextHue, CommandHelper.m_CommandString[(int)cn]); x += emptyWidth + (OldStyle ? OffsetSize * 2 : 0) - OffsetSize - IndentWidth; x += OffsetSize; if (SetGumpID != 0) { AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID); } } AddImageTiled(indentMaskX, indentMaskY, IndentWidth + OffsetSize, (group.Commands.Length * (EntryHeight + OffsetSize)) - (i < (m_Groups.Length - 1) ? OffsetSize : 0), BackGumpID + 4); } } }