示例#1
0
        public EditSkillGump(Mobile from, Mobile target, Skill skill, SkillsGumpGroup selected) : base(GumpOffsetX, GumpOffsetY)
        {
            m_From     = from;
            m_Target   = target;
            m_Skill    = skill;
            m_Selected = selected;

            string initialText = m_Skill.Base.ToString("F1");

            AddPage(0);

            AddBackground(0, 0, BackWidth, BackHeight, BackGumpID);
            AddImageTiled(BorderSize, BorderSize, TotalWidth - (OldStyle ? SetWidth + OffsetSize : 0), TotalHeight, OffsetGumpID);

            int x = BorderSize + OffsetSize;
            int y = BorderSize + OffsetSize;

            AddImageTiled(x, y, EntryWidth, EntryHeight, EntryGumpID);
            AddLabelCropped(x + TextOffsetX, y, EntryWidth - TextOffsetX, EntryHeight, TextHue, skill.Name);
            x += EntryWidth + OffsetSize;

            if (SetGumpID != 0)
            {
                AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID);
            }

            x  = BorderSize + OffsetSize;
            y += EntryHeight + OffsetSize;

            AddImageTiled(x, y, EntryWidth, EntryHeight, EntryGumpID);
            AddTextEntry(x + TextOffsetX, y, EntryWidth - TextOffsetX, EntryHeight, TextHue, 0, initialText);
            x += EntryWidth + OffsetSize;

            if (SetGumpID != 0)
            {
                AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID);
            }

            AddButton(x + SetOffsetX, y + SetOffsetY, SetButtonID1, SetButtonID2, 1, GumpButtonType.Reply, 0);
        }
示例#2
0
        public SkillsGump(Mobile from, Mobile target, SkillsGumpGroup selected) : base(GumpOffsetX, GumpOffsetY)
        {
            m_From   = from;
            m_Target = target;

            m_Groups   = SkillsGumpGroup.Groups;
            m_Selected = selected;

            int count = m_Groups.Length;

            if (selected != null)
            {
                count += selected.Skills.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;

                SkillsGumpGroup 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.Skills.Length; ++j)
                    {
                        Skill sk = target.Skills[group.Skills[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, sk == null ? "(null)" : sk.Name);

                        x += emptyWidth + (OldStyle ? OffsetSize * 2 : 0) - OffsetSize - IndentWidth;
                        x += OffsetSize;

                        if (SetGumpID != 0)
                        {
                            AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID);
                        }

                        if (sk != null)
                        {
                            int buttonID1, buttonID2;
                            int xOffset, yOffset;

                            switch (sk.Lock)
                            {
                            default:
                            case SkillLock.Up: buttonID1 = 0x983; buttonID2 = 0x983; xOffset = 6; yOffset = 4; break;

                            case SkillLock.Down: buttonID1 = 0x985; buttonID2 = 0x985; xOffset = 6; yOffset = 4; break;

                            case SkillLock.Locked: buttonID1 = 0x82C; buttonID2 = 0x82C; xOffset = 5; yOffset = 2; break;
                            }

                            AddButton(x + xOffset, y + yOffset, buttonID1, buttonID2, GetButtonID(2, j), GumpButtonType.Reply, 0);

                            y += 1;
                            x -= OffsetSize;
                            x -= 1;
                            x -= 50;

                            AddImageTiled(x, y, 50, EntryHeight - 2, OffsetGumpID);

                            x += 1;
                            y += 1;

                            AddImageTiled(x, y, 48, EntryHeight - 4, EntryGumpID);

                            AddLabelCropped(x + TextOffsetX, y - 1, 48 - TextOffsetX, EntryHeight - 3, TextHue, sk.Base.ToString("F1"));

                            y -= 2;
                        }
                    }

                    AddImageTiled(indentMaskX, indentMaskY, IndentWidth + OffsetSize, (group.Skills.Length * (EntryHeight + OffsetSize)) - (i < (m_Groups.Length - 1) ? OffsetSize : 0), BackGumpID + 4);
                }
            }
        }
示例#3
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            int buttonID = info.ButtonID - 1;

            int index = buttonID / 3;
            int type  = buttonID % 3;

            switch (type)
            {
            case 0:
            {
                if (index >= 0 && index < m_Groups.Length)
                {
                    SkillsGumpGroup newSelection = m_Groups[index];

                    if (m_Selected != newSelection)
                    {
                        m_From.SendGump(new SkillsGump(m_From, m_Target, newSelection));
                    }
                    else
                    {
                        m_From.SendGump(new SkillsGump(m_From, m_Target, null));
                    }
                }

                break;
            }

            case 1:
            {
                if (m_Selected != null && index >= 0 && index < m_Selected.Skills.Length)
                {
                    Skill sk = m_Target.Skills[m_Selected.Skills[index]];

                    if (sk != null)
                    {
                        if (m_From.AccessLevel >= AccessLevel.GameMaster)
                        {
                            m_From.SendGump(new EditSkillGump(m_From, m_Target, sk, m_Selected));
                        }
                        else
                        {
                            m_From.SendMessage("You may not change that.");
                            m_From.SendGump(new SkillsGump(m_From, m_Target, m_Selected));
                        }
                    }
                    else
                    {
                        m_From.SendGump(new SkillsGump(m_From, m_Target, m_Selected));
                    }
                }

                break;
            }

            case 2:
            {
                if (m_Selected != null && index >= 0 && index < m_Selected.Skills.Length)
                {
                    Skill sk = m_Target.Skills[m_Selected.Skills[index]];

                    if (sk != null)
                    {
                        if (m_From.AccessLevel >= AccessLevel.GameMaster)
                        {
                            switch (sk.Lock)
                            {
                            case SkillLock.Up: sk.SetLockNoRelay(SkillLock.Down); sk.Update(); break;

                            case SkillLock.Down: sk.SetLockNoRelay(SkillLock.Locked); sk.Update(); break;

                            case SkillLock.Locked: sk.SetLockNoRelay(SkillLock.Up); sk.Update(); break;
                            }
                        }
                        else
                        {
                            m_From.SendMessage("You may not change that.");
                        }

                        m_From.SendGump(new SkillsGump(m_From, m_Target, m_Selected));
                    }
                }

                break;
            }
            }
        }