public Item.ItemControl CreateItemObject(TileData tileData, Common.Item.ItemEntity itemEntity) { // アイテムを作成する var item = _pool.Pop <Item.ItemControl>(itemEntity.Master.PrefabType); item.Setup(itemEntity, tileData); // Poolに戻った時を検知する var poolItem = item.GetComponent <Utility.Pool.PoolItem>(); poolItem.OnRelease = new Utility.FunctionParam1 <Item.ItemControl>(item, item_ => { var releaseIndex = item_.TileData.Index; _itemObjectDict.Remove(releaseIndex); _itemEntityDict.Remove(releaseIndex); }); _itemObjectDict.Add(tileData.Index, item); // マップに配置する _mapObjectInstaller.PlaceObject(item.gameObject, _level, tileData.Pos, OrderType.Item); // 生成したことを伝える _eventSpawnMapObject.Publish(new EventSpawnMapObject { Flag = Const.TileFlag.Item, MapLevel = _level, followObj = item.gameObject }); return(item); }
public void Setup(Common.Item.ItemEntity entity) { _itemEntity = entity; // 名前の設定 _titleText.text = _itemEntity.Name; }
public void Setup(Common.Item.ItemEntity itemEntity, TileData tileData) { Entity = itemEntity; Master = itemEntity.Master; TileData = tileData; _view.Setup(); }
/// <summary> /// アイテムを使用する /// </summary> private void UseItem(Common.Item.ItemEntity itemEntity) { Utility.Log.Print($"アイテムを使用する {itemEntity.ID}, {itemEntity.Name}"); // シーンを戻る var result = BattleResult.CreateAtItemUse(itemEntity); _sceneManager.CloseSceneAsync(this, result).Forget(); }
/// <summary> /// マップに配置する /// </summary> public void CreateAtBuild() { // アイテム生成数を決める var dropTableMaster = _mapMaster.DropItemTableMaster; var num = dropTableMaster.GetRandomDropNum(); var tileDataMap = _mapData.TileDataMap; // 回数分配置 for (int i = 0; i < num; ++i) { // 配置するアイテムマスタ var itemMaster = dropTableMaster.GetRandomItem(); // 部屋に何もない場所に配置 var roomData = tileDataMap.GetRandomRoom(); // 配置できる場所に配置する // 配置できる箇所がない場合はもう何もしないとする // 最大 5 回 for (int count = 0; count < 5; ++count) { var tileData = roomData.GetRandom(); // 配置できる箇所か if (!CanPlaced(tileData)) { continue; } // 配置 tileData.AddFlag(Const.TileFlag.Item); var itemEntity = new Common.Item.ItemEntity(); itemEntity.CreateUniqKey(); itemEntity.SetMaster(itemMaster); _itemEntityDict.Add(tileData.Index, itemEntity); var itemObject = CreateItemObject(tileData, itemEntity); if (itemObject == null) { continue; } } } }
/// <summary> /// アイテムを使用した時 /// </summary> public static BattleResult CreateAtItemUse(Common.Item.ItemEntity itemEntity) => new BattleResult { Menu = MenuCategory.UseItem, UseItemEntity = itemEntity };