/// <summary> /// 戦闘イベント処理 /// </summary> /// <param name="subject"></param> /// <param name="dungeonEffectView"></param> private static void BattleEvent(AsyncSubject <Unit> subject, DungeonEffectView dungeonEffectView) { dungeonEffectView.OpenTransition().Subscribe(_ => { var dungeon = GameObject.Find("Dungeon"); dungeon.SetActive(false); //戦闘画面を立ち上げる GameSceneManager.BootBattle().Subscribe(loots => { dungeonEffectView.OpenTransition().Subscribe(___ => { //戦闘画面を消す GameSceneManager.EndBattle(); dungeon.SetActive(true); dungeonEffectView.HideTransition().Subscribe(____ => { //報酬ログを流す List <string> texts = new List <string>(); loots.ForEach(loot => { texts.Add(ItemDictionary.GetAnnounceText(loot)); }); AnnounceTextView.Instance.AddText(texts); subject.OnNext(Unit.Default); subject.OnCompleted(); }); }); }); dungeonEffectView.HideTransition(); }); }
public static AsyncSubject <Unit> DungeonEvent(Vector3Int vec, DungeonEffectView dungeonEffectView) { AsyncSubject <Unit> subject = new AsyncSubject <Unit>(); var model = DungeonDataModel.Instance; var evt = model.DungeonFloor[vec.x][vec.y]; switch (evt.Tile) { //戦闘の場合 case DungeonEnum.Tiles.Battle: BattleEvent(subject, dungeonEffectView); break; //トレジャーイベントの場合 case DungeonEnum.Tiles.Treasure: DungeonEventLogic.TreasureEvent(subject); break; } return(subject); }