public void add(LootLogic loot) { if (this != null) { m_lootsInstance.Add(loot); } }
public void remove(LootLogic loot) { if (this != null) { m_lootsInstance.Remove(loot); } }
/// <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); }
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); }
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); }