/// <summary> /// バトル開始 /// </summary> /// <returns></returns> public static AsyncSubject <List <LootItemStruct> > BootBattle() { AsyncSubject <List <LootItemStruct> > subject = new AsyncSubject <List <LootItemStruct> >(); var dungeon = DungeonDictionary.GetDungeonMapData(DungeonDataModel.Instance.DungeonId); var enemies = BattleLogic.EnemiesChoice(); var enemyDataModel = EnemyDataModel.Instance; enemyDataModel.Initialize(); enemies.Enemies.ForEach(enemyId => { float level = Random.Range(dungeon.enemyLevel.min, dungeon.enemyLevel.max); level = level * DungeonDataModel.Instance.Location.y + 1; level += enemies.AddLevel; enemyDataModel.Add(EnemyLogic.Create(enemyId, (int)level)); }); _battleScene = Object.Instantiate((GameObject)Resources.Load("Prefabs/Scene/Battle"), Vector3.zero, Quaternion.identity); _battleScene.transform.Find("FrontCanvas").GetComponent <Canvas>().worldCamera = GameObject.Find("MainCamera").GetComponent <Camera>(); var battleManager = _battleScene.transform.Find("System").GetComponent <BattleManager>(); battleManager.Initialize(); battleManager.EndBattle.Subscribe(loots => { subject.OnNext(loots); subject.OnCompleted(); }); return(subject); }