public float PlayGreeting()
    {
        float         aniTime = 0;
        string        aniName = Greeting + "_" + partType.ToString();
        AnimationClip clip    = item_animation.GetClip(aniName);

        if (clip != null)
        {
            aniTime = clip.length;
            item_animation.Play(aniName);
        }
        return(aniTime);
    }
Example #2
0
        private dynamic ReadDynamicValue(PartType part, PacketReader reader)
        {
            dynamic value = null;

            switch (part)
            {
            case PartType.Int16: value = reader.ReadLEInt16(); break;

            case PartType.Int32: value = reader.ReadLEInt32(); break;

            case PartType.Int64: value = reader.ReadLEInt64(); break;

            case PartType.Single: value = reader.ReadLESingle(); break;

            case PartType.FixedString:
                short l = reader.ReadLEInt16();
                value = reader.ReadStringSafe(l);
                break;

            case PartType.DynamicString: value = reader.ReadStringSafe(); break;

            case PartType.Byte: value = reader.ReadByte(); break;

            case PartType.Boolean: value = reader.ReadBoolean(); break;

            default:
                MessageBox.Show("Undefined Segment Type Found - " + part.ToString());
                break;
            }

            return(value);
        }
    /// <summary>
    /// Trys to place a part with the given parameters
    /// </summary>
    /// <param name="type">The type of the part to place</param>
    /// <param name="direction">The direction of the part to place</param>
    /// <param name="rotation">The rotation of the part to place</param>
    /// <param name="position">The position, where the part should be placed</param>
    /// <returns>Whether the part has been successfully placed</returns>
    public bool AddPart(PartType type, PartDirection direction, PartRotation rotation, Vector3Int position)
    {
        bool canBePlaced = CanBePlaced(type, direction, rotation, position);

        if (!canBePlaced)
        {
            return(false);
        }
        else
        {
            GameObject newPartGameobject = (GameObject)Instantiate(partBuilding);

            parts.Add(newPartGameobject.GetComponent <PartBuilding>());

            parts[parts.Count - 1].SetPosition(position);
            parts[parts.Count - 1].SetDirection(direction);
            parts[parts.Count - 1].SetRotation(rotation);
            parts[parts.Count - 1].SetPart(type);

            connectOverlapingConnectors(parts[parts.Count - 1]);

            Debug.Log("Added part: " + type.ToString() + " at: " + position.ToString());

            return(true);
        }
    }
            private async Task GetBestPartAsync(string addressInput, PartType partType, string attribute, string rarity)
            {
                var address = await GetFormattedAddress(addressInput);

                Inventory inv = await userUtils.GetInventory(address);

                var parts = inv.parts;

                var attr          = attribute.ToLower().StartsWith('b') ? ConvertToTypeName(partType) : attribute;
                var partAttribute = GetPartAttribute(attr);

                if (partAttribute == PartAttribute.NONE)
                {
                    MyEmbedBuilder.AddField("Attribute not found", attribute);
                    MyEmbedBuilder.WithColor(Color.Red);
                }
                else
                {
                    var partsByRarityChosen = partInfoUtils.GetPartsByRarity(rarity, parts);
                    var partsByType         = GetPartsByType(partsByRarityChosen, partType);

                    var partWithBestAttribute = GetPartWithBestAttribute(partsByType, partAttribute);

                    SetUpResponse(partWithBestAttribute, partAttribute);

                    MyEmbedBuilder.WithTitle(ToSentenceCase($"Best {partType.ToString("G")} | {attribute}"));
                    MyEmbedBuilder.WithColor(partInfoUtils.GetEmbedColorByRarity(partWithBestAttribute));
                }
                await ReplyAsync(embed : MyEmbedBuilder.Build());
            }
 private string ConvertToTypeName(PartType partType)
 {
     foreach (string partAttr in Enum.GetNames(typeof(PartAttribute)))
     {
         if (partAttr.Contains(partType.ToString("G")))
         {
             return(partAttr);
         }
     }
     return("NONE");
 }
Example #6
0
        private Type GetTypeToCreate(PartType pt)
        {
            foreach (var part in parts)
            {
                if (part.Key.Contains(pt.ToString().ToLower()))
                {
                    return(parts[part.Key]);
                }
            }

            return(null);
        }
Example #7
0
        private Sprite LoadCarPartSprite(PartType type)
        {
            var part = Vars.GetCarPart(type);

            if (part is null)
            {
                return(Resources.Load <GameObject>($"Prefabs/Parts/{type.ToString()}_disabled").GetComponent <Image>()
                       .sprite);
            }
            var prefab = Resources.Load <GameObject>($"Prefabs/Parts/{part.PrefabName}");

            return(prefab.GetComponent <Image>().sprite);
        }
