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 }); } }
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)); } } }
/// <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); } } } } }
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; } }
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); }
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); } }
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}"); } }
/// <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); } } }
/// <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; }
/// <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; }
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); } }
/// <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)); }
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); }
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); } }
/// <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()); }
/// <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; }
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); }
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; } } }
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; }
/// <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); }