示例#1
0
 public ResModel AddPartsType(PartsTypeDto partsTypeDto, UserDto operationUser)
 {
     using (var db = new ModelContext())
     {
         var partsType = new PartsType()
         {
             Id          = Guid.NewGuid(),
             Name        = partsTypeDto.Name,
             ParentId    = partsTypeDto.ParentId == Guid.Empty ? null : partsTypeDto.ParentId,
             Description = partsTypeDto.Description
         };
         try
         {
             db.PartsType.Add(partsType);
             db.SaveChanges();
         }
         catch (Exception e)
         {
             return(new ResModel()
             {
                 Msg = "添加失败", Success = false
             });
         }
         return(new ResModel()
         {
             Msg = "添加成功", Success = true
         });
     }
 }
示例#2
0
    public bool IsNoEquip(PartsType type, bool isSub = false)
    {
        switch (type)
        {
        case PartsType.MAX:
            return(false);

        case PartsType.WEAPON:
        {
            if (isSub)
            {
                return(IsNoSub());
            }
            else
            {
                return(IsNoHand());
            }
        }

        default:
        {
            return(m_wearableMgr.IsNoEquip(type));
        }
        }
    }
示例#3
0
        /// <summary>
        /// この部品の設定が変更された時に通知を受け取る。
        /// </summary>
        /// <param name="model">キャラチップモデル</param>
        /// <param name="partsType">部品タイプ</param>
        /// <param name="propertyName">プロパティ名</param>
        private void OnPartsAttributeChanged(Character model, PartsType partsType,
                                             string propertyName)
        {
            // 変更対象の部品に関係するレイヤーに設定を適用する。
            Parts parts = model.GetParts(partsType);

            foreach (RenderLayerGroup layerGroup in layerGroups)
            {
                foreach (RenderLayer layer in layerGroup)
                {
                    if (layer.PartsType == partsType)
                    {
                        ApplyLayerOffsets(layer, parts);
                    }
                    if ((layer.ColorPartsRefs == partsType) &&
                        (layer.ColorPropertyName.Equals(propertyName)))
                    {
                        ColorSetting setting = parts.GetColorSetting(propertyName);
                        if (setting != null)
                        {
                            ApplyLayerColor(layer, setting);
                        }
                    }
                }
            }
        }
示例#4
0
    public void AddParts(PartsType type, int id, Vector2 pos)
    {
        switch (type)
        {
        case PartsType.Body:
            Body._id  = id;
            Body._pos = pos;
            break;

        case PartsType.Eye:
            Eye._id  = id;
            Eye._pos = pos;
            break;

        case PartsType.Fin:
            if (Fin.Count < 4)
            {
                Fin.Add(new PartsData()
                {
                    _id = id, _pos = pos
                });
            }
            break;
        }
    }
示例#5
0
    public void UpdateData(int id, PartsType type)
    {
        Id = id;
        //Debug.Log(Id);
        string path = FishMasterData.MaterialPath[type] + id;

        //Debug.Log(path);
        _renderer.material = Resources.Load <Material>(path);
    }
示例#6
0
 public void UpdateFrameData(PartsType edit)
 {
     _nowEdit = edit;
     AddFrame(_partsMax[_nowEdit.ToString()]);
     for (int i = 0; i < _partsFrame.Count; i++)
     {
         Debug.Log(i);
         _partsFrame[i].UpdateData(i, _nowEdit);
     }
 }
示例#7
0
            internal override Part ReadEntry(BinaryReaderEx br)
            {
                PartsType type = br.GetEnum32 <PartsType>(br.Position + 4);

                switch (type)
                {
                case PartsType.MapPiece:
                    var mapPiece = new Part(br);
                    MapPieces.Add(mapPiece);
                    return(mapPiece);

                case PartsType.Object:
                    var obj = new Part(br);
                    Objects.Add(obj);
                    return(obj);

                case PartsType.Enemy:
                    var enemy = new Part(br);
                    Enemies.Add(enemy);
                    return(enemy);

                case PartsType.Player:
                    var player = new Part(br);
                    Players.Add(player);
                    return(player);

                case PartsType.Collision:
                    var collision = new Part(br);
                    Collisions.Add(collision);
                    return(collision);

                case PartsType.Navmesh:
                    var navmesh = new Part(br);
                    Navmeshes.Add(navmesh);
                    return(navmesh);

                case PartsType.DummyObject:
                    var dummyObj = new Part(br);
                    DummyObjects.Add(dummyObj);
                    return(dummyObj);

                case PartsType.DummyEnemy:
                    var dummyEne = new Part(br);
                    DummyEnemies.Add(dummyEne);
                    return(dummyEne);

                case PartsType.ConnectCollision:
                    var connectColl = new Part(br);
                    ConnectCollisions.Add(connectColl);
                    return(connectColl);

                default:
                    throw new NotImplementedException($"Unsupported part type: {type}");
                }
            }
示例#8
0
 /// <summary>
 /// partsTypeに該当するレンダリングレイヤーを削除する。
 /// </summary>
 /// <param name="partsType"></param>
 public void Remove(PartsType partsType)
 {
     // 削除しても飛ばされたりしないように、後ろから調べる。
     for (int i = layerEntries.Count - 1; i >= 0; i--)
     {
         if (layerEntries[i].PartsType == partsType)
         {
             layerEntries.RemoveAt(i);
         }
     }
 }
示例#9
0
 /// <summary>
 /// 新しいインスタンスを構築する。
 /// </summary>
 /// <param name="partsType">パーツ種類</param>
 public Parts(PartsType partsType)
 {
     PartsType               = partsType;
     materialName            = "";
     offsetX                 = 0;
     offsetY                 = 0;
     color1                  = new ColorSetting();
     color1.PropertyChanged += OnColor1PropertyChanged;
     color2                  = new ColorSetting();
     color2.PropertyChanged += OnColor2PropertyChanged;
 }
示例#10
0
        /// <summary>
        /// 部品に割り当てられた素材が変更されたときの処理を行う。
        /// </summary>
        /// <param name="model">キャラチップモデル</param>
        /// <param name="partsType">部品タイプ</param>
        private void OnMaterialChanged(Character model, PartsType partsType)
        {
            // 該当レイヤーを削除
            foreach (RenderLayerGroup group in layerGroups)
            {
                group.Remove(partsType);
            }

            Parts parts = model.GetParts(partsType);

            if (string.IsNullOrEmpty(parts.MaterialName))
            {
                // 設定なし。
                return;
            }

            // この部品のレイヤーを得て追加する。
            var material = AppData.Instance.GetMaterialList(partsType).Get(parts.MaterialName);

            if (material == null)
            {
                // 素材読み出しエラー
                HasMaterialError = true;
                return;
            }

            for (int i = 0; i < material.GetLayerCount(); i++)
            {
                var info              = material.Layers[i];
                var group             = layerGroups.First((entry) => entry.LayerType == info.LayerType);
                var colorPartsRefs    = info.ColorPartsRefs ?? partsType;
                var colorPropertyName = info.ColorPropertyName ?? Parts.DefaultColorPropertyName;
                var layer             = new RenderLayer(info.LayerType, partsType,
                                                        colorPartsRefs, colorPropertyName);
                layer.ColorImmutable = info.ColorImmutable;
                layer.Coloring       = info.Coloring;
                try
                {
                    layer.Image    = material.LoadLayerImage(i);
                    layer.HasError = false;
                }
                catch
                {
                    layer.Image    = null;
                    layer.HasError = true;
                }
                // レイヤーに設定値適用
                ApplyLayerOffsets(layer, model);
                ApplyLayerColor(layer, model);
                group.Add(partsType, layer);
            }

            HasMaterialError = false;
        }
示例#11
0
        void PartsAdd(PartsType type, XmlNode parent)
        {
            XmlNodeList parts = parent.SelectNodes("Parts");

            for (int i = 0; i < parts.Count; i++)
            {
                int    nIdx = int.Parse(parts[i].SelectSingleNode("index").InnerText);
                string name = parts[i].SelectSingleNode("name").InnerText;

                m_equipDatas[(int)type].Add(nIdx, name);
            }
        }
示例#12
0
        /// <summary>
        /// partsTypeの情報を持つレンダリングレイヤーを追加する。
        /// </summary>
        /// <param name="partsType">パーツ種別</param>
        /// <param name="layer">レイヤー</param>
        public void Add(PartsType partsType, RenderLayer layer)
        {
            for (int i = 0; i < layerEntries.Count; i++)
            {
                if (partsType <= layerEntries[i].PartsType)
                {
                    layerEntries.Insert(i, new RenderLayerEntry(partsType, layer));
                    return;
                }
            }

            layerEntries.Add(new RenderLayerEntry(partsType, layer));
        }
示例#13
0
        public IEquipment GetEquipment(PartsType type, int nIdx)
        {
            if (type == PartsType.MAX)
            {
                Debug.LogError("You can not Use MAXType");
                return(null);
            }


            if (!m_equipDatas[(int)type].ContainsKey(nIdx))
            {
                Debug.Log(type);
                Debug.LogError(nIdx + " is not matched data");
                return(null);
            }

            IEquipment equipment = null;
            string     path      = "Scriptable/Item/Equipment/";
            string     itemName  = m_equipDatas[(int)type][nIdx];

            switch (type)
            {
            case PartsType.BODY:
                path     += "Wearable/Body/" + itemName;
                equipment = Resources.Load <CWearable>(path);
                break;

            case PartsType.ARM:
                path     += "Wearable/Arm/" + itemName;
                equipment = Resources.Load <CWearable>(path);
                break;

            case PartsType.LEG:
                path     += "Wearable/Leg/" + itemName;
                equipment = Resources.Load <CWearable>(path);
                break;

            case PartsType.HEAD:
                path     += "Wearable/Head/" + itemName;
                equipment = Resources.Load <CWearable>(path);
                break;

            case PartsType.WEAPON:
                path     += "Weapon/" + itemName;
                equipment = Resources.Load <CWeapon>(path);
                break;
            }

            return(equipment);
        }
示例#14
0
    public void OutPutEquipment(int nIdx)
    {
        if (!m_boxGO.activeSelf)
        {
            return;
        }

        if (nIdx >= (int)PartsType.MAX)
        {
            return;
        }

        if (m_inventory == null)
        {
            return;
        }

        PartsType type = (PartsType)nIdx;

        if (m_inventory.IsNoEquip(type))
        {
            return;
        }

        IEquipment naked = CDataManager.Inst.EquipmentContainer.GetEquipment(type, 0);

        if (type == PartsType.WEAPON)
        {
            CWeapon hand = naked as CWeapon;
            if (hand == null)
            {
                return;
            }
            CWeapon weapon = m_inventory.EquipWeapon(hand);
            m_itemBox.InputEquip(weapon);
        }
        else
        {
            CWearable zeroParts = CDataManager.Inst.EquipmentContainer.GetEquipment(type, 0) as CWearable;
            if (zeroParts == null)
            {
                return;
            }
            CWearable wearable = m_inventory.ChangeWearable(zeroParts);

            m_itemBox.InputEquip(wearable);
        }
    }
示例#15
0
        /// <summary>
        /// 設定を適用する。
        /// </summary>
        /// <param name="model">データモデル</param>
        /// <param name="name">パーツ種別</param>
        /// <param name="partsType">プロパティ名</param>
        private void OnPartsChanged(Character model, PartsType partsType, string propertyName)
        {
            if (propertyName.Equals(nameof(Parts.MaterialName)))
            {
                // 素材自体が変更された。
                // この部品に関係する画像レイヤーを全部削除して追加。
                OnMaterialChanged(model, partsType);
            }
            else
            {
                // この部品に関係する画像レイヤーに設定を適用する。
                OnPartsAttributeChanged(model, partsType, propertyName);
            }

            ImageChanged?.Invoke(this, new EventArgs());
        }
示例#16
0
 /// <summary>
 /// キャラクターチップ生成のレイヤーを表すモデル
 /// </summary>
 /// <param name="layerType">レイヤータイプ</param>
 /// <param name="partsType">パラメータを取得する部品タイプ</param>
 /// <param name="colorPartsRefs">色パラメータを取得する部品タイプ</param>
 /// <param name="colorPropertyName">色参照プロパティ名</param>
 public RenderLayer(LayerType layerType, PartsType partsType, PartsType colorPartsRefs,
                    string colorPropertyName)
 {
     renderRequestLock = new object();
     renderRequested   = true;
     LayerType         = layerType;
     PartsType         = partsType;
     ColorPartsRefs    = colorPartsRefs;
     ColorPropertyName = colorPropertyName;
     this.image        = null;
     this.offsetX      = 0;
     this.offsetY      = 0;
     this.hue          = 0;
     this.saturation   = 0;
     this.value        = 0;
     this.opacity      = 100;
     this.coloring     = false;
 }
示例#17
0
    public bool IsNoEquip(PartsType type)
    {
        if (type >= PartsType.WEAPON)
        {
            return(false);
        }

        if (m_Wearables[(int)type] == null)
        {
            return(true);
        }

        if (m_Wearables[(int)type].ItemIdx == 0)
        {
            return(true);
        }

        return(false);
    }
示例#18
0
    void PartsFunc(PartsType type, int nIdx, Data.EquipmentContainer container, bool isSub = false)
    {
        CItemBase parts = container.GetEquipment(type, nIdx) as CItemBase;

        if (isSub)
        {
            if (parts != null)
            {
                m_partsIcons[m_partsIcons.Count - 1].sprite = parts.IconImg;
            }
        }
        else
        {
            if (parts != null)
            {
                m_partsIcons[(int)type].sprite = parts.IconImg;
            }
        }
    }
示例#19
0
            internal override Part ReadEntryBB(BinaryReaderEx br)
            {
                PartsType type = br.GetEnum32 <PartsType>(br.Position + 20);

                switch (type)
                {
                case PartsType.MapPiece:
                    var mapPiece = new Part.MapPiece(br, MSBVersion.MSBVersionBB);
                    MapPieces.Add(mapPiece);
                    return(mapPiece);

                case PartsType.Collision:
                    var collision = new Part.Collision(br, MSBVersion.MSBVersionBB);
                    Collisions.Add(collision);
                    return(collision);

                default:
                    //throw new NotImplementedException($"Unsupported part type: {type}");
                    return(null);
                }
            }
 /// <summary>
 /// 新しいインスタンスを構築する。
 /// </summary>
 /// <param name="type">部品種別</param>
 /// <param name="propertyName">プロパティ名</param>
 public PartsChangeEventArgs(PartsType type, string propertyName) : base(propertyName)
 {
     PartsType = type;
 }
示例#21
0
        /// <summary>
        /// キャラクター部品ノードを追加する。
        /// </summary>
        /// <param name="doc">XmlDocumentオブジェクト</param>
        /// <param name="parent">親要素</param>
        /// <param name="partsType">部品種類</param>
        /// <param name="parts">部品</param>
        private static void AddCharacterPartsNode(XmlDocument doc, XmlElement parent, PartsType partsType, Parts parts)
        {
            // nodeNameでなく、parts.MaterialNameでも良さそうだが、使うモデルによってはMaterialNameで""が返る事があるのでやらない。
            XmlElement partsElem = doc.CreateElement(GeneratorSettingFileDefs.NodeParts);

            partsElem.SetAttribute(GeneratorSettingFileDefs.PartsAttrName, partsType.ToString());
            partsElem.SetAttribute(GeneratorSettingFileDefs.PartsAttrMaterialName, parts.MaterialName);
            partsElem.SetAttribute(GeneratorSettingFileDefs.PartsAttrOffsetX, parts.OffsetX.ToString());
            partsElem.SetAttribute(GeneratorSettingFileDefs.PartsAttrOffsetY, parts.OffsetY.ToString());
            partsElem.SetAttribute(GeneratorSettingFileDefs.PartsAttrColor1, parts.Color1.ToString());
            partsElem.SetAttribute(GeneratorSettingFileDefs.PartsAttrColor2, parts.Color2.ToString());

            parent.AppendChild(partsElem);
        }