Example #8
0
        /// <summary>
        /// 异步加载一个人物
        /// </summary>
        /// <returns>The person object.</returns>
        /// <param name="part">Part.</param>
        public void GetPersonObjAsync(List <PartData> part, Action <GameObject> cb = null)
        {
            GameObject person = new GameObject("person");

            for (int i = 0; i < part.Count; i++)
            {
                PartType partType = part[i].PType;
                if (partType == PartType.Pixels || partType == PartType.drawPixels)
                {
                    continue;
                }
                Vector3 pos   = new Vector3(part[i].Pos[0], part[i].Pos[1], part[i].Pos[2]);
                Vector3 scale = new Vector3(part[i].Scale[0], part[i].Scale[1], part[i].Scale[2]);

                string path = "Prefabs/display|display_item_" + partType.ToString().ToLower();

                if (i == part.Count - 1)
                {
                    //最后一个部位加载完,父节点要修改的!!!异步这块现在还没修改
                    GetOnePartAsync(path, person, pos, scale, part[i], (tmpPerson) => {
                        Transform partParent = tmpPerson.transform;
                        for (int j = 0; j < tmpPerson.transform.childCount; j++)
                        {
                            Transform t   = tmpPerson.transform.GetChild(j);
                            PartType type = t.GetComponent <DisplayPartItem>().partType;
                            if (type == PartType.Body)
                            {
                                partParent = t.Find("img_item").transform;
                            }
                            else if (type == PartType.LeftEye || type == PartType.RightEye || type == PartType.Mouth || type == PartType.Hat || type == PartType.Hair || type == PartType.HeadWear)
                            {
                                t.SetParent(partParent);
                                j--;
                            }
                        }
                        curPerson = tmpPerson;
                        GetListDiaplayItem(tmpPerson.transform);
                        if (cb != null)
                        {
                            cb(tmpPerson);
                        }
                    });
                }
                else
                {
                    GetOnePartAsync(path, person, pos, scale, part[i], null);
                }
            }
        }
Example #9
0
    public void DefineBoxDetails(BoxType _type, PartType _part, Species _species = Species.UNKNOWN)
    {
        boxDetails.type    = _type;
        boxDetails.species = _species;
        boxDetails.part    = _part;

        string finalNamePart = _species.ToString().ToLower();

        if (_part != PartType.UNKNOWN)
        {
            finalNamePart = _part.ToString().ToLower();
        }

        boxDetails.boxTypeName = _type.ToString().Substring(0, 1) + finalNamePart;
    }
Example #10
0
    void Start()
    {
        boxDetails         = new BoxDetails();
        boxDetails.type    = _type;
        boxDetails.part    = _bodyPart;
        boxDetails.species = _species;

        string finalNamePart = _species.ToString().ToLower();

        if (_bodyPart != PartType.UNKNOWN)
        {
            finalNamePart = _bodyPart.ToString().ToLower();
        }
        boxDetails.boxTypeName = _type.ToString().Substring(0, 1) + finalNamePart;

        isEmpty = true;
    }
Example #11
0
    public override string ItemType()
    {
        itemtype = part_type.ToString();

        return(itemtype);
    }
