/// <summary> /// Close_Targetを閉じて編成画面を開く処理 /// </summary> /// <param name="Close_Target">閉じるCanvas Target</param> /// <returns></returns> public IEnumerator Close_Open(MaskControl Close_Target, RectTransform ObjTarget1, RectTransform ObjTarget2) { OptionController.is_runing = true; //2021-01-08 Command out イゴンヒ //while (Close_Target.image.fillAmount >= 0) //{ // if (Close_Target.image.fillAmount <= 0) break; // yield return new WaitForSeconds(Time.deltaTime); // Close_Target.image.fillAmount -= Time.deltaTime; //} ObjTarget1.sizeDelta = new Vector2(75, 650); while (image.fillAmount <= 1) { if (image.fillAmount >= 1) { break; } yield return(new WaitForSeconds(Time.deltaTime)); image.fillAmount += Time.deltaTime; } ObjTarget2.sizeDelta = new Vector2(75, 450); Close_Target.image.fillAmount = 0; OptionController.is_runing = false; }
public MainViewModel(Window main_window, Panel panel_parent, MediaElement media_display, Panel controller_icon_parent, Panel root_grid) { GameDescription = new ReactiveProperty <string>().AddTo(this.Disposable); mediaDisplay = new MediaDisplay(media_display); controllerDisplay = new ControllerDisplay(controller_icon_parent); //ここでパネル生成できなかった場合各種プロセスは動作させない try { new PanelCreator(new GameInfoJsonReader()).Launch(panel_parent); } catch (Exception e) { Logger.Inst.Log("I wanna stop my process bc GamePanels was didn't create.", LogLevel.Warning); return; } var panel_controller = new PanelController(panel_parent); var customer_timer = new CustomerTimer(); var mask_control = new MaskControl(root_grid); main_window.Closed += (e, sender) => { customer_timer.Dispose(); }; //キー入力はViewにバインドされているので動作の定義だけする //エンター EnterKeyCommand.Subscribe(n => gameLaunchStream.OnNext(Unit.Default)); //上下移動 ListUpCommand.Subscribe(n => panelSlideStream.OnNext(1)); ListDownCommand.Subscribe(n => panelSlideStream.OnNext(-1)); //スキップ入力 ListSkipUpCommand.Subscribe(n => panelSkipStream.OnNext(-1)); ListSkipDownCommand.Subscribe(n => panelSkipStream.OnNext(1)); //リセット TimerResetCommand.Subscribe(n => { customer_timer.Stop(); panel_controller.Shuffle(); }); //リスト移動入力の定義 panelSlideStream .Merge(GamePadObserver.Inst.InVerticalStickEvent.Sample(TimeSpan.FromMilliseconds(200))) .Where(n => !GameProcessControl.Inst.IsRunning) .Where(n => n != 0) .Subscribe(n => { if (n == 1) { panel_controller.MoveUp(); } else if (n == -1) { panel_controller.MoveDown(); } }); //スキップ入力の定義 panelSkipStream .Merge(GamePadObserver.Inst.InHorizontalStickEvent.Sample(TimeSpan.FromMilliseconds(150))) .Where(n => !GameProcessControl.Inst.IsRunning) .Where(n => n != 0) .Subscribe(n => { panel_controller.Skip(n); }); //ゲーム起動入力の定義 gameLaunchStream .Merge(GamePadObserver.Inst.OnEnterKeyDown.Where(n => n).Select(n => Unit.Default)) .Merge(panel_controller.OnPanelClick) .Subscribe(n => { GameProcessControl.Inst.GameLaunch(panel_controller.GetCurrentPanelsInfo.MyGameInfo.BinPath, panel_controller.GetCurrentPanelsInfo.MyGameInfo.GameId.ToString()); }); //ゲーム起動時のイベント GameProcessControl.Inst.OnGameStart.Subscribe(n => { customer_timer.StartRequest(); mask_control.Run(); mediaDisplay.Pause(); }); //ゲーム終了時のイベント GameProcessControl.Inst.OnGameEnd.Subscribe(n => { mask_control.Remove(); mediaDisplay.ReStart(); }); //一応起動時もシャッフル //PanelControllerの選択切り替えイベントを受け取る panel_controller.OnChangeSelected.Subscribe(ChangeSelectedDisplay); panel_controller.Shuffle(); }
/// <summary> /// Obtains a control to edit a given property. Changes to the selection set /// cause this method to be called again (and passed a new 'context'), /// unless ICacheablePropertyControl is implemented on the control. For /// performance reasons, it is highly recommended that the control implement /// the ICacheablePropertyControl interface.</summary> /// <param name="context">Context for property editing control</param> /// <returns>Control to edit the given context</returns> public Control GetEditingControl(PropertyEditorControlContext context) { m_boolControl = new MaskControl(context); SkinService.ApplyActiveSkin(m_boolControl); return(m_boolControl); }