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); } } }
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; } }