private IEnumerator ShipMove(UniRx.IObserver <bool> observer) { MapManager manager = SortieBattleTaskManager.GetMapManager(); UIMapManager uiMapManager = SortieMapTaskManager.GetUIMapManager(); UISortieShip sortieShip = uiMapManager.sortieShip; UniRx.IObservable <Unit> underwayReplenishmentUnit = Observable.FromCoroutine(() => this.ChkUnderwayReplenishment(manager)); UniRx.IObservable <Unit> compassUnit = Observable.FromCoroutine(() => this.ChkCompass(manager, uiMapManager, sortieShip)); UniRx.IObservable <Unit> productionUnit = Observable.FromCoroutine(() => this.ChkProduction(manager, uiMapManager, sortieShip)); UniRx.IObservable <Unit> synthesisUnit = Observable.SelectMany(other: Observable.FromCoroutine(() => this.ChkComment(manager, sortieShip)), source: underwayReplenishmentUnit.SelectMany(compassUnit).SelectMany(productionUnit)); yield return(synthesisUnit.StartAsCoroutine()); CheckNextBossCell(manager); sortieShip.Move(uiMapManager.nextCell, delegate { uiMapManager.UpdateRouteState(uiMapManager.nextCell.cellModel.CellNo); observer.OnNext(value: true); observer.OnCompleted(); }); yield return(null); }