Пример #1
0
 protected internal override void OnDragEnter(Gump g)
 {
     if ((g != null) && (g.GetType() == typeof(GDraggedItem)))
     {
         GDraggedItem item  = (GDraggedItem)g;
         Item         item2 = item.Item;
         int          iD    = item2.ID;
         int          hue   = item2.Hue;
         Engine.ItemArt.Translate(ref iD, ref hue);
         if (Map.m_ItemFlags[iD][TileFlag.Wearable])
         {
             if (this.m_Image != null)
             {
                 Gumps.Destroy(this.m_Image);
             }
             this.m_Image       = new GImage(Gumps.GetEquipGumpID(iD, this.m_Gender, ref hue), Hues.GetItemHue(iD, hue), 8, 0x13);
             this.m_Image.Alpha = 0.5f;
             int           count     = base.m_Children.Count;
             LayerComparer paperdoll = LayerComparer.Paperdoll;
             int           num4      = paperdoll.GetValue(iD, (Layer)Map.GetQuality(iD));
             for (int i = 0; i < base.m_Children.Count; i++)
             {
                 Gump gump = base.m_Children[i];
                 if (gump.GetType() == typeof(GPaperdollItem))
                 {
                     GPaperdollItem item3 = (GPaperdollItem)gump;
                     if (paperdoll.GetValue(item3.Item.ID, (Layer)((byte)item3.Layer)) < num4)
                     {
                         count = i;
                         break;
                     }
                 }
             }
             base.m_Children.Insert(count, this.m_Image);
         }
     }
 }
