public static void ClientFindDefaultHeadSprites(
            IReadOnlyList <SkeletonSlotAttachment> slotAttachments,
            SkeletonResource skeletonResource,
            bool isFrontFace,
            out string helmetFront,
            out string helmetBehind,
            string headEquipmentName = "HeadEquipment")
        {
            helmetFront  = null;
            helmetBehind = null;

            var skeletonName = skeletonResource?.SkeletonName;

            foreach (var slot in slotAttachments)
            {
                if (slot.SkeletonName is not null &&
                    slot.SkeletonName != skeletonName)
                {
                    continue;
                }

                if (slot.AttachmentName == headEquipmentName)
                {
                    helmetFront = slot.TextureResource.FullPath;
                }
                else if (isFrontFace &&
                         slot.AttachmentName == "HeadBehindEquipment")
                {
                    helmetBehind = slot.TextureResource.FullPath;
                }
            }
        }
Exemplo n.º 2
0
        public virtual void ClientGetHeadSlotSprites(
            [CanBeNull] IItem item,
            bool isMale,
            SkeletonResource skeletonResource,
            bool isFrontFace,
            bool isPreview,
            out string spriteFront,
            out string spriteBehind)
        {
            IReadOnlyList <SkeletonSlotAttachment> slotAttachments;

            if (this.ClientIsMustUseDefaultAppearance(item?.Container.OwnerAsCharacter,
                                                      isPreview))
            {
                slotAttachments = isMale
                                      ? ((IProtoItemEquipment)this.BaseProtoItem).SlotAttachmentsMale
                                      : ((IProtoItemEquipment)this.BaseProtoItem).SlotAttachmentsFemale;
            }
            else
            {
                slotAttachments = isMale
                                      ? this.SlotAttachmentsMale
                                      : this.SlotAttachmentsFemale;
            }

            ProtoItemEquipmentHeadHelper.ClientFindDefaultHeadSprites(
                slotAttachments,
                skeletonResource,
                isFrontFace,
                out spriteFront,
                out spriteBehind);
        }
Exemplo n.º 3
0
 public CharacterHeadSpriteData(
     CharacterHumanFaceStyle faceStyle,
     IItem headEquipment,
     SkeletonResource skeletonResource)
 {
     this.SkeletonResource = skeletonResource;
     this.FaceStyle        = faceStyle;
     this.HeadEquipment    = headEquipment;
 }
Exemplo n.º 4
0
 public CharacterHeadSpriteData(
     CharacterHumanFaceStyle faceStyle,
     IItem headEquipmentItem,
     IProtoItemEquipmentHead headEquipmentItemProto,
     SkeletonResource skeletonResource)
 {
     this.SkeletonResource       = skeletonResource;
     this.FaceStyle              = faceStyle;
     this.HeadEquipmentItem      = headEquipmentItem;
     this.HeadEquipmentItemProto = headEquipmentItemProto;
 }
Exemplo n.º 5
0
        public override void ClientGetHeadSlotSprites(
            [CanBeNull] IItem item,
            bool isMale,
            SkeletonResource skeletonResource,
            bool isFrontFace,
            bool isPreview,
            out string spriteFront,
            out string spriteBehind)
        {
            IReadOnlyList <SkeletonSlotAttachment> slotAttachments;

            if (this.ClientIsMustUseDefaultAppearance(item?.Container.OwnerAsCharacter,
                                                      isPreview))
            {
                slotAttachments = isMale
                                      ? ((IProtoItemEquipment)this.BaseProtoItem).SlotAttachmentsMale
                                      : ((IProtoItemEquipment)this.BaseProtoItem).SlotAttachmentsFemale;
            }
            else
            {
                slotAttachments = isMale
                                      ? this.SlotAttachmentsMale
                                      : this.SlotAttachmentsFemale;
            }

            var isActive = item is null || // in case of preview we want to display the active sprite
                           GetPublicState(item).IsActive;

            ProtoItemEquipmentHeadHelper.ClientFindDefaultHeadSprites(
                slotAttachments,
                skeletonResource,
                isFrontFace,
                out spriteFront,
                out spriteBehind,
                headEquipmentName: isActive
                                       ? "HeadActiveEquipment"
                                       : "HeadEquipment");

            if (isActive &&
                spriteFront is null)
            {
                // no active sprite found - fallback to default head equipment method
                base.ClientGetHeadSlotSprites(item,
                                              isMale,
                                              skeletonResource,
                                              isFrontFace,
                                              isPreview,
                                              out spriteFront,
                                              out spriteBehind);
            }
        }
        public virtual void ClientGetHeadSlotSprites(
            IItem item,
            bool isMale,
            SkeletonResource skeletonResource,
            bool isFrontFace,
            out string spriteFront,
            out string spriteBehind)
        {
            this.VerifyGameObject(item);
            var slotAttachments = isMale
                                      ? this.SlotAttachmentsMale
                                      : this.SlotAttachmentsFemale;

            ProtoItemEquipmentHeadHelper.ClientFindDefaultHeadSprites(
                slotAttachments,
                skeletonResource,
                isFrontFace,
                out spriteFront,
                out spriteBehind);
        }
        private static void GetHeadEquipmentSprites(
            IItem itemHeadEquipment,
            IProtoItemEquipmentHead protoHelmet,
            bool isMale,
            bool isFrontFace,
            SkeletonResource skeletonResource,
            out string helmetFront,
            out string helmetBehind)
        {
            protoHelmet.ClientGetHeadSlotSprites(
                itemHeadEquipment,
                isMale,
                skeletonResource,
                isFrontFace,
                out helmetFront,
                out helmetBehind);

            if (helmetFront == null)
            {
                throw new Exception("Helmet attachment is not available for " + protoHelmet);
            }
        }
        public override void ClientGetHeadSlotSprites(
            IItem item,
            bool isMale,
            SkeletonResource skeletonResource,
            bool isFrontFace,
            out string spriteFront,
            out string spriteBehind)
        {
            this.VerifyGameObject(item);
            var slotAttachments = isMale
                                      ? this.SlotAttachmentsMale
                                      : this.SlotAttachmentsFemale;

            var isActive = GetPublicState(item).IsActive;

            ProtoItemEquipmentHeadHelper.ClientFindDefaultHeadSprites(
                slotAttachments,
                skeletonResource,
                isFrontFace,
                out spriteFront,
                out spriteBehind,
                headEquipmentName: isActive
                                       ? "HeadActiveEquipment"
                                       : "HeadEquipment");

            if (isActive &&
                spriteFront == null)
            {
                // no active sprite found - fallback to default head equipment method
                base.ClientGetHeadSlotSprites(item,
                                              isMale,
                                              skeletonResource,
                                              isFrontFace,
                                              out spriteFront,
                                              out spriteBehind);
            }
        }