Exemple #1
0
        public static SpellHueTypeDetail GetSpellHueTypeDetail(SpellHueType spellHueType)
        {
            SpellHueTypeDetail detail = new SpellHueTypeDetail();

            detail.m_SpellHueType = spellHueType;

            #region Spell Hue Type Details

            switch (spellHueType)
            {
            case SpellHueType.Standard:
                detail.m_SpellHueTypeName = "Standard";

                detail.m_IconHue  = 0;
                detail.m_TextHue  = 2499;
                detail.m_SpellHue = 0;
                break;

            case SpellHueType.Charcoal:
                detail.m_SpellHueTypeName = "Fire";

                detail.m_IconHue  = 2117;
                detail.m_TextHue  = 2117;
                detail.m_SpellHue = 2117;
                break;

            case SpellHueType.Earthen:
                detail.m_SpellHueTypeName = "Earthen";

                detail.m_IconHue  = 2550;
                detail.m_TextHue  = 2550;
                detail.m_SpellHue = 2550;
                break;

            case SpellHueType.Rose:
                detail.m_SpellHueTypeName = "Rose";

                detail.m_IconHue  = 2660;
                detail.m_TextHue  = 2660;
                detail.m_SpellHue = 2660;
                break;

            case SpellHueType.Otherworldly:
                detail.m_SpellHueTypeName = "Otherworldly";

                detail.m_IconHue  = 2962;
                detail.m_TextHue  = 2962;
                detail.m_SpellHue = 2962;
                break;
            }

            #endregion

            return(detail);
        }
        public PlayerSpellHuesGump(Mobile from, int pageNumber) : base(10, 10)
        {
            PlayerMobile player = from as PlayerMobile;

            if (player == null)
            {
                return;
            }

            m_Player     = player;
            m_PageNumber = pageNumber;

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;

            AddImage(0, 44, 202);
            AddImage(44, 0, 201);
            AddImage(0, 0, 206);
            AddImage(0, 468, 204);
            AddImage(590, 1, 207);
            AddImage(590, 468, 205);
            AddImage(44, 468, 233);
            AddImage(590, 45, 203);
            AddImageTiled(44, 44, 546, 424, 200);
            AddImage(0, 152, 202);
            AddImage(163, 0, 201);
            AddImage(166, 468, 233);
            AddImage(590, 152, 203);

            //-------------
            int textHue = 2036;
            int boldHue = 149;

            int totalSpells = Enum.GetNames(typeof(HueableSpell)).Length;
            int totalHues   = Enum.GetNames(typeof(SpellHueType)).Length;

            int spellsPerPage = 3;

            m_TotalPages = (int)(Math.Ceiling((double)totalSpells / (double)spellsPerPage));

            int indexStart = (m_PageNumber - 1) * spellsPerPage;
            int indexEnd;

            if (indexStart + spellsPerPage <= totalSpells)
            {
                indexEnd = indexStart + spellsPerPage;
            }
            else
            {
                indexEnd = totalSpells;
            }

            var iStartY   = 50;
            var iSpacingY = 135;

            AddLabel(292, 20, 2606, "Spell Hues");

            int iRow = 0;

            //Entry
            for (int a = indexStart; a < indexEnd; a++)
            {
                HueableSpell       hueableSpell = (HueableSpell)a;
                HueableSpellDetail spellDetail  = SpellHue.GetHueableSpellDetail(hueableSpell);
                SpellHueEntry      spellEntry   = PlayerEnhancementPersistance.GetSpellHueEntry(player, hueableSpell);

                if (hueableSpell == null || spellDetail == null || spellEntry == null)
                {
                    return;
                }

                m_SpellsOnPage.Add(hueableSpell);

                AddLabel(320 - (spellDetail.m_SpellName.Length * 3), iStartY, boldHue, spellDetail.m_SpellName);

                for (int b = 0; b < totalHues; b++)
                {
                    SpellHueType       spellHueType       = (SpellHueType)b;
                    SpellHueTypeDetail spellHueTypeDetail = SpellHue.GetSpellHueTypeDetail(spellHueType);

                    AddItem((100 + (75 * b)), iStartY + 25, spellDetail.m_IconItemId, spellHueTypeDetail.m_DisplayHue);
                    AddLabel((120 + (75 * b)) - (spellHueTypeDetail.m_Name.Length * 3), iStartY + 75, textHue, spellHueTypeDetail.m_Name);

                    bool unlocked = false;
                    bool active   = false;

                    if (spellEntry.m_UnlockedHues.Contains(spellHueType))
                    {
                        unlocked = true;
                    }

                    if (spellEntry.m_ActiveHue == spellHueType)
                    {
                        active = true;
                    }

                    int buttonIndex = 3 + (iRow * totalHues) + b;

                    if (unlocked)
                    {
                        if (active)
                        {
                            AddButton(105 + (75 * b), iStartY + 100, 2154, 2151, buttonIndex, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(105 + (75 * b), iStartY + 100, 2151, 2154, buttonIndex, GumpButtonType.Reply, 0);
                        }
                    }

                    else
                    {
                        AddButton(105 + (75 * b), iStartY + 100, 9727, 9727, buttonIndex, GumpButtonType.Reply, 0);
                    }
                }

                iStartY += iSpacingY;
                iRow++;
            }

            //Navigation
            if (m_PageNumber > 1)
            {
                AddButton(50, 465, 4014, 4016, 1, GumpButtonType.Reply, 0);
                AddLabel(85, 465, textHue, @"Previous Page");
            }

            if (m_PageNumber < m_TotalPages)
            {
                AddButton(485, 465, 4005, 4007, 2, GumpButtonType.Reply, 0);
                AddLabel(520, 465, textHue, @"Next Page");
            }
        }