Example #12
0
        /// <summary>
        /// 同步获取一个人物并计算出最低点
        /// </summary>
        /// <returns>The person object.</returns>
        /// <param name="part">Part.</param>
        public GameObject GetPersonObjWithFlag(PartDataWhole whole, out float minPosY)
        {
            float           minY         = float.MaxValue;
            List <PartData> part         = whole.PartDataList;
            GameObject      person       = new GameObject("person");
            Transform       transBody    = person.transform;
            Transform       parentBody   = null;
            GameObject      parentObj    = null;
            GameObject      bodyRectTemp = null;

            if (whole.JoinType == JoinType.Animal)
            {
                string bodypath = "Prefabs/display|display_item_animalbody";
                parentObj  = UIHelper.instance.LoadPrefab(bodypath, person.transform, Vector3.zero, Vector3.one);
                parentBody = parentObj.transform.Find("img_item").transform;
                DisplayPartItem item = parentObj.gameObject.AddComponent <DisplayPartItem>();
                item.partType = PartType.AnimalBody;
            }
            for (int i = 0; i < part.Count; i++)
            {
                PartType partType = part[i].PType;
                if (partType == PartType.Pixels || partType == PartType.drawPixels)
                {
                    continue;
                }
                Vector3    pos   = new Vector3(part[i].Pos[0], part[i].Pos[1], part[i].Pos[2]);
                Vector3    scale = new Vector3(part[i].Scale[0], part[i].Scale[1], part[i].Scale[2]);
                GameObject obj;
                Debug.Log(partType + "   " + pos);
                string path = "Prefabs/display|display_item_" + partType.ToString().ToLower();
                if (partType == PartType.LeftEye || partType == PartType.RightEye || partType == PartType.Mouth)
                {
                    if (whole.JoinType == JoinType.Animal)
                    {
                        obj = UIHelper.instance.LoadPrefab(path, transBody, pos, scale);
                    }
                    else
                    {
                        obj = UIHelper.instance.LoadPrefab(path, person.transform, pos, scale);
                        obj.transform.SetParent(transBody);
                    }
                }
                else if (partType == PartType.Head || partType == PartType.TrueBody)
                {
                    obj = UIHelper.instance.LoadPrefab(path, parentBody, pos, scale);
                    if (bodyRectTemp == null)
                    {
                        bodyRectTemp = obj;
                    }
                }
                else
                {
                    obj = UIHelper.instance.LoadPrefab(path, person.transform, pos, scale);
                    obj.transform.SetParent(transBody);
                }
                //给后面的节点指定父节点
                if (partType == PartType.Head || partType == PartType.Body)
                {
                    transBody = obj.transform.Find("img_item").transform;
                }

                //使用RawImage
                RawImage  img = obj.transform.Find("img_item").GetComponent <RawImage>();
                Texture2D t   = new Texture2D(500, 500, TextureFormat.RGBA32, false);
                t.filterMode = FilterMode.Point;
                t.LoadImage(part[i].ImgBytes);
                t.Apply(false);
                img.texture = t;
                img.SetNativeSize();
                //调整父节点的大小
                float w = img.GetComponent <RectTransform>().sizeDelta.x;
                float h = img.GetComponent <RectTransform>().sizeDelta.y;
                obj.transform.GetComponent <RectTransform>().sizeDelta = new Vector2(w, h);

                DisplayPartItem item = obj.AddComponent <DisplayPartItem>();
                item.partType = part[i].PType;
                item.Init();

                //最低点计算
                float bottom = obj.GetComponent <RectTransform>().anchoredPosition.y - h / 2;

                if (partType == PartType.Body)
                {
                    float j = Utils.GetPicHeightRate(t);
                    bottom = h / 2 - h * (1 - j);
                }
                if (minY > bottom)
                {
                    minY = bottom;
                }
            }
            if (whole.JoinType == JoinType.Animal && parentObj != null)
            {
                float offsetHeight = bodyRectTemp.transform.localPosition.y;
                parentObj.transform.SetAsLastSibling();
                parentBody.GetComponent <RectTransform>().sizeDelta = new Vector2(bodyRectTemp.GetComponent <RectTransform>().sizeDelta.x, bodyRectTemp.GetComponent <RectTransform>().sizeDelta.y - offsetHeight);//bodyRectTemp.GetComponent<RectTransform>().sizeDelta;
                parentObj.GetComponent <RectTransform>().sizeDelta  = new Vector2(bodyRectTemp.GetComponent <RectTransform>().sizeDelta.x, bodyRectTemp.GetComponent <RectTransform>().sizeDelta.y - offsetHeight);
                parentBody.GetComponent <RectTransform>().anchorMin = new Vector2(0.5f, 0);
                parentBody.GetComponent <RectTransform>().anchorMax = new Vector2(0.5f, 0);
                parentBody.GetComponent <RectTransform>().pivot     = new Vector2(0.5f, 0);
            }
            GameObject flagObj = new GameObject("flag_bottom");

            flagObj.transform.SetParent(person.transform);
            flagObj.transform.localPosition = new Vector3(0, minY, 0);

            curPerson = person;
            GetListDiaplayItem(person.transform);
            minPosY = minY;
            return(person);
        }
Example #13
0
        private dynamic ReadDynamicValue(PartType part, PacketReader reader)
        {
            dynamic value = null;

            switch (part)
            {
                case PartType.Int16: value = reader.ReadLEInt16(); break;
                case PartType.Int32: value = reader.ReadLEInt32(); break;
                case PartType.Int64: value = reader.ReadLEInt64(); break;
                case PartType.Single: value = reader.ReadLESingle(); break;
                case PartType.FixedString:
                    short l = reader.ReadLEInt16();
                    value = reader.ReadStringSafe(l);
                    break;
                case PartType.DynamicString: value = reader.ReadStringSafe(); break;
                case PartType.Byte: value = reader.ReadByte(); break;
                case PartType.Boolean: value = reader.ReadBoolean(); break;
                default:
                    MessageBox.Show("Undefined Segment Type Found - " + part.ToString());
                    break;
            }

            return value;
        }
Example #14
0
 protected override void OnValidate()
 {
     base.OnValidate();
     gameObject.name = PartType.ToString();
 }
 public override string ToString()
 {
     return(partType.ToString() + "_" + partPosition.ToString());
 }