コード例 #1
0
ファイル: LootManagerLogic.cs プロジェクト: larnin/LD42
 public void add(LootLogic loot)
 {
     if (this != null)
     {
         m_lootsInstance.Add(loot);
     }
 }
コード例 #2
0
ファイル: LootManagerLogic.cs プロジェクト: larnin/LD42
 public void remove(LootLogic loot)
 {
     if (this != null)
     {
         m_lootsInstance.Remove(loot);
     }
 }
コード例 #3
0
ファイル: BattleLogic.cs プロジェクト: yuto1492/mon_rogelike
        /// <summary>
        /// 報酬付与
        /// </summary>
        public static List <LootItemStruct> BattleResult()
        {
            List <LootItemStruct> loots = new List <LootItemStruct>();
            int gold = 0;

            //モンスター固有アイテム抽選
            EnemyDataModel.Instance.Data.ForEach(enemy =>
            {
                loots.AddRange(LootLogic.MonsterLootChoice(enemy.monsterId));
                //ゴールド計算 TODO
                gold += enemy.level * 10;
            });
            //ダンジョン固有アイテム抽選 TODO 確率
            loots.AddRange(LootLogic.DungeonLootChoice(0.1f));

            //アイテム獲得処理
            List <ItemStruct> items = new List <ItemStruct>();

            loots.ForEach(loot =>
            {
                var item = ItemLogic.CreateItemFromLoot(loot);
                items.Add(item);
            });
            StockItemDataModel.GetInstance().AddItems(items);

            //ゴールド獲得処理
            loots.Add(new LootItemStruct()
            {
                Amount = gold,
                ItemId = ItemConsts.GOLD
            });
            StockItemDataModel.GetInstance().AddGold(gold);

            //レベルアップ処理
            //TODO レベルアップの仕様検討
            //一般戦闘の場合は+1 エリート敵の場合は+2
            int levelUpAmount = 1;

            loots.Add(new LootItemStruct()
            {
                Amount = levelUpAmount,
                ItemId = ItemConsts.LEVEL
            });
            BattlerLogic.LevelUp(levelUpAmount);

            return(loots);
        }
コード例 #4
0
ファイル: LootManagerLogic.cs プロジェクト: larnin/LD42
    public LootLogic getNearestLootInRadius(Vector3 pos, float radius)
    {
        LootLogic best     = null;
        float     bestDist = float.MaxValue;

        foreach (var l in m_lootsInstance)
        {
            float d = (pos - l.transform.position).sqrMagnitude;
            if (d < bestDist)
            {
                best     = l;
                bestDist = d;
            }
        }
        if (bestDist <= radius * radius)
        {
            return(best);
        }
        return(null);
    }
コード例 #5
0
        public static void TreasureEvent(AsyncSubject <Unit> subject)
        {
            var eventModal = new DungeonEventModal();

            eventModal.EventText("何かを見つけた");
            eventModal.AddChoice("獲得する").Subscribe(_ =>
            {
                subject.OnNext(Unit.Default);
                subject.OnCompleted();
            });
            var loots = LootLogic.DungeonTreasureLootChoice();
            List <ItemStruct> items = new List <ItemStruct>();

            loots.ForEach(loot =>
            {
                var item = ItemLogic.CreateItemFromLoot(loot);
                items.Add(item);
            });
            eventModal.AddLootImages(loots);
            StockItemDataModel.GetInstance().Data.AddRange(items);
        }