public virtual void AppendTo(IGumpWriter disp, ref string props, ref bool hidePants, ref bool hideHair) { if (_Items == null || _Items.Count == 0) { return; } _Items.SortLayers(); foreach (var item in _Items.TakeWhile(i => i.Layer.IsOrdered()) .Where(i => !_Body.IsGhost || i.ItemID == 8270 || i.ItemID == 8271)) { if (item.ItemID == 0x1411 || item.ItemID == 0x141A) // plate legs { hidePants = true; } else if (hidePants && item.Layer == Layer.Pants) { continue; } if (!hideHair && (item.ItemID == 8270 || item.ItemID == 8271 || item.Layer == Layer.Helm)) { hideHair = true; } var gump = ArtworkSupport.LookupGump(item.ItemID, _Body.IsFemale); if (gump <= 0) { continue; } disp.AppendLayout(_Layout2); disp.AppendLayout(_X); disp.AppendLayout(_Y); disp.AppendLayout(gump); var hue = _SolidHue >= 0 ? _SolidHue : item.Hue; if (hue > 0 || (_SolidHue >= 0 && hue == _SolidHue)) { disp.AppendLayout(_Layout2Hue); disp.AppendLayoutNS(FixHue(hue)); } if (_Properties) { props += item.Serial.Value + ","; } } }
public override void AppendTo(IGumpWriter disp) { disp.AppendLayout(_Layout0); disp.AppendLayout(_X); disp.AppendLayout(_Y); disp.AppendLayout(Width); disp.AppendLayout(Height); disp.AppendLayout(Parent.Intern(" ".WrapUOHtmlBG(Color.Transparent))); disp.AppendLayout(false); disp.AppendLayout(false); var hue = _BodyHue; if (_SolidHue >= 0) { hue = _SolidHue; } var gump = ArtworkSupport.LookupGump(_Body); if (gump <= 0) { gump = ShrinkTable.Lookup(_Body, 0); if (gump > 0) { disp.AppendLayout(hue == 0 ? _Layout3A : _Layout4A); disp.AppendLayout(_X); disp.AppendLayout(_Y); disp.AppendLayout(gump); if (hue > 0 || (_SolidHue >= 0 && hue == _SolidHue)) { disp.AppendLayout(FixHue(hue)); } } return; } disp.AppendLayout(_Layout2A); disp.AppendLayout(_X); disp.AppendLayout(_Y); disp.AppendLayout(gump); if (hue != 0) { disp.AppendLayout(_Layout2Hue); disp.AppendLayoutNS(FixHue(hue)); } var hideHair = _Body.IsGhost; var hidePants = false; var props = String.Empty; AppendTo(disp, ref props, ref hidePants, ref hideHair); if (!_Body.IsGhost && _FacialHairID > 0) { gump = ArtworkSupport.LookupGump(_FacialHairID, _Body.IsFemale); if (gump > 0) { disp.AppendLayout(_Layout2B); disp.AppendLayout(_X); disp.AppendLayout(_Y); disp.AppendLayout(gump); hue = _SolidHue >= 0 ? _SolidHue : _FacialHairHue; if (hue > 0 || (_SolidHue >= 0 && hue == _SolidHue)) { disp.AppendLayout(_Layout2Hue); disp.AppendLayoutNS(FixHue(hue)); } } } if (!hideHair && _HairID > 0) { gump = ArtworkSupport.LookupGump(_HairID, _Body.IsFemale); if (gump > 0) { disp.AppendLayout(_Layout2B); disp.AppendLayout(_X); disp.AppendLayout(_Y); disp.AppendLayout(gump); hue = _SolidHue >= 0 ? _SolidHue : _HairHue; if (hue > 0 || (_SolidHue >= 0 && hue == _SolidHue)) { disp.AppendLayout(_Layout2Hue); disp.AppendLayoutNS(FixHue(hue)); } } } if (!_Properties || String.IsNullOrWhiteSpace(props)) { return; } var noHue = FixHue(0); var noText = Parent.Intern(" "); props = props.Trim(','); foreach (var item in props.Split(',').Select(Int32.Parse).Select(s => _Items.Find(i => i.Serial.Value == s))) { foreach (var b in item.GetPaperdollBounds()) { disp.AppendLayout(_Layout5); disp.AppendLayout(_X + b.X); disp.AppendLayout(_Y + b.Y); disp.AppendLayout(b.Width); disp.AppendLayout(b.Height); disp.AppendLayout(noHue); disp.AppendLayout(noText); disp.AppendLayout(_Layout6); disp.AppendLayout(item.Serial.Value); } } }
public virtual string Compile(ref string props, ref bool hidePants, ref bool hideHair) { var compiled = String.Empty; if (_Items == null || _Items.Count == 0) { return(compiled); } _Items.SortLayers(); var noHue = FixHue(0); var noText = Parent.Intern(" "); foreach (var item in _Items.TakeWhile(i => i.Layer.IsOrdered()).Where(i => !_Body.IsGhost || i.ItemID == 8270)) { if (item.ItemID == 0x1411 || item.ItemID == 0x141A) // plate legs { hidePants = true; } else if (hidePants && item.Layer == Layer.Pants) { continue; } if (!hideHair && item.Layer == Layer.Helm) { hideHair = true; } var gump = ArtworkSupport.LookupGump(item.ItemID, _Body.IsFemale); if (gump <= 0) { continue; } var hue = _SolidHue >= 0 ? _SolidHue : item.Hue; if (hue > 0 || (_SolidHue >= 0 && hue == _SolidHue)) { compiled += String.Format(_Format1B, _X, _Y, gump, FixHue(hue)); } else { compiled += String.Format(_Format1A, _X, _Y, gump); } if (_Properties) { var tooltip = String.Format(_Format5, item.Serial.Value); foreach (var b in item.GetPaperdollBounds()) { props += String.Format(_Format4, _X + b.X, _Y + b.Y, b.Width, b.Height, noHue, noText); props += tooltip; } } } return(compiled); }
public override string Compile() { var compiled = String.Format(_Format0, _X, _Y, Width, Height, " ".WrapUOHtmlBG(Color.Transparent)); var hue = _BodyHue; if (_SolidHue >= 0) { hue = _SolidHue; } var gump = ArtworkSupport.LookupGump(_Body); if (gump <= 0) { gump = ShrinkTable.Lookup(_Body, 0); if (gump > 0) { if (hue > 0 || (_SolidHue >= 0 && hue == _SolidHue)) { compiled += String.Format(_Format3, _X, _Y, gump, FixHue(hue)); } else { compiled += String.Format(_Format2, _X, _Y, gump); } } return(compiled); } if (hue > 0 || (_SolidHue >= 0 && hue == _SolidHue)) { compiled += String.Format(_Format1B, _X, _Y, gump, FixHue(hue)); } else { compiled += String.Format(_Format1A, _X, _Y, gump); } var hideHair = _Body.IsGhost; var hidePants = false; var props = String.Empty; compiled += Compile(ref props, ref hidePants, ref hideHair); if (!_Body.IsGhost && _FacialHairID > 0) { gump = ArtworkSupport.LookupGump(_FacialHairID, _Body.IsFemale); if (gump > 0) { hue = _SolidHue >= 0 ? _SolidHue : _FacialHairHue; if (hue > 0 || (_SolidHue >= 0 && hue == _SolidHue)) { compiled += String.Format(_Format1B, _X, _Y, gump, FixHue(hue)); } else { compiled += String.Format(_Format1A, _X, _Y, gump); } } } if (!hideHair && _HairID > 0) { gump = ArtworkSupport.LookupGump(_HairID, _Body.IsFemale); if (gump > 0) { hue = _SolidHue >= 0 ? _SolidHue : _HairHue; if (hue > 0 || (_SolidHue >= 0 && hue == _SolidHue)) { compiled += String.Format(_Format1B, _X, _Y, gump, FixHue(hue)); } else { compiled += String.Format(_Format1A, _X, _Y, gump); } } } return(compiled + props); }
public static int GetPaperdollArt(this Item item, bool female) { return(item != null && item.Layer.IsValid() ? ArtworkSupport.LookupGump(item.ItemID, female) : 0); }
public virtual void AddPaperdoll( int x, int y, bool bg, bool props, IEnumerable <Item> list, Body body, int hue = 0, int solidHue = -1, int hairID = 0, int hairHue = 0, int facialHairID = 0, int facialHairHue = 0) { if (bg) { AddBackground(x, y, 200, 250, 2620); } x += 5; y += 5; if (solidHue >= 0) { hue = solidHue; } int doll = ArtworkSupport.LookupGump(body); if (doll <= 0) { doll = ShrinkTable.Lookup(body, 0); if (doll > 0) { if (hue > 0 && hue <= 3000) { AddItem(x, y, doll, hue - 1); } else { AddItem(x, y, doll); } return; } } if (doll <= 0) { return; } if (hue > 0 && hue <= 3000) { AddImage(x, y, doll, hue - 1); } else { AddImage(x, y, doll); } var items = list.ToList(); items.SortLayers(); bool alive = !body.IsGhost; bool hideHair = body.IsGhost; bool hidePants = false; var propsList = props ? new List <Item>(items.Count) : null; foreach (Item item in items.TakeWhile(item => item.Layer.IsOrdered()).Where(item => alive || item.ItemID == 8270)) { if (item.ItemID == 0x1411 || item.ItemID == 0x141A) // plate legs { hidePants = true; } else if (hidePants && item.Layer == Layer.Pants) { continue; } if (!hideHair && item.Layer == Layer.Helm) { hideHair = true; } var gump = ArtworkSupport.LookupGump(item.ItemID, body.IsFemale); if (gump <= 0) { continue; } int iHue = solidHue >= 0 ? solidHue : item.Hue; if (iHue > 0 && iHue <= 3000) { AddImage(x, y, gump, iHue - 1); } else { AddImage(x, y, gump); } if (props) { propsList.Add(item); } } if (alive && facialHairID > 0) { var gump = ArtworkSupport.LookupGump(facialHairID, body.IsFemale); if (gump > 0) { int hHue = solidHue >= 0 ? solidHue : facialHairHue; if (hHue > 0 && hHue <= 3000) { AddImage(x, y, gump, hHue - 1); } else { AddImage(x, y, gump); } } } if (!hideHair && hairID > 0) { var gump = ArtworkSupport.LookupGump(hairID, body.IsFemale); if (gump > 0) { int hHue = solidHue >= 0 ? solidHue : hairHue; if (hHue > 0 && hHue <= 3000) { AddImage(x, y, gump, hHue - 1); } else { AddImage(x, y, gump); } } } items.Free(true); if (!props) { return; } foreach (var item in propsList) { foreach (var b in item.GetPaperdollBounds()) { AddLabelCropped(x + b.X, y + b.Y, b.Width, b.Height, 0, " "); AddProperties(item); } } propsList.Free(true); }
public static int GetPaperdoll(this Body body) { return(ArtworkSupport.LookupGump(body)); }