コード例 #1
0
        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);
        }
コード例 #2
0
        public void Setup(Common.Item.ItemEntity entity)
        {
            _itemEntity = entity;

            // 名前の設定
            _titleText.text = _itemEntity.Name;
        }
コード例 #3
0
ファイル: ItemControl.cs プロジェクト: Toshizabeth/Ling
        public void Setup(Common.Item.ItemEntity itemEntity, TileData tileData)
        {
            Entity   = itemEntity;
            Master   = itemEntity.Master;
            TileData = tileData;

            _view.Setup();
        }
コード例 #4
0
ファイル: MenuScene.cs プロジェクト: Toshizabeth/Ling
        /// <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();
        }
コード例 #5
0
        /// <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;
                    }
                }
            }
        }
コード例 #6
0
ファイル: BattleResult.cs プロジェクト: Toshizabeth/Ling
 /// <summary>
 /// アイテムを使用した時
 /// </summary>
 public static BattleResult CreateAtItemUse(Common.Item.ItemEntity itemEntity) =>
 new BattleResult
 {
     Menu = MenuCategory.UseItem, UseItemEntity = itemEntity
 };