Пример #2
0
        public static void OpenPaperdoll(Mobile m, string Name, bool canDrag)
        {
            if (m != null)
            {
                GPaperdoll paperdoll;
                bool flag = m.Paperdoll != null;
                bool flag2 = flag && (m_LastOver == m.Paperdoll);
                bool flag3 = flag && (m_Drag == m.Paperdoll);
                int num = flag3 ? m_Drag.m_OffsetX : 0;
                int num2 = flag3 ? m_Drag.m_OffsetY : 0;
                int index = flag ? m.Paperdoll.Parent.Children.IndexOf(m.Paperdoll) : -1;
                int x = 0x7fffffff;
                int y = 5;
                if (flag)
                {
                    x = m.Paperdoll.X;
                    y = m.Paperdoll.Y;
                    Destroy(m.Paperdoll);
                }
                else if ((m.PaperdollX < 0x7fffffff) && (m.PaperdollY < 0x7fffffff))
                {
                    x = m.PaperdollX;
                    y = m.PaperdollY;
                    m.PaperdollX = 0x7fffffff;
                    m.PaperdollY = 0x7fffffff;
                }
                OnClick[] clickArray2 = new OnClick[8];
                clickArray2[0] = new OnClick(Engine.Help_OnClick);
                clickArray2[1] = new OnClick(Engine.Options_OnClick);
                clickArray2[2] = new OnClick(Engine.LogOut_OnClick);
                clickArray2[3] = new OnClick(Engine.Journal_OnClick);
                clickArray2[4] = new OnClick(Engine.Skills_OnClick);
                clickArray2[6] = new OnClick(Engine.AttackModeToggle_OnClick);
                clickArray2[7] = new OnClick(Engine.Status_OnClick);
                OnClick[] clickArray = clickArray2;
                int[] numArray = new int[] { 0x2c, 0x47, 0x62, 0x7c, 0x97, 0xb3, 0xcd, 0xe9 };
                int[] numArray3 = new int[] { 0x7ef, 0x7d6, 0x7d9, 0x7dc, 0x7df, 0x7e2, 0, 0x7eb };
                numArray3[6] = World.Player.Flags[MobileFlag.Warmode] ? 0x7e8 : 0x7e5;
                int[] numArray2 = numArray3;
                if (m.Player)
                {
                    paperdoll = new GPaperdoll(m, 0x7d0, x, y);
                    if (!flag && (x >= 0x7fffffff))
                    {
                        paperdoll.X = (Engine.ScreenWidth - paperdoll.Width) - 5;
                    }
                    paperdoll.Children.Add(new GButton(0x7ef, 0x7f1, 0x7f0, 0xb9, 0x2c, null));
                    GButton[] buttonArray = new GButton[7];
                    for (int i = 0; i < 7; i++)
                    {
                        buttonArray[i] = new GButton(numArray2[i], numArray2[i] + 2, numArray2[i] + 1, 0xb9, numArray[i], clickArray[i]);
                        buttonArray[i].Enabled = clickArray[i] != null;
                        paperdoll.Children.Add(buttonArray[i]);
                    }
                }
                else
                {
                    paperdoll = new GPaperdoll(m, 0x7d1, x, y);
                    if (!flag && (x >= 0x7fffffff))
                    {
                        paperdoll.X = (Engine.ScreenWidth - paperdoll.Width) - 5;
                    }
                }
                paperdoll.Children.Add(new GVirtueTrigger(m));
                GButton toAdd = new GButton(numArray2[7], numArray2[7] + 2, numArray2[7] + 1, 0xb9, numArray[7], clickArray[7]);
                toAdd.SetTag("Serial", m.Serial);
                paperdoll.Children.Add(toAdd);
                int hueID = (ushort) m.Hue;
                bool flag4 = false;
                int gender = 0;
                int body = m.Body;
                hueID ^= 0x8000;
                IHue h = Hues.Load(hueID);
                Engine.m_Animations.Translate(ref body, ref h);
                switch (body)
                {
                    case 400:
                        gender = 0;
                        paperdoll.Children.Add(new GImage(12, h, 8, 0x13));
                        break;

                    case 0x191:
                        gender = 1;
                        paperdoll.Children.Add(new GImage(13, h, 8, 0x13));
                        break;

                    case 0x192:
                    case 0x193:
                    {
                        GImage image = new GImage((m.Gender == 0) ? 12 : 13, 8, 0x13) {
                            Alpha = 0.25f
                        };
                        paperdoll.Children.Add(image);
                        flag4 = true;
                        break;
                    }
                    case 0x3db:
                        gender = m.Gender;
                        paperdoll.Children.Add(new GImage((m.Gender == 0) ? 12 : 13, Hues.Load(0x3ea), 8, 0x13));
                        paperdoll.Children.Add(new GImage(0xee3b, h, 8, 0x13));
                        break;

                    default:
                    {
                        int paperdollGump = Config.GetPaperdollGump(body);
                        if (paperdollGump != 0)
                        {
                            paperdoll.Children.Add(new GImage(paperdollGump, h, 8, 0x13));
                        }
                        break;
                    }
                }
                paperdoll.Gender = gender;
                if (flag4)
                {
                    for (int j = 0; j < m.Equip.Count; j++)
                    {
                        EquipEntry entry = (EquipEntry) m.Equip[j];
                        if (entry.m_Layer == Layer.OuterTorso)
                        {
                            int iD = entry.m_Item.ID;
                            int hue = entry.m_Item.Hue;
                            int gumpID = GetEquipGumpID(iD, gender, ref hue);
                            GPaperdollItem item = new GPaperdollItem(8, 0x13, gumpID, entry.m_Item.Serial, Hues.GetItemHue(iD, hue), (int) entry.m_Layer, m, canDrag) {
                                Alpha = 0.5f
                            };
                            paperdoll.Children.Add(item);
                        }
                    }
                }
                else
                {
                    LayerComparer comparer = LayerComparer.Paperdoll;
                    m.Equip.Sort(comparer);
                    for (int k = 0; k < m.Equip.Count; k++)
                    {
                        EquipEntry entry2 = (EquipEntry) m.Equip[k];
                        if (comparer.IsValid(entry2.m_Layer))
                        {
                            int itemID = entry2.m_Item.ID;
                            int num17 = entry2.m_Item.Hue;
                            int num18 = GetEquipGumpID(itemID, gender, ref num17);
                            paperdoll.Children.Add(new GPaperdollItem(8, 0x13, num18, entry2.m_Item.Serial, Hues.GetItemHue(itemID, num17), (int) entry2.m_Layer, m, canDrag));
                        }
                    }
                    m.Equip.Sort(LayerComparer.FromDirection(m.Direction));
                }
                paperdoll.Children.Add(new GProfileScroll(m));
                paperdoll.Children.Add(new GWrappedLabel(Name, Engine.GetFont(1), Hues.Load(0x769), 0x27, 0x108, 0xb8));
                paperdoll.SetTag("Dispose", "Paperdoll");
                paperdoll.SetTag("Serial", m.Serial);
                if (flag2)
                {
                    m_LastOver = paperdoll;
                }
                if (flag3)
                {
                    paperdoll.m_IsDragging = true;
                    paperdoll.OffsetX = num;
                    paperdoll.OffsetY = num2;
                    m_Drag = paperdoll;
                }
                if (((paperdoll.X + paperdoll.Width) - paperdoll.m_DragClipX) < 0)
                {
                    paperdoll.X = paperdoll.m_DragClipX - paperdoll.Width;
                }
                else if ((paperdoll.X + paperdoll.m_DragClipX) >= Engine.ScreenWidth)
                {
                    paperdoll.X = Engine.ScreenWidth - paperdoll.m_DragClipX;
                }
                if (((paperdoll.Y + paperdoll.Height) - paperdoll.m_DragClipY) < 0)
                {
                    paperdoll.Y = paperdoll.m_DragClipY - paperdoll.Height;
                }
                else if ((paperdoll.Y + paperdoll.m_DragClipY) >= Engine.ScreenHeight)
                {
                    paperdoll.Y = Engine.ScreenHeight - paperdoll.m_DragClipY;
                }
                if (index != -1)
                {
                    Desktop.Children.Insert(index, paperdoll);
                }
                else
                {
                    Desktop.Children.Add(paperdoll);
                }
                m.Paperdoll = paperdoll;
            }
        }