Esempio n. 1
0
 public override void OnUpdate()
 {
     base.OnUpdate();
     if (RTSCamera == null || CameraHight == float.NaN)
     {
         return;
     }
     if (BattleMgr.IsInBattle)
     {
         var   data         = SettingsData;
         float speedFaction = 1;
         if (IsLowHight)
         {
             speedFaction = 0.9f;
         }
         else if (IsNearHight)
         {
             speedFaction = 0.8f;
         }
         RTSCamera.DesktopMoveDragSpeed = (ZoomPercent * RTSCamera.desktopMoveDragSpeed) * data.CameraMoveSpeed * speedFaction;
         RTSCamera.DesktopMoveSpeed     = (ZoomPercent * RTSCamera.desktopMoveSpeed) * data.CameraMoveSpeed * speedFaction;
         RTSCamera.DesktopScrollSpeed   = (RTSCamera.desktopScrollSpeed) * data.CameraScrollSpeed;
         if (Input.GetMouseButtonDown(2))
         {
             Vector3 pos = SelfBaseGlobal.ScreenMgr.GetMouseHitPoint();
             RTSCamera.JumpToTargetForMain(SelfBaseGlobal.GetTransform(pos));
         }
         bool isOnUI = BaseUIUtils.CheckGuiObjects();
         RTSCamera.MouseScrollControl(!isOnUI);
         RTSCamera.MouseDragControl(!isOnUI);
         RTSCamera.ControlDisabled.Set(BaseView.IsFullScreenState.IsIn());
     }
 }
Esempio n. 2
0
 //所有单位的回合都结束:回调函数
 protected virtual void OnTurnAllEnd()
 {
     SelfBaseGlobal.OnGameLogicTurn();
     OperatedUnits.Clear();
     TurnCount++;
     BaseGlobal.DBMgr.AutoSave();
 }
Esempio n. 3
0
        /// <summary>
        /// 卸载战场
        /// </summary>
        /// <param name="onDone"></param>
        /// <returns></returns>
        IEnumerator <float> _UnLoadBattle(Callback onDone)
        {
            //暂停一段时间
            SelfBaseGlobal.PauseGame(true);
            yield return(Timing.WaitForSeconds(0.1f));

            Callback_OnBattleUnLoad?.Invoke();
            yield return(Timing.WaitForSeconds(1.0f));

            string sceneName = CurData.GetSceneName();
            var    wait      = SceneManager.UnloadSceneAsync(sceneName);

            while (!wait.isDone)
            {
                yield return(Timing.WaitForOneFrame);

                Callback_OnLoadingProgressChanged?.Invoke("UnloadScene", wait.progress);
            }

            //卸载未使用的资源
            SelfBaseGlobal.DLCMgr.UnloadAsset(SceneAsset);
            SelfBaseGlobal.DLCMgr.UnLoadBattleAssetBundle();
            CurData.OnBeRemoved();
            CurData = null;

            Callback_OnLoadingProgressChanged?.Invoke("GC", 1.0f);
            BaseGlobalMonoMgr.RemoveAllNull();
            GC.Collect();
            yield return(Timing.WaitForSeconds(0.1f));

            Callback_OnBattleUnLoaded?.Invoke();
            SelfBaseGlobal.ResumeGame();
            onDone?.Invoke();
        }
Esempio n. 4
0
        // 统一写入:手动调用
        public void WriteGameDBData()
        {
            CurGameData = new TGameData();
            var data = CurGameData;

            OnWriteGameData(ref data);
            SelfBaseGlobal.OnWrite(data);
        }
Esempio n. 5
0
        /// <summary>
        /// 统一读取:手动调用
        /// </summary>
        public void ReadGameDBData()
        {
            var data = CurGameData;

            SelfBaseGlobal.Read1(data);
            SelfBaseGlobal.Read2(data);
            SelfBaseGlobal.Read3(data);
            SelfBaseGlobal.ReadEnd(data);
        }
Esempio n. 6
0
        // 统一读取:手动调用
        public void ReadGameDBData()
        {
            var data = CurGameData;

            OnReadGameDataStart(data);
            OnReadGameData(data);
            SelfBaseGlobal.OnRead1(data);
            SelfBaseGlobal.OnRead2(data);
            SelfBaseGlobal.OnRead3(data);
            SelfBaseGlobal.OnReadEnd(data);
            OnReadGameDataEnd(data);
        }
Esempio n. 7
0
 //加载Login数据,专门提供给网游
 public void LoginInit(object data)
 {
     SelfBaseGlobal.OnLoginInit1(data);
     SelfBaseGlobal.OnLoginInit2(data);
     SelfBaseGlobal.OnLoginInit3(data);
 }
Esempio n. 8
0
        /// <summary>
        /// 统一写入:手动调用
        /// </summary>
        public void WriteGameDBData()
        {
            var data = CurGameData;

            SelfBaseGlobal.Write(data);
        }
Esempio n. 9
0
        /// <summary>
        /// 加载战场
        /// </summary>
        /// readData:是否读取数据
        /// <returns></returns>
        IEnumerator <float> _LoadBattle(bool readData = true)
        {
            BaseView.IsFullScreenState.Reset();
            SelfBaseGlobal.ResumeGame();
            SelfBaseGlobal.PlotMgr.ResumePlotMode();
            yield return(Timing.WaitForOneFrame);

            OnLoadBattleStart();
            float startTime = Time.realtimeSinceStartup;

            IsLoadingBattle = true;
            //开始Tip
            BattleCoroutine.Run(_RandTip());
            //开始加载
            Callback_OnBattleLoad?.Invoke();
            yield return(Timing.WaitForOneFrame);

            OnLoadSceneStart();
            //演示几秒,给UI渐变的时间
            yield return(Timing.WaitForSeconds(DelayLoadSceneTime));

            //加载场景
            string sceneName = CurData.GetSceneName();

            SceneAsset = SelfBaseGlobal.DLCMgr.LoadScene("scene/" + sceneName, sceneName);
            while (!SceneAsset.isDone)
            {
                yield return(Timing.WaitForOneFrame);

                Callback_OnLoadingProgressChanged?.Invoke("LoadingScene", SceneAsset.progress * 0.8f);
            }
            //延时一帧
            yield return(Timing.WaitForOneFrame);

            SceneManager.SetActiveScene(SceneManager.GetSceneByName(sceneName));
            Callback_OnBattleLoadedScene?.Invoke();
            //这里必须延迟一帧,等待UI创建,注册事件
            yield return(Timing.WaitForOneFrame);

            //读取数据前,资源加载
            yield return(Timing.WaitUntilDone(BattleCoroutine.Run(BeforeReadData())));

            Callback_OnLoadingProgressChanged?.Invoke("BeforeReadData", 0.9f);
            if (readData)
            {
                //读取战场数据
                Callback_OnReadBattleDataStart?.Invoke();
                SelfBaseGlobal.DBMgr.ReadGameDBData();
                Callback_OnReadBattleDataEnd?.Invoke();
            }
            else
            {
                //不读取数据,适用于闯关
                yield return(Timing.WaitForSeconds(0.1f));
            }
            //增加加载战场次数
            LoadBattleCount++;
            //读取数据后资源加载
            yield return(Timing.WaitUntilDone(BattleCoroutine.Run(AffterReadData())));

            Callback_OnLoadingProgressChanged?.Invoke("AffterReadData", 0.95f);
            //卸载未使用的资源
            SelfBaseGlobal.DLCMgr.UnLoadBattleAssetBundle();
            GC.Collect();
            Callback_OnLoadingProgressChanged?.Invoke("GC", 1.0f);
            IsLoadingBattle = false;
            //场景加载结束
            Callback_OnBattleLoaded?.Invoke();
            OnLoadBattleEnd();
            //游戏开始
            Callback_OnGameStart?.Invoke();
            while (IsLockGameStartFlow)
            {
                yield return(Timing.WaitForSeconds(0.01f));
            }
            yield return(Timing.WaitUntilDone(BattleCoroutine.Run(BattleStart())));

            //进入自定义流程的时候暂停
            Callback_OnStartCustomBattleCoroutine?.Invoke();
            SelfBaseGlobal.PlotMgr.EnablePlotMode(true);
            yield return(Timing.WaitUntilDone(SelfBaseGlobal.PlotMgr.CustomStartBattleCoroutine()));

            SelfBaseGlobal.PlotMgr.EnablePlotMode(false);
            Callback_OnEndCustomBattleCoroutine.Invoke();
            IsStartBattle = true;
            Callback_OnGameStartOver?.Invoke();
        }
Esempio n. 10
0
        // 加载战场
        // readData:是否读取数据
        IEnumerator <float> _loadBattle(bool readData = true)
        {
            BaseGlobal.ResumeGame();
            BaseInputMgr.ResetFullScreenState();
            Callback_OnBattleLoadStart?.Invoke();
            yield return(Timing.WaitForOneFrame);

            float startTime = Time.realtimeSinceStartup;

            IsLoadedScene        = false;
            IsLoadingBattle      = true;
            IsLoadBattleEnd      = false;
            IsGameStartOver      = false;
            IsGameStart          = false;
            IsInPauseLoadingView = false;
            //开始Tip
            BattleCoroutine.Run(_randTip());
            //开始加载
            Callback_OnBattleLoad?.Invoke();
            yield return(Timing.WaitForOneFrame);

            OnLoadSceneStart();
            Callback_OnLoadingProgressChanged?.Invoke(Util.GetStr("StartToLoad"), 0.0f);
            //演示几秒,给UI渐变的时间
            yield return(Timing.WaitForSeconds(DelayLoadSceneTime));

            //加载场景
            SceneName  = CurData.GetSceneName();
            SceneAsset = GRMgr.LoadScene(SceneName);
            while (!SceneAsset.IsDone)
            {
                yield return(Timing.WaitForOneFrame);

                Callback_OnLoadingProgressChanged?.Invoke(Util.GetStr("LoadingScene"), SceneAsset.Progress * 0.8f);
            }
            //延时一帧
            yield return(Timing.WaitForOneFrame);

            Scene = SceneManager.GetSceneByName(SceneName);
            SceneManager.SetActiveScene(Scene);
            IsLoadedScene = true;
            Callback_OnBattleLoadedScene?.Invoke();
            if (BaseSceneObject == null)
            {
                CLog.Error("错误,场景里没有SceneObject");
            }
            //这里必须延迟一帧,等待UI创建,注册事件
            yield return(Timing.WaitForOneFrame);

            //读取数据前,资源加载
            yield return(Timing.WaitUntilDone(BattleCoroutine.Run(BeforeReadData())));

            Callback_OnLoadingProgressChanged?.Invoke(Util.GetStr("BeforeReadData"), 0.9f);
            if (readData)
            {
                BaseGlobal.IsUnReadData = false;
                //读取战场数据
                BaseGlobal.DBMgr.ReadGameDBData();
                BaseGlobal.IsUnReadData = true;
            }
            yield return(Timing.WaitForOneFrame);

            Callback_OnBattleReadDataEnd?.Invoke();
            //增加加载战场次数
            LoadBattleCount++;
            //读取数据后资源加载
            yield return(Timing.WaitUntilDone(BattleCoroutine.Run(AffterReadData())));

            Callback_OnLoadingProgressChanged?.Invoke(Util.GetStr("AffterReadData"), 0.95f);
            while (IsInCustomLoading)
            {
                yield return(Timing.WaitForOneFrame);
            }
            GC.Collect();
            Callback_OnLoadingProgressChanged?.Invoke(Util.GetStr("GC"), 1.0f);
            IsLoadingBattle = false;
            //场景加载结束
            Callback_OnBattleLoaded?.Invoke();
            IsLoadBattleEnd = true;
            yield return(Timing.WaitForOneFrame);

            //游戏开始(预处理最后阶段)
            SelfBaseGlobal.OnGameStart1();
            SelfBaseGlobal.OnGameStart2();
            Callback_OnGameStart?.Invoke();
            yield return(Timing.WaitForOneFrame);

            SelfBaseGlobal.OnGameStarted1();
            SelfBaseGlobal.OnGameStarted2();
            Callback_OnGameStarted?.Invoke();
            IsGameStart = true;
            //暂停在加载界面
            Callback_OnInPauseLoadingView?.Invoke();
            IsInPauseLoadingView = NeedPauseLoading;
            while (IsInPauseLoadingView)
            {
                yield return(Timing.WaitForOneFrame);
            }
            SelfBaseGlobal.OnCloseLoadingView();
            Callback_OnCloseLoadingView?.Invoke();
            //锁定进入战场流程
            while (IsLockBattleStartFlow)
            {
                yield return(Timing.WaitForOneFrame);
            }
            yield return(Timing.WaitUntilDone(BattleCoroutine.Run(BattleStart())));

            //进入自定义流程的时候暂停
            Callback_OnStartCustomBattleCoroutine?.Invoke();
            if (PlotMgr != null)
            {
                PlotMgr?.SetPlotPause(true);
                yield return(Timing.WaitUntilDone(PlotMgr.CustomStartBattleCoroutine()));

                PlotMgr?.SetPlotPause(false);
            }
            Callback_OnEndCustomBattleCoroutine.Invoke();
            //结尾部分
            SelfBaseGlobal.OnGameStartOver();
            Callback_OnGameStartOver?.Invoke();
            IsGameStartOver = true;
        }
Esempio n. 11
0
 public void NextTurn()
 {
     SelfBaseGlobal.GameLogicTurn();
 }