示例#1
0
        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);
        }
示例#5
0
文件: ItemExt.cs 项目: LordEnigma/UO
 public static int GetPaperdollArt(this Item item, bool female)
 {
     return(item != null && item.Layer.IsValid() ? ArtworkSupport.LookupGump(item.ItemID, female) : 0);
 }
示例#6
0
 public static int GetAnimID(this Item item)
 {
     return(item != null && item.Layer.IsValid() ? ArtworkSupport.LookupAnimation(item.ItemID) : 0);
 }
示例#7
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);
        }
示例#8
0
 public static int GetPaperdoll(this Body body)
 {
     return(ArtworkSupport.LookupGump(body));
 }