private void performAction() { stopAction(); prevGameObjectHit = gameObjectHit; isPaused = false; hasPerformedActionOnObject = true; setAssistantPlaying(gameObjectHit, true); MediaDisplay mediaDisplay = gameObjectHit.GetComponentInChildren <MediaDisplay>(); if (mediaDisplay != null) { mediaDisplay.startAction(); setFloatingTextActive(false); } if (objectPerformingActionOn != null) { setFloatingTextActive(false); } objectPerformingActionOn = gameObjectHit; //findFloatingTextIn(gameObjectHit); }
private void gazeLeftObject(GameObject newObject) { if (objectPerformingActionOn == null || newObject == null) { setFloatingTextActive(false); //Debug.Log("False from line 173"); } if (hasPerformedActionOnObject && prevGameObjectHit != null && newObject != null) { setAssistantPlaying(prevGameObjectHit, false); MediaDisplay mediaDisplay = prevGameObjectHit.GetComponentInChildren <MediaDisplay>(); if (mediaDisplay != null) { mediaDisplay.stopAction(); } // prevGameObjectHit = null; } timeGazing = 0; // if (gameObjectHit != null) { // prevGameObjectHit = gameObjectHit; // } gameObjectHit = null; radialProgressBarFill.fillAmount = 0; }
public void stopAction() { if (prevGameObjectHit != null) { setAssistantPlaying(prevGameObjectHit, false); MediaDisplay mediaDisplay = prevGameObjectHit.GetComponentInChildren <MediaDisplay>(); if (mediaDisplay != null) { mediaDisplay.stopAction(); } prevGameObjectHit = null; } timeGazing = 0; // gameObjectHit = null; radialProgressBarFill.fillAmount = 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(); }