예제 #1
0
        static void Postfix(SubtitleLogic __instance, SubtitleEvent.Data data)
        {
            if (__instance.currentEmitter_ is null || data.emitter_ is null)
            {
                return;
            }
            __instance.CheckCameraDistance(data.emitter_);
            if (__instance.distanceToCurrentEmitter_ > data.emitter_.MaxAttenuationSq_)
            {
                return;
            }

            SubtitleState.strLabel    = data.strLabel_;
            SubtitleState.markerID    = data.markerID_;
            SubtitleState.forceString = data.forceString_;
            SubtitleState.emitter     = data.emitter_;

            if (G.Sys.GameManager_.ModeID_ != GameModeID.Adventure)
            {
                return;
            }

            AdventureMode mode      = G.Sys.GameManager_.Mode_ as AdventureMode;
            TimeSpan      countdown = TimeSpan.FromSeconds(mode.GetCountdownTime());

            SubtitleState.countdownHours   = countdown.Hours;
            SubtitleState.countdownMinutes = countdown.Minutes;
            SubtitleState.countdownSeconds = countdown.Seconds;
        }
예제 #2
0
 public GameSettings()
 {
     _gameMode        = GameMode.Adventure;
     _numberOfPlayers = NumberOfPlayersSelected.OnePlayer;
     _levelSelected   = LevelSelection.Tropical;
     _adventureMode   = AdventureMode.Continue;
     _gameSave        = GameSave.SaveFile1;
 }
예제 #3
0
 public GameSettings()
 {
     _gameMode = GameMode.Adventure;
     _numberOfPlayers  = NumberOfPlayersSelected.OnePlayer;
     _levelSelected = LevelSelection.Tropical;
     _adventureMode = AdventureMode.Continue;
     _gameSave = GameSave.SaveFile1;
 }
예제 #4
0
        public void ChooseDifficulty(int level)
        {
            difficulty = (Difficulty)level;
            switch (difficulty)
            {
            case Difficulty.Doctor:
                layer = 4; trap = 5; target = 2; opportunity = 10;
                tipsButton[0].SetActive(true);
                tipsButton[1].SetActive(true);
                tipsButton[2].SetActive(true);
                toggleDoctor.gameObject.SetActive(true);
                toggleDoctor.isOn = true;
                adventureMode     = AdventureMode.Doctor;
                break;

            case Difficulty.Newbie: layer = 4; trap = 5; target = 2; opportunity = 2; gridGruop.localScale = Vector3.one; break;

            case Difficulty.Trainee: layer = 5; trap = 8; target = 4; opportunity = 3; gridGruop.localScale = Vector3.one; break;

            case Difficulty.Elite: layer = 5; trap = 8; target = 5; opportunity = 4; gridGruop.localScale = Vector3.one; break;

            case Difficulty.Expert: layer = 5; trap = 8; target = 6; opportunity = 5; gridGruop.localScale = Vector3.one; break;

            case Difficulty.Master: layer = 6; trap = 12; target = 9; opportunity = 7; gridGruop.localScale = new Vector3(0.84f, 0.84f, 0.84f); break;

            case Difficulty.Crazy: layer = 6; trap = 13; target = 11; opportunity = 9; gridGruop.localScale = new Vector3(0.84f, 0.84f, 0.84f); break;

            case Difficulty.Wakaka: layer = 7; trap = 26; target = 11; opportunity = 11; gridGruop.localScale = new Vector3(0.7f, 0.7f, 0.7f); break;
            }
            textLevel.text         = "Lv. " + level;
            textDifficultyEng.text = difficulty.ToString();
            textDifficultyCht.text = ((DifficultyCht)level).ToString();

            // 設置難度之後要重新排列網格
            countHexagonGrids       = HexagonMesh.CalculateHexGrids(layer);
            rotateMap               = false;
            gridGruop.localRotation = Quaternion.identity; // 排列過程中不要旋轉
            for (int i = 0; i < HexagonMesh.grids.Length; i++)
            {
                if (i < countHexagonGrids)
                {
                    ArrangeGrid(i);
                }
                else
                {
                    Vector3 gridCoordinate = new Vector3(999, 999, 999);
                    HexagonMesh.grids[i].gridCoordinate          = gridCoordinate;
                    HexagonMesh.grids[i].transform.localPosition = new Vector3(7000, 7000, 7000);
                }
            }
            rotateMap = true;
        }
예제 #5
0
        public static void Postfix(AdventureMode __instance)
        {
            string path = Utils.Common.LevelFile;

            if (!Utils.Common.IsInLevelEditor() && Utils.Campaign.IsCustomCampaignLevel(path))
            {
                __instance.countdownDisabled_ = false;
                double countdown = Utils.Campaign.GetLevelCountdown(path);
                __instance.customTime_ = (float)countdown;
                if (countdown == 0)
                {
                    __instance.countdownDisabled_ = true;
                }
            }
        }
예제 #6
0
 // Adventure Mode 冒險模式
 public void SwitchAdventureMode(int mode)
 {
     if (firstTry)
     {
         adventureMode = (AdventureMode)mode;
     }
     else
     {
         adventureWarning.DOFade(1, 1.37f);
         if (difficulty == Difficulty.Doctor)
         {
             toggleDoctor.isOn = true;
         }
         else
         {
             toggleExolore.isOn = true;
         }
     }
     nightVision.enabled = toggleTool.isOn ? true : false;
 }
예제 #7
0
        public static bool Prefix(AdventureMode __instance, ref double __result)
        {
            string path = Utils.Common.LevelFile;

            bool flag = Utils.Campaign.IsCustomCampaignLevel(path) && Utils.Campaign.GetLevelCountdown(path) == 0;

            if (flag)
            {
                if (__instance.paused_)
                {
                    __result = __instance.pauseTime_;
                }
                else
                {
                    __result = Mathf.Max((float)Timex.ModeTime_, 0.0f);
                }
                return(false);
            }

            return(true);
        }
예제 #8
0
        public static bool Prefix(AdventureMode __instance)
        {
            string path = Utils.Common.LevelFile;

            __instance.UpdateRaceModeDistanceToFinish();
            if (__instance.hasEnded_ || __instance.GetDisplayTime(0) > 0.0 || __instance.campaignPlusEnabled_)
            {
                return(false);
            }
            __instance.hasEnded_ = true;

            bool flag_a = Utils.Campaign.IsCustomCampaignLevel(path) && Utils.Campaign.GetLevelCountdown(path) > 0;

            flag_a |= !Utils.Campaign.IsCustomCampaignLevel(path);

            if (!__instance.countdownDisabled_ && flag_a)
            {
                int             currentPlaylistIndex = __instance.gameMan_.GetCurrentPlaylistIndex();
                PlayerDataLocal firstLocalPlayer     = PlayerDataLocal.FirstLocalPlayer_;

                bool flag_b = !Utils.Campaign.IsCustomCampaignLevel(path) && (currentPlaylistIndex == 0 || currentPlaylistIndex == __instance.gameMan_.LevelPlaylist_.Count_ - 1);

                if (flag_b || __instance.HasFinished(firstLocalPlayer) || firstLocalPlayer is null || (firstLocalPlayer.Car_ is null || __instance.finishTriggerObj_ is null))
                {
                    return(false);
                }
                __instance.finishTriggerObj_.transform.position = firstLocalPlayer.Car_.transform.position;
                __instance.finishTriggerObj_.SetActive(true);
            }
            else
            {
                StaticEvent <ZEvent.Data> .Broadcast(new ZEvent.Data("AdventureModeClockHitZero", true));
            }

            return(false);
        }