Ejemplo n.º 1
0
    /// <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;
    }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
 /// <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);
 }