コード例 #1
0
ファイル: SpawnScreen.cs プロジェクト: swipswaps/VoloAirsport
        public SpawnScreen(IStateMachine machine, Data data) : base(machine)
        {
            _data = data;

            var billboardDependencies = new DependencyContainer(new Dictionary <string, object> {
                { "clock", _data.MenuClock },
                { "cameraTransform", _data.CameraMount.transform }
            });

            _spawnpoints = GameObject.FindObjectOfType <SpawnpointDiscoverer>().Spawnpoints;
            var spawnpointBillboards = new List <GameObject>(_spawnpoints.Count);
            var billboardGroup       = new GameObject("SpawnpointBillboards");

            for (int i = 0; i < _spawnpoints.Count; i++)
            {
                var spawnpoint          = _spawnpoints[i];
                var spawnpointBillBoard = (GameObject)GameObject.Instantiate(_data.SpawnpointBillboardPrefab);
                spawnpointBillBoard.SetActive(spawnpoint.IsDiscovered);
                DependencyInjector.Default.Inject(spawnpointBillBoard, billboardDependencies);
                spawnpointBillBoard.SetParent(billboardGroup);
                spawnpointBillBoard.transform.Set(spawnpoint.Location.AsTransform);
                spawnpointBillBoard.SetActive(false);
                spawnpointBillboards.Add(spawnpointBillBoard);
            }

            _uiState = TypedDataCursor <SpawnScreenUIState> .Root(new SpawnScreenUIState(
                                                                      spawnpointUiList : new UIListState(spawnpointBillboards)));

            var spawnpointUiState = _uiState.To(s => s.SpawnpointUIList);

            var spawnpointIndexChanged = spawnpointUiState
                                         .To(s => s.HighlightedIndex)
                                         .OnUpdate
                                         .DistinctUntilChanged(IntComparer.Instance)
                                         .Skip(1);

            _data.SelectedSpawnpointName.text = _spawnpoints[spawnpointUiState.Get().HighlightedIndex].Name;
            spawnpointIndexChanged.Subscribe(i => {
                Fmod.PlayOneShot("event:/ui/drop_hover");
                var spawnpoint = _spawnpoints[i];
                _data.SelectedSpawnpointName.text = spawnpoint.Name;
                _data.CameraAnimator.LookTarget   = spawnpointBillboards[i].transform;
            });

            _uiList = new UISketch.NavigableUIList(
                spawnpointUiState,
                data.CameraManager.Rig.GetMainCamera(),
                spawnpointIndex => {
                _data.EventSystem.Emit(new Events.SpawnpointSelected(_spawnpoints[spawnpointIndex].Location));
            });
        }
コード例 #2
0
 private void Update()
 {
     if (_buttonEvents() == ButtonEvent.Down)
     {
         if (_data.Logo.IsVisible)
         {
             OnStartPressed();
             _data.Logo.Show(false);
         }
         else
         {
             // Fully display the logo
             Fmod.PlayOneShot("event:/ui/open");
             _data.Logo.Show(true);
         }
     }
 }
コード例 #3
0
        private void OnCourseFinished()
        {
            _ringsPassed.Add(_rings.Count - 1);

            var    endTime          = _clock.CurrentTime - _startTime;
            var    totalRingsPassed = _ringsPassed.Count + 1;
            var    ringsSkipped     = _rings.Count - totalRingsPassed;
            string ringsSkippedStr  = "";

            if (ringsSkipped <= 0)
            {
                ringsSkippedStr = "";
            }
            else if (ringsSkipped == 1)
            {
                ringsSkippedStr = " (" + _activeLanguage.Table["ring_skipped"] + ")";
            }
            else
            {
                ringsSkippedStr = " (" + _activeLanguage.Table["rings_skipped"].Replace("$n", ringsSkipped.ToString()) + ")";
            }
            _notificationList.AddTimedNotification(
                _activeLanguage.Table["time"] + ": " +
                MathUtils.RoundToDecimals(endTime, 3).ToString("N3") +
                " " + _activeLanguage.Table["seconds"] +
                ringsSkippedStr, _notificationTimeout.Seconds());


            Fmod.PlayOneShot("event:/Objects/ring_pass_start");

            for (int i = 0; i < _rings.Count; i++)
            {
                var ring = _rings[i];
                ring.SetEnabled(false);
            }
            for (int i = 0; i < _turrets.Count; i++)
            {
                _turrets[i].gameObject.SetActive(false);
            }

            if (OnFinished != null)
            {
                OnFinished(_player, FinishCondition.Win);
            }
        }
コード例 #4
0
        public override IEnumerator <WaitCommand> Begin(FlightStatistics player)
        {
            _startTime = _clock.CurrentTime;
            _nextRing  = 0;
            _ringsPassed.Clear();
            _player = player;

            for (int i = 0; i < _rings.Count; i++)
            {
                var ring = _rings[i];
                ring.SetEnabled(true);
            }
            for (int i = 0; i < _turrets.Count; i++)
            {
                //_turrets[i].SetTarget(player);
                _turrets[i].gameObject.SetActive(true);
            }

            _notificationList.AddTimedNotification(_activeLanguage.Table["course"] + ": " + Name, _notificationTimeout.Seconds());

            Fmod.PlayOneShot("event:/Objects/ring_pass_start");

            yield return(WaitCommand.DontWait);
        }
コード例 #5
0
ファイル: SpawnScreen.cs プロジェクト: swipswaps/VoloAirsport
        void SpawnpointSelected(Events.SpawnpointSelected @event)
        {
            Fmod.PlayOneShot("event:/ui/drop_select");

            Machine.Transition(VoloStateMachine.States.Playing, @event.Spawnpoint);
        }
コード例 #6
0
 private void OnStartPressed()
 {
     Fmod.PlayOneShot("event:/ui/open");
     Machine.Transition(VoloStateMachine.States.MainMenu);
 }
コード例 #7
0
 private void OnRingPassed(int ringIndex)
 {
     _ringsPassed.Add(ringIndex);
     _nextRing = ringIndex + 1;
     Fmod.PlayOneShot("event:/Objects/ring_pass_norm");
 }