/// <summary> /// 開始時初期化 /// </summary> /// <returns></returns> public async override UniTask Enter(IBridgeLoopParam param) { loopParam = param as ParamMatchingLoop; await UniTask.Yield(PlayerLoopTiming.Update, this.GetCancellationTokenOnDestroy()); // 接続開始 connectStart().Forget(); }
/// <summary> /// Loop変更 / Stack Topを消して差し替える /// </summary> /// <param name="nextLoop"></param> public void Push(eLoop nextLoop, IBridgeLoopParam param = null) { Param parameter = new Param { Current = nextLoop, BridgeParam = param, Obj = null, }; stack.Push(parameter); execAsync(parameter).Forget(); }
/// <summary> /// テキスト明滅させて次のLoopへ遷移 /// </summary> /// <param name="txt"></param> /// <param name="loopId"></param> /// <returns></returns> async private UniTask transitStart(TextMeshProUGUI txt, eLoop loop, IBridgeLoopParam param = null) { isTransiting = true; await LibFunction.FlashUIAsync(txt, this.GetCancellationTokenOnDestroy()); await UniTask.Delay(200, cancellationToken : this.GetCancellationTokenOnDestroy()); loopExecuter.Push(loop, param); }
/// <summary> /// タイトル画面まで戻る /// </summary> /// <param name="overwiteParam"></param> public void ReturnToTitle(IBridgeLoopParam overwiteParam = null) { while (stack.Count > 1) { stack.Pop(); var param = stack.Peek(); if (param.Current == eLoop.Title) { execAsync(param).Forget(); break; } } }
/// <summary> /// 前のLoopへ戻る /// </summary> public void Pop(IBridgeLoopParam overWriteParam = null) { // 排除 stack.Pop(); // 前のLoopへ戻る var param = stack.Peek(); if (overWriteParam != null) { // BridgeParamは上書きできるように param.BridgeParam = overWriteParam; } execAsync(param).Forget(); }
/// <summary> /// 開始時初期化 /// </summary> /// <returns></returns> async public override UniTask Enter(IBridgeLoopParam param) { // ボードのロード GameObject loadedObj = Instantiate(Resources.Load("Prefabs/Board/Board")) as GameObject; viewer = loadedObj != null?loadedObj.GetComponent <BoardViewer>() : null; Assert.IsTrue(viewer != null, "Boardとしての機能がない"); loadedObj.SetParentToLocalInitialize(gameObject); // 1人用に初期化 input = new KeyPlayInput(); // ゲームスタート GameStart(input); await UniTask.Yield(PlayerLoopTiming.Update, cancellationToken : this.GetCancellationTokenOnDestroy()); }
/// <summary> /// 開始時初期化 /// </summary> /// <returns></returns> async public override UniTask Enter(IBridgeLoopParam param) { await UniTask.Yield(PlayerLoopTiming.Update, this.GetCancellationTokenOnDestroy()); loopParam = param as ParamMainGameWithNetwork; input = new KeyPlayInput(); // ボードのロード // 自分と、対戦の場合は対戦相手 playerInfo.Add(new PlayerInfo(loadBoardViewer(true, loopParam.WithOther))); if (loopParam.WithOther) { playerInfo.Add(new PlayerInfo(loadBoardViewer(false, loopParam.WithOther))); } // 接続開始 connectStart().Forget(); }
// ------------------------------ // インターフェース // ------------------------------ /// <summary>初期化関数</summary> public abstract UniTask Enter(IBridgeLoopParam param);
/// <summary> /// 開始時初期化 /// </summary> /// <returns></returns> async public override UniTask Enter(IBridgeLoopParam param) { // warning回避… await UniTask.Yield(PlayerLoopTiming.Update, this.GetCancellationTokenOnDestroy()); }