zhaoyang 3 rokov pred
rodič
commit
ff454b85db

+ 3 - 2
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -47,9 +47,9 @@ namespace GFGGame
                     }
                     return true;
                 }
-                else if(LauncherConfig.netType == LauncherConfig.EnumNetType.LOCAL && PlayerPrefs.HasKey(GameConst.PASSWORD_LAST_LOGIN_KEY))
+                else if (LauncherConfig.netType == LauncherConfig.EnumNetType.LOCAL && PlayerPrefs.HasKey(GameConst.PASSWORD_LAST_LOGIN_KEY))
                 {
-                    if(doLogin)
+                    if (doLogin)
                     {
                         LoginController.LoginTest(account).Coroutine();
                     }
@@ -201,6 +201,7 @@ namespace GFGGame
             RechargeSProxy.ReqRechargeInfo().Coroutine();
             RechargeSProxy.ReqRequestGiftBagInfo().Coroutine();
             RechargeSProxy.ReqExchangeInfo().Coroutine();
+            // FieldSProxy.ReqFieldInstanceInfos().Coroutine();
 
             EquipDataCache.cacher.autoPlay = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_AUTO_PLAY) <= 0 ? false : true;
             EquipDataCache.cacher.fightSpeed = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_AUTO_PLAY_SPEED) <= 1 ? 1 : StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_AUTO_PLAY_SPEED);

+ 41 - 11
GameClient/Assets/Game/HotUpdate/Data/FieldDataManager.cs

@@ -4,21 +4,52 @@ namespace GFGGame
 {
     public struct FieldInfos
     {
+        /// <summary>
+        /// 当前主题 由ConstItemAttributeType定义
+        /// </summary>
         public int theme;
+        /// <summary>
+        /// 最高关卡记录列表,由简单到难
+        /// </summary>
         public List<int> highestLvls;
+        /// <summary>
+        /// 每周已领奖励
+        /// </summary>
         public int bonusWeekly;
+        /// <summary>
+        /// 奖励上限
+        /// </summary>
         public int bonusMaxLimit;
+        /// <summary>
+        /// 任务奖励状态 由ConstBonusStatus定义
+        /// </summary>
         public Dictionary<int, int> taskDic;
+        /// <summary>
+        /// 仅在上线时判断是否有奖励未结算
+        /// </summary>
         public bool hasBonus;
     };
     public struct FieldResult
     {
-        public int passLvl;//完成关数
-        public  List<ItemData> bonusList;
-        public int costNum; //体力消耗
-        public int hardLvl; //难度,由ConstInstanceZonesSubType定义
+        /// <summary>
+        /// 完成关数
+        /// </summary>
+        public int passLvl;
+        /// <summary>
+        /// 奖励列表
+        /// </summary>
+        public List<ItemData> bonusList;
+        /// <summary>
+        /// 体力消耗
+        /// </summary>
+        public int costNum;
+        /// <summary>
+        /// 难度,由ConstInstanceZonesSubType定义
+        /// </summary>
+        public int hardLvl;
 
     }
+
     public class FieldDataManager : SingletonBase<FieldDataManager>
     {
         // private int _theme = 1; //当前主题 由ConstItemAttributeType定义
@@ -65,12 +96,10 @@ namespace GFGGame
         /// <summary>
         /// 当前难度
         /// </summary>
-        public int c_difficulty = 0;
+        public int difficulty = 0;
+        //当前关卡进度
+        public int currFightIndex = 0;
 
-        // public void UpdateHighestLvls(List<int> highestLvls)
-        // {
-        //     _highestLvls = highestLvls;
-        // }
         public void UpdateTask(int taskId, int state)
         {
             if (!fieldInfos.taskDic.ContainsKey(taskId))
@@ -82,6 +111,7 @@ namespace GFGGame
                 fieldInfos.taskDic[taskId] = state;
             }
         }
+
         /// <summary>
         /// 根据挑战难度获取最高记录
         /// </summary>
@@ -112,10 +142,10 @@ namespace GFGGame
         /// 根据挑战难度获取当前战斗Id
         /// </summary>
         /// <returns></returns>
-        public int GetLevelIdByDifficulty(int difficulty)
+        public int GetLevelIdByDifficulty(int difficulty, int index)
         {
             FieldCfg cfg = GetFieldCfgByDifficulty(difficulty);
-            return StoryLevelCfgArray.Instance.GetCfgs(cfg.type, cfg.subType, cfg.id)[0].id;
+            return StoryLevelCfgArray.Instance.GetCfgs(cfg.type, cfg.subType, cfg.id)[index].id;
         }
         /// <summary>
         /// 获取任务列表

+ 3 - 2
GameClient/Assets/Game/HotUpdate/ServerProxy/FieldSProxy.cs

@@ -17,7 +17,8 @@ namespace GFGGame
                 {
                     FieldInfos fieldInfos = FieldDataManager.Instance.fieldInfos;
                     fieldInfos.theme = response.Theme;
-                    fieldInfos.highestLvls = response.HighestLvls;
+                    fieldInfos.highestLvls = new List<int>();
+                    fieldInfos.highestLvls.AddRange(response.HighestLvls);
                     fieldInfos.bonusWeekly = response.BonusWeekly;
                     fieldInfos.bonusMaxLimit = response.BonusMaxLimit;
                     fieldInfos.hasBonus = response.HasBonus;
@@ -74,7 +75,7 @@ namespace GFGGame
                 {
                     FieldInfos fieldInfos = FieldDataManager.Instance.fieldInfos;
                     fieldInfos.bonusMaxLimit = response.BonusMaxLimit;
-                    // fieldInfos.taskDic[]
+                    fieldInfos.taskDic[response.TaskId] = response.TaskStatus;
                     return true;
                 }
             }

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/Field/FieldFightEndView.cs

@@ -34,7 +34,7 @@ namespace GFGGame
         }
         private void UpdateView()
         {
-            FieldCfg fieldCfg = FieldCfgArray.Instance.GetCfgs(FieldDataManager.Instance.c_difficulty)[0];
+            FieldCfg fieldCfg = FieldCfgArray.Instance.GetCfgs(FieldDataManager.Instance.difficulty)[0];
             string num = StringUtil.GetColorText(string.Format("{0}/{1}", 0, fieldCfg.num), "#BB674E");
             _ui.m_txtNum.text = string.Format("第{0}轮", num);
         }

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/Field/FieldFightInfoView.cs

@@ -39,7 +39,7 @@ namespace GFGGame
         {
             _ui.m_txtName.text = _storyFightCfg.targetName;
             _ui.m_txtDesc.text = _storyLevelCfg.desc;
-            FieldCfg fieldCfg = FieldCfgArray.Instance.GetCfgs(FieldDataManager.Instance.c_difficulty)[0];
+            FieldCfg fieldCfg = FieldCfgArray.Instance.GetCfgs(FieldDataManager.Instance.difficulty)[0];
             string num = StringUtil.GetColorText(string.Format("{0}/{1}", 0, fieldCfg.num), "#BB674E");
             _ui.m_txtNum.text = string.Format("第{0}轮", num);
             _ui.m_loaNpc.url = ResPathUtil.GetNpcHeadPath(_storyFightCfg.targetRes);

+ 42 - 11
GameClient/Assets/Game/HotUpdate/Views/Field/FieldView.cs

@@ -9,9 +9,8 @@ namespace GFGGame
     {
         private UI_FieldUI _ui;
 
-        private FieldCfg _curCfg;
         private int _curLevelId;
-
+        private FieldCfg _curCfg;
         private FieldDataManager _dataManager;
         public override void Dispose()
         {
@@ -37,15 +36,16 @@ namespace GFGGame
         {
             base.OnShown();
             _dataManager = FieldDataManager.Instance;
-            _dataManager.c_difficulty = _ui.m_c1.selectedIndex;
+            _dataManager.difficulty = _ui.m_c1.selectedIndex;
+            _dataManager.currFightIndex = 0;
             _curCfg = _dataManager.GetFieldCfgByDifficulty(_ui.m_c1.selectedIndex);
-            _curLevelId = _dataManager.GetLevelIdByDifficulty(_ui.m_c1.selectedIndex);
+            _curLevelId = _dataManager.GetLevelIdByDifficulty(_dataManager.difficulty, _dataManager.currFightIndex);
+
             FieldCfg[] cfgs = FieldCfgArray.Instance.dataArray;
             for (int i = 0; i < cfgs.Length; i++)
             {
-                //             bool isPass = InstanceZonesDataManager.CheckLevelPass(cfgs[i].s);
-
-                // _ui.target.GetChild("btn"+i).asButton.GetChild("imgLock").asImage.visible=
+                bool isPass = InstanceZonesDataManager.CheckLevelPass(cfgs[i].storyLvId);
+                _ui.target.GetChild("btn" + i).asButton.GetChild("imgLock").asImage.visible = !isPass;
             }
             UpdateView();
             _ui.m_proTaskReward.max = 100;
@@ -64,26 +64,57 @@ namespace GFGGame
 
         private void OnDifficultyChange()
         {
-            _dataManager.c_difficulty = _ui.m_c1.selectedIndex;
+            FieldCfg cfg = _dataManager.GetFieldCfgByDifficulty(_ui.m_c1.selectedIndex);
+            bool isPass = InstanceZonesDataManager.CheckLevelPass(cfg.storyLvId);
+            if (!isPass && _ui.m_c1.selectedIndex != ConstInstanceZonesSubType.Normal)
+            {
+                _ui.m_c1.selectedIndex = _dataManager.difficulty;
+                StoryLevelCfg storyLevelCfg = StoryLevelCfgArray.Instance.GetCfg(cfg.storyLvId);
+                string str = string.Format("完成主线{0}-{1}解锁", storyLevelCfg.chapterId, storyLevelCfg.order);
+                PromptController.Instance.ShowFloatTextPrompt(str);
+                return;
+            }
+            if (_dataManager.fieldInfos.highestLvls[_ui.m_c1.selectedIndex] < cfg.num && _ui.m_c1.selectedIndex != ConstInstanceZonesSubType.Normal)
+            {
+                _ui.m_c1.selectedIndex = _dataManager.difficulty;
+                PromptController.Instance.ShowFloatTextPrompt("需通关前置关卡");
+                return;
+            }
+            _dataManager.difficulty = _ui.m_c1.selectedIndex;
             _curCfg = _dataManager.GetFieldCfgByDifficulty(_ui.m_c1.selectedIndex);
-            _curLevelId = _dataManager.GetLevelIdByDifficulty(_ui.m_c1.selectedIndex);
+            _curLevelId = _dataManager.GetLevelIdByDifficulty(_ui.m_c1.selectedIndex, _dataManager.currFightIndex);
             UpdateView();
         }
         private void UpdateView()
         {
             _ui.m_txtScore.text = ConstDressUpScoreType.scoreTypeList()[_dataManager.fieldInfos.theme].ToString();
-            _ui.m_txtMaxLv.text = string.Format("最高记录:{0}/{1}", 0, _curCfg.num);
+            _ui.m_txtMaxLv.text = string.Format("最高记录:{0}/{1}", _dataManager.fieldInfos.highestLvls[_dataManager.difficulty], _curCfg.num);
             _ui.m_txtConsume.text = string.Format("x{0}", _curCfg.needPower);
         }
         private void OnClickBtnGo()
         {
-            // ViewManager.Show<FieldFightInfoView>();
 
             if (GameGlobal.myNumericComponent.GetAsInt(NumericType.Power) < _curCfg.needPower)
             {
                 PromptController.Instance.ShowFloatTextPrompt("体力不足");
                 return;
             }
+            if (_dataManager.fieldInfos.bonusWeekly >= _dataManager.fieldInfos.bonusMaxLimit)
+            {
+                Alert.Show("本周可获得奖励已达上限,是否继续挑战?")
+                .SetLeftButton(true)
+                .SetRightButton(true, "确定", (object data) =>
+                {
+                    StartFight();
+                });
+            }
+            else
+            {
+                StartFight();
+            }
+        }
+        private void StartFight()
+        {
             ViewManager.Show(ViewName.DRESS_UP_FIGHT_VIEW, _curLevelId, new object[] { typeof(FieldView).Name, this.viewData }, true);
             InstanceZonesDataManager.currentLevelCfgId = _curLevelId;
         }

+ 9 - 2
GameClient/Assets/Game/HotUpdate/Views/MainStory/StroyFightResultView.cs

@@ -144,8 +144,15 @@ namespace GFGGame
             {
                 _ui.m_c1.selectedIndex = 1;
                 Timers.inst.Remove(OnClickBtnClose);
-                ViewManager.Show<FieldView>();
-                ViewManager.Show<FieldFightInfoView>();
+                if (!this._resultData.Result||FieldDataManager.Instance.currFightIndex)
+                {
+
+                }
+                else
+                {
+                    ViewManager.Show<FieldView>();
+                    ViewManager.Show<FieldFightInfoView>();
+                }
             }
             else
             {