瀏覽代碼

Merge remote-tracking branch 'remotes/origin/douYou' into dev

hexiaojie 1 年之前
父節點
當前提交
dd920c78b3
共有 100 個文件被更改,包括 5845 次插入155 次删除
  1. 1 0
      .gitignore
  2. 二進制
      GameClient/.idea/.idea.GameClient/.idea/copilot/chatSessions/00000000000.xd
  3. 二進制
      GameClient/.idea/.idea.GameClient/.idea/copilot/chatSessions/blobs/version
  4. 78 0
      GameClient/.idea/.idea.GameClient/.idea/copilot/chatSessions/xd.lck
  5. 1 0
      GameClient/Assets/Game/HotUpdate/Constant/ConstFightRoleType.cs
  6. 2 0
      GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs
  7. 2 0
      GameClient/Assets/Game/HotUpdate/Controller/GameController.cs
  8. 162 2
      GameClient/Assets/Game/HotUpdate/Data/ArenaDataManager.cs
  9. 368 0
      GameClient/Assets/Game/HotUpdate/Data/FieldWorkDataManager.cs
  10. 11 0
      GameClient/Assets/Game/HotUpdate/Data/FieldWorkDataManager.cs.meta
  11. 3 3
      GameClient/Assets/Game/HotUpdate/Data/FightDataManager.cs
  12. 4 0
      GameClient/Assets/Game/HotUpdate/Data/ItemDataManager.cs
  13. 2 17
      GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs
  14. 3 3
      GameClient/Assets/Game/HotUpdate/Data/ScoreSystemData.cs
  15. 3 3
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityDay7/UI_ActivityDay7UI.cs
  16. 10 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ArenaDressInfoUI.cs
  17. 105 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ComFIeldValueInfo.cs
  18. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ComFIeldValueInfo.cs.meta
  19. 80 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ComFieldFightScore.cs
  20. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ComFieldFightScore.cs.meta
  21. 6 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/DressUp/UI_ArenaDressUpFightUI.cs
  22. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/DressUp/UI_DressUpFightUI.cs
  23. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/DressUp/UI_PartsListItem.cs
  24. 8 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork.meta
  25. 71 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Button1.cs
  26. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Button1.cs.meta
  27. 74 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComAllScore.cs
  28. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComAllScore.cs.meta
  29. 72 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComAllScoreResult.cs
  30. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComAllScoreResult.cs.meta
  31. 87 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCard.cs
  32. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCard.cs.meta
  33. 71 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCardMask.cs
  34. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCardMask.cs.meta
  35. 72 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCardRecord.cs
  36. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCardRecord.cs.meta
  37. 71 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComResultCardMask.cs
  38. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComResultCardMask.cs.meta
  39. 72 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompChapter.cs
  40. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompChapter.cs.meta
  41. 116 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompChapterScroll.cs
  42. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompChapterScroll.cs.meta
  43. 92 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompStoryLevelItem.cs
  44. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompStoryLevelItem.cs.meta
  45. 71 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Component1.cs
  46. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Component1.cs.meta
  47. 71 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Component2.cs
  48. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Component2.cs.meta
  49. 105 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkLevelInfoUI.cs
  50. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkLevelInfoUI.cs.meta
  51. 99 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkLevelUI.cs
  52. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkLevelUI.cs.meta
  53. 82 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkRoundResultUI.cs
  54. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkRoundResultUI.cs.meta
  55. 77 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkRoundTips.cs
  56. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkRoundTips.cs.meta
  57. 84 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ListResultItem.cs
  58. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ListResultItem.cs.meta
  59. 77 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ListRewardItem.cs
  60. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ListRewardItem.cs.meta
  61. 102 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/InstanceZones/UI_InstanceSamllUI.cs
  62. 11 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/InstanceZones/UI_InstanceSamllUI.cs.meta
  63. 4 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/InstanceZones/UI_InstanceZonesUI.cs
  64. 6 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_ListCardFightItem.cs
  65. 1 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/CommonSProxy.cs
  66. 306 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/FieldWorkSproxy.cs
  67. 11 0
      GameClient/Assets/Game/HotUpdate/ServerProxy/FieldWorkSproxy.cs.meta
  68. 1 1
      GameClient/Assets/Game/HotUpdate/Views/ActivityDay7/ActivityDay7View.cs
  69. 123 28
      GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaDressInfoView.cs
  70. 2 1
      GameClient/Assets/Game/HotUpdate/Views/DressUp/ArenaDressUpFightView.cs
  71. 2 1
      GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpFightView.cs
  72. 2 0
      GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpView.cs
  73. 8 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork.meta
  74. 392 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkChooseCardView.cs
  75. 11 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkChooseCardView.cs.meta
  76. 1098 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkDressFIghtView.cs
  77. 11 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkDressFIghtView.cs.meta
  78. 142 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkFightResultView.cs
  79. 11 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkFightResultView.cs.meta
  80. 256 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkLevelInfoView.cs
  81. 11 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkLevelInfoView.cs.meta
  82. 274 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkLevelView.cs
  83. 11 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkLevelView.cs.meta
  84. 167 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkRoundResultView.cs
  85. 11 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkRoundResultView.cs.meta
  86. 50 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkRoundTipsView.cs
  87. 11 0
      GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkRoundTipsView.cs.meta
  88. 44 26
      GameClient/Assets/Game/HotUpdate/Views/InstanceZones/InstanceZonesView.cs
  89. 24 5
      GameClient/Assets/Game/HotUpdate/Views/MainStory/ArenaFightResultView.cs
  90. 1 2
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryCardChoose.cs
  91. 80 17
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightSingleScoreView.cs
  92. 26 5
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightSingleView.cs
  93. 0 13
      GameClient/Assets/Game/HotUpdate/Views/Store/StoreGrowthFundView.cs
  94. 1 1
      GameClient/Assets/Game/Launcher/LauncherConfig.cs
  95. 28 24
      GameClient/Assets/Plugins/Android/AndroidManifest.xml
  96. 3 3
      GameClient/Assets/Plugins/Android/launcherTemplate.gradle
  97. 二進制
      GameClient/Assets/Plugins/Android/libs/douyou-release.aar
  98. 32 0
      GameClient/Assets/Plugins/Android/libs/douyou-release.aar.meta
  99. 二進制
      GameClient/Assets/Plugins/Android/libs/douyouTT-release.aar
  100. 32 0
      GameClient/Assets/Plugins/Android/libs/douyouTT-release.aar.meta

+ 1 - 0
.gitignore

@@ -55,3 +55,4 @@
 /GameClient/Assets/Plugins/Android/libs/douyouTT-release.aar.meta
 /GameClient/Assets/Plugins/com/easy/bridge/DouYouMainActivity.java
 /GameClient/Assets/Plugins/com/easy/bridge/DouYouMainActivity.java.meta
+/GameClient/ProjectSettings/ProjectSettings.asset

二進制
GameClient/.idea/.idea.GameClient/.idea/copilot/chatSessions/00000000000.xd


二進制
GameClient/.idea/.idea.GameClient/.idea/copilot/chatSessions/blobs/version


+ 78 - 0
GameClient/.idea/.idea.GameClient/.idea/copilot/chatSessions/xd.lck

@@ -0,0 +1,78 @@
+Private property of Exodus: 32556@DESKTOP-8ILLQSI
+
+jetbrains.exodus.io.LockingManager.lock(LockingManager.kt:88)
+jetbrains.exodus.io.LockingManager.lock(LockingManager.kt:39)
+jetbrains.exodus.io.FileDataWriter.lock(FileDataWriter.kt:70)
+jetbrains.exodus.log.Log.tryLock(Log.kt:804)
+jetbrains.exodus.log.Log.<init>(Log.kt:117)
+jetbrains.exodus.env.Environments.newLogInstance(Environments.kt:117)
+jetbrains.exodus.env.Environments.newLogInstance(Environments.kt:81)
+jetbrains.exodus.env.Environments.newLogInstance(Environments.kt:77)
+jetbrains.exodus.env.Environments$newInstance$4.invoke(Environments.kt:46)
+jetbrains.exodus.env.Environments$newInstance$4.invoke(Environments.kt:46)
+jetbrains.exodus.env.Environments.prepare(Environments.kt:120)
+jetbrains.exodus.env.Environments.newInstance(Environments.kt:46)
+kotlinx.dnq.store.container.EntityStoreHelperKt.createTransientEntityStore(EntityStoreHelper.kt:40)
+kotlinx.dnq.store.container.EntityStoreHelperKt.createTransientEntityStore(EntityStoreHelper.kt:31)
+kotlinx.dnq.store.container.EntityStoreHelperKt.createTransientEntityStore$default(EntityStoreHelper.kt:30)
+com.github.copilot.chat.session.persistence.xodus.XdChatSessionPersistenceService.initStore(XdChatSessionPersistenceService.kt:115)
+com.github.copilot.chat.session.persistence.xodus.XdChatSessionPersistenceService.<init>(XdChatSessionPersistenceService.kt:22)
+com.github.copilot.chat.session.persistence.xodus.XdChatSessionPersistenceService.<init>(XdChatSessionPersistenceService.kt:15)
+com.github.copilot.chat.session.persistence.ChatSessionPersistenceServiceKt.ChatSessionPersistenceService(ChatSessionPersistenceService.kt:43)
+com.github.copilot.chat.session.persistence.ChatSessionPersistenceServiceKt.chatSessionsPersistenceService(ChatSessionPersistenceService.kt:53)
+com.github.copilot.chat.session.ChatSessionManager.<init>(ChatSessionManager.kt:45)
+com.github.copilot.chat.session.ChatSessionManager.<init>(ChatSessionManager.kt:25)
+com.github.copilot.chat.window.CopilotChatToolWindow.onCopilotReady(CopilotChatToolWindow.kt:133)
+com.github.copilot.chat.window.CopilotChatToolWindow.access$onCopilotReady(CopilotChatToolWindow.kt:40)
+com.github.copilot.chat.window.CopilotChatToolWindow$initCopilotStatusListener$1.invoke(CopilotChatToolWindow.kt:118)
+com.github.copilot.chat.window.CopilotChatToolWindow$initCopilotStatusListener$1.invoke(CopilotChatToolWindow.kt:115)
+com.github.copilot.status.CopilotAuthStatusKt.subscribeToCopilotAuthStatus(CopilotAuthStatus.kt:27)
+com.github.copilot.chat.window.CopilotChatToolWindow.initCopilotStatusListener(CopilotChatToolWindow.kt:115)
+com.github.copilot.chat.window.CopilotChatToolWindow.<init>(CopilotChatToolWindow.kt:59)
+com.github.copilot.chat.window.CopilotChatToolWindow.<init>(CopilotChatToolWindow.kt:40)
+com.github.copilot.chat.window.CopilotChatToolWindowFactory.init(CopilotChatToolWindowFactory.kt:18)
+com.intellij.openapi.wm.impl.ToolWindowManagerImpl.registerToolWindow$intellij_platform_ide_impl(ToolWindowManagerImpl.kt:1083)
+com.intellij.toolWindow.ToolWindowSetInitializerKt.registerToolWindows(ToolWindowSetInitializer.kt:181)
+com.intellij.toolWindow.ToolWindowSetInitializerKt.access$registerToolWindows(ToolWindowSetInitializer.kt:1)
+com.intellij.toolWindow.ToolWindowSetInitializer$createAndLayoutToolWindows$entries$1$1.invoke(ToolWindowSetInitializer.kt:129)
+com.intellij.toolWindow.ToolWindowSetInitializer$createAndLayoutToolWindows$entries$1$1.invoke(ToolWindowSetInitializer.kt:121)
+com.intellij.openapi.progress.CoroutinesKt.blockingContext(coroutines.kt:248)
+com.intellij.openapi.progress.CoroutinesKt.blockingContext(coroutines.kt:199)
+com.intellij.toolWindow.ToolWindowSetInitializer$createAndLayoutToolWindows$entries$1.invokeSuspend(ToolWindowSetInitializer.kt:121)
+kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
+kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
+com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:193)
+com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861)
+com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:478)
+com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:79)
+com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:121)
+com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:41)
+java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
+java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:789)
+java.desktop/java.awt.EventQueue$3.run(EventQueue.java:740)
+java.desktop/java.awt.EventQueue$3.run(EventQueue.java:734)
+java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
+java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
+java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:759)
+com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:685)
+com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$10(IdeEventQueue.kt:589)
+com.intellij.openapi.application.impl.ApplicationImpl.runWithoutImplicitRead(ApplicationImpl.java:1485)
+com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:589)
+com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67)
+com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369)
+com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368)
+com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
+com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368)
+com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363)
+com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:992)
+com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
+com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:992)
+com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363)
+com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861)
+com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405)
+java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
+java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
+java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
+java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
+java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
+java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Constant/ConstFightRoleType.cs

@@ -3,4 +3,5 @@ public class FightRoleType
 
     public const int MINE = 0;//自己
     public const int TAEGET = 1;//对手
+    public const int FieldWork = 2;//田野调查
 }

+ 2 - 0
GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs

@@ -264,5 +264,7 @@ namespace GFGGame
         public const string REWARDVIEW_CLOTHER = "REWARDVIEW_CLOTHER";
         //关卡排行榜数据加载完毕
         public const string REQ_CURRENT_RANK = "REQ_CURRENT_RANK";
+        //爬塔状态改变
+        public const string FieldWork_StateCHANGE = "FieldWork_StateCHANGE";
     }
 }

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

@@ -268,6 +268,7 @@ namespace GFGGame
             TravelSProxy.ReqTravelGuideInfo().Coroutine();
             PoemGallerySProxy.ReqGalleryTheme().Coroutine();
             ArenaDataManager.Instance.ReqArenaInfo();
+            FieldWorkSproxy.ReqFieldWorkInfos().Coroutine();
             SkillSProxy.ReqGetSkillList(SkillType.LeagueSkill).Coroutine();
             EnduringGiftBoxSProxy.ReqGetAllGiftBagRebateStatus().Coroutine();
             ChatSProxy.ReqQueryChatMsg(ChatType.League).Coroutine();
@@ -371,6 +372,7 @@ namespace GFGGame
             NewYearRedEnvelopeDataManager.Instance.Clear();
             MatchingCompetitionDataManager.Instance.MyNtextture = null;
             MatchingCompetitionDataManager.Instance.MathingDressDate.bgId = 0;
+            FieldWorkDataManager.Instance.IsAutoStart = false;
             GameGlobal.zoneScene.GetComponent<SessionComponent>()?.Disconnect();
             GameGlobal.zoneScene.GetComponent<ServerInfosComponent>()?.ServerInfoList?.Clear();
             GameGlobal.zoneScene.GetComponent<AccountInfoComponent>()?.Clear();

+ 162 - 2
GameClient/Assets/Game/HotUpdate/Data/ArenaDataManager.cs

@@ -162,8 +162,32 @@ namespace GFGGame
         public int GetRecommentCardId(int scoreType, List<int> itemList, List<int> wearCardIds)
         {
             float dressListAllAcore = FightDataManager.Instance.GetDressListAllScore(itemList, scoreType);
-            List<CardData> cardDatas = FightDataManager.Instance.SortCardList(CardDataManager.GetCardListByRoleType(0),
+            List<CardData> cardDatas = new List<CardData>();// = FightDataManager.Instance.SortCardList(CardDataManager.GetCardListByRoleType(0),dressListAllAcore, scoreType);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                cardDatas = CardDataManager.GetCardListByRoleType(0).ToList();
+                int limitTims = CimbingTowerCfgArray.Instance.dataArray[0].UseLimit;
+                foreach (var item in FieldWorkDataManager.Instance.CardAbrasionInfoList)
+                {
+                    if (item.UseNum >= limitTims)
+                    {
+                        for(int i = 0;i< cardDatas.Count;i++)
+                        {
+                            if(cardDatas[i].id == item.Card)
+                            {
+                                cardDatas.RemoveAt(i);
+                                break;
+                            }
+                        }
+                    }
+                }
+                cardDatas = FightDataManager.Instance.SortCardList(cardDatas,dressListAllAcore, scoreType).ToList();
+            }
+            else
+            {
+                cardDatas = FightDataManager.Instance.SortCardList(CardDataManager.GetCardListByRoleType(0),
                 dressListAllAcore, scoreType);
+            }
             cardDatas = cardDatas.Where(a => !wearCardIds.Contains(a.id)).ToList();
             if (cardDatas.Count == 0) return 0;
             wearCardIds.Add(cardDatas[0].itemCfg.id);
@@ -187,7 +211,19 @@ namespace GFGGame
                 int key = subType;
                 if (itemDatasDic.Count == 0) continue;
                 if (DressUpMenuItemCfg1Array.Instance.CheckIsSceneTypeBySubType(subType)) continue;
-                List<int> dressList = SortDressList(itemDatasDic[subType], scoreType, tags);
+                List<int> dressList = new List<int>();//= SortDressList(itemDatasDic[subType], scoreType, tags);
+                if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+                {
+                    dressList = SortDressList(itemDatasDic[subType], scoreType, tags).ToList();
+                    foreach(var item in FieldWorkDataManager.Instance.HistoryDressupList)
+                    {
+                        dressList.Remove(item);
+                    }
+                }
+                else
+                {
+                    dressList = SortDressList(itemDatasDic[subType], scoreType, tags).ToList();
+                }
                 int max = subType == (int)ConstDressUpItemType.TE_SHU ? 3 : 1;
                 max = Math.Min(max, dressList.Count);
                 if (DressUpMenuItemCfg1Array.Instance.CheckIsOrnamentsTypeBySubType(subType))
@@ -283,6 +319,130 @@ namespace GFGGame
             return itemList;
         }
 
+        /// <summary>
+        /// 爬塔获取推荐列表
+        /// </summary>
+        /// <param name="scoreType"></param>
+        /// <param name="tags"></param>
+        /// <returns></returns>
+        public List<int> GetFieldRecommentItemList(int scoreType, string[] tags)
+        {
+            Dictionary<int, List<int>> itemListDic = new Dictionary<int, List<int>>();
+            Dictionary<int, List<int>> itemDatasDic = DressUpMenuItemDataManager.ItemDatasBySubTypeDic;
+
+
+            foreach (int subType in itemDatasDic.Keys)
+            {
+                int key = subType;
+                if (itemDatasDic.Count == 0) continue;
+                if (DressUpMenuItemCfg1Array.Instance.CheckIsSceneTypeBySubType(subType)) continue;
+                List<int> dressList = new List<int>();//= SortDressList(itemDatasDic[subType], scoreType, tags);
+                if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+                {
+                    dressList = SortDressList(itemDatasDic[subType], scoreType, tags).ToList();
+                    foreach (var item in FieldWorkDataManager.Instance.HistoryDressupList)
+                    {
+                        dressList.Remove(item);
+                    }
+                }
+                else
+                {
+                    dressList = SortDressList(itemDatasDic[subType], scoreType, tags).ToList();
+                }
+                int max = subType == (int)ConstDressUpItemType.TE_SHU ? 3 : 1;
+                max = Math.Min(max, dressList.Count);
+                if (DressUpMenuItemCfg1Array.Instance.CheckIsOrnamentsTypeBySubType(subType))
+                {
+                    key = ConstDressUpItemType.TE_SHU; //饰品全放在一个列表里
+                }
+
+                if (!itemListDic.ContainsKey(key))
+                {
+                    itemListDic[key] = new List<int>();
+                }
+
+                itemListDic[key].AddRange(dressList.GetRange(0, max));
+            }
+
+            bool isHasLYQ = itemListDic.ContainsKey(ConstDressUpItemType.LIAN_YI_QUN) && itemListDic[ConstDressUpItemType.LIAN_YI_QUN].Count >0;
+            bool isHasSY = itemListDic.ContainsKey(ConstDressUpItemType.SHANG_YI) && itemListDic[ConstDressUpItemType.SHANG_YI].Count > 0; ;
+            bool isHasXZ = itemListDic.ContainsKey(ConstDressUpItemType.XIA_ZHUANG) && itemListDic[ConstDressUpItemType.XIA_ZHUANG].Count > 0; ;
+            bool isHasND = itemListDic.ContainsKey(ConstDressUpItemType.NEI_DA) && itemListDic[ConstDressUpItemType.NEI_DA].Count > 0; ;
+
+            int countTagLYQ =
+                isHasLYQ && ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.LIAN_YI_QUN][0], tags)
+                    ? 1
+                    : 0;
+            int countTagSY =
+                isHasSY && ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.SHANG_YI][0], tags)
+                    ? 1
+                    : 0;
+            int countTagXZ =
+                isHasXZ && ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.XIA_ZHUANG][0], tags)
+                    ? 1
+                    : 0;
+            int countTagND =
+                isHasND && ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.NEI_DA][0], tags)
+                    ? 1
+                    : 0;
+
+            if (countTagLYQ > countTagSY + countTagXZ + countTagND)
+            {
+                itemListDic.Remove(ConstDressUpItemType.NEI_DA);
+                itemListDic.Remove(ConstDressUpItemType.SHANG_YI);
+                itemListDic.Remove(ConstDressUpItemType.XIA_ZHUANG);
+            }
+            else if (countTagLYQ < countTagSY + countTagXZ + countTagND)
+            {
+                itemListDic.Remove(ConstDressUpItemType.LIAN_YI_QUN);
+            }
+            else
+            {
+                int scoreLYQ = !isHasLYQ
+                    ? 0
+                    : ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.LIAN_YI_QUN][0], scoreType,
+                        tags);
+                int scoreSY = !isHasSY
+                    ? 0
+                    : ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.SHANG_YI][0], scoreType,
+                        tags);
+                int scoreXZ = !isHasXZ
+                    ? 0
+                    : ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.XIA_ZHUANG][0], scoreType,
+                        tags);
+                int scoreND = !isHasND
+                    ? 0
+                    : ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.NEI_DA][0], scoreType,
+                        tags);
+                if (scoreLYQ > scoreSY + scoreXZ + scoreND)
+                {
+                    itemListDic.Remove(ConstDressUpItemType.SHANG_YI);
+                    itemListDic.Remove(ConstDressUpItemType.XIA_ZHUANG);
+                    itemListDic.Remove(ConstDressUpItemType.NEI_DA);
+                }
+                else
+                {
+                    itemListDic.Remove(ConstDressUpItemType.LIAN_YI_QUN);
+                }
+            }
+
+            List<int> itemList = new List<int>();
+            foreach (int subType in itemListDic.Keys)
+            {
+                //DressUpMenuItemDataManager.SortItemListByHighScore(itemListDic[subType]);
+                if (subType == ConstDressUpItemType.TE_SHU)
+                {
+                    int max = Math.Min(itemListDic[subType].Count, 5);
+                    itemList.AddRange(itemListDic[subType].GetRange(0, max));
+                }
+                else
+                {
+                    itemList.AddRange(itemListDic[subType]);
+                }
+            }
+
+            return itemList;
+        }
         private List<int> SortDressList(List<int> dressList, int scoreType, string[] tags)
         {
             dressList.Sort((int a, int b) =>

+ 368 - 0
GameClient/Assets/Game/HotUpdate/Data/FieldWorkDataManager.cs

@@ -0,0 +1,368 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using ET;
+using UnityEngine;
+using UI.FieldWork;
+using FairyGUI;
+
+namespace GFGGame
+{
+    class FieldWorkDataManager : SingletonBase<FieldWorkDataManager>
+    {
+        public long LastFightTime = 0; //上次战斗时间,时间为0,说明未战斗过,则没有段位奖励
+        public List<int> ThemeList = new List<int>() { 1, 2, 3 };
+        public List<string> Tag = new List<string> { "艳丽", "志怪" }; //本周标签
+        public int SeasonId = 1; // 赛季id
+        public List<FightData> DressupList = new List<FightData>(); //我的搭配列表
+        public List<int> HistoryDressupList = new List<int>();//本周通过关的服装列表
+        public List<CardAbrasionInfo> CardAbrasionInfoList = new List<CardAbrasionInfo>();
+        public Dictionary<int,CimbingTowerLevelInfoProto> CimbingTowerLevelInfoList = new Dictionary<int, CimbingTowerLevelInfoProto>();
+
+        public List<int> roundTime = new List<int>();
+        public OtherRoleInfoData roleInfo = new OtherRoleInfoData() { 
+            roleName = RoleDataManager.roleName,
+            roleLv = RoleDataManager.lvl,
+            headId = RoleDataManager.headId};
+        //Dictionary<回合下标, Dictionary<partId, Dictionary<战斗节点, List<PassivitySkillLvlCfg>>>>
+        public Dictionary<int, Dictionary<int, Dictionary<int, List<PassivitySkillLvlCfg>>>> vaildSkills =
+            new Dictionary<int, Dictionary<int, Dictionary<int, List<PassivitySkillLvlCfg>>>>();
+
+        public Dictionary<int, Dictionary<int, Dictionary<int, List<PassivitySkillLvlCfg>>>> targetVaildSkills =
+            new Dictionary<int, Dictionary<int, Dictionary<int, List<PassivitySkillLvlCfg>>>>();
+
+        public int SelectThemeIndex = 0; //当前选中换装主题(ThemeList)的下标
+        public int SelectTargetIndex = -1; //当前选中挑战对象的下标
+        public int CurFightIndex = 0; //当前挑战场次下标
+        public List<long> myScore = new List<long>(); //对战数据,三轮分数
+
+        public List<ItemInfoProto> BonusList = new List<ItemInfoProto>(); //战斗结算奖励
+
+        public int targetWinScore = 10000;
+
+        //战斗关卡
+        public int currentLevelID = 0;
+        public List<string> nameList = new List<string>() 
+        {"壹","贰","叄","肆","伍","陆","柒","捌","玖","拾","拾壹","终"};
+        public int guideLevelID = 100005009;
+        public int MaxLevelId = 0;
+        public bool IsAutoStart = false;
+        /// <summary>
+        /// 更新战斗结算总分,含胜负
+        /// </summary>
+        /// <param name="obj"></param>
+        /// <param name="myScores"></param>
+        /// <param name="targetScore"></param>
+        public void UpdateAllScoreResult(GObject obj, List<long> myScores,int targetScore)
+        {
+            UI_ComAllScoreResult com = UI_ComAllScoreResult.Proxy(obj);
+            bool isWin = UpdateAllScore(com.m_comResult.target, myScores, targetScore);
+            //_ui.m_loaResule.url = isWin ? "ui://FieldWork/kstzjj_slsl" : "ui://FieldWork/kstzjj_shib";
+            UI_ComAllScoreResult.ProxyEnd();
+        }
+
+        public bool UpdateAllScore(GObject obj, List<long> myScores, int targetScore)
+        {
+            long myAllScore = 0;
+            long targetAllScore = 0;
+            for (int i = 0; i < myScores.Count; i++)
+            {
+                myAllScore += myScores[i];
+            }
+            UI_ComAllScore com = UI_ComAllScore.Proxy(obj);
+            com.m_txtMyFightScore.text = myAllScore.ToString();
+            UI_ComAllScore.ProxyEnd();
+            bool isWin = myAllScore > targetAllScore;
+            return isWin;
+        }
+
+        /// <summary>
+        /// 更新标签、战力、属性分数值
+        /// </summary>
+        public void UpdateValue(GObject obj, int index, List<FightData> roleDatas)
+        {
+            UI.Arena.UI_ComFIeldValueInfo com = UI.Arena.UI_ComFIeldValueInfo.Proxy(obj);
+            com.m_scoreType.url = ResPathUtil.GetScorePath(FieldWorkDataManager.Instance.ThemeList[index]);
+            com.m_txtScore.text = FightDataManager.Instance.GetScore(roleDatas[index]).ToString();
+            long fightScore = ArenaDataManager.Instance.GetAllFightScore(roleDatas);
+            com.m_txtFightScore.SetVar("value", fightScore.ToString()).FlushVars(); ;
+            com.m_txtTagScore.text = FightDataManager.Instance.GetTagsScore(roleDatas[index].itemList, roleDatas[index].tags).ToString();
+            int count = ArenaDataManager.Instance.GetTagsCount(roleDatas[index].itemList, roleDatas[index].tags);
+            com.m_c1.selectedIndex = Math.Min(count, ArenaTagCfgArray.Instance.dataArray.Length);
+            com.m_c3.selectedIndex = roleDatas[index].tags.Length > 0 ? 1 : 0;
+            UpdateFightScore(com.m_comFightScore.target, roleDatas);
+
+                ItemUtil.UpdateTag(com.m_comTag, roleDatas[index].tags[0]);
+                ItemUtil.UpdateTag(com.m_comTag1, roleDatas[index].tags[1]);
+            
+            if (com.m_btnTagRule.data == null)
+            {
+                com.m_btnTagRule.onClick.Add(RuleController.ShowRuleView);
+                com.m_btnTagRule.data = 300034;
+            }
+            UI.Arena.UI_ComFIeldValueInfo.ProxyEnd();
+        }
+        /// <summary>
+        /// 更新战力值
+        /// </summary>
+        public void UpdateFightScore(GObject obj, List<FightData> roleDatas)
+        {
+            List<long> fightScore = ArenaDataManager.Instance.GetFightScoreList(roleDatas);
+            UI.Arena.UI_ComFieldFightScore com = UI.Arena.UI_ComFieldFightScore.Proxy(obj);
+            com.m_txtSuitScore.SetVar("value", fightScore[0].ToString()).FlushVars(); ;
+            com.m_txtClickScore.SetVar("value", fightScore[1].ToString()).FlushVars(); ;
+            com.m_txtCardScore.SetVar("value", fightScore[2].ToString()).FlushVars(); ;
+            UI.Arena.UI_ComFieldFightScore.ProxyEnd();
+        }
+        public void GetFightResult()
+        {
+            myScore.Clear();
+            long allScore = 0;
+            for (int i = 0; i < DressupList.Count; i++)
+            {
+                FieldWorkDataManager.Instance.GetQuickFightResult(i, DressupList[i], out long score);
+                allScore += score;
+                myScore.Add(score);
+            }
+        }
+        public int GetTargetWinScore(int levelID)
+        {
+            targetWinScore = 10000;
+            return targetWinScore;
+        }
+        public string GetHeihtScore(int levelID)
+        {
+            if(CimbingTowerLevelInfoList.ContainsKey(levelID))
+            {
+                long score = CimbingTowerLevelInfoList[levelID].WeekMaxScore;
+                return score.ToString();
+            }
+            else
+            {
+                return "";
+            }    
+        }
+        public List<List<int>> GetDressAndCard()
+        {
+            List<List<int>> dress = new List<List<int>>();
+            for (int i=0;i< FieldWorkDataManager.Instance.DressupList.Count;i++)
+            {
+                List<int> dressA = new List<int>();
+                dressA = FieldWorkDataManager.Instance.DressupList[i].itemList.ToList();
+                //去除默认
+                dressA.Remove(10000);
+                dressA.Remove(20000);
+                dressA.Remove(30000);
+                dressA.Remove(50000);
+                dressA.Remove(60000);
+                if (FieldWorkDataManager.Instance.DressupList[i].cardId > 0)
+                {
+                    dressA.Add(FieldWorkDataManager.Instance.DressupList[i].cardId);
+                }
+                dress.Add(dressA);
+            }
+            return dress;
+        }
+        public float GetCardAbrasion(int cardID)
+        {
+            float abrasion = 0;
+            float UseNum = 0;
+            float cardTimes = CimbingTowerCfgArray.Instance.dataArray[0].UseLimit;
+            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cardID);
+            if(itemCfg == null)
+            {
+                return 100;
+            }
+            foreach (var item in CardAbrasionInfoList)
+            {
+                if(item.Card == cardID)
+                {
+                    UseNum = item.UseNum;
+                    abrasion = UseNum / cardTimes;
+                    if(abrasion >= 1)
+                    {
+                        abrasion = 1;
+                    }
+                    break;
+                }
+            }
+            return abrasion * 100;
+        }
+        //输入属性类型,获取联盟技能该属性加成总值
+        public int GetAllSkillScore(int scoreType)
+        {
+            int score = 0;
+            if(scoreType == 0)
+            {
+                return score;
+            }
+            foreach (int key in SkillDataManager.Instance.LeagueSkillScoreDatas.Keys)
+            {
+                score += SkillDataManager.Instance.LeagueSkillScoreDatas[key][scoreType];
+            }
+            return score;
+        }
+        public void SetDataScoreType()
+        {
+            for(int i = 0;i<DressupList.Count;i++)
+            {
+                DressupList[i].scoreType = ThemeList[i];
+            }
+        }
+        public bool SetCanStart()
+        {
+            int i = 0;
+            foreach(var item in DressupList)
+            {
+                bool isDress = false;
+                for(int j= 0;j<item.itemList.Count;j++)
+                {
+                    if(item.itemList.Count > 0)
+                    {
+                        if(item.itemList[j] != 10000  && item.itemList[j] != 20000
+                            && item.itemList[j] != 30000 && item.itemList[j] != 50000 && item.itemList[j] != 60000)
+                        {
+                            isDress = true;
+                        }
+                    }
+                }
+                if(item.cardId > 0 && isDress)
+                {
+                    i++;    
+                }
+            }
+            if(i>=3)
+            {
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+        public bool CheckLevelPass(int LevelID)
+        {
+            CimbingTowerLevelCfg levelCfg = CimbingTowerLevelCfgArray.Instance.dataArray[0];
+            if(LevelID == levelCfg.id)
+            {
+                return true;
+            }
+            int levelBefore = LevelID - 1;
+            if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(levelBefore))
+            {
+               if( FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[levelBefore].IsPass)
+                {
+                    return true;
+                }
+                else
+                {
+                    return false;
+                }
+            }
+            else
+            {
+                return false;
+            }
+        }
+        /// <summary>
+        /// 词牌如果磨损达到上限就放到最后
+        /// </summary>
+        /// <param name="arrayList"></param>
+        /// <returns></returns>
+        public List<CardData> SortCardList(List<CardData> cardList)
+        {
+            List<CardData> card = new List<CardData>();
+            int limitNum = CimbingTowerCfgArray.Instance.dataArray[0].UseLimit;
+            card = cardList.ToList();
+            for(int i = 0;i<card.Count;i++)
+            {
+                foreach(var item in CardAbrasionInfoList)
+                {
+                    if(item.Card == card[i].id)
+                    {
+                        if(item.UseNum >= limitNum)
+                        {
+                            // 添加到列表末尾
+                            card.Add(card[i]);
+                            // 移除元素
+                            card.RemoveAt(i);
+                        }
+                        break;
+                    }
+                }
+            }
+            return card;
+        }
+
+
+        /// <summary>
+        /// 获取快速挑战结果
+        /// </summary>
+        /// <param name="myRoleData"></param>
+        /// <param name="_score"></param>
+
+        public void GetQuickFightResult(int roundIndex, FightData myRoleData, out long _score)
+        {
+            double score = 0;
+
+            int cardId = myRoleData.cardId;
+            double mainScore = ScoreSystemData.Instance.GetMainScore(myRoleData);
+            List<int> skillLvs = myRoleData.skillLvs;
+
+            List<int> roundTime = ScoreSystemData.Instance.GetRoundTime(myRoleData.cardId, myRoleData.skillLvs);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena || InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                FieldWorkDataManager.Instance.roundTime = roundTime;
+                if (!FieldWorkDataManager.Instance.vaildSkills.ContainsKey(roundIndex)) FieldWorkDataManager.Instance.vaildSkills[roundIndex] = new Dictionary<int, Dictionary<int, List<PassivitySkillLvlCfg>>>();
+            }
+
+            int roundId = 0;
+            int currentTime = SkillBeginTime.FIGHT_BEGIN;
+            GetSkillScore(FightRoleType.MINE, roundIndex, currentTime, roundId, mainScore, cardId, skillLvs, roundTime, ref score);
+            for (int i = 0; i < FightScoreCfgArray.Instance.dataArray.Length; i++)
+            {
+                roundId++;
+                currentTime = SkillBeginTime.ERVERY_ROUND_BEGIN;
+                GetSkillScore(FightRoleType.MINE, roundIndex, currentTime, roundId, mainScore, cardId, skillLvs, roundTime, ref score);            
+                score += ScoreSystemData.Instance.GetRoundScore(myRoleData, roundId, ClickType.PERFECT_CLICK, 0);
+                currentTime = SkillBeginTime.PERFECT_CLICK;
+                GetSkillScore(FightRoleType.MINE, roundIndex, currentTime, roundId, mainScore, cardId, skillLvs, roundTime, ref score);
+                currentTime = SkillBeginTime.ERVERY_ROUND_END;
+                GetSkillScore(FightRoleType.MINE, roundIndex, currentTime, roundId, mainScore, cardId, skillLvs, roundTime, ref score);
+                // Debug.Log(" targetScore444:" + targetScore);
+            }
+            roundId++;
+            currentTime = SkillBeginTime.ALL_PERFECT_START;
+            GetSkillScore(FightRoleType.MINE, roundIndex, currentTime, roundId, mainScore, cardId, skillLvs, roundTime, ref score);
+            score += ScoreSystemData.Instance.GetAllCircleAddScore(myRoleData);
+            _score = Mathf.CeilToInt((float)score);
+        }
+
+        private void GetSkillScore(int roleType, int roundIndex, int currentTime, int partId, double mainScore, int cardId, List<int> skillLvs, List<int> roundTime, ref double score)
+        {
+            List<int> targetSkillLvs = new List<int>();
+            List<int> targetRoundTime = new List<int>();
+            List<PassivitySkillLvlCfg> vaildSkills = ScoreSystemData.Instance.GetValidSkills(currentTime, partId, cardId, skillLvs, 0, targetSkillLvs, roundTime, targetRoundTime);
+            ScoreSystemData.Instance.GetRoundItemSkillScore(vaildSkills, mainScore, 0, out int skillScore, out int targetSkillScore, out Dictionary<int, int> skillScoreDic);
+
+            score += skillScore;
+
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena || InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                FieldWorkDataManager dataManager = FieldWorkDataManager.Instance;
+                if (roleType == FightRoleType.MINE)
+                {
+                    if (!dataManager.vaildSkills[roundIndex].ContainsKey(partId)) dataManager.vaildSkills[roundIndex][partId] = new Dictionary<int, List<PassivitySkillLvlCfg>>();
+                    dataManager.vaildSkills[roundIndex][partId][currentTime] = vaildSkills;
+
+                }
+                else
+                {
+                    if (!dataManager.targetVaildSkills[roundIndex].ContainsKey(partId)) dataManager.targetVaildSkills[roundIndex][partId] = new Dictionary<int, List<PassivitySkillLvlCfg>>();
+                    dataManager.targetVaildSkills[roundIndex][partId][currentTime] = vaildSkills;
+                }
+            }
+
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Data/FieldWorkDataManager.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bd855039bf3f13743b31f2700247da8d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 3
GameClient/Assets/Game/HotUpdate/Data/FightDataManager.cs

@@ -43,7 +43,7 @@ namespace GFGGame
             {
                 score += ItemDataManager.GetArenaScore(roleData.itemList[i], roleData.scoreType, roleData.tags);
             }
-            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena || InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
             {
                 int tagCount = ArenaDataManager.Instance.GetTagsCount(roleData.itemList, roleData.tags); ;
                 tagCount = Math.Min(ArenaTagCfgArray.Instance.dataArray.Length, tagCount);
@@ -331,7 +331,7 @@ namespace GFGGame
             {
                 targetMainScore = ScoreSystemData.Instance.GetRobotMainScore(targetRoleData);
             }
-            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena || InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
             {
                 ArenaDataManager.Instance.roundTime = roundTime;
                 ArenaDataManager.Instance.targetRoundTime = targetRoundTime;
@@ -386,7 +386,7 @@ namespace GFGGame
             score += skillScore;
             targetScore += targetSkillScore;
 
-            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena || InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
             {
                 ArenaDataManager dataManager = ArenaDataManager.Instance;
                 if (roleType == FightRoleType.MINE)

+ 4 - 0
GameClient/Assets/Game/HotUpdate/Data/ItemDataManager.cs

@@ -393,6 +393,10 @@ namespace GFGGame
         public static bool CheckItemTagsRight(int itemId, string[] tags)
         {
             ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
+            if(itemCfg == null)
+            {
+                return false;
+            }
             for (int i = 0; i < itemCfg.tagsArr.Length; i++)
             {
                 for (int j = 0; j < tags.Length; j++)

+ 2 - 17
GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs

@@ -741,18 +741,7 @@ namespace GFGGame
         /// <returns></returns>
         public bool GetGrowthFundBuy()
         {
-            ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(ActivityOpenCfgArray.Instance.GetCfg(3002).paramsArr[0]);
-            var remainBuyNum = shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id);
-            if (remainBuyNum == 0)
-            {
-                //已售完
-                return true;
-            }
-            else
-            {
-                //未售完
-                return false;
-            }
+            return GameGlobal.myNumericComponent.GetAsInt(NumericType.BuyGrowthFund) == 0;
         }
 
         public bool GetGrowthFundRewardRed()
@@ -761,7 +750,7 @@ namespace GFGGame
             {
                 return false;
             }
-            if (!GetGrowthFundBuy())
+            if (GetGrowthFundBuy())
             {
                 return false;
             }
@@ -776,10 +765,6 @@ namespace GFGGame
                     }
                 }
             }
-            if(RoleDataManager.lvl >= GrowthFundCfgArray.Instance.dataArray[GrowthFundCfgArray.Instance.dataArray.Length-1].level)
-            {
-                return true;
-            }
             return false;
         }
 

+ 3 - 3
GameClient/Assets/Game/HotUpdate/Data/ScoreSystemData.cs

@@ -61,7 +61,7 @@ namespace GFGGame
                     for (int k = 0; k < cfg.subTypesArr.Length; k++)
                     {
                         ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(roleData.itemList[i]);
-                        if (itemCfg.subType == cfg.subTypesArr[k])
+                        if (itemCfg !=null && itemCfg.subType == cfg.subTypesArr[k])
                         {
                             roleData.partListDic[cfg.id].Add(roleData.itemList[i]);
                             roleData.partScoreListDic[cfg.id].Add(roleData.itemScoreList[i]);
@@ -217,7 +217,7 @@ namespace GFGGame
                 tagScore += ItemDataManager.GetItemTagScore(partList[i], roleData.tags);
                 // if (ItemDataManager.CheckItemTagsRight(partList[i], roleData.tags)) tagCount++;
             }
-            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena || InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
             {
                 tagCount = ArenaDataManager.Instance.GetTagsCount(roleData.itemList, roleData.tags);
                 tagCount = Math.Min(ArenaTagCfgArray.Instance.dataArray.Length, tagCount);
@@ -253,7 +253,7 @@ namespace GFGGame
         private double GetRobotRoundBaseScore(FightData robotData, int roundId)
         {
             double partBaseScore = robotData.itemScoreList[roundId - 1];
-            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena || InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
             {
                 partBaseScore = partBaseScore * (1 + robotData.tagAddition / 10000f);
             }

+ 3 - 3
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityDay7/UI_ActivityDay7UI.cs

@@ -7,7 +7,7 @@ namespace UI.ActivityDay7
     public partial class UI_ActivityDay7UI
     {
         public GComponent target;
-        public GLoader m_loaBg;
+        public GLoader m_loabg;
         public GLoader m_Top_img;
         public GLoader m_Top_img2;
         public GButton m_btnBack;
@@ -67,7 +67,7 @@ namespace UI.ActivityDay7
 
         private void Init(GComponent comp)
         {
-            m_loaBg = (GLoader)comp.GetChild("loaBg");
+            m_loabg = (GLoader)comp.GetChild("loabg");
             m_Top_img = (GLoader)comp.GetChild("Top_img");
             m_Top_img2 = (GLoader)comp.GetChild("Top_img2");
             m_btnBack = (GButton)comp.GetChild("btnBack");
@@ -83,7 +83,7 @@ namespace UI.ActivityDay7
         }
         public void Dispose(bool disposeTarget = false)
         {
-            m_loaBg = null;
+            m_loabg = null;
             m_Top_img = null;
             m_Top_img2 = null;
             m_btnBack = null;

+ 10 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ArenaDressInfoUI.cs

@@ -10,10 +10,12 @@ namespace UI.Arena
         public Controller m_c1;
         public Controller m_c2;
         public Controller m_c3;
+        public Controller m_c4;
         public GLoader m_loaBg;
         public GButton m_btnBack;
         public GGraph m_grhCloseComFightScore;
         public UI_ComValueInfo m_comValueInfo;
+        public UI_ComFIeldValueInfo m_comFieldValueInfo;
         public GComponent m_comListBg;
         public GList m_list;
         public UI_ComCard m_comCard;
@@ -22,6 +24,7 @@ namespace UI.Arena
         public UI_BtnTab3 m_btn2;
         public GButton m_btnDress;
         public GButton m_btnRecommend;
+        public GButton m_btnConfire;
         public const string URL = "ui://4lc5fhlbpsph1";
         public const string PACKAGE_NAME = "Arena";
         public const string RES_NAME = "ArenaDressInfoUI";
@@ -72,10 +75,12 @@ namespace UI.Arena
             m_c1 = comp.GetController("c1");
             m_c2 = comp.GetController("c2");
             m_c3 = comp.GetController("c3");
+            m_c4 = comp.GetController("c4");
             m_loaBg = (GLoader)comp.GetChild("loaBg");
             m_btnBack = (GButton)comp.GetChild("btnBack");
             m_grhCloseComFightScore = (GGraph)comp.GetChild("grhCloseComFightScore");
             m_comValueInfo = (UI_ComValueInfo)UI_ComValueInfo.Create(comp.GetChild("comValueInfo"));
+            m_comFieldValueInfo = (UI_ComFIeldValueInfo)UI_ComFIeldValueInfo.Create(comp.GetChild("comFieldValueInfo"));
             m_comListBg = (GComponent)comp.GetChild("comListBg");
             m_list = (GList)comp.GetChild("list");
             m_comCard = (UI_ComCard)UI_ComCard.Create(comp.GetChild("comCard"));
@@ -84,17 +89,21 @@ namespace UI.Arena
             m_btn2 = (UI_BtnTab3)UI_BtnTab3.Create(comp.GetChild("btn2"));
             m_btnDress = (GButton)comp.GetChild("btnDress");
             m_btnRecommend = (GButton)comp.GetChild("btnRecommend");
+            m_btnConfire = (GButton)comp.GetChild("btnConfire");
         }
         public void Dispose(bool disposeTarget = false)
         {
             m_c1 = null;
             m_c2 = null;
             m_c3 = null;
+            m_c4 = null;
             m_loaBg = null;
             m_btnBack = null;
             m_grhCloseComFightScore = null;
             m_comValueInfo.Dispose();
             m_comValueInfo = null;
+            m_comFieldValueInfo.Dispose();
+            m_comFieldValueInfo = null;
             m_comListBg = null;
             m_list = null;
             m_comCard.Dispose();
@@ -107,6 +116,7 @@ namespace UI.Arena
             m_btn2 = null;
             m_btnDress = null;
             m_btnRecommend = null;
+            m_btnConfire = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 105 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ComFIeldValueInfo.cs

@@ -0,0 +1,105 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.Arena
+{
+    public partial class UI_ComFIeldValueInfo
+    {
+        public GComponent target;
+        public Controller m_c1;
+        public Controller m_c2;
+        public Controller m_c3;
+        public GTextField m_txtFightScore;
+        public GButton m_btnFightScoreRule;
+        public GLoader m_scoreType;
+        public GTextField m_txtScore;
+        public GButton m_btnTagRule;
+        public GComponent m_comTag;
+        public GComponent m_comTag1;
+        public GTextField m_txtTagScore;
+        public UI_ComFieldFightScore m_comFightScore;
+        public const string URL = "ui://4lc5fhlbo8tw6w";
+        public const string PACKAGE_NAME = "Arena";
+        public const string RES_NAME = "ComFIeldValueInfo";
+        private static UI_ComFIeldValueInfo _proxy;
+
+        public static UI_ComFIeldValueInfo Create(GObject gObject = null)
+        {
+            var ui = new UI_ComFIeldValueInfo();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ComFIeldValueInfo Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComFIeldValueInfo();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_c1 = comp.GetController("c1");
+            m_c2 = comp.GetController("c2");
+            m_c3 = comp.GetController("c3");
+            m_txtFightScore = (GTextField)comp.GetChild("txtFightScore");
+            m_btnFightScoreRule = (GButton)comp.GetChild("btnFightScoreRule");
+            m_scoreType = (GLoader)comp.GetChild("scoreType");
+            m_txtScore = (GTextField)comp.GetChild("txtScore");
+            m_btnTagRule = (GButton)comp.GetChild("btnTagRule");
+            m_comTag = (GComponent)comp.GetChild("comTag");
+            m_comTag1 = (GComponent)comp.GetChild("comTag1");
+            m_txtTagScore = (GTextField)comp.GetChild("txtTagScore");
+            m_comFightScore = (UI_ComFieldFightScore)UI_ComFieldFightScore.Create(comp.GetChild("comFightScore"));
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_c1 = null;
+            m_c2 = null;
+            m_c3 = null;
+            m_txtFightScore = null;
+            m_btnFightScoreRule = null;
+            m_scoreType = null;
+            m_txtScore = null;
+            m_btnTagRule = null;
+            m_comTag = null;
+            m_comTag1 = null;
+            m_txtTagScore = null;
+            m_comFightScore.Dispose();
+            m_comFightScore = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ComFIeldValueInfo.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 08f872863e7ecd342b89f4a9e06f7df6
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 80 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ComFieldFightScore.cs

@@ -0,0 +1,80 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.Arena
+{
+    public partial class UI_ComFieldFightScore
+    {
+        public GComponent target;
+        public Controller m_c1;
+        public GTextField m_txtSuitScore;
+        public GTextField m_txtClickScore;
+        public GTextField m_txtCardScore;
+        public const string URL = "ui://4lc5fhlbo8tw6x";
+        public const string PACKAGE_NAME = "Arena";
+        public const string RES_NAME = "ComFieldFightScore";
+        private static UI_ComFieldFightScore _proxy;
+
+        public static UI_ComFieldFightScore Create(GObject gObject = null)
+        {
+            var ui = new UI_ComFieldFightScore();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ComFieldFightScore Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComFieldFightScore();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_c1 = comp.GetController("c1");
+            m_txtSuitScore = (GTextField)comp.GetChild("txtSuitScore");
+            m_txtClickScore = (GTextField)comp.GetChild("txtClickScore");
+            m_txtCardScore = (GTextField)comp.GetChild("txtCardScore");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_c1 = null;
+            m_txtSuitScore = null;
+            m_txtClickScore = null;
+            m_txtCardScore = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ComFieldFightScore.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ad55ec5c3c1a0614fac473967d04a972
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 6 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/DressUp/UI_ArenaDressUpFightUI.cs

@@ -7,12 +7,14 @@ namespace UI.DressUp
     public partial class UI_ArenaDressUpFightUI
     {
         public GComponent target;
+        public Controller m_c1;
         public GLoader m_loaBg;
         public GGraph m_touchPad;
         public GButton m_btnBack;
         public GTextField m_txtDressLimit;
         public GGraph m_grhCloseComFightScore;
         public GComponent m_comValueInfo;
+        public GComponent m_comFieldValueInfo;
         public UI_comListType m_comListType1;
         public UI_comListType m_comListType2;
         public UI_PartsList m_partsList;
@@ -71,12 +73,14 @@ namespace UI.DressUp
 
         private void Init(GComponent comp)
         {
+            m_c1 = comp.GetController("c1");
             m_loaBg = (GLoader)comp.GetChild("loaBg");
             m_touchPad = (GGraph)comp.GetChild("touchPad");
             m_btnBack = (GButton)comp.GetChild("btnBack");
             m_txtDressLimit = (GTextField)comp.GetChild("txtDressLimit");
             m_grhCloseComFightScore = (GGraph)comp.GetChild("grhCloseComFightScore");
             m_comValueInfo = (GComponent)comp.GetChild("comValueInfo");
+            m_comFieldValueInfo = (GComponent)comp.GetChild("comFieldValueInfo");
             m_comListType1 = (UI_comListType)UI_comListType.Create(comp.GetChild("comListType1"));
             m_comListType2 = (UI_comListType)UI_comListType.Create(comp.GetChild("comListType2"));
             m_partsList = (UI_PartsList)UI_PartsList.Create(comp.GetChild("partsList"));
@@ -91,12 +95,14 @@ namespace UI.DressUp
         }
         public void Dispose(bool disposeTarget = false)
         {
+            m_c1 = null;
             m_loaBg = null;
             m_touchPad = null;
             m_btnBack = null;
             m_txtDressLimit = null;
             m_grhCloseComFightScore = null;
             m_comValueInfo = null;
+            m_comFieldValueInfo = null;
             m_comListType1.Dispose();
             m_comListType1 = null;
             m_comListType2.Dispose();

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/DressUp/UI_DressUpFightUI.cs

@@ -40,6 +40,7 @@ namespace UI.DressUp
         public GGroup m_graContent;
         public GLoader m_loaGuide;
         public GButton m_btnSubmission;
+        public GButton m_btnNextCompetition;
         public GTextField m_txtMatch;
         public GTextField m_txtTeaPartyName;
         public const string URL = "ui://mbo439wbqsvd2m";
@@ -122,6 +123,7 @@ namespace UI.DressUp
             m_graContent = (GGroup)comp.GetChild("graContent");
             m_loaGuide = (GLoader)comp.GetChild("loaGuide");
             m_btnSubmission = (GButton)comp.GetChild("btnSubmission");
+            m_btnNextCompetition = (GButton)comp.GetChild("btnNextCompetition");
             m_txtMatch = (GTextField)comp.GetChild("txtMatch");
             m_txtTeaPartyName = (GTextField)comp.GetChild("txtTeaPartyName");
         }
@@ -166,6 +168,7 @@ namespace UI.DressUp
             m_graContent = null;
             m_loaGuide = null;
             m_btnSubmission = null;
+            m_btnNextCompetition = null;
             m_txtMatch = null;
             m_txtTeaPartyName = null;
             if(disposeTarget && target != null)

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/DressUp/UI_PartsListItem.cs

@@ -20,6 +20,7 @@ namespace UI.DressUp
         public GTextField m_txtTitle;
         public GButton m_btnAni;
         public GList m_ListTag;
+        public GImage m_lock;
         public const string URL = "ui://mbo439wbk6he26";
         public const string PACKAGE_NAME = "DressUp";
         public const string RES_NAME = "PartsListItem";
@@ -80,6 +81,7 @@ namespace UI.DressUp
             m_txtTitle = (GTextField)comp.GetChild("txtTitle");
             m_btnAni = (GButton)comp.GetChild("btnAni");
             m_ListTag = (GList)comp.GetChild("ListTag");
+            m_lock = (GImage)comp.GetChild("lock");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -96,6 +98,7 @@ namespace UI.DressUp
             m_txtTitle = null;
             m_btnAni = null;
             m_ListTag = null;
+            m_lock = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 8 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6c6013f628b5b2a4384163f7bebce39b
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 71 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Button1.cs

@@ -0,0 +1,71 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_Button1
+    {
+        public GButton target;
+        public GTextField m_name;
+        public const string URL = "ui://efym480mrjjsh";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "Button1";
+        private static UI_Button1 _proxy;
+
+        public static UI_Button1 Create(GObject gObject = null)
+        {
+            var ui = new UI_Button1();
+            if(gObject == null)
+            	ui.target =  (GButton)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GButton)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_Button1 Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_Button1();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GButton)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GButton)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_name = (GTextField)comp.GetChild("name");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_name = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Button1.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f2eeff12db5587140acd1aceca5382f9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 74 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComAllScore.cs

@@ -0,0 +1,74 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_ComAllScore
+    {
+        public GComponent target;
+        public GTextField m_txtTargetFightScore;
+        public GTextField m_txtMyFightScore;
+        public const string URL = "ui://efym480mo8tw15";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "ComAllScore";
+        private static UI_ComAllScore _proxy;
+
+        public static UI_ComAllScore Create(GObject gObject = null)
+        {
+            var ui = new UI_ComAllScore();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ComAllScore Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComAllScore();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_txtTargetFightScore = (GTextField)comp.GetChild("txtTargetFightScore");
+            m_txtMyFightScore = (GTextField)comp.GetChild("txtMyFightScore");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_txtTargetFightScore = null;
+            m_txtMyFightScore = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComAllScore.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a0343d86582da8d4eb7208810e8adfc2
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 72 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComAllScoreResult.cs

@@ -0,0 +1,72 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_ComAllScoreResult
+    {
+        public GComponent target;
+        public UI_ComAllScore m_comResult;
+        public const string URL = "ui://efym480mo8tw14";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "ComAllScoreResult";
+        private static UI_ComAllScoreResult _proxy;
+
+        public static UI_ComAllScoreResult Create(GObject gObject = null)
+        {
+            var ui = new UI_ComAllScoreResult();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ComAllScoreResult Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComAllScoreResult();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_comResult = (UI_ComAllScore)UI_ComAllScore.Create(comp.GetChild("comResult"));
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_comResult.Dispose();
+            m_comResult = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComAllScoreResult.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ac82915c0d4658a4c812bd4422ca954d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 87 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCard.cs

@@ -0,0 +1,87 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_ComCard
+    {
+        public GComponent target;
+        public Controller m_c1;
+        public UI_ComCardMask m_comCard;
+        public GLoader m_loaScore;
+        public GLoader m_loaRarity;
+        public GTextField m_wearRateText;
+        public GTextField m_txtCardName;
+        public const string URL = "ui://efym480mo8tw18";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "ComCard";
+        private static UI_ComCard _proxy;
+
+        public static UI_ComCard Create(GObject gObject = null)
+        {
+            var ui = new UI_ComCard();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ComCard Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComCard();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_c1 = comp.GetController("c1");
+            m_comCard = (UI_ComCardMask)UI_ComCardMask.Create(comp.GetChild("comCard"));
+            m_loaScore = (GLoader)comp.GetChild("loaScore");
+            m_loaRarity = (GLoader)comp.GetChild("loaRarity");
+            m_wearRateText = (GTextField)comp.GetChild("wearRateText");
+            m_txtCardName = (GTextField)comp.GetChild("txtCardName");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_c1 = null;
+            m_comCard.Dispose();
+            m_comCard = null;
+            m_loaScore = null;
+            m_loaRarity = null;
+            m_wearRateText = null;
+            m_txtCardName = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCard.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bd2927ac4edf92742864b71079704557
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 71 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCardMask.cs

@@ -0,0 +1,71 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_ComCardMask
+    {
+        public GComponent target;
+        public GLoader m_loaCard;
+        public const string URL = "ui://efym480mo8tw1a";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "ComCardMask";
+        private static UI_ComCardMask _proxy;
+
+        public static UI_ComCardMask Create(GObject gObject = null)
+        {
+            var ui = new UI_ComCardMask();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ComCardMask Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComCardMask();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_loaCard = (GLoader)comp.GetChild("loaCard");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_loaCard = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCardMask.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d74664789e0c3b846b0d338fd0e287a5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 72 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCardRecord.cs

@@ -0,0 +1,72 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_ComCardRecord
+    {
+        public GComponent target;
+        public UI_ComResultCardMask m_comCardmask;
+        public const string URL = "ui://efym480mo8tw10";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "ComCardRecord";
+        private static UI_ComCardRecord _proxy;
+
+        public static UI_ComCardRecord Create(GObject gObject = null)
+        {
+            var ui = new UI_ComCardRecord();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ComCardRecord Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComCardRecord();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_comCardmask = (UI_ComResultCardMask)UI_ComResultCardMask.Create(comp.GetChild("comCardmask"));
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_comCardmask.Dispose();
+            m_comCardmask = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComCardRecord.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1612cd35d4c1d334580a91621d6be1a9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 71 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComResultCardMask.cs

@@ -0,0 +1,71 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_ComResultCardMask
+    {
+        public GComponent target;
+        public GLoader m_loaCard;
+        public const string URL = "ui://efym480mo8tw11";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "ComResultCardMask";
+        private static UI_ComResultCardMask _proxy;
+
+        public static UI_ComResultCardMask Create(GObject gObject = null)
+        {
+            var ui = new UI_ComResultCardMask();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ComResultCardMask Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ComResultCardMask();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_loaCard = (GLoader)comp.GetChild("loaCard");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_loaCard = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ComResultCardMask.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c882db5f5a1dfca4b9502451e51fe192
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 72 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompChapter.cs

@@ -0,0 +1,72 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_CompChapter
+    {
+        public GComponent target;
+        public UI_CompChapterScroll m_compChapterScroll;
+        public const string URL = "ui://efym480mrjjs1";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "CompChapter";
+        private static UI_CompChapter _proxy;
+
+        public static UI_CompChapter Create(GObject gObject = null)
+        {
+            var ui = new UI_CompChapter();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_CompChapter Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_CompChapter();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_compChapterScroll = (UI_CompChapterScroll)UI_CompChapterScroll.Create(comp.GetChild("compChapterScroll"));
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_compChapterScroll.Dispose();
+            m_compChapterScroll = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompChapter.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 97df0f7699811484487718785762887a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 116 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompChapterScroll.cs

@@ -0,0 +1,116 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_CompChapterScroll
+    {
+        public GComponent target;
+        public UI_CompStoryLevelItem m_g11;
+        public UI_CompStoryLevelItem m_g10;
+        public UI_CompStoryLevelItem m_g9;
+        public UI_CompStoryLevelItem m_g8;
+        public UI_CompStoryLevelItem m_g7;
+        public UI_CompStoryLevelItem m_g6;
+        public UI_CompStoryLevelItem m_g5;
+        public UI_CompStoryLevelItem m_g4;
+        public UI_CompStoryLevelItem m_g3;
+        public UI_CompStoryLevelItem m_g2;
+        public UI_CompStoryLevelItem m_g1;
+        public UI_CompStoryLevelItem m_g0;
+        public const string URL = "ui://efym480mrjjs2";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "CompChapterScroll";
+        private static UI_CompChapterScroll _proxy;
+
+        public static UI_CompChapterScroll Create(GObject gObject = null)
+        {
+            var ui = new UI_CompChapterScroll();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_CompChapterScroll Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_CompChapterScroll();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_g11 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g11"));
+            m_g10 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g10"));
+            m_g9 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g9"));
+            m_g8 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g8"));
+            m_g7 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g7"));
+            m_g6 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g6"));
+            m_g5 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g5"));
+            m_g4 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g4"));
+            m_g3 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g3"));
+            m_g2 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g2"));
+            m_g1 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g1"));
+            m_g0 = (UI_CompStoryLevelItem)UI_CompStoryLevelItem.Create(comp.GetChild("g0"));
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_g11.Dispose();
+            m_g11 = null;
+            m_g10.Dispose();
+            m_g10 = null;
+            m_g9.Dispose();
+            m_g9 = null;
+            m_g8.Dispose();
+            m_g8 = null;
+            m_g7.Dispose();
+            m_g7 = null;
+            m_g6.Dispose();
+            m_g6 = null;
+            m_g5.Dispose();
+            m_g5 = null;
+            m_g4.Dispose();
+            m_g4 = null;
+            m_g3.Dispose();
+            m_g3 = null;
+            m_g2.Dispose();
+            m_g2 = null;
+            m_g1.Dispose();
+            m_g1 = null;
+            m_g0.Dispose();
+            m_g0 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompChapterScroll.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: be9125c0cd911844e9d708dcc8338039
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 92 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompStoryLevelItem.cs

@@ -0,0 +1,92 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_CompStoryLevelItem
+    {
+        public GButton target;
+        public Controller m_c1;
+        public GLoader m_fightBg;
+        public GTextField m_levelIcon;
+        public GTextField m_txtFightOrder;
+        public GGraph m_holder;
+        public GImage m_lock;
+        public Transition m_t0;
+        public Transition m_t1;
+        public const string URL = "ui://efym480mrjjs5";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "CompStoryLevelItem";
+        private static UI_CompStoryLevelItem _proxy;
+
+        public static UI_CompStoryLevelItem Create(GObject gObject = null)
+        {
+            var ui = new UI_CompStoryLevelItem();
+            if(gObject == null)
+            	ui.target =  (GButton)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GButton)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_CompStoryLevelItem Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_CompStoryLevelItem();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GButton)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GButton)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_c1 = comp.GetController("c1");
+            m_fightBg = (GLoader)comp.GetChild("fightBg");
+            m_levelIcon = (GTextField)comp.GetChild("levelIcon");
+            m_txtFightOrder = (GTextField)comp.GetChild("txtFightOrder");
+            m_holder = (GGraph)comp.GetChild("holder");
+            m_lock = (GImage)comp.GetChild("lock");
+            m_t0 = comp.GetTransition("t0");
+            m_t1 = comp.GetTransition("t1");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_c1 = null;
+            m_fightBg = null;
+            m_levelIcon = null;
+            m_txtFightOrder = null;
+            m_holder = null;
+            m_lock = null;
+            m_t0 = null;
+            m_t1 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_CompStoryLevelItem.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 31e7bc83aeb4c2542b84dfb52db7a351
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 71 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Component1.cs

@@ -0,0 +1,71 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_Component1
+    {
+        public GComponent target;
+        public GLoader m_guideTarget;
+        public const string URL = "ui://efym480mbc2226";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "Component1";
+        private static UI_Component1 _proxy;
+
+        public static UI_Component1 Create(GObject gObject = null)
+        {
+            var ui = new UI_Component1();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_Component1 Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_Component1();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_guideTarget = (GLoader)comp.GetChild("guideTarget");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_guideTarget = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Component1.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 16c7add426c3a4c4da0e6244b4556f3e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 71 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Component2.cs

@@ -0,0 +1,71 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_Component2
+    {
+        public GComponent target;
+        public GLoader m_guide;
+        public const string URL = "ui://efym480mbc2227";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "Component2";
+        private static UI_Component2 _proxy;
+
+        public static UI_Component2 Create(GObject gObject = null)
+        {
+            var ui = new UI_Component2();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_Component2 Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_Component2();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_guide = (GLoader)comp.GetChild("guide");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_guide = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_Component2.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d335c03b09d6c994e8519abf23c671af
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 105 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkLevelInfoUI.cs

@@ -0,0 +1,105 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_FieldWorkLevelInfoUI
+    {
+        public GComponent target;
+        public GLoader m_btnBg;
+        public GLoader m_loaderHead;
+        public GTextField m_txtTargetName;
+        public GTextField m_txtTitle;
+        public GTextField m_targetScore;
+        public GLoader m_scoreType;
+        public GTextField m_txtHighestScore;
+        public UI_Component1 m_guideTarget;
+        public GList m_listBonus;
+        public GButton m_btnStart;
+        public GLoader m_btnSkip;
+        public GList m_cardList;
+        public const string URL = "ui://efym480mo8twl";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "FieldWorkLevelInfoUI";
+        private static UI_FieldWorkLevelInfoUI _proxy;
+
+        public static UI_FieldWorkLevelInfoUI Create(GObject gObject = null)
+        {
+            var ui = new UI_FieldWorkLevelInfoUI();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_FieldWorkLevelInfoUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_FieldWorkLevelInfoUI();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_btnBg = (GLoader)comp.GetChild("btnBg");
+            m_loaderHead = (GLoader)comp.GetChild("loaderHead");
+            m_txtTargetName = (GTextField)comp.GetChild("txtTargetName");
+            m_txtTitle = (GTextField)comp.GetChild("txtTitle");
+            m_targetScore = (GTextField)comp.GetChild("targetScore");
+            m_scoreType = (GLoader)comp.GetChild("scoreType");
+            m_txtHighestScore = (GTextField)comp.GetChild("txtHighestScore");
+            m_guideTarget = (UI_Component1)UI_Component1.Create(comp.GetChild("guideTarget"));
+            m_listBonus = (GList)comp.GetChild("listBonus");
+            m_btnStart = (GButton)comp.GetChild("btnStart");
+            m_btnSkip = (GLoader)comp.GetChild("btnSkip");
+            m_cardList = (GList)comp.GetChild("cardList");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_btnBg = null;
+            m_loaderHead = null;
+            m_txtTargetName = null;
+            m_txtTitle = null;
+            m_targetScore = null;
+            m_scoreType = null;
+            m_txtHighestScore = null;
+            m_guideTarget.Dispose();
+            m_guideTarget = null;
+            m_listBonus = null;
+            m_btnStart = null;
+            m_btnSkip = null;
+            m_cardList = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkLevelInfoUI.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dc082e4d993d8b646ae3eb711574f735
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 99 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkLevelUI.cs

@@ -0,0 +1,99 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_FieldWorkLevelUI
+    {
+        public GComponent target;
+        public GLoader m_Bg;
+        public UI_CompChapter m_chapter;
+        public GLoader m_ruleBtn;
+        public UI_Button1 m_shopBtn;
+        public GList m_listTag;
+        public GButton m_BtnBack;
+        public UI_Button1 m_resetBtn;
+        public UI_Button1 m_passBtn;
+        public GGraph m_bgEffect;
+        public const string URL = "ui://efym480mrjjs0";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "FieldWorkLevelUI";
+        private static UI_FieldWorkLevelUI _proxy;
+
+        public static UI_FieldWorkLevelUI Create(GObject gObject = null)
+        {
+            var ui = new UI_FieldWorkLevelUI();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_FieldWorkLevelUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_FieldWorkLevelUI();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_Bg = (GLoader)comp.GetChild("Bg");
+            m_chapter = (UI_CompChapter)UI_CompChapter.Create(comp.GetChild("chapter"));
+            m_ruleBtn = (GLoader)comp.GetChild("ruleBtn");
+            m_shopBtn = (UI_Button1)UI_Button1.Create(comp.GetChild("shopBtn"));
+            m_listTag = (GList)comp.GetChild("listTag");
+            m_BtnBack = (GButton)comp.GetChild("BtnBack");
+            m_resetBtn = (UI_Button1)UI_Button1.Create(comp.GetChild("resetBtn"));
+            m_passBtn = (UI_Button1)UI_Button1.Create(comp.GetChild("passBtn"));
+            m_bgEffect = (GGraph)comp.GetChild("bgEffect");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_Bg = null;
+            m_chapter.Dispose();
+            m_chapter = null;
+            m_ruleBtn = null;
+            m_shopBtn.Dispose();
+            m_shopBtn = null;
+            m_listTag = null;
+            m_BtnBack = null;
+            m_resetBtn.Dispose();
+            m_resetBtn = null;
+            m_passBtn.Dispose();
+            m_passBtn = null;
+            m_bgEffect = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkLevelUI.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 11ff5dbd589c6754aa06becaa814d34c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 82 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkRoundResultUI.cs

@@ -0,0 +1,82 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_FieldWorkRoundResultUI
+    {
+        public GComponent target;
+        public UI_ComAllScoreResult m_ComResult;
+        public GList m_list;
+        public GLoader m_loaResule;
+        public UI_Component2 m_guide;
+        public const string URL = "ui://efym480mo8tww";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "FieldWorkRoundResultUI";
+        private static UI_FieldWorkRoundResultUI _proxy;
+
+        public static UI_FieldWorkRoundResultUI Create(GObject gObject = null)
+        {
+            var ui = new UI_FieldWorkRoundResultUI();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_FieldWorkRoundResultUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_FieldWorkRoundResultUI();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_ComResult = (UI_ComAllScoreResult)UI_ComAllScoreResult.Create(comp.GetChild("ComResult"));
+            m_list = (GList)comp.GetChild("list");
+            m_loaResule = (GLoader)comp.GetChild("loaResule");
+            m_guide = (UI_Component2)UI_Component2.Create(comp.GetChild("guide"));
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_ComResult.Dispose();
+            m_ComResult = null;
+            m_list = null;
+            m_loaResule = null;
+            m_guide.Dispose();
+            m_guide = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkRoundResultUI.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f8a4b134a4a27d94fae7b5103a9c72a7
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 77 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkRoundTips.cs

@@ -0,0 +1,77 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_FieldWorkRoundTips
+    {
+        public GComponent target;
+        public GLoader m_icon;
+        public GGraph m_effect;
+        public Transition m_t0;
+        public const string URL = "ui://efym480mjw0925";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "FieldWorkRoundTips";
+        private static UI_FieldWorkRoundTips _proxy;
+
+        public static UI_FieldWorkRoundTips Create(GObject gObject = null)
+        {
+            var ui = new UI_FieldWorkRoundTips();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_FieldWorkRoundTips Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_FieldWorkRoundTips();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_icon = (GLoader)comp.GetChild("icon");
+            m_effect = (GGraph)comp.GetChild("effect");
+            m_t0 = comp.GetTransition("t0");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_icon = null;
+            m_effect = null;
+            m_t0 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_FieldWorkRoundTips.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e2a636882a8e1064db78393609cb04ca
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 84 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ListResultItem.cs

@@ -0,0 +1,84 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_ListResultItem
+    {
+        public GComponent target;
+        public GLoader m_loaScore;
+        public GTextField m_txtMyScore;
+        public GComponent m_comMyHead;
+        public UI_ComCardRecord m_loaMyCard;
+        public GTextField m_txtRound;
+        public const string URL = "ui://efym480mo8twy";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "ListResultItem";
+        private static UI_ListResultItem _proxy;
+
+        public static UI_ListResultItem Create(GObject gObject = null)
+        {
+            var ui = new UI_ListResultItem();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ListResultItem Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ListResultItem();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_loaScore = (GLoader)comp.GetChild("loaScore");
+            m_txtMyScore = (GTextField)comp.GetChild("txtMyScore");
+            m_comMyHead = (GComponent)comp.GetChild("comMyHead");
+            m_loaMyCard = (UI_ComCardRecord)UI_ComCardRecord.Create(comp.GetChild("loaMyCard"));
+            m_txtRound = (GTextField)comp.GetChild("txtRound");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_loaScore = null;
+            m_txtMyScore = null;
+            m_comMyHead = null;
+            m_loaMyCard.Dispose();
+            m_loaMyCard = null;
+            m_txtRound = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ListResultItem.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1a8a83bc40d7d154b9fd8699431a53c3
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 77 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ListRewardItem.cs

@@ -0,0 +1,77 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.FieldWork
+{
+    public partial class UI_ListRewardItem
+    {
+        public GComponent target;
+        public GComponent m_comItem;
+        public GTextField m_txtName;
+        public GTextField m_txtOwner;
+        public const string URL = "ui://efym480mo8twv";
+        public const string PACKAGE_NAME = "FieldWork";
+        public const string RES_NAME = "ListRewardItem";
+        private static UI_ListRewardItem _proxy;
+
+        public static UI_ListRewardItem Create(GObject gObject = null)
+        {
+            var ui = new UI_ListRewardItem();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_ListRewardItem Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_ListRewardItem();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_comItem = (GComponent)comp.GetChild("comItem");
+            m_txtName = (GTextField)comp.GetChild("txtName");
+            m_txtOwner = (GTextField)comp.GetChild("txtOwner");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_comItem = null;
+            m_txtName = null;
+            m_txtOwner = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/FieldWork/UI_ListRewardItem.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d35b6f8b98e8b9940878349a8cfe47ee
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 102 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/InstanceZones/UI_InstanceSamllUI.cs

@@ -0,0 +1,102 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using FairyGUI;
+
+namespace UI.InstanceZones
+{
+    public partial class UI_InstanceSamllUI
+    {
+        public GComponent target;
+        public UI_ButtonModle7 m_btn1;
+        public UI_ButtonModle9 m_btnStudio;
+        public UI_ButtonModle9 m_btnTravel;
+        public UI_ButtonModle9 m_btnPoem;
+        public GButton m_btnPoemGudie;
+        public UI_ButtonModle9 m_btnField;
+        public UI_ButtonModle9 m_btnArena;
+        public UI_ButtonModle9 m_btnFieldWork;
+        public Transition m_t0;
+        public const string URL = "ui://ez8qotvcvnmh9fzm";
+        public const string PACKAGE_NAME = "InstanceZones";
+        public const string RES_NAME = "InstanceSamllUI";
+        private static UI_InstanceSamllUI _proxy;
+
+        public static UI_InstanceSamllUI Create(GObject gObject = null)
+        {
+            var ui = new UI_InstanceSamllUI();
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static UI_InstanceSamllUI Proxy(GObject gObject = null)
+        {
+            if(_proxy == null)
+            {
+                _proxy = new UI_InstanceSamllUI();
+            }
+            var ui = _proxy;
+            if(gObject == null)
+            	ui.target =  (GComponent)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);
+            else
+            	ui.target =  (GComponent)gObject;
+            ui.Init(ui.target);
+            return ui;
+        }
+
+        public static void ProxyEnd()
+        {
+            if (_proxy != null)
+            {
+                _proxy.Dispose();
+            }
+        }
+
+        public static void ClearProxy()
+        {
+            ProxyEnd();
+            _proxy = null;
+        }
+
+        private void Init(GComponent comp)
+        {
+            m_btn1 = (UI_ButtonModle7)UI_ButtonModle7.Create(comp.GetChild("btn1"));
+            m_btnStudio = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnStudio"));
+            m_btnTravel = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnTravel"));
+            m_btnPoem = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnPoem"));
+            m_btnPoemGudie = (GButton)comp.GetChild("btnPoemGudie");
+            m_btnField = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnField"));
+            m_btnArena = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnArena"));
+            m_btnFieldWork = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnFieldWork"));
+            m_t0 = comp.GetTransition("t0");
+        }
+        public void Dispose(bool disposeTarget = false)
+        {
+            m_btn1.Dispose();
+            m_btn1 = null;
+            m_btnStudio.Dispose();
+            m_btnStudio = null;
+            m_btnTravel.Dispose();
+            m_btnTravel = null;
+            m_btnPoem.Dispose();
+            m_btnPoem = null;
+            m_btnPoemGudie = null;
+            m_btnField.Dispose();
+            m_btnField = null;
+            m_btnArena.Dispose();
+            m_btnArena = null;
+            m_btnFieldWork.Dispose();
+            m_btnFieldWork = null;
+            m_t0 = null;
+            if(disposeTarget && target != null)
+            {
+                target.RemoveFromParent();
+                target.Dispose();
+            }
+            target = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/InstanceZones/UI_InstanceSamllUI.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 124446bb46ff4d04aa7744abed24746d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 4 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/InstanceZones/UI_InstanceZonesUI.cs

@@ -17,6 +17,7 @@ namespace UI.InstanceZones
         public GButton m_btnPoemGudie;
         public UI_ButtonModle9 m_btnField;
         public UI_ButtonModle9 m_btnArena;
+        public UI_InstanceSamllUI m_instance;
         public GGraph m_eff;
         public GButton m_btnBack;
         public GComponent m_valueBar;
@@ -78,6 +79,7 @@ namespace UI.InstanceZones
             m_btnPoemGudie = (GButton)comp.GetChild("btnPoemGudie");
             m_btnField = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnField"));
             m_btnArena = (UI_ButtonModle9)UI_ButtonModle9.Create(comp.GetChild("btnArena"));
+            m_instance = (UI_InstanceSamllUI)UI_InstanceSamllUI.Create(comp.GetChild("instance"));
             m_eff = (GGraph)comp.GetChild("eff");
             m_btnBack = (GButton)comp.GetChild("btnBack");
             m_valueBar = (GComponent)comp.GetChild("valueBar");
@@ -101,6 +103,8 @@ namespace UI.InstanceZones
             m_btnField = null;
             m_btnArena.Dispose();
             m_btnArena = null;
+            m_instance.Dispose();
+            m_instance = null;
             m_eff = null;
             m_btnBack = null;
             m_valueBar = null;

+ 6 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Main/UI_ListCardFightItem.cs

@@ -20,6 +20,8 @@ namespace UI.Main
         public UI_ComDodgeFightStar m_dodgeStar3;
         public GImage m_useIcon;
         public GGraph m_effect;
+        public GTextField m_wearRateText;
+        public GGroup m_fieldwork;
         public Transition m_t0;
         public const string URL = "ui://mfvz4q8kr1a99f";
         public const string PACKAGE_NAME = "Main";
@@ -81,6 +83,8 @@ namespace UI.Main
             m_dodgeStar3 = (UI_ComDodgeFightStar)UI_ComDodgeFightStar.Create(comp.GetChild("dodgeStar3"));
             m_useIcon = (GImage)comp.GetChild("useIcon");
             m_effect = (GGraph)comp.GetChild("effect");
+            m_wearRateText = (GTextField)comp.GetChild("wearRateText");
+            m_fieldwork = (GGroup)comp.GetChild("fieldwork");
             m_t0 = comp.GetTransition("t0");
         }
         public void Dispose(bool disposeTarget = false)
@@ -103,6 +107,8 @@ namespace UI.Main
             m_dodgeStar3 = null;
             m_useIcon = null;
             m_effect = null;
+            m_wearRateText = null;
+            m_fieldwork = null;
             m_t0 = null;
             if(disposeTarget && target != null)
             {

+ 1 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/CommonSProxy.cs

@@ -59,6 +59,7 @@ namespace GFGGame
                     SuitFosterProxy.SendGetSuitInfos().Coroutine();
                     FieldSProxy.ReqFieldInstanceInfos().Coroutine();
                     ArenaSproxy.ReqArenaInfos().Coroutine();
+                    FieldWorkSproxy.ReqFieldWorkInfos().Coroutine();
                     EnduringGiftBoxSProxy.ReqGetAllGiftBagRebateStatus().Coroutine();
                     LuckyBoxSProxy.ReqGetLuckyBoxRotatingInfo().Coroutine();
                     RoleLimitSProxy.ReqUnitLimitInfos().Coroutine();

+ 306 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/FieldWorkSproxy.cs

@@ -0,0 +1,306 @@
+using System;
+using System.Collections.Generic;
+using ET;
+
+namespace GFGGame
+{
+    public class NoticeFieldWorkChange : AMHandler<SC_RankChange>
+    {
+        protected override async ETTask Run(Session session, SC_RankChange message)
+        {
+            await ETTask.CompletedTask;
+        }
+    }
+    public static class FieldWorkSproxy
+    {
+        //获取爬塔信息
+        public static async ETTask ReqFieldWorkInfos()
+        {
+            S2C_GetGetCimbingTowerInfo response = null;
+            response = (S2C_GetGetCimbingTowerInfo)await MessageHelper.SendToServer(new C2S_GetCimbingTowerInfo());
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;
+                    FieldWorkDataManager.Instance.Tag = response.WeekTags ;
+                    FieldWorkDataManager.Instance.DressupList.Clear();
+                    FieldWorkDataManager.Instance.HistoryDressupList = response.WeekUserItems;
+                    FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;
+                    FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Clear();
+                    foreach (var item in response.CimbingTowerLevelInfoList)
+                    {
+                        FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(item.LevelId,item);
+                    }
+                    AddDressup(response.EquipAIds, 0, 0);
+                    AddDressup(response.EquipBIds, 0, 1);
+                    AddDressup(response.EquipCIds, 0, 2);
+                    EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
+                }
+            }
+        }
+        public static void AddDressup(List<int> itemList,int scoreType,int i)
+        {
+            FightData roleData = GetFightRoleData(itemList, FieldWorkDataManager.Instance.roleInfo, scoreType);
+            roleData.leagueSkillScore = FieldWorkDataManager.Instance.GetAllSkillScore(scoreType);
+            FightDataManager.Instance.SetItemScoreList(roleData);
+            ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType);
+            ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData);
+            FieldWorkDataManager.Instance.DressupList.Add(roleData);
+        }
+        //更换搭配
+        public static async ETTask<bool> ReqChangeFieldWorkDressup()
+        {
+            List<List<int>> dress = new List<List<int>>();
+            dress = FieldWorkDataManager.Instance.GetDressAndCard();
+            S2C_CimbingTowerSaveCollocation response = null;
+            response = (S2C_CimbingTowerSaveCollocation)await MessageHelper.SendToServer(new C2S_CimbingTowerSaveCollocation()
+            {
+                EquipAIds = dress[0],
+                EquipBIds = dress[1],
+                EquipCIds = dress[2],
+            }) ;
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+        //更换单个搭配
+        public static async ETTask<bool> ReqChangeFieldWorkDressupOne(int index,int cardId ,List<int> dressList)
+        {
+            List<int> dress = new List<int>();
+            dress = dressList;
+            dress.Add(cardId);
+            List<List<int>> dressAll = new List<List<int>>();
+            dressAll = FieldWorkDataManager.Instance.GetDressAndCard();
+            dressAll[index] = dress;
+            S2C_CimbingTowerSaveCollocation response = null;
+            response = (S2C_CimbingTowerSaveCollocation)await MessageHelper.SendToServer(new C2S_CimbingTowerSaveCollocation()
+            {
+                EquipAIds = dressAll[0],
+                EquipBIds = dressAll[1],
+                EquipCIds = dressAll[2],
+            });
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+        //关卡挑战
+        public static async ETTask<bool> ReqFieldWorkFight(int levelId)
+        {
+            List<List<int>> dress = new List<List<int>>();
+            dress = FieldWorkDataManager.Instance.GetDressAndCard();
+            S2C_CimbingTowerFightLevel response = null;
+            response = (S2C_CimbingTowerFightLevel)await MessageHelper.SendToServer(new C2S_CimbingTowerFightLevel()
+            {
+                LevelId = levelId,
+                FightScoreList = FieldWorkDataManager.Instance.myScore,
+                EquipAIds = dress[0],
+                EquipBIds = dress[1],
+                EquipCIds = dress[2],
+            }) ;
+            if (response != null)
+            {
+                FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;
+                    FieldWorkDataManager.Instance.HistoryDressupList = response.WeekUserItems;
+                    if (response.CimbingTowerLevelInfo.IsPass)
+                    {
+                        if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(response.CimbingTowerLevelInfo.LevelId))
+                        {
+                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[response.CimbingTowerLevelInfo.LevelId] = response.CimbingTowerLevelInfo;
+                        }
+                        else
+                        {
+                            //PromptController.Instance.ShowFloatTextPrompt("已通过,自动清除搭配!");
+                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(response.CimbingTowerLevelInfo.LevelId, response.CimbingTowerLevelInfo);
+                        }
+
+                       int limit = CimbingTowerCfgArray.Instance.dataArray[0].UseLimit;
+                       bool isDelete = false;
+                       for(int i=0;i<FieldWorkDataManager.Instance.DressupList.Count;i++)
+                       {
+                            FieldWorkDataManager.Instance.DressupList[i].itemList.Clear();
+                            FieldWorkDataManager.Instance.DressupList[i].cardId = 0;
+                            isDelete = true;                        
+                       }
+                        FieldWorkDataManager.Instance.BonusList = response.BonusList;
+                        EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
+                        return true;
+                    }
+                    else
+                    {
+                        if (response.CimbingTowerLevelInfo != null)
+                        {
+                            if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(response.CimbingTowerLevelInfo.LevelId))
+                            {
+                                FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[response.CimbingTowerLevelInfo.LevelId] = response.CimbingTowerLevelInfo;
+                            }
+                            else
+                            {
+                                FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(response.CimbingTowerLevelInfo.LevelId, response.CimbingTowerLevelInfo);
+                            }
+                        }
+                        int limit = CimbingTowerCfgArray.Instance.dataArray[0].UseLimit;
+                        bool isDelete = false;
+                        for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)
+                        {
+                            foreach (var item in FieldWorkDataManager.Instance.CardAbrasionInfoList)
+                            {
+                                if (item.Card == FieldWorkDataManager.Instance.DressupList[i].cardId)
+                                {
+                                    if (item.UseNum >= limit)
+                                    {
+                                        FieldWorkDataManager.Instance.DressupList[i].cardId = 0;
+                                        isDelete = true;
+                                    }
+                                }
+                            }
+                        }
+                        if (isDelete)
+                        {
+                            PromptController.Instance.ShowFloatTextPrompt("词牌磨损率过高已自动解除佩戴!");
+                            EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
+                        }
+                        return false;
+                    }
+                }
+                else
+                {
+                    if (response.CimbingTowerLevelInfo != null)
+                    {
+                        if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(response.CimbingTowerLevelInfo.LevelId))
+                        {
+                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[response.CimbingTowerLevelInfo.LevelId] = response.CimbingTowerLevelInfo;
+                        }
+                        else
+                        {
+                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(response.CimbingTowerLevelInfo.LevelId, response.CimbingTowerLevelInfo);
+                        }
+                    }
+                    int limit = CimbingTowerCfgArray.Instance.dataArray[0].UseLimit;
+                    bool isDelete = false;
+                    for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)
+                    {
+                        foreach (var item in FieldWorkDataManager.Instance.CardAbrasionInfoList)
+                        {
+                            if (item.Card == FieldWorkDataManager.Instance.DressupList[i].cardId)
+                            {
+                                if (item.UseNum >= limit)
+                                {
+                                    FieldWorkDataManager.Instance.DressupList[i].cardId = 0;
+                                    isDelete = true;
+                                }
+                            }
+                        }
+                    }
+                    if (isDelete)
+                    {
+                        PromptController.Instance.ShowFloatTextPrompt("词牌磨损率过高已自动解除佩戴!");
+                        EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
+                    }
+                    return false;
+                }
+            }
+            return false;
+        }
+        //一键跳过
+        public static async ETTask<bool> ReqFieldWorkOneClickPass()
+        {
+            S2C_CimbingTowerOneClickPass response = null;
+            response = (S2C_CimbingTowerOneClickPass)await MessageHelper.SendToServer(new C2S_CimbingTowerOneClickPass(){ });
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;
+                    FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Clear();
+                    foreach (var item in response.CimbingTowerLevelInfoList)
+                    {
+                        if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(item.LevelId))
+                        {
+                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[item.LevelId] = item;
+                        }
+                        else
+                        {
+                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(item.LevelId, item);
+                        }
+                    }
+                    BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList));
+                    EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
+                    return true;
+                }
+            }
+            return false;
+        }
+        //重置
+        public static async ETTask<bool> ReqFieldWorkReset()
+        {
+            S2C_CimbingTowerResetLevel response = null;
+            response = (S2C_CimbingTowerResetLevel)await MessageHelper.SendToServer(new C2S_CimbingTowerResetLevel(){});
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    FieldWorkDataManager.Instance.HistoryDressupList.Clear();
+                    FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;
+                    foreach (var item in response.CimbingTowerLevelInfoList)
+                    {
+                        if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(item.LevelId))
+                        {
+                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[item.LevelId] = item;
+                        }
+                        else
+                        {
+                            FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(item.LevelId, item);
+                        }
+                    }
+                    for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)
+                    {
+                        FieldWorkDataManager.Instance.DressupList[i].itemList.Clear();
+                        FieldWorkDataManager.Instance.DressupList[i].cardId = 0;
+                    }
+                    EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
+                    return true;
+                }
+            }
+            return false;
+        }
+        private static FightData GetFightRoleData(List<int> dressupProto, OtherRoleInfoData roleInfo, int scoreType)
+        {
+            FightData fightData = new FightData();
+            fightData.name = roleInfo.roleName;
+            fightData.scoreType = scoreType;
+            fightData.baseScore = RoleLevelCfgArray.Instance.GetCfg(roleInfo.roleLv).baseScore;
+            fightData.tags = FieldWorkDataManager.Instance.Tag.ToArray();
+            fightData.type = FightTargetType.PLAYER;
+            fightData.headId = roleInfo.headId;
+            List<int> dressList = new List<int>();
+            foreach(var item in dressupProto)
+            {
+                ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(item);
+                if(itemCfg != null && itemCfg.itemType == ConstItemType.DRESS_UP)
+                {
+                    dressList.Add(item);
+                }
+                else if(itemCfg != null && itemCfg.itemType == ConstItemType.CARD)
+                {
+                    fightData.cardId = item;
+                }
+            }
+            fightData.itemList = dressList;
+            return fightData;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/FieldWorkSproxy.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 74b9ab43d4f097e4db32164174836637
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/ActivityDay7/ActivityDay7View.cs

@@ -45,7 +45,7 @@ namespace GFGGame
 
             bringToFontOnClick = false;
             _ui.m_btnBack.onClick.Add(OnBtnBackClick);
-            _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("cp_beijing");
+            _ui.m_loabg.url = ResPathUtil.GetBgImgPath("cp_beijing");
             _ui.m_DayList.itemRenderer = DayListRenderer;
             _ui.m_comTaskList.m_TaskList.itemRenderer = TaskListRenderer;
             _ui.m_tip.onClick.Add(RuleController.ShowRuleView);

+ 123 - 28
GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaDressInfoView.cs

@@ -55,6 +55,7 @@ namespace GFGGame
 
             _ui.m_c2.onChanged.Add(OnThemeChange);
             _ui.m_btnBack.onClick.Add(OnClickBtnBack);
+            _ui.m_btnConfire.onClick.Add(OnClickConfire);
             _ui.m_btnDress.onClick.Add(OnBtnDressClick);
             _ui.m_btnRecommend.onClick.Add(OnBtnRecommendClick);
             _ui.m_comValueInfo.m_btnFightScoreRule.onClick.Add(OnBtnFightScoreRule);
@@ -76,16 +77,17 @@ namespace GFGGame
             _roleDatas = (this.viewData as object[])[2] as List<FightData>;
             _openViewName = (this.viewData as object[])[3].ToString();
 
-            _ui.m_grhCloseComFightScore.visible = false;
-            _ui.m_c1.selectedIndex = _roleType;
-            _ui.m_c2.selectedIndex = _themeIndex;
             if (_sceneObject == null)
             {
                 _sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath("SceneArenaDressUp"));
                 MyDressUpHelper.dressUpObj.setSceneObj(_sceneObject, false, false);
             }
+            _ui.m_grhCloseComFightScore.visible = false;
+            _ui.m_c1.selectedIndex = _roleType;
+            _ui.m_c2.selectedIndex = _themeIndex;
 
-            UpdateView();
+            UpdateView();  
+            
             Timers.inst.AddUpdate(CheckGuide);
         }
 
@@ -100,7 +102,9 @@ namespace GFGGame
 
             _ui.m_grhCloseComFightScore.visible = false;
             _ui.m_comValueInfo.m_c2.selectedIndex = 0;
+            _ui.m_btnConfire.touchable = true;
             Timers.inst.Remove(CheckGuide);
+            Timers.inst.Remove(SetConfireTouch);
         }
 
         protected override void RemoveEventListener()
@@ -112,6 +116,10 @@ namespace GFGGame
         {
             //ViewManager.GoBackFrom(typeof(ArenaDressInfoView).FullName); //返回竞技场主界面
             this.Hide();
+            if (_roleType == FightRoleType.FieldWork)
+            {
+                ViewManager.Show<FieldWorkLevelInfoView>(new object[] { FieldWorkDataManager.Instance.currentLevelID });
+            }           
             //this.OnHide();
             //ViewManager.Show<ArenaView>(null, new object[] { typeof(MainUIView).FullName, this.viewData });
             //if (!string.IsNullOrEmpty(_openViewName))
@@ -119,7 +127,19 @@ namespace GFGGame
             //    ViewManager.Show(_openViewName); //打开来源界面:如历史记录、排行榜
             //}
         }
-
+        private void SetConfireTouch(object parm)
+        {
+            _ui.m_btnConfire.touchable = true;
+            Timers.inst.Remove(SetConfireTouch);
+        }
+        private void OnClickConfire()
+        {
+            ViewManager.GoBackFrom(typeof(ArenaDressInfoView).FullName);
+            if (_roleType == FightRoleType.FieldWork)
+            {
+                ViewManager.Show<FieldWorkLevelInfoView>(new object[] { FieldWorkDataManager.Instance.currentLevelID });
+            }
+        }
         private void OnThemeChange()
         {
             _themeIndex = _ui.m_c2.selectedIndex;
@@ -127,7 +147,10 @@ namespace GFGGame
             {
                 ArenaDataManager.Instance.SelectThemeIndex = _themeIndex;
             }
-
+            else if(_roleType == FightRoleType.FieldWork)
+            {
+                FieldWorkDataManager.Instance.SelectThemeIndex = _themeIndex;
+            }
             UpdateView();
         }
 
@@ -144,35 +167,68 @@ namespace GFGGame
 
         private void OnBtnDressClick()
         {
-            ViewManager.Show<ArenaDressUpFightView>();
+            if(_roleType != 2)
+            {
+                ViewManager.Show<ArenaDressUpFightView>();
+            }
+            else
+            {
+                ViewManager.Show<FieldWorkDressFightView>();
+            }
         }
 
         private async void OnBtnRecommendClick()
         {
             //标记,本次推荐已经穿戴过的词牌,防止重复。
             var wearCardIds = new List<int>();
-            for (int i = 0; i < ArenaDataManager.Instance.ThemeList.Count; i++)
+            if (_roleType == FightRoleType.MINE)
             {
-                int scoreType = ArenaDataManager.Instance.ThemeList[i];
-                FightData roleData = ArenaDataManager.Instance.DressupList[i];
-                roleData.scoreType = scoreType;
-                roleData.itemList = ArenaDataManager.Instance.GetRecommentItemList(scoreType, roleData.tags);
-                roleData.cardId =
-                    ArenaDataManager.Instance.GetRecommentCardId(scoreType, roleData.itemList, wearCardIds);
-                ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType);
-                ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData);
-                _roleDatas = ArenaDataManager.Instance.DressupList;
-                List<long> fightScoreDatas = ArenaDataManager.Instance.GetFightScoreList(_roleDatas);
-                bool result = await ArenaSproxy.ReqChangeArenaDressup(i, roleData.cardId, roleData.itemList , fightScoreDatas);
-                if (!result)
+                for (int i = 0; i < ArenaDataManager.Instance.ThemeList.Count; i++)
                 {
-                    PromptController.Instance.ShowFloatTextPrompt("保存失败");
-                    return;
+                    int scoreType = ArenaDataManager.Instance.ThemeList[i];
+                    FightData roleData = ArenaDataManager.Instance.DressupList[i];
+                    roleData.scoreType = scoreType;
+                    roleData.itemList = ArenaDataManager.Instance.GetRecommentItemList(scoreType, roleData.tags);
+                    roleData.cardId =
+                        ArenaDataManager.Instance.GetRecommentCardId(scoreType, roleData.itemList, wearCardIds);
+                    ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType);
+                    ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData);
+                    _roleDatas = ArenaDataManager.Instance.DressupList;
+                    List<long> fightScoreDatas = ArenaDataManager.Instance.GetFightScoreList(_roleDatas);
+                    bool result = await ArenaSproxy.ReqChangeArenaDressup(i, roleData.cardId, roleData.itemList, fightScoreDatas);
+                    if (!result)
+                    {
+                        PromptController.Instance.ShowFloatTextPrompt("保存失败");
+                        return;
+                    }
+                }         
+            }
+            else if (_roleType == FightRoleType.FieldWork)
+            {
+                _ui.m_btnConfire.touchable = false;
+                Timers.inst.Add(1.0f,1,SetConfireTouch);
+                for (int i = 0; i < FieldWorkDataManager.Instance.ThemeList.Count; i++)
+                {
+                    int scoreType = FieldWorkDataManager.Instance.ThemeList[i];
+                    FightData roleData = FieldWorkDataManager.Instance.DressupList[i];
+                    roleData.scoreType = scoreType;
+                    roleData.itemList = ArenaDataManager.Instance.GetFieldRecommentItemList(scoreType, roleData.tags);
+                    roleData.cardId =
+                        ArenaDataManager.Instance.GetRecommentCardId(scoreType, roleData.itemList, wearCardIds);
+                    ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType);
+                    ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData);
+                    _roleDatas = FieldWorkDataManager.Instance.DressupList;
+                    List<long> fightScoreDatas = ArenaDataManager.Instance.GetFightScoreList(_roleDatas);
+                    bool result = await FieldWorkSproxy.ReqChangeFieldWorkDressup();
+                    if (!result)
+                    {
+                        PromptController.Instance.ShowFloatTextPrompt("保存失败");
+                        return;
+                    }
                 }
             }
 
             wearCardIds.Clear();
-
             PromptController.Instance.ShowFloatTextPrompt("保存成功");
 
             UpdateView();
@@ -183,8 +239,24 @@ namespace GFGGame
             // _itemList = _roleDatas[_themeIndex].itemList;
             _tags = _roleDatas[_themeIndex].tags;
             UpdateCardInfo(_roleDatas[_themeIndex].cardId);
-            ArenaViewManager.Instance.UpdateValue(_ui.m_comValueInfo.target, _themeIndex, _roleDatas);
-
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
+            {
+                _ui.m_c4.selectedIndex = 0;
+                ArenaViewManager.Instance.UpdateValue(_ui.m_comValueInfo.target, _themeIndex, _roleDatas);
+            }
+            else
+            {
+                _ui.m_c4.selectedIndex = 1;
+                FieldWorkDataManager.Instance.UpdateValue(_ui.m_comFieldValueInfo.target, _themeIndex, _roleDatas);
+                for (int i = 0; i < FieldWorkDataManager.Instance.ThemeList.Count; i++)
+                {
+                    int scoreType = FieldWorkDataManager.Instance.ThemeList[i];
+                    FightData roleData = FieldWorkDataManager.Instance.DressupList[i];
+                    ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType);
+                    ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData);
+                }
+            }
+                
             MyDressUpHelper.dressUpObj.PutOnItemList(_roleDatas[_themeIndex].itemList);
             _itemList.Clear();
             for (int i = 0; i < _roleDatas[_themeIndex].itemList.Count; i++)
@@ -212,7 +284,15 @@ namespace GFGGame
             ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cardId);
             _ui.m_comCard.m_txtCardName.text = itemCfg.name;
             _ui.m_comCard.m_comCard.m_loaCard.url = ResPathUtil.GetCardIconPath(itemCfg.res);
-            _ui.m_comCard.m_loaScore.url = ResPathUtil.GetScorePath(ArenaDataManager.Instance.ThemeList[_themeIndex]);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
+            {
+                _ui.m_comCard.m_loaScore.url = ResPathUtil.GetScorePath(ArenaDataManager.Instance.ThemeList[_themeIndex]);
+            }
+            else
+            {
+                _ui.m_comCard.m_loaScore.url = ResPathUtil.GetScorePath(FieldWorkDataManager.Instance.ThemeList[_themeIndex]);
+            }
+
             RarityIconController.UpdateRarityIcon(_ui.m_comCard.m_loaRarity, cardId, false);
         }
 
@@ -222,7 +302,15 @@ namespace GFGGame
             item.m_iconSelected.visible = true;
             ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_itemList[index]);
             item.m_txtTitle.text = itemCfg.name;
-            item.m_ScoreType.url = ResPathUtil.GetScorePath(ArenaDataManager.Instance.ThemeList[_themeIndex]);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
+            {
+                item.m_ScoreType.url = ResPathUtil.GetScorePath(ArenaDataManager.Instance.ThemeList[_themeIndex]);
+            }
+            else
+            {
+                item.m_ScoreType.url = ResPathUtil.GetScorePath(FieldWorkDataManager.Instance.ThemeList[_themeIndex]);
+            }
+            
             item.m_icon.url = ResPathUtil.GetIconPath(itemCfg.res, "png");
             item.m_txtScore.text = _roleDatas[_themeIndex].itemScoreDic[_itemList[index]].ToString();
             RarityIconController.UpdateRarityIcon(item.m_rarity, _itemList[index], false);
@@ -248,7 +336,8 @@ namespace GFGGame
 
         private void CheckGuide(object param)
         {
-            if (GuideDataManager.IsGuideFinish(ConstGuideId.ARENA_OPEN) <= 0)
+            if (GuideDataManager.IsGuideFinish(ConstGuideId.ARENA_OPEN) <= 0
+                ||(GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork && InstanceZonesDataManager.CheckLevelPass(FieldWorkDataManager.Instance.guideLevelID)))
             {
                 UpdateToCheckGuide(null);
             }
@@ -264,6 +353,12 @@ namespace GFGGame
 
             GuideController.TryGuide(_ui.m_btnRecommend, ConstGuideId.ARENA_OPEN, 6, "");
             GuideController.TryGuide(_ui.m_btnBack, ConstGuideId.ARENA_OPEN, 7, "搭配好啦,挑个对手比拼吧~");
+            if((GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork))
+            {
+                GuideController.TryGuide(_ui.m_btnDress, ConstGuideId.FIELD, 6, "三套战斗方案可自由搭配且在同一关卡中服装可重复使用,让我们前往搭配吧!");
+                GuideController.TryGuide(_ui.m_btnRecommend, ConstGuideId.FIELD, 12, "也可点击【推荐搭配】按钮快速搭配三套方案(同一个关卡中服装可重复使用)!");
+                GuideController.TryGuide(_ui.m_btnBack, ConstGuideId.FIELD, 13, "让我们前往开启挑战吧!");
+            }
         }
 
         protected override void TryCompleteGuide()

+ 2 - 1
GameClient/Assets/Game/HotUpdate/Views/DressUp/ArenaDressUpFightView.cs

@@ -154,11 +154,13 @@ namespace GFGGame
             }
             MyDressUpHelper.dressUpObj.PutOnItemList(_roleData.itemList);
             _ui.m_txtDressLimit.text = string.Format("饰品穿戴限制:{0}/{1}", MyDressUpHelper.GetCurrentOrnamentCount(), GlobalCfgArray.globalCfg.dressLimitCount);
+            _ui.m_c1.selectedIndex = 0;
             UpdateStepBtn(true);
             UpdateValueInfo();
             SendLog();
 
             cardId = _roleData.cardId;
+
         }
 
         protected override void OnHide()
@@ -999,6 +1001,5 @@ namespace GFGGame
         {
 
         }
-
     }
 }

+ 2 - 1
GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpFightView.cs

@@ -1164,6 +1164,7 @@ namespace GFGGame
                 _listLongPress.Add(longPressGesture);
             }
 
+            listItem.m_lock.visible = false;
             listItem.m_btnAni.visible = false;
             listItem.m_icon.url = ResPathUtil.GetIconPath(iconRes, ext);
             listItem.m_ScoreType.url = "ui://CommonGame/kp_sx_" + scoreType;
@@ -1231,7 +1232,7 @@ namespace GFGGame
                 listItem.m_ListTag.numItems = itemCfg.tagsArr.Length;
                 listItem.m_itemType.selectedIndex = 1;
             }
-
+            listItem.m_lock.visible = false;
             listItem.m_icon.url = ResPathUtil.GetIconPath(iconRes, ext);
             listItem.m_txtTitle.text = partName;
             listItem.target.data = id;

+ 2 - 0
GameClient/Assets/Game/HotUpdate/Views/DressUp/DressUpView.cs

@@ -855,6 +855,7 @@ namespace GFGGame
             listItem.m_grpScore.visible = false;
             //listItem.m_ScoreType.visible = true;
             listItem.m_imgNeed.visible = false;
+            listItem.m_lock.visible = false;
 
             UI_PartsListItem.ProxyEnd();
 
@@ -903,6 +904,7 @@ namespace GFGGame
             listItem.m_imgNeed.visible = false;
             bool isNew = DressUpMenuItemDataManager.CheckIsDressUpItemNew(id);
             listItem.m_imgNew.visible = isNew;
+            listItem.m_lock.visible = false;
             if (isNew)
             {
                 ItemProxy.ReqSetItemRead(id).Coroutine();

+ 8 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a43f295d58cabc841b9e3808c458d951
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 392 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkChooseCardView.cs

@@ -0,0 +1,392 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using FairyGUI;
+using UI.CommonGame;
+using UI.Main;
+using UnityEngine;
+
+namespace GFGGame
+{
+    public class FieldWorkChooseCardView : BaseWindow
+    {
+        private UI_StoryCardChooseUI _ui;
+        private List<CardData> cardList = new List<CardData>();
+        private static int _scoreType;
+        private int _selectedIndex = 0;
+        private int _cardId = 0; //记录打开界面时的竞技场词牌id
+        private int _skillId = 0;
+
+        private List<EffectUI> _effects = new List<EffectUI>();
+        private GComponent _comSelected;
+
+        private EffectUI _effectUI1;
+        private EffectUI _effectUI2;
+        private EffectUI _effectUI3;
+
+        public override void Dispose()
+        {
+            EffectUIPool.Recycle(_effectUI1);
+            _effectUI1 = null;
+            EffectUIPool.Recycle(_effectUI2);
+            _effectUI2 = null;
+            EffectUIPool.Recycle(_effectUI3);
+            _effectUI3 = null;
+
+            //EffectUIPool.Recycle(_effectUI3);
+            //_effectUI3 = null;
+            if (_comSelected != null)
+            {
+                _comSelected.RemoveFromParent();
+                _comSelected.Dispose();
+            }
+
+            for (int i = 0; i < _effects.Count; i++)
+            {
+                EffectUIPool.Recycle(_effects[i]);
+                _effects[i] = null;
+            }
+
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            base.Dispose();
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_StoryCardChooseUI.PACKAGE_NAME;
+            _ui = UI_StoryCardChooseUI.Create();
+            this.viewCom = _ui.target;
+            this.viewCom.Center();
+            this.modal = true;
+            viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+
+            _ui.m_listCard.SetVirtual();
+            _ui.m_listCard.itemRenderer = RenderListCardItem;
+            _ui.m_listCard.onClickItem.Add(OnListCardItemClick);
+
+            _ui.m_listSkill.itemRenderer = RenderListSkillItem;
+
+            _ui.m_btnCancel.onClick.Add(OnBtnCancelClick);
+            _ui.m_btnConfirm.onClick.Add(OnBtnComfirmClick);
+            _ui.m_btnUpCard.onClick.Add(OnBtnUpCardClikc);
+
+            _comSelected = UIPackage.CreateObject(UI_MainUI.PACKAGE_NAME, "ComCardSelect").asCom;
+            //_effectUI3 = EffectUIPool.CreateEffectUI(_comSelected.GetChild("holder").asGraph, "ui_fight_new", "kp_Select");
+            AddEffect();
+        }
+
+        protected override void OnShown()
+        {
+            base.OnShown();
+
+            _scoreType = (int)this.viewData;
+
+            cardList = CardDataManager.GetCardListByRoleType(0);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                //其他主题带的cardIds
+                var otherThemeCardIds = new HashSet<int>();
+                for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)
+                {
+                    if (FieldWorkDataManager.Instance.SelectThemeIndex == i)
+                    {
+                        continue;
+                    }
+
+                    otherThemeCardIds.Add(FieldWorkDataManager.Instance.DressupList[i].cardId);
+                }
+
+                //去掉已经在其他主题装配的cardList
+                cardList = cardList.Where(a => !otherThemeCardIds.Contains(a.id)).ToList();
+            }
+
+            float dressListAllAcore =
+                FightDataManager.Instance.GetDressListAllScore(MyDressUpHelper.dressUpObj.itemList, _scoreType);
+            cardList = FightDataManager.Instance.SortCardList(cardList, dressListAllAcore, _scoreType);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                cardList = FieldWorkDataManager.Instance.SortCardList(cardList);
+            }
+            _ui.m_listCard.numItems = cardList.Count;
+            _ui.m_listCard.selectedIndex = 0;
+
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                _cardId = FieldWorkDataManager.Instance.DressupList[FieldWorkDataManager.Instance.SelectThemeIndex].cardId;
+            }
+
+            if (cardList.Count == 0)
+            {
+                OnCardSelected(0);
+            }
+            else
+            {
+                OnCardSelected(cardList[0].id);
+            }
+
+
+            UpdateView(0);
+
+            Timers.inst.AddUpdate(CheckGuide);
+        }
+
+        private void UpdateView(int index)
+        {
+            // CardData cardData = cardList[index];
+            _ui.m_loaScore.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + _scoreType);
+            int cardId;
+            if (cardList.Count == 0)
+            {
+                cardId = 0;
+                _ui.m_noCardTips.visible = true;
+                _ui.m_noCardTips.text = "暂无可用词牌";
+                _ui.m_listSkill.numItems = cardList.Count;
+            }
+            else
+            {
+                _ui.m_noCardTips.visible = false;
+                cardId = cardList[index].id;
+            }
+            _ui.m_txtName.text = "无";
+
+            PassivitySkillCfg cfg = ScoreSystemData.Instance.GetShowSkillCfg(cardId);
+            if (cfg == null) return;
+            _ui.m_txtName.text = cardList[index].itemCfg.name;
+
+            List<PassivitySkillCfg> skillCfgs = PassivitySkillCfgArray.Instance.GetCfgsBycardId(cardId);
+            _ui.m_listSkill.data = skillCfgs;
+            _ui.m_listSkill.numItems = skillCfgs.Count;
+            _ui.m_comSkillTips.target.visible = false;
+            _selectedIndex = index;
+            int childIndex = _ui.m_listCard.ItemIndexToChildIndex(index);
+            _ui.m_listCard.GetChildAt(childIndex).asCom.AddChild(_comSelected);
+        }
+
+        private void RenderListSkillItem(int index, GObject obj)
+        {
+            List<PassivitySkillCfg> skillCfgs = obj.parent.data as List<PassivitySkillCfg>;
+            UI_ListCardSkillItem item = UI_ListCardSkillItem.Proxy(obj);
+            item.m_loaSkill.url = ResPathUtil.GetCardSkillPath(skillCfgs[index].res);
+            item.m_txtLv.text = SkillDataManager.Instance
+                .GetCardSkillLv(skillCfgs[index].cardId, skillCfgs[index].skillId).ToString();
+            if (item.target.data == null)
+                item.target.onClick.Add(OnSkillItemClick);
+
+            item.target.data = index; // skillCfgs[index];
+            UI_ListCardSkillItem.ProxyEnd();
+        }
+
+        private void OnSkillItemClick(EventContext context)
+        {
+            GObject gObject = context.sender as GObject;
+            int index = (int)gObject.data;
+            List<PassivitySkillCfg> skillCfgs =
+                PassivitySkillCfgArray.Instance.GetCfgsBycardId(cardList[_selectedIndex].id);
+
+            PassivitySkillCfg skillCfg = skillCfgs[index];
+            _ui.m_comSkillTips.target.visible = _skillId != skillCfg.skillId;
+
+            Vector2 posInA = _ui.m_listSkill.GetChildAt(index).asCom.position;
+            Vector2 posInB = _ui.m_listSkill.TransformPoint(posInA, _ui.target);
+            _ui.m_comSkillTips.target.SetPosition(posInB.x, posInB.y + 110, 0);
+
+            _ui.m_comSkillTips.m_txtName.text = skillCfg.name;
+            int skillLv = SkillDataManager.Instance.GetCardSkillLv(skillCfg.cardId, skillCfg.skillId);
+            PassivitySkillLvlCfg skillLvlCfg =
+                PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv, skillCfg.skillId);
+            _ui.m_comSkillTips.m_txtSkillTips.text = skillLvlCfg.describe;
+
+            _skillId = skillCfg.skillId;
+        }
+
+        private void RenderListCardItem(int index, GObject obj)
+        {
+            CardData cardData = cardList[index];
+            UI_ListCardFightItem item = UI_ListCardFightItem.Proxy(obj); // obj as GButton;
+            item.m_txtName.text = cardData.itemCfg.name;
+            item.m_comCardMask.m_loaCard.asLoader.url =
+                ResPathUtil.GetCardIconPath(cardData.resources[cardData.resIndex]);
+            item.m_txtLv.text = string.Format("{0}级", cardData.lv);
+            // item.m_loaRarity.url = ResPathUtil.GetCommonGameResPath("kp_sxing_x_" + cardData.itemCfg.rarity);
+            RarityIconController.UpdateRarityIcon(item.m_loaRarity, cardData.itemCfg.id,
+                false); // ResPathUtil.GetCommonGameResPath("kp_sxing_x_" + data.itemCfg.rarity);
+            item.m_loaMainScore.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + (cardData.itemCfg.mainScore));
+            item.m_loaBorder.url = "ui://CommonGame/kp_kuang_" + cardData.itemCfg.rarity;
+            // UI_ComStar comStar = UI_ComStar.Proxy(item.m_comStar);
+
+            int starLevelDodge = cardData.star / 6;
+            item.m_starNumType.selectedIndex = cardData.itemCfg.starDescArr.Length - 1;
+            for (int i = 0; i < 4; i++)
+            {
+                UI_ComDodgeFightStar dodgeStar = UI_ComDodgeFightStar.Proxy(item.target.GetChild("dodgeStar" + i));
+                dodgeStar.m_lightType.selectedIndex = (starLevelDodge > i) ? 1 : 0;
+                UI_ComDodgeFightStar.ProxyEnd();
+            }
+
+            // comStar.m_c1.selectedIndex = cardData.star;
+            if (_effects.Count <= index)
+            {
+                //EffectUI _effectUI = EffectUIPool.CreateEffectUI(item.m_comEff.m_holder, "ui_fight_new", "kp_Select");
+                // _effects.Add(_effectUI);
+            }
+            if (index == 0)
+            {
+                item.m_useIcon.visible = true;
+            }
+            else
+            {
+                item.m_useIcon.visible = false;
+            }
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                item.m_fieldwork.visible = true;
+                item.m_useIcon.visible = false;
+                item.m_wearRateText.text = FieldWorkDataManager.Instance.GetCardAbrasion(cardData.itemCfg.id).ToString() + "%";
+            }
+            else
+            {
+                item.m_fieldwork.visible = false;
+            }
+            item.target.asCom.RemoveChild(_comSelected);
+            if (_selectedIndex == index)
+            {
+                item.target.asCom.AddChild(_comSelected);
+            }
+
+            UI_ListCardFightItem.ProxyEnd();
+            // UI_ComStar.ProxyEnd();
+        }
+
+        private void OnListCardItemClick(EventContext context)
+        {
+            GObject obj = context.data as GObject;
+            UI_ListCardFightItem item = UI_ListCardFightItem.Proxy(obj);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                if (FieldWorkDataManager.Instance.GetCardAbrasion(cardList[_ui.m_listCard.selectedIndex].id) >= 100)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("卡牌磨损程度已无法使用!");
+                    return;
+                }
+            }
+            item.m_t0.Play();
+            EffectUIPool.Recycle(_effectUI3);
+            _effectUI3 = null;
+            _effectUI3 = EffectUIPool.CreateEffectUI(item.m_effect, "ui_KP", "KP_Select");
+
+            UpdateView(_ui.m_listCard.selectedIndex);
+
+            OnCardSelected(cardList[_ui.m_listCard.selectedIndex].id);
+
+        }
+
+        private void OnCardSelected(int cardId)
+        {
+            if (cardId == 0)
+            {
+                return;
+            }
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                FieldWorkDataManager dataManager = FieldWorkDataManager.Instance;
+                dataManager.DressupList[dataManager.SelectThemeIndex].cardId = cardId;
+                ArenaDataManager.Instance.SetMineFightAttr(dataManager.DressupList[dataManager.SelectThemeIndex],
+                    dataManager.ThemeList[dataManager.SelectThemeIndex]);
+                EventAgent.DispatchEvent(ConstMessage.CARD_SELECTED);
+            }
+        }
+
+        private void OnBtnUpCardClikc()
+        {
+            if (cardList.Count == 0) return;
+            cardList[_ui.m_listCard.selectedIndex].fromUIType = typeof(StoryCardChoose).FullName;
+            ViewManager.Show<CardFosterView>(cardList[_ui.m_listCard.selectedIndex]);
+            this.Hide();
+        }
+
+        private void OnBtnComfirmClick()
+        {
+            //搭配时没有词牌特殊处理
+            if (cardList.Count == 0)
+            {
+                if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+                {
+                    ViewManager.Show<FieldWorkDressFightView>(new object[] { FightRoleType.FieldWork, 0, FieldWorkDataManager.Instance.DressupList, "" }, true);
+                }
+                this.Hide();
+                return;
+            }
+
+            int cardId = cardList[_ui.m_listCard.selectedIndex].id;
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                if (FieldWorkDataManager.Instance.GetCardAbrasion(cardId) >= 100)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("当前词牌损耗度过高无法使用!");
+                    //return;
+                }
+                FieldWorkDataManager dataManager = FieldWorkDataManager.Instance;
+                dataManager.DressupList[dataManager.SelectThemeIndex].itemList = MyDressUpHelper.dressUpObj.itemList;
+                FieldWorkSproxy.ReqChangeFieldWorkDressupOne(dataManager.SelectThemeIndex, cardId, MyDressUpHelper.dressUpObj.itemList).Coroutine();
+                ViewManager.GoBackFrom(typeof(FieldWorkDressFightView).FullName);
+                PromptController.Instance.ShowFloatTextPrompt("保存成功");
+            }
+            else
+            {
+                
+            }
+
+            this.Hide();
+        }
+
+
+        private void OnBtnCancelClick()
+        {
+            OnCardSelected(_cardId);
+            this.Hide();
+        }
+
+        protected override void OnHide()
+        {
+            base.OnHide();
+            _skillId = 0;
+            _ui.m_listCard.ScrollToView(0);
+            Timers.inst.Remove(CheckGuide);
+        }
+
+        private void CheckGuide(object param)
+        {
+            if ((GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork && InstanceZonesDataManager.CheckLevelPass(FieldWorkDataManager.Instance.guideLevelID)))
+            {
+                UpdateToCheckGuide(null);
+            }
+            else
+            {
+                Timers.inst.Remove(CheckGuide);
+            }
+        }
+
+        protected override void UpdateToCheckGuide(object param)
+        {
+            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
+            if ((GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork))
+            {
+                GuideController.TryGuide(_ui.m_listCard, ConstGuideId.FIELD, 10, "战斗结束时使用过的词牌会根据对应的关卡难度形成不同程度损耗关卡的难度合理搭配阵容!", 0);
+                GuideController.TryGuide(_ui.m_btnConfirm, ConstGuideId.FIELD, 11, "确认!");
+            }
+        }
+        private void AddEffect()
+        {
+            //邊框左上角特效
+            _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up");
+
+            //邊框右下角特效
+            _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down");
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkChooseCardView.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f2946301ee9cd6346be7c59b91baf437
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1098 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkDressFIghtView.cs

@@ -0,0 +1,1098 @@
+using UI.DressUp;
+using FairyGUI;
+using UnityEngine;
+using System.Collections.Generic;
+
+namespace GFGGame
+{
+    public class FieldWorkDressFightView : BaseWindow
+    {
+        private UI_ArenaDressUpFightUI _ui;
+        // private DressUpObj _dressUpData = new DressUpObj();
+        private FieldWorkDataManager _dataManager;
+        private FightData _roleData;
+        public List<int> _itemList;//记录打开界面时的穿戴数据(保存后会更新)
+        private float listType1X = 0;
+        private float partsListX = 0;
+        private float partsListScrollingPosY = 0;
+        private DressUpListType currentListType;
+        private int[] _currentList2;
+        private GameObject _sceneObject;
+        private List<int> _currentList3 = new List<int>();
+        private List<int> _currentList4 = new List<int>();
+        private int _currentMenuType;
+        private int _currentSuitId;
+
+        //暂存cardid
+        private int cardId;
+        // private StoryLevelCfg _levelCfg;
+        // private StoryFightCfg _fightCfg;
+
+        private const int SORT_BY_HIGH_SCORE = 0;
+        private const int SORT_BY_LOW_SCORE = 1;
+        private int _scoreIndex = SORT_BY_HIGH_SCORE;
+        private List<LongPressGesture> _listLongPress = new List<LongPressGesture>();
+
+
+        public override void Dispose()
+        {
+            if (_sceneObject != null)
+            {
+                PrefabManager.Instance.Restore(_sceneObject);
+                _sceneObject = null;
+            }
+            for (int i = 0; i < _listLongPress.Count; i++)
+            {
+                _listLongPress[i].Dispose();
+            }
+            // _dressUpData.Dispose();
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            base.Dispose();
+        }
+
+        protected override void Init()
+        {
+            base.Init();
+            packageName = UI_ArenaDressUpFightUI.PACKAGE_NAME;
+            _ui = UI_ArenaDressUpFightUI.Create();
+            viewCom = _ui.target;
+            isfullScreen = true;
+            isReturnView = true;
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            _ui.m_btnLastStep.visible = true;
+            _ui.m_btnNextStep.visible = true;
+            _ui.m_btnSearch.visible = true;
+            _ui.m_partsList.m_comboBoxRarity.items = new string[] { "高分优先", "低分优先" };
+            _ui.m_partsListSearch.m_comboBoxRarity.items = new string[] { "高分优先", "低分优先" };
+            InitLists();
+            _ui.m_partsList.m_comboBoxRarity.onChanged.Add(OnComboBoxRarityChanged);
+            _ui.m_partsListSearch.m_comboBoxRarity.onChanged.Add(OnSearchComboBoxRarityChanged);
+            _ui.m_btnBack.onClick.Add(OnClickBtnBack);
+
+            _ui.m_comListType1.m_listType.onClickItem.Add(OnClickListType1Item);
+            _ui.m_comListType2.m_listType.onClickItem.Add(OnClickListType2Item);
+            _ui.m_partsList.m_list.onClickItem.Add(OnClickPartsListItem);
+            _ui.m_partsList2.m_list.onClickItem.Add(OnClickSuitPartsListItem);
+            _ui.m_partsListSearch.m_list.onClickItem.Add(OnClickSearchPartsListItem);
+
+            _ui.m_touchPad.onClick.Add(OnTouchPad);
+            _ui.m_btnDelete.onClick.Add(OnClickBtnDelete);
+            _ui.m_btnNext.onClick.Add(OnClickBtnNext);
+            _ui.m_btnSearch.onClick.Add(OnClickBtnSearch);
+            _ui.m_btnLastStep.onClick.Add(OnClickBtnLastStep);
+            _ui.m_btnNextStep.onClick.Add(OnClickBtnNextStep);
+            // _ui.m_comValueInfo.m_btnFightScoreRule.onClick.Add(OnBtnFightScoreRule);
+            _ui.m_comValueInfo.GetChild("btnFightScoreRule").onClick.Add(OnBtnFightScoreRule);
+            _ui.m_grhCloseComFightScore.onClick.Add(OnCloseComFightScore);
+
+            _ui.m_partsList2.m_comboBoxRarity.visible = false;
+            _ui.m_partsList2.m_imgTop.visible = true;
+            _ui.m_partsList.m_imgTop.visible = false;
+
+        }
+
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.DRESS_SEARCH, UpdateSerch);
+            EventAgent.AddEventListener(ConstMessage.DRESS_FILTER, UpdateSerch);
+            EventAgent.AddEventListener(ConstMessage.CARD_SELECTED, UpdateValueInfo);
+            EventAgent.AddEventListener(ConstMessage.DRESS_FILTER_RESET, DressResetSerch);
+        }
+
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.DRESS_SEARCH, UpdateSerch);
+            EventAgent.RemoveEventListener(ConstMessage.DRESS_FILTER, UpdateSerch);
+            EventAgent.RemoveEventListener(ConstMessage.CARD_SELECTED, UpdateValueInfo);
+            EventAgent.RemoveEventListener(ConstMessage.DRESS_FILTER_RESET, DressResetSerch);
+        }
+
+        protected override void OnShown()
+        {
+            base.OnShown();
+            _dataManager = FieldWorkDataManager.Instance;
+            _roleData = _dataManager.DressupList[_dataManager.SelectThemeIndex];
+            _itemList = new List<int>(_roleData.itemList);
+            InstanceZonesDataManager.currentScoreType = _dataManager.ThemeList[_dataManager.SelectThemeIndex];
+            InstanceZonesDataManager.currentFightTags = _dataManager.DressupList[_dataManager.SelectThemeIndex].tags;
+
+
+            _scoreIndex = _ui.m_partsList.m_comboBoxRarity.selectedIndex;
+
+            _ui.m_grhCloseComFightScore.visible = false;
+            //一级菜单
+            _ui.m_comListType1.m_listType.RemoveChildrenToPool();
+            _ui.m_comListType1.m_listType.numItems = DressUpMenuItemCfg1Array.Instance.dataArray.Length - 3;
+            float maxHeight = _ui.target.height - _ui.m_comListType1.m_listType.y - DressUpView.BOTTOM_BLANK;
+            if (_ui.m_comListType1.m_listType.height > maxHeight)
+            {
+                _ui.m_comListType1.m_listType.height = maxHeight;
+            }
+            _ui.m_comListType1.target.x = _ui.target.width;
+            _ui.m_comListType2.target.x = _ui.target.width;
+            _ui.m_partsList.target.x = _ui.target.width;
+            _ui.m_partsList2.target.x = _ui.target.width;
+            _ui.m_partsListSearch.target.x = _ui.target.width;
+            this.showListType1();
+            if (_sceneObject == null)
+            {
+                _sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath("SceneArenaDressUpFight"));
+                MyDressUpHelper.dressUpObj.setSceneObj(_sceneObject, false, false, null, true);
+                MyDressUpHelper.dressUpObj.AddOrRemove(180001, false);
+                // GameObject copyObj = _sceneObject.transform.Find("CopyRole").gameObject;
+                // _dressUpData.setSceneObj(copyObj);
+            }
+            MyDressUpHelper.dressUpObj.PutOnItemList(_roleData.itemList);
+            _ui.m_txtDressLimit.text = string.Format("饰品穿戴限制:{0}/{1}", MyDressUpHelper.GetCurrentOrnamentCount(), GlobalCfgArray.globalCfg.dressLimitCount);
+            _ui.m_c1.selectedIndex = 1;
+            UpdateStepBtn(true);
+            UpdateValueInfo();
+            SendLog();
+
+            cardId = _roleData.cardId;
+
+            Timers.inst.AddUpdate(CheckGuide);
+        }
+
+        protected override void OnHide()
+        {
+            base.OnHide();
+
+            if (_sceneObject != null)
+            {
+                PrefabManager.Instance.Restore(_sceneObject);
+                _sceneObject = null;
+            }
+
+            DressUpMenuItemDataManager.Clear();
+            MyDressUpHelper.ResetMemory();
+
+            _ui.m_grhCloseComFightScore.visible = false;
+            _ui.m_comValueInfo.GetController("c2").selectedIndex = 0;
+
+        }
+
+        private void OnClickBtnBack()
+        {
+            bool isSave = _itemList.Count == MyDressUpHelper.dressUpObj.itemList.Count;
+            if (isSave)
+            {
+                for (int i = 0; i < _itemList.Count; i++)
+                {
+                    int itemId = MyDressUpHelper.dressUpObj.itemList[i];
+                    if (_itemList.IndexOf(itemId) < 0)
+                    {
+                        isSave = false;
+                        break;
+                    }
+                }
+            }
+            if (!isSave)
+            {
+                AlertUI.Show("当前穿搭尚未保存,是否确定退出?")
+                  .SetLeftButton(true, "否").SetRightButton(true, "是", (object data) =>
+                  {
+                      _roleData.cardId = cardId;
+                      GoBackToView();
+                  });
+            }
+            else
+            {
+                GoBackToView();
+            }
+        }
+        private void GoBackToView()
+        {
+            _roleData.itemList = _itemList;
+            FightDataManager.Instance.SetItemScoreList(_roleData);
+            ScoreSystemData.Instance.SetEquipScoresWithPartId(_roleData);
+            //ViewManager.GoBackFrom(typeof(ArenaDressUpFightView).FullName);
+            //ViewManager.Show<ArenaDressInfoView>(new object[] { FightRoleType.MINE, 0, ArenaDataManager.Instance.DressupList, "" });
+            this.Hide();
+        }
+        private void OnBtnFightScoreRule()
+        {
+            _ui.m_grhCloseComFightScore.visible = true;
+        }
+        private void OnCloseComFightScore()
+        {
+            _ui.m_comValueInfo.GetController("c2").selectedIndex = 0;
+            _ui.m_grhCloseComFightScore.visible = false;
+        }
+        private void OnClickBtnHome()
+        {
+            AlertUI.Show("是否返回?")
+           .SetLeftButton(true, "否").SetRightButton(true, "是", (object data) =>
+           {
+               GameController.GoBackToMainView();
+           });
+        }
+
+        private void UpdateValueInfo()
+        {
+            _roleData.itemList = MyDressUpHelper.dressUpObj.itemList;
+            FightDataManager.Instance.SetItemScoreList(_roleData);
+            ScoreSystemData.Instance.SetEquipScoresWithPartId(_roleData);
+            FieldWorkDataManager.Instance.UpdateValue(_ui.m_comFieldValueInfo, _dataManager.SelectThemeIndex, _dataManager.DressupList);
+
+        }
+
+        private void OnClickListType1Item(EventContext context)
+        {
+
+            // GuideController.HideGuide();
+            GObject typeItem = context.data as GObject;
+            int order = (int)typeItem.data;
+            DressUpMenuItemCfg1 item1 = DressUpMenuItemCfg1Array.Instance.dataArray[order - 1];
+            if (item1.subMenusArr.Length > 0)
+            {
+                this.showListType2(item1.subMenusArr);
+            }
+            else
+            {
+                if (this.showListParts(item1.type) == false)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("未获得此类部件");
+                    return;
+                }
+                this.showListParts(item1.type);
+
+            }
+            this.hideListType1();
+            UpdateListPartsSelected();
+        }
+
+        private void OnClickListType2Item(EventContext context)
+        {
+
+            GObject typeItem = context.data as GObject;
+            int order = (int)typeItem.data;
+            DressUpMenuItemCfg2 item2 = DressUpMenuItemCfg2Array.Instance.dataArray[order - 1];
+
+            if (this.showListParts(item2.type) == false)
+            {
+
+                PromptController.Instance.ShowFloatTextPrompt("未获得此类部件");
+                return;
+
+            }
+            this.hideListType2();
+        }
+
+        private void OnClickSearchPartsListItem(EventContext context)
+        {
+            if (ViewManager.isViewOpen(typeof(DressUpItemTipsView).FullName))
+            {
+                return;
+            }
+            GObject listItem = context.data as GObject;
+            int id = (int)listItem.data;
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                if (_currentMenuType == (int)ConstDressUpItemType.TAO_ZHUANG)
+                {
+                    int[] suitParts = SuitCfgArray.Instance.GetCfg(id).partsArr;
+                    foreach (var suitpart in suitParts)
+                    {
+                        foreach (var itemDressID in FieldWorkDataManager.Instance.HistoryDressupList)
+                        {
+                            if (suitpart == itemDressID)
+                            {
+                                PromptController.Instance.ShowFloatTextPrompt("该套装包含已使用服装,无法使用!");
+                                return;
+                            }
+                        }
+                    }
+                }
+                else
+                {
+                    foreach (var itemDressID in FieldWorkDataManager.Instance.HistoryDressupList)
+                    {
+                        if (itemDressID == id)
+                        {
+                            PromptController.Instance.ShowFloatTextPrompt("该服装本周使用次数已达上限!");
+                            return;
+                        }
+                    }
+                }
+            }
+            bool isOrnament = DressUpMenuItemCfg1Array.Instance.CheckIsOrnamentsType(id);
+            bool isDress = MyDressUpHelper.dressUpObj.CheckDressUpItemIsOn(id);
+            bool isHasSame = MyDressUpHelper.dressUpObj.CheckSameTypeIsOn(id);
+            bool isMaxCount = MyDressUpHelper.GetCurrentOrnamentCount() >= GlobalCfgArray.globalCfg.dressLimitCount;
+            if (isOrnament && !isDress && !isHasSame && isMaxCount)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("饰品穿戴数量已达上限");
+                return;
+            }
+            MyDressUpHelper.dressUpObj.AddOrRemove(id, true);
+
+            _ui.m_txtDressLimit.text = string.Format("饰品穿戴限制:{0}/{1}", MyDressUpHelper.GetCurrentOrnamentCount(), GlobalCfgArray.globalCfg.dressLimitCount);
+            UpdateStepBtn(true);
+            // UpdateSearchListPartsSelected();
+            UpdateValueInfo();
+
+        }
+        private void OnClickPartsListItem(EventContext context)
+        {
+            if (ViewManager.isViewOpen(typeof(DressUpItemTipsView).FullName))
+            {
+                return;
+            }
+            GObject listItem = context.data as GObject;
+            int id = (int)listItem.data;
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                if (_currentMenuType == (int)ConstDressUpItemType.TAO_ZHUANG)
+                {
+                    int[] suitParts = SuitCfgArray.Instance.GetCfg(id).partsArr;
+                    foreach(var suitpart in suitParts)
+                    {
+                        foreach (var itemDressID in FieldWorkDataManager.Instance.HistoryDressupList)
+                        {
+                            if (suitpart == itemDressID)
+                            {
+                                PromptController.Instance.ShowFloatTextPrompt("该套装包含已使用服装,无法使用!");
+                                return;
+                            }
+                        }
+                    }
+                }
+                else
+                {
+                    foreach (var itemDressID in FieldWorkDataManager.Instance.HistoryDressupList)
+                    {
+                        if (itemDressID == id)
+                        {
+                            PromptController.Instance.ShowFloatTextPrompt("该服装本周使用次数已达上限");
+                            return;
+                        }
+                    }
+                }
+            }
+            if (_currentMenuType == (int)ConstDressUpItemType.TAO_ZHUANG)
+            {
+                partsListScrollingPosY = _ui.m_partsList.m_list.scrollPane.scrollingPosY;
+                this.showListParts2(id);
+                this.hideListParts();
+                MyDressUpHelper.dressUpObj.PutOnItemList(MyDressUpHelper.GetSuitFightItems(id));
+            }
+            else
+            {
+                bool isOrnament = DressUpMenuItemCfg1Array.Instance.CheckIsOrnamentsType(id);
+                bool isDress = MyDressUpHelper.dressUpObj.CheckDressUpItemIsOn(id);
+                bool isHasSame = MyDressUpHelper.dressUpObj.CheckSameTypeIsOn(id);
+                bool isMaxCount = MyDressUpHelper.GetCurrentOrnamentCount() >= GlobalCfgArray.globalCfg.dressLimitCount;
+                if (isOrnament && !isDress && !isHasSame && isMaxCount)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("饰品穿戴数量已达上限");
+                    return;
+                }
+                MyDressUpHelper.dressUpObj.AddOrRemove(id, true);
+            }
+            _ui.m_txtDressLimit.text = string.Format("饰品穿戴限制:{0}/{1}", MyDressUpHelper.GetCurrentOrnamentCount(), GlobalCfgArray.globalCfg.dressLimitCount);
+            UpdateStepBtn(true);
+            // UpdateListPartsSelected();
+            // UpdateListSuitPartsSelected();
+            UpdateValueInfo();
+
+        }
+        private void OnClickSuitPartsListItem(EventContext context)
+        {
+            if (ViewManager.isViewOpen(typeof(DressUpItemTipsView).FullName))
+            {
+                return;
+            }
+            GObject listItem = (GObject)context.data as GObject;
+            int id = (int)listItem.data;
+
+            bool isOrnament = DressUpMenuItemCfg1Array.Instance.CheckIsOrnamentsType(id);
+            bool isDress = MyDressUpHelper.dressUpObj.CheckDressUpItemIsOn(id);
+            bool isHasSame = MyDressUpHelper.dressUpObj.CheckSameTypeIsOn(id);
+            bool isMaxCount = MyDressUpHelper.GetCurrentOrnamentCount() >= GlobalCfgArray.globalCfg.dressLimitCount;
+            if (isOrnament && !isDress && !isHasSame && isMaxCount)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("饰品穿戴数量已达上限");
+                return;
+            }
+
+            if (!DressUpMenuItemDataManager.CheckHasItem(id))
+            {
+                PromptController.Instance.ShowFloatTextPrompt("还未获得这件装扮");
+                return;
+            }
+            MyDressUpHelper.dressUpObj.AddOrRemove(id, true);
+            _ui.m_txtDressLimit.text = string.Format("饰品穿戴限制:{0}/{1}", MyDressUpHelper.GetCurrentOrnamentCount(), GlobalCfgArray.globalCfg.dressLimitCount);
+            UpdateStepBtn(true);
+            // UpdateListSuitPartsSelected();
+            UpdateValueInfo();
+        }
+        private void UpdateStepBtn(bool isAdd, int suitId = 0)
+        {
+            if (isAdd)
+            {
+                MyDressUpHelper.AddMemoryDressup();
+            }
+            _ui.m_btnLastStep.enabled = MyDressUpHelper.stepIndex > 0;
+            _ui.m_btnNextStep.enabled = MyDressUpHelper.stepIndex < MyDressUpHelper.dressMemory.Count - 1;
+
+            UpdateListPartsSelected();
+            UpdateListSuitPartsSelected();
+            UpdateSearchListPartsSelected();
+        }
+        private void OnLongPress(EventContext context)
+        {
+            LongPressGesture gesture = (LongPressGesture)context.sender;
+            int itemId = (int)gesture.host.data;
+            GoodsItemTipsController.ShowItemTips(itemId);
+        }
+        private void OnTouchPad()
+        {
+            if (this.currentListType == DressUpListType.List4)
+            {
+                this.hideListParts2();
+                this.showListParts(ConstDressUpItemType.TAO_ZHUANG, true);
+            }
+            else if (this.currentListType == DressUpListType.List3)
+            {
+                if (_currentList2 != null)
+                {
+                    this.showListType2(_currentList2);
+                }
+                else
+                {
+                    this.showListType1();
+                }
+                this.hideListParts();
+            }
+            else if (this.currentListType == DressUpListType.List2)
+            {
+                this.showListType1();
+                this.hideListType2();
+            }
+            else if (this.currentListType == DressUpListType.List5)
+            {
+                this.showListType1();
+                this.hideSearchListType();
+            }
+        }
+
+
+        private void OnClickBtnDelete()
+        {
+            MyDressUpHelper.dressUpObj.TakeOffAll();
+            _roleData.cardId = 0;
+            _ui.m_partsList.m_list.numItems = _currentList3.Count;
+            _ui.m_partsList2.m_list.numItems = _currentList4.Count;
+            _ui.m_txtDressLimit.text = string.Format("饰品穿戴限制:{0}/{1}", MyDressUpHelper.GetCurrentOrnamentCount(), GlobalCfgArray.globalCfg.dressLimitCount);
+            UpdateStepBtn(true);
+            // UpdateListPartsSelected();
+            // UpdateListSuitPartsSelected();
+            UpdateValueInfo();
+        }
+
+        private void OnClickBtnNext()
+        {
+            // if (!MyDressUpHelper.CheckPutOnFinish())
+            // {
+            //     AlertUI.Show("换好衣服才能进行下一步哦~").SetRightButton(true, "好的");
+            // }
+            // else
+            // {
+            DressUpFinish();
+            // }
+        }
+        private async void DressUpFinish()
+        {
+
+            if (CardDataManager.GetCardListByRoleType(0).Count > 0)
+            {
+                ViewManager.Show<FieldWorkChooseCardView>(InstanceZonesDataManager.currentScoreType);
+            }
+            else
+            {
+                bool result = await FieldWorkSproxy.ReqChangeFieldWorkDressupOne(_dataManager.SelectThemeIndex, 0, MyDressUpHelper.dressUpObj.itemList);
+                if (result)
+                {
+                    _itemList = new List<int>(MyDressUpHelper.dressUpObj.itemList);
+                    PromptController.Instance.ShowFloatTextPrompt("保存成功");
+                    OnClickBtnBack();
+                }
+            }
+        }
+        // private void OnClickBtnRecommend()
+        // {
+        //     if (this.currentListType == DressUpListType.List4)
+        //     {
+        //         this.hideListParts2();
+        //         this.showListParts(ConstDressUpItemType.TAO_ZHUANG, true);
+        //     }
+        //     MyDressUpHelper.dressUpObj.CheckCancelActionWhenPutOn(_currentSuitId);
+        //     MyDressUpHelper.PutOnRecommendItems2();
+        //     _ui.m_txtDressLimit.text = string.Format("饰品穿戴限制:{0}/{1}", MyDressUpHelper.GetCurrentOrnamentCount(), GlobalCfgArray.globalCfg.dressLimitCount);
+
+        //     UpdateListPartsSelected();
+        //     UpdateListSuitPartsSelected();
+
+        // }
+
+        private void InitLists()
+        {
+            _ui.m_comListType2.m_listType.itemRenderer = ListType2Item;
+            _ui.m_partsList.m_list.itemRenderer = ListPartsItem;
+            _ui.m_partsList2.m_list.itemRenderer = ListParts2Item;
+            _ui.m_partsListSearch.m_list.itemRenderer = ListPartsItem;
+            listType1X = _ui.m_comListType1.target.x;
+            partsListX = _ui.m_partsList.target.x - _ui.m_partsList.target.width;
+            //一级菜单
+            _ui.m_comListType1.m_listType.itemRenderer = ListType1Item;
+        }
+
+        private void showListType1()
+        {
+            _currentList2 = null;
+            currentListType = DressUpListType.List1;
+            _ui.m_comListType1.m_listType.numItems = DressUpMenuItemCfg1Array.Instance.dataArray.Length - 3;
+            GTween.To(_ui.target.width, listType1X, 0.5f)
+                .SetTarget(_ui.m_comListType1.target)
+                .OnUpdate((GTweener t) =>
+                {
+                    _ui.m_comListType1.target.x = t.value.x;
+                });
+        }
+        private void hideListType1()
+        {
+            GTween.To(listType1X, _ui.target.width, 0.5f)
+                .SetTarget(_ui.m_comListType1.target)
+                .OnUpdate((GTweener t) =>
+                {
+                    _ui.m_comListType1.target.x = t.value.x;
+                });
+        }
+
+        private void showListType2(int[] menuStrArr = null)
+        {
+            currentListType = DressUpListType.List2;
+            if (menuStrArr != null && menuStrArr.Length > 0)
+            {
+                int len = menuStrArr.Length;
+                _currentList2 = menuStrArr.Clone() as int[];
+                _ui.m_comListType2.m_listType.RemoveChildrenToPool();
+                _ui.m_comListType2.m_listType.numItems = len;
+                //_ui.m_listType2.ResizeToFit(_ui.m_listType2.numItems);
+                float maxHeight = _ui.target.height - _ui.m_comListType2.m_listType.y - DressUpView.BOTTOM_BLANK;
+                if (_ui.m_comListType2.m_listType.height > maxHeight)
+                {
+                    _ui.m_comListType2.m_listType.height = maxHeight;
+                }
+            }
+
+            GTween.To(_ui.target.width, listType1X, 0.5f)
+                .SetTarget(_ui.m_comListType2.target)
+                .OnUpdate((GTweener t) =>
+                {
+                    _ui.m_comListType2.target.x = t.value.x;
+                });
+        }
+
+        private void hideListType2()
+        {
+            GTween.To(listType1X, _ui.target.width, 0.5f)
+                .SetTarget(_ui.m_comListType2.target)
+                .OnUpdate((GTweener t) =>
+                {
+                    _ui.m_comListType2.target.x = t.value.x;
+                });
+        }
+
+        private bool showListParts(int type, bool selectItem = false)
+        {
+            _currentMenuType = type;
+
+            UpdatePartsListSort();
+            if (_ui.m_partsList.m_list.numItems <= 0) return false;
+            _ui.m_partsList.m_list.ResizeToFit(_ui.m_partsList.m_list.numItems);
+            float maxHeight = _ui.m_partsList.target.height - _ui.m_partsList.m_list.y;
+            if (_ui.m_partsList.m_list.height > maxHeight)
+            {
+                _ui.m_partsList.m_list.height = maxHeight;
+            }
+            if (type == (int)ConstDressUpItemType.TAO_ZHUANG)
+            {
+                _ui.m_partsList.m_list.scrollPane.SetPosY(partsListScrollingPosY, false);
+                partsListScrollingPosY = 0;
+            }
+            currentListType = DressUpListType.List3;
+            GTween.To(_ui.target.width, partsListX, 0.5f)
+                .SetTarget(_ui.m_partsList)
+                .OnUpdate((GTweener t) =>
+                {
+                    _ui.m_partsList.target.x = t.value.x;
+                });
+            UpdateListPartsSelected();
+            return true;
+        }
+        private void OnComboBoxRarityChanged()
+        {
+            _scoreIndex = _ui.m_partsList.m_comboBoxRarity.selectedIndex;
+            this.UpdatePartsListSort();
+        }
+        private void OnSearchComboBoxRarityChanged()
+        {
+            _scoreIndex = _ui.m_partsListSearch.m_comboBoxRarity.selectedIndex;
+            this.UpdateSearchList();
+        }
+        private void UpdatePartsListSort()
+        {
+
+            if (_currentMenuType == 0) return;
+
+            if (_currentMenuType == (int)ConstDressUpItemType.TAO_ZHUANG)
+            {
+                _currentList3 = DressUpMenuSuitDataManager.GetSuitIDList();
+                if (_scoreIndex == SORT_BY_HIGH_SCORE)
+                {
+                    _currentList3 = SuitUtil.SortSuitListByHighScore(_currentList3);
+                }
+                else if (_scoreIndex == SORT_BY_LOW_SCORE)
+                {
+                    _currentList3 = SuitUtil.SortSuitListByLowScore(_currentList3);
+                }
+                else
+                {
+                    _currentList3.Reverse();
+                }
+            }
+            else
+            {
+                _currentList3 = DressUpMenuItemDataManager.getItemDatasByType(_currentMenuType);
+                if (_scoreIndex == SORT_BY_HIGH_SCORE)
+                {
+                    _currentList3 = DressUpMenuItemDataManager.SortItemListByHighScore(_currentList3);
+                }
+                else if (_scoreIndex == SORT_BY_LOW_SCORE)
+                {
+                    _currentList3 = DressUpMenuItemDataManager.SortItemListByLowScore(_currentList3);
+                }
+                else
+                {
+                    _currentList3.Reverse();
+                }
+
+            }
+            if (DressUpMenuItemDataManager.dressFilterType == DressFilterType.Search)
+            {
+                _currentList3 = DressUpMenuItemDataManager.DressSearch(_currentList3);
+            }
+            else if (DressUpMenuItemDataManager.dressFilterType == DressFilterType.Filter)
+            {
+                _currentList3 = DressUpMenuItemDataManager.DressFilter(_currentList3);
+            }
+
+
+            _ui.m_partsList.m_list.RemoveChildrenToPool();
+            _ui.m_partsList.m_list.numItems = _currentList3.Count;
+
+        }
+        private void UpdateSuitPartsListSort()
+        {
+            if (_currentMenuType == 0) return;
+
+            _currentList4 = new List<int>(SuitCfgArray.Instance.GetSuitItems(_currentSuitId, true));
+
+            if (DressUpMenuItemDataManager.dressFilterType == DressFilterType.Search)
+            {
+                _currentList4 = DressUpMenuItemDataManager.DressSearch(_currentList4);
+            }
+            else if (DressUpMenuItemDataManager.dressFilterType == DressFilterType.Filter)
+            {
+                _currentList4 = DressUpMenuItemDataManager.DressFilter(_currentList4);
+            }
+
+            _ui.m_partsList2.m_list.RemoveChildrenToPool();
+            _ui.m_partsList2.m_list.numItems = _currentList4.Count;
+
+        }
+
+        private void hideListParts()
+        {
+            GTween.To(partsListX, _ui.target.width, 0.5f)
+                .SetTarget(_ui.m_partsList)
+                .OnUpdate((GTweener t) =>
+                {
+                    _ui.m_partsList.target.x = t.value.x;
+                });
+        }
+        private void showListParts2(int suitId)
+        {
+            _currentSuitId = suitId;
+
+            _ui.m_partsList2.m_comboBoxRarity.items = new string[] { "高稀有度", "低稀有度", "最近获得" };
+
+            this.UpdateSuitPartsListSort();
+            _ui.m_partsList2.m_list.ResizeToFit(_ui.m_partsList2.m_list.numItems);
+            float maxHeight = _ui.m_partsList2.target.height - _ui.m_partsList2.m_list.y;// - DressUpView.BOTTOM_BLANK;
+            if (_ui.m_partsList2.m_list.height > maxHeight)
+            {
+                _ui.m_partsList2.m_list.height = maxHeight;
+            }
+            currentListType = DressUpListType.List4;
+            GTween.To(_ui.target.width, partsListX, 0.5f)
+                .SetTarget(_ui.m_partsList2)
+                .OnUpdate((GTweener t) =>
+                {
+                    _ui.m_partsList2.target.x = t.value.x;
+                });
+
+        }
+
+        private void hideListParts2()
+        {
+            _currentMenuType = ConstDressUpItemType.TAO_ZHUANG;
+
+            GTween.To(partsListX, _ui.target.width, 0.5f)
+                .SetTarget(_ui.m_partsList2)
+                .OnUpdate((GTweener t) =>
+                {
+                    _ui.m_partsList2.target.x = t.value.x;
+                });
+        }
+        private void showSearchListType()
+        {
+            // _currentList2 = null;
+            currentListType = DressUpListType.List5;
+            GTween.To(_ui.target.width, partsListX, 0.5f)
+                .SetTarget(_ui.m_partsListSearch.target)
+                .OnUpdate((GTweener t) =>
+                {
+                    _ui.m_partsListSearch.target.x = t.value.x;
+                });
+        }
+        private void hideSearchListType()
+        {
+            GTween.To(partsListX, _ui.target.width, 0.5f)
+                .SetTarget(_ui.m_partsListSearch.target)
+                .OnUpdate((GTweener t) =>
+                {
+                    _ui.m_partsListSearch.target.x = t.value.x;
+                });
+        }
+        /*****************************************************************************************************/
+        private void DressResetSerch()
+        {
+            if (currentListType == DressUpListType.List5)
+            {
+                OnTouchPad();
+            }
+        }
+        private void UpdateSerch(EventContext context)
+        {
+            if (context.data.ToString() == ConstMessage.DRESS_SEARCH)
+            {
+                _currentList3 = DressUpMenuItemDataManager.DressSearch(false);
+            }
+            else if (context.data.ToString() == ConstMessage.DRESS_FILTER)
+            {
+                _currentList3 = DressUpMenuItemDataManager.DressFilter(false);
+            }
+            ViewManager.Hide<ModalStatusView>();
+            UpdateSearchList();
+            if (currentListType != DressUpListType.List5)
+            {
+                hideListParts();
+                hideListParts2();
+                hideListType1();
+                hideListType2();
+                showSearchListType();
+            }
+            _currentMenuType = 0;
+        }
+        private void UpdateSearchList()
+        {
+
+            if (_scoreIndex == SORT_BY_HIGH_SCORE)
+            {
+                _currentList3 = DressUpMenuItemDataManager.SortItemListByHighScore(_currentList3, true);
+            }
+            else if (_scoreIndex == SORT_BY_LOW_SCORE)
+            {
+                _currentList3 = DressUpMenuItemDataManager.SortItemListByLowScore(_currentList3, true);
+            }
+            _currentMenuType = 0;
+            _ui.m_partsListSearch.m_list.numItems = _currentList3.Count; ;
+        }
+        private void ListType1Item(int index, GObject item)
+        {
+            UI.DressUp.UI_TypeItem typeItem = UI.DressUp.UI_TypeItem.Proxy(item);
+            DressUpMenuItemCfg1 item1 = DressUpMenuItemCfg1Array.Instance.dataArray[index];
+            typeItem.m_icon.url = "ui://DressUp/hz_fenleitu_" + item1.id;
+            typeItem.m_txtname.text = item1.name;
+            //typeItem.m_imgTitle.url = "ui://DressUp/hz_iconzi_" + item1.id;
+            typeItem.target.data = item1.id;
+            typeItem.m_imgNeed.visible = false;
+            typeItem.m_imgNew.visible = DressUpMenuItemDataManager.CheckIsFirstMenuNew(item1.id);
+            UI.DressUp.UI_TypeItem.ProxyEnd();
+        }
+
+        private void ListType2Item(int index, GObject item)
+        {
+            UI.DressUp.UI_TypeItem typeItem = UI.DressUp.UI_TypeItem.Proxy(item);
+            DressUpMenuItemCfg2 item2 = DressUpMenuItemCfg2Array.Instance.dataArray[_currentList2[index] - 1];
+            typeItem.m_icon.url = "ui://DressUp/hz_fenleituej_" + item2.id;
+            typeItem.m_txtname.text = item2.name;
+            //typeItem.m_imgTitle.url = "ui://DressUp/hz_iconziej_" + item2.id;
+            typeItem.target.data = item2.id;
+            // var subType = ItemUtilCS.GetItemSubType(_fightCfg.needItemId);
+            typeItem.m_imgNeed.visible = false;
+            typeItem.m_imgNew.visible = DressUpMenuItemDataManager.CheckIsSecondMenuNew(item2.id);
+
+            UI.DressUp.UI_TypeItem.ProxyEnd();
+        }
+
+        private void ListPartsItem(int index, GObject item)
+        {
+            UI_PartsListItem listItem = UI_PartsListItem.Proxy(item);
+            int id = (int)_currentList3[index];
+            string iconRes = "";
+            string partName = "";
+            string ext = "png";
+            if (_currentMenuType == (int)ConstDressUpItemType.TAO_ZHUANG)
+            {
+                SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(id);
+                iconRes = suitCfg.res;
+                partName = suitCfg.name;
+                listItem.m_iconSelected.visible = false;
+                listItem.m_txtScore.text = "" + SuitUtil.GetSuitScore(id);
+                RarityIconController.UpdateRarityIcon(listItem.m_rarity, id, false, true);
+                listItem.m_loaBorder.url = "ui://DressUp/hz_kuangk_" + suitCfg.rarity;
+                listItem.m_imgNew.visible = false;
+            }
+            else
+            {
+                ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(id);
+                iconRes = itemCfg.res;
+                partName = itemCfg.name;
+                listItem.m_iconSelected.visible = MyDressUpHelper.dressUpObj.CheckDressUpItemIsOn(id);
+                listItem.m_txtScore.text = "" + ItemDataManager.GetItemAdditionScore(id, InstanceZonesDataManager.currentScoreType, _roleData.tags);
+                listItem.m_loaBorder.url = "ui://DressUp/hz_kuangk_" + itemCfg.rarity;
+                bool isNew = DressUpMenuItemDataManager.CheckIsDressUpItemNew(id);
+                listItem.m_imgNew.visible = isNew;
+                if (isNew)
+                {
+                    ItemProxy.ReqSetItemRead(id).Coroutine();
+                }
+                RarityIconController.UpdateRarityIcon(listItem.m_rarity, id, false);
+                ext = ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType, true);
+            }
+            if (listItem.target.data == null)
+            {
+                LongPressGesture longPressGesture = new LongPressGesture(listItem.target);
+                longPressGesture.trigger = GameConfig.LongPressGestureTrigger;
+                longPressGesture.once = true;
+                longPressGesture.onAction.Add(OnLongPress);
+                _listLongPress.Add(longPressGesture);
+            }
+            listItem.m_btnAni.visible = false;
+            listItem.m_icon.url = ResPathUtil.GetIconPath(iconRes, ext);
+            listItem.m_lock.visible = false;
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                foreach (var itemDressID in FieldWorkDataManager.Instance.HistoryDressupList)
+                {
+                    if (itemDressID == id)
+                    {
+                        listItem.m_lock.visible = true;
+                        break;
+                    }
+                }
+            }
+            listItem.m_ScoreType.url = "ui://CommonGame/kp_sx_" + InstanceZonesDataManager.currentScoreType;
+            listItem.m_txtTitle.text = partName;
+            listItem.target.data = id;
+            listItem.m_imgNeed.visible = false;
+            UI_PartsListItem.ProxyEnd();
+        }
+        private void ListParts2Item(int index, GObject item)
+        {
+            UI_PartsListItem listItem = UI_PartsListItem.Proxy(item);
+            int id = (int)_currentList4[index];
+            string iconRes = "";
+            string partName = "";
+            string ext = "png";
+
+
+            if (listItem.target.data == null)
+            {
+                LongPressGesture longPressGesture = new LongPressGesture(listItem.target);
+                longPressGesture.trigger = GameConfig.LongPressGestureTrigger;
+                longPressGesture.once = true;
+                longPressGesture.onAction.Add(OnLongPress);
+                _listLongPress.Add(longPressGesture);
+            }
+            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(id);
+            iconRes = itemCfg.res;
+            partName = itemCfg.name;
+            listItem.m_iconSelected.visible = MyDressUpHelper.dressUpObj.CheckDressUpItemIsOn(id);
+            listItem.m_loaBorder.url = "ui://DressUp/hz_kuangk_" + itemCfg.rarity;
+            RarityIconController.UpdateRarityIcon(listItem.m_rarity, id, false);
+            ext = ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType, true);
+
+            listItem.m_ScoreType.visible = true;
+            // int mainScore;
+            // int mainValuel;
+            // ItemDataManager.GetMainScore(id, out mainScore, out mainValuel);
+            listItem.m_ScoreType.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + InstanceZonesDataManager.currentScoreType);
+            listItem.m_txtScore.text = "" + ItemDataManager.GetItemAdditionScore(id, InstanceZonesDataManager.currentScoreType, _dataManager.DressupList[_dataManager.SelectThemeIndex].tags);
+
+            listItem.m_icon.url = ResPathUtil.GetIconPath(iconRes, ext);
+            listItem.m_txtTitle.text = partName;
+            listItem.target.data = id;
+            // listItem.m_txtScore.visible = false;
+            //listItem.m_ScoreType.visible = true;
+            listItem.m_imgNeed.visible = false;
+            listItem.m_btnAni.visible = false;
+            bool isNew = DressUpMenuItemDataManager.CheckIsDressUpItemNew(id);
+            listItem.m_imgNew.visible = isNew;
+            if (isNew)
+            {
+                ItemProxy.ReqSetItemRead(id).Coroutine();
+            }
+            UI_PartsListItem.ProxyEnd();
+
+
+        }
+        private void UpdateSearchListPartsSelected()
+        {
+            int count = _ui.m_partsListSearch.m_list.numChildren;
+            int suitId = MyDressUpHelper.dressUpObj.suitId;
+
+            for (int i = 0; i < count; i++)
+            {
+                UI_PartsListItem listItem = UI_PartsListItem.Proxy(_ui.m_partsListSearch.m_list.GetChildAt(i));
+                int id = (int)listItem.target.data;
+                if (_currentMenuType == (int)ConstDressUpItemType.TAO_ZHUANG)
+                {
+                    listItem.m_iconSelected.visible = suitId > 0 && id == suitId;
+                }
+                else
+                {
+                    bool isPutOn = MyDressUpHelper.dressUpObj.CheckDressUpItemIsOn(id);//非套装金判断是否穿戴
+                    var isSceneType = DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(id);
+                    bool isSuit = !isSceneType && suitId > 0 && SuitCfgArray.Instance.GetSuitIdOfItem(id) == suitId;//非场景类, 若当前穿戴套装要判断item是否属于套装(更换场景类不会改变套装穿戴状态)
+                    bool isSceneSuit = isSceneType && suitId > 0 && isPutOn;//场景类, 若当前穿戴套装要判断item是否属已穿戴
+                    listItem.m_iconSelected.visible = isPutOn || isSuit || isSceneSuit;
+                }
+                UI_PartsListItem.ProxyEnd();
+            }
+        }
+        private void UpdateListPartsSelected()
+        {
+            GList list;
+            if (_ui.m_partsList.target.x == partsListX)
+            {
+                list = _ui.m_partsList.m_list;
+            }
+            else if (_ui.m_partsListSearch.target.x == partsListX)
+            {
+                list = _ui.m_partsListSearch.m_list;
+            }
+            else
+            {
+                return;
+            }
+            int count = list.numChildren;
+            int suitId = MyDressUpHelper.dressUpObj.suitId;
+
+            for (int i = 0; i < count; i++)
+            {
+                UI_PartsListItem listItem = UI_PartsListItem.Proxy(list.GetChildAt(i));
+                int id = (int)listItem.target.data;
+                if (_currentMenuType == (int)ConstDressUpItemType.TAO_ZHUANG)
+                {
+                    listItem.m_iconSelected.visible = suitId > 0 && id == suitId;
+                }
+                else
+                {
+                    bool isPutOn = MyDressUpHelper.dressUpObj.CheckDressUpItemIsOn(id);//非套装金判断是否穿戴
+                    var isSceneType = DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(id);
+                    bool isSuit = !isSceneType && suitId > 0 && SuitCfgArray.Instance.GetSuitIdOfItem(id) == suitId;//非场景类, 若当前穿戴套装要判断item是否属于套装(更换场景类不会改变套装穿戴状态)
+                    bool isSceneSuit = isSceneType && suitId > 0 && isPutOn;//场景类, 若当前穿戴套装要判断item是否属已穿戴
+                    listItem.m_iconSelected.visible = isPutOn || isSuit || isSceneSuit;
+                }
+                UI_PartsListItem.ProxyEnd();
+            }
+        }
+        private void UpdateListSuitPartsSelected()
+        {
+            int count = _ui.m_partsList2.m_list.numChildren;
+            int suitId = MyDressUpHelper.dressUpObj.suitId;
+
+            for (int i = 0; i < count; i++)
+            {
+                UI_PartsListItem listItem = UI_PartsListItem.Proxy(_ui.m_partsList2.m_list.GetChildAt(i));
+                int id = (int)listItem.target.data;
+
+                bool isPutOn = MyDressUpHelper.dressUpObj.CheckDressUpItemIsOn(id);//非套装金判断是否穿戴
+                var isSceneType = DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(id);
+                bool isSuit = !isSceneType && suitId > 0 && SuitCfgArray.Instance.GetSuitIdOfItem(id) == suitId;//非场景类, 若当前穿戴套装要判断item是否属于套装(更换场景类不会改变套装穿戴状态)
+                bool isSceneSuit = isSceneType && suitId > 0 && isPutOn;//场景类, 若当前穿戴套装要判断item是否属已穿戴
+                listItem.m_iconSelected.visible = isPutOn || isSuit || isSceneSuit;
+                UI_PartsListItem.ProxyEnd();
+            }
+        }
+
+        private void OnClickBtnSearch()
+        {
+            ViewManager.Show<DressFilterView>(false);
+        }
+        private void OnClickBtnLastStep()
+        {
+            if (!MyDressUpHelper.OnClickBtnLastStep()) return;
+            UpdateStepBtn(false);
+        }
+        private void OnClickBtnNextStep()
+        {
+            if (!MyDressUpHelper.OnClickBtnNextStep()) return;
+            UpdateStepBtn(false);
+
+        }
+        private void SendLog()
+        {
+
+        }
+        private void CheckGuide(object param)
+        {
+            if ((GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0
+                && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork
+                && InstanceZonesDataManager.CheckLevelPass(FieldWorkDataManager.Instance.guideLevelID)))
+            {
+                UpdateCheckGuide(null);
+            }
+            else
+            {
+                Timers.inst.Remove(CheckGuide);
+            }
+        }
+
+        protected void UpdateCheckGuide(object param)
+        {
+            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
+            if ((GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork))
+            {
+                GuideController.TryGuide(_ui.m_comListType1.m_listType, ConstGuideId.FIELD, 7, "选择服装进行战斗吧!", 1);
+                GuideController.TryGuide(_ui.m_partsList.m_list, ConstGuideId.FIELD, 8, "选择服装进行战斗吧!", 0);
+                GuideController.TryGuide(_ui.m_btnNext, ConstGuideId.FIELD, 9, "下一步!");
+            }
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkDressFIghtView.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7fbca76b8171f204e970278cbf7133e3
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 142 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkFightResultView.cs

@@ -0,0 +1,142 @@
+using FairyGUI;
+using UnityEngine;
+using UI.Main;
+using System.Collections;
+using System.Collections.Generic;
+using ET;
+
+namespace GFGGame
+{
+
+    public class FieldWorkFightResultView : BaseView
+    {
+        private UI_ArenaFightResultUI _ui;
+        private GameObject _sceneObject;
+
+        private EffectUI _effectUI1;
+        private EffectUI _effectUI2;
+        private EffectUI _effectUI3;
+        private EffectUI _effectUI4;
+        private EffectUI _effectUI5;
+        private EffectUI _effectUI6;
+        private EffectUI _effectUI7;
+        private EffectUI _effectUI8;
+
+        public override void Dispose()
+        {
+            EffectUIPool.Recycle(_effectUI1);
+            _effectUI1 = null;
+            EffectUIPool.Recycle(_effectUI2);
+            _effectUI2 = null;
+            EffectUIPool.Recycle(_effectUI3);
+            _effectUI3 = null;
+            EffectUIPool.Recycle(_effectUI4);
+            _effectUI4 = null;
+            EffectUIPool.Recycle(_effectUI5);
+            _effectUI5 = null;
+            EffectUIPool.Recycle(_effectUI6);
+            _effectUI6 = null;
+            EffectUIPool.Recycle(_effectUI7);
+            _effectUI7 = null;
+            EffectUIPool.Recycle(_effectUI8);
+            _effectUI8 = null;
+            if (_ui != null)
+            {
+                _ui.Dispose();
+            }
+            _ui = null;
+
+            base.Dispose();
+        }
+
+        protected override void Init()
+        {
+            base.Init();
+            _ui = UI_ArenaFightResultUI.Create();
+            viewCom = _ui.target;
+            isfullScreen = true;
+            //isReturnView = true;
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            _ui.m_btnClose.onClick.Add(OnClickBtnClose);
+
+            // _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("fightBg");
+            AddEffect();
+        }
+        private void AddEffect()
+        {
+            //_effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderResult0, "ui_fight_new", "ZDJS_lose");
+            //_effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderResult1, "ui_fight_new", "ZDJS_qualified");
+            //_effectUI3 = EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderResult2, "ui_fight_new", "ZDJS_good");
+            //_effectUI4 = EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderResult3, "ui_fight_new", "ZDJS_Perfect");
+            _effectUI5 = EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderScore, "ui_fight_new", "ZDJS_Text_kuang");
+            _effectUI6 = EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderStar3, "ui_fight_new", "ZDJS_STAR");
+            _effectUI7 = EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderStar2, "ui_fight_new", "ZDJS_STAR");
+            _effectUI8 = EffectUIPool.CreateEffectUI(_ui.m_comResult.m_holderStar1, "ui_fight_new", "ZDJS_STAR");
+        }
+        protected override void OnShown()
+        {
+            base.OnShown();
+            FightData roleData = FieldWorkDataManager.Instance.DressupList[FieldWorkDataManager.Instance.CurFightIndex];
+
+            if (_sceneObject == null)
+            {
+                _sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath("SceneFightResult"));
+                MyDressUpHelper.dressUpObj.setSceneObj(_sceneObject, false, false, null, true);
+                MyDressUpHelper.dressUpObj.AddOrRemove(180014, false);
+            }
+            MyDressUpHelper.dressUpObj.PutOnItemList(roleData.itemList);
+
+            long myScore = FieldWorkDataManager.Instance.myScore[FieldWorkDataManager.Instance.CurFightIndex];
+            _ui.m_comResult.m_c1.selectedIndex = 0;
+            _ui.m_comResult.m_txtScore.text = myScore.ToString();
+            _ui.m_btnClose.enabled = false;
+
+            ShowResultView();
+        }
+        private void ShowResultView()
+        {
+            FieldWorkDataManager.Instance.CurFightIndex++;
+
+            _ui.m_comResult.m_t0.Play(() =>
+            {
+                ViewManager.Show<FieldWorkRoundResultView>();
+                _ui.m_btnClose.enabled = true;
+            });
+        }
+        protected override void OnHide()
+        {
+            base.OnHide();
+            if (_sceneObject != null)
+            {
+                PrefabManager.Instance.Restore(_sceneObject);
+                _sceneObject = null;
+            }
+            //这里屏蔽是由于打开其他界面时,会调用这个方法
+            //MusicManager.Instance.PlayCroutine(ResPathUtil.GetMusicPath(ConstMusicName.DEFAULT));
+
+            // _ui.m_comResult.target.height = 0;
+            _ui.m_comResult.m_t1.Play();
+
+            if (FieldWorkDataManager.Instance.CurFightIndex > 2)
+            {
+                object[] goBackDatas = ViewManager.GetGoBackDatas(typeof(FieldWorkLevelView).FullName);
+                ViewManager.Show<FieldWorkLevelView>(null, true);
+            }
+        }
+
+        private void OnClickBtnClose(object param)
+        {
+            if (_sceneObject != null)
+            {
+                PrefabManager.Instance.Restore(_sceneObject);
+                _sceneObject = null;
+            }
+            this.Hide();
+
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkFightResultView.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 13dc2fde96d8ad44a8a53bcb148d3754
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 256 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkLevelInfoView.cs

@@ -0,0 +1,256 @@
+using FairyGUI;
+using System.Collections;
+using System.Collections.Generic;
+using ET;
+using UI.FieldWork;
+using UI.CommonGame;
+
+namespace GFGGame
+{
+    class FieldWorkLevelInfoView : BaseWindow
+    {
+        private UI_FieldWorkLevelInfoUI _ui;
+        private int _levelID;
+        private int _type;
+        private List<ItemData> _bonusList = new List<ItemData>();
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            base.Dispose();
+        }
+        protected override void OnInit()
+        {
+            base.OnInit();
+            _ui = UI_FieldWorkLevelInfoUI.Create();
+            this.viewCom = _ui.target;
+            this.viewCom.Center();
+            this.modal = true;
+            viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+            _ui.m_listBonus.itemRenderer = UpdateBonusItem;
+            _ui.m_cardList.itemRenderer = RenderListCardItem;
+            _ui.m_btnStart.onClick.Add(OnClickBtnStart);
+            _ui.m_btnSkip.onClick.Add(OnClickBtnSkip);
+            
+        }
+        protected override void OnShown()
+        {
+            base.OnShown();
+            _levelID = (int)(viewData as object[])[0];
+            CimbingTowerLevelCfg levelCfg = CimbingTowerLevelCfgArray.Instance.GetCfg(_levelID);
+            _type = levelCfg.scoreType;
+            FieldWorkDataManager.Instance.ThemeList[0] = _type;
+            FieldWorkDataManager.Instance.ThemeList[1] = _type;
+            FieldWorkDataManager.Instance.ThemeList[2] = _type;
+            FieldWorkDataManager.Instance.targetWinScore = levelCfg.ClearanceScore;
+            FieldWorkDataManager.Instance.SetDataScoreType();
+            InstanceZonesDataManager.FightScene = ConstInstanceZonesType.FieldWork;
+            FieldWorkDataManager.Instance.CurFightIndex = 0;
+            FieldWorkDataManager.Instance.currentLevelID = _levelID;
+            if (_ui.m_btnSkip.url == null ||_ui.m_btnSkip.url == "")
+            {
+                FieldWorkDataManager.Instance.IsAutoStart = false;
+            }
+            else
+            {
+                FieldWorkDataManager.Instance.IsAutoStart = true;
+            }
+            UpDressdate();
+            UpdateView();
+            Timers.inst.AddUpdate(CheckGuide);
+        }
+
+        protected override void OnHide()
+        {
+            base.OnHide();
+        }
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.FieldWork_StateCHANGE, UpdateView);
+        }
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.FieldWork_StateCHANGE, UpdateView);
+        }
+        private void UpdateView()
+        {
+            CimbingTowerLevelCfg levelCfg = CimbingTowerLevelCfgArray.Instance.GetCfg(_levelID);
+            _ui.m_txtTargetName.text = RoleDataManager.roleName;
+            _ui.m_loaderHead.url = ResPathUtil.GetNpcHeadPath("self");
+            _ui.m_txtHighestScore.text = FieldWorkDataManager.Instance.GetHeihtScore(_levelID);
+            _ui.m_txtTitle.text = levelCfg.name;
+            _ui.m_scoreType.url = "ui://CommonGame/kp_sx_" + levelCfg.scoreType;
+            _ui.m_targetScore.text = levelCfg.ClearanceScore.ToString();
+            _ui.m_cardList.numItems = 3;
+            //只有首通奖励
+            bool once = true;
+            if(once)
+            {
+                _bonusList = ItemUtil.CreateItemDataList(levelCfg.WeekBonusOnceArr);
+                _ui.m_listBonus.numItems = _bonusList.Count;
+            }
+            else
+            {
+                _ui.m_listBonus.numItems = 0;
+            }
+        }
+        public void UpDressdate()
+        {
+            for (int i = 0; i < FieldWorkDataManager.Instance.ThemeList.Count; i++)
+            {
+                int scoreType = FieldWorkDataManager.Instance.ThemeList[i];
+                FightData roleData = FieldWorkDataManager.Instance.DressupList[i];
+                roleData.leagueSkillScore = FieldWorkDataManager.Instance.GetAllSkillScore(scoreType);
+                FightDataManager.Instance.SetItemScoreList(roleData);
+                ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType);
+                ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData);
+            }
+        }
+        private void UpdateBonusItem(int index, GObject item)
+        {
+            ItemData itemData = _bonusList[index] as ItemData;
+            UI_ListRewardItem listItem = UI_ListRewardItem.Proxy(item);
+            ItemCfg cfg = ItemCfgArray.Instance.GetCfg(itemData.id);
+            listItem.m_txtName.text = cfg.name;
+            listItem.m_txtOwner.text = string.Format("已拥有:{0}", ItemDataManager.GetItemNum(itemData.id));
+            if (item.data == null)
+            {
+                item.data = new ItemView(listItem.m_comItem as GComponent);
+            }
+            (item.data as ItemView).SetData(itemData);
+            if(FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(_levelID))
+            {
+                if(FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[_levelID].IsGetReward)
+                {
+                    (item.data as ItemView).ImgHasVisible = true;
+                }
+                else
+                {
+                    (item.data as ItemView).ImgHasVisible = false;
+                }
+            }
+            else
+            {
+                (item.data as ItemView).ImgHasVisible = false;
+            }
+            //List<ItemData> bonusOnceData = StoryBonusDataCache.GetBonusData(_levelID).bonusOnce;
+            //(item.data as ItemView).ImgShouTongVisable = false;//!InstanceZonesDataManager.CheckLevelPass(_levelID) && index < bonusOnceData.Count;
+            UI_ListRewardItem.ProxyEnd();
+        }
+        private void RenderListTagItem(int index, GObject obj)
+        {
+            UI_ComTag item = UI_ComTag.Proxy(obj);
+            StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID);
+            StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
+            string tag = fightCfg.needTagsArr[index];
+            int tagType = TagCfgArray.Instance.GetCfg(tag).type;
+            item.m_txtTag.text = tag;
+            item.m_loaTag.url = ResPathUtil.GetCommonGameResPath("fzd_bqbq_" + tagType);
+            UI_ComTag.ProxyEnd();
+        }
+        private void RenderListCardItem(int index, GObject obj)
+        {
+            UI_ComCard item = UI_ComCard.Proxy(obj);
+            int cardId = 0;
+            if(FieldWorkDataManager.Instance.DressupList.Count > index)
+            {
+                cardId = FieldWorkDataManager.Instance.DressupList[index].cardId;
+            }
+            if (cardId == 0)
+            {
+                item.m_c1.selectedIndex = 0;
+            }
+            else
+            {
+                item.m_c1.selectedIndex = 1;
+                ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cardId);
+                item.m_txtCardName.text = "我的搭配";
+                item.m_comCard.m_loaCard.url = ResPathUtil.GetCardIconPath(itemCfg.res);
+                item.m_loaScore.url = ResPathUtil.GetScorePath(itemCfg.mainScore);
+                RarityIconController.UpdateRarityIcon(item.m_loaRarity, cardId, false);
+                item.m_wearRateText.text = FieldWorkDataManager.Instance.GetCardAbrasion(cardId).ToString() + "%";               
+            }
+
+            if (item.target.data == null)
+            {
+                item.target.onClick.Add(OnClickCardList);
+            }
+            item.target.data = index;
+            UI_ComCard.ProxyEnd();
+        }
+        private void OnClickCardList(EventContext context)
+        {
+            GObject obj = context.sender as GObject;
+            int index = (int)obj.data;
+            FieldWorkDataManager.Instance.SelectThemeIndex = index;
+            ViewManager.Show<ArenaDressInfoView>(new object[] { FightRoleType.FieldWork,index, FieldWorkDataManager.Instance.DressupList, "" });
+            this.Hide();
+        }
+        private void OnClickBtnStart()
+        {
+            FieldWorkDataManager.Instance.currentLevelID = _levelID;
+            //判断是否搭配了三套衣服和词牌
+            if (FieldWorkDataManager.Instance.SetCanStart())
+            {
+                if(FieldWorkDataManager.Instance.IsAutoStart)
+                {
+                    FieldWorkDataManager.Instance.myScore.Clear();
+                    FieldWorkDataManager.Instance.GetFightResult();
+                    this.Hide();
+                    ViewManager.Show<FieldWorkRoundResultView>();
+                }
+                else
+                {
+                    UpDressdate();
+                    FieldWorkDataManager.Instance.GetFightResult();
+                    FieldWorkDataManager.Instance.myScore.Clear();
+                    EventAgent.DispatchEvent(ConstMessage.FieldWork_STARTCHANGE);
+                    this.Hide();
+                }
+            }
+            else
+            {
+                PromptController.Instance.ShowFloatTextPrompt("请优先完成三套搭配方案!");
+                FieldWorkDataManager.Instance.SelectThemeIndex = 0;
+                ViewManager.Show<ArenaDressInfoView>(new object[] { FightRoleType.FieldWork, 0, FieldWorkDataManager.Instance.DressupList, "" });
+                this.Hide();
+            }
+        }
+        private void OnClickBtnSkip()
+        {
+            if(FieldWorkDataManager.Instance.IsAutoStart)
+            {
+                FieldWorkDataManager.Instance.IsAutoStart = false;
+                _ui.m_btnSkip.url = "";
+            }
+            else
+            {
+                FieldWorkDataManager.Instance.IsAutoStart = true;
+                _ui.m_btnSkip.url = "ui://FieldWork/jrbzts_gou";
+            }
+        }
+        private void CheckGuide(object param)
+        {
+            if (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0)
+            {
+                UpdateCheckGuide(null);
+            }
+            else
+            {
+                Timers.inst.Remove(CheckGuide);
+            }
+        }
+        protected void UpdateCheckGuide(object param)
+        {
+            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
+            GuideController.TryGuide(_ui.m_guideTarget.target, ConstGuideId.FIELD, 4, "在这里可以看见过关要求!");
+            GuideController.TryGuide(_ui.m_cardList, ConstGuideId.FIELD, 5, "搭配多套服装和词牌可以得到更高的分数!", 0);
+            GuideController.TryGuide(_ui.m_btnStart, ConstGuideId.FIELD, 14, "开始挑战!");
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkLevelInfoView.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b7428cd94318e9142ac3a34572cde91b
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 274 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkLevelView.cs

@@ -0,0 +1,274 @@
+using FairyGUI;
+using System.Collections;
+using System.Collections.Generic;
+using ET;
+using UI.FieldWork;
+using UI.CommonGame;
+using UnityEngine;
+
+namespace GFGGame
+{
+    public class FieldWorkLevelView : BaseWindow
+    {
+        private UI_FieldWorkLevelUI _ui;
+        private CimbingTowerLevelCfg[] LevelList;
+        private GameObject gamey;
+        private float indexY;
+        private EffectUI _effectUI1;
+        private GComponent objGuide;
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            if (_effectUI1 != null)
+            {
+                EffectUIPool.Recycle(_effectUI1);
+                _effectUI1 = null;
+            }
+            base.Dispose();
+        }
+
+        protected override void Init()
+        {
+            base.Init();
+            packageName = UI_FieldWorkLevelUI.PACKAGE_NAME;
+            _ui = UI_FieldWorkLevelUI.Create();
+            viewCom = _ui.target;
+            isfullScreen = true;
+            isReturnView = true;
+
+            _ui.m_BtnBack.onClick.Add(OnClickBtnBack);
+            _ui.m_shopBtn.target.onClick.Add(OnClickBtnShop);
+            _ui.m_resetBtn.target.onClick.Add(OnClickBtnReSet);
+            _ui.m_passBtn.target.onClick.Add(OnClickBtnSkip);
+            _ui.m_listTag.itemRenderer = RenderListTagItem;
+            _ui.m_ruleBtn.onClick.Add(RuleController.ShowRuleView);
+            _ui.m_ruleBtn.data = 300035;
+
+            _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_bgEffect, "ui_zj", "Tydc_All/Tydc_All");
+        }
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.FieldWork_STARTCHANGE, StartCalculateScore);
+            EventAgent.AddEventListener(ConstMessage.FieldWork_StateCHANGE, UpdateLevel);
+        }
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.FieldWork_STARTCHANGE, StartCalculateScore);
+            EventAgent.RemoveEventListener(ConstMessage.FieldWork_StateCHANGE, UpdateLevel);
+        }
+        protected override void OnShown()
+        {
+            base.OnShown();
+            gamey = GameObject.Find("Stage/GRoot/Window - FieldWorkLevelUI/ContentPane/CompChapter/Container/Container");
+            objGuide = _ui.m_chapter.m_compChapterScroll.target.GetChild("g0").asCom;
+            _ui.m_Bg.url = ResPathUtil.GetBgImgPath("bg_tydc");
+            _ui.m_shopBtn.target.visible = false;
+            LevelList = CimbingTowerLevelCfgArray.Instance.dataArray;
+            _ui.m_listTag.numItems = FieldWorkDataManager.Instance.Tag.Count;
+            UpdateLevel();
+            Timers.inst.AddUpdate(CheckGuide);
+        }
+        private IEnumerator InitChapter()
+        {
+            yield return new WaitForSeconds(0.1f);
+            if (gamey != null)
+            {
+                //gamey.transform.position = new Vector3(0, indexY, 0);
+            }
+        }
+
+        private void UpdateLevel()
+        {
+            for (int i = 0; i < LevelList.Length; i++)
+            {
+                GObject obj = _ui.m_chapter.m_compChapterScroll.target.GetChild("g" + i);
+                UI_CompStoryLevelItem levelItem = UI_CompStoryLevelItem.Proxy(obj);
+                if(i == LevelList.Length-1)
+                {
+                    levelItem.m_c1.selectedIndex = 2;
+
+                }
+                CimbingTowerLevelCfg levelCfg = LevelList[i];
+                if(FieldWorkDataManager.Instance.CheckLevelPass(levelCfg.id) || i == 0)
+                {
+                    levelItem.m_lock.visible = false;
+                }
+                else
+                {
+                    levelItem.m_lock.visible = true;
+                }
+                levelItem.target.visible = true;
+                levelItem.m_txtFightOrder.text = levelCfg.name;
+                levelItem.m_levelIcon.text = FieldWorkDataManager.Instance.nameList[i];
+                levelItem.target.data = levelCfg.id;
+                levelItem.target.onClick.Add(OnClickLevelItem);
+                UI_CompStoryLevelItem.ProxyEnd();
+            }
+            //Timers.inst.StartCoroutine(InitChapter());
+            int isPassCount = 0;
+            foreach(var item in FieldWorkDataManager.Instance.CimbingTowerLevelInfoList)
+            {
+                if(item.Value.IsPass)
+                {
+                    isPassCount++;
+                }
+            }
+            int levelCount = CimbingTowerLevelCfgArray.Instance.dataArray.Length - isPassCount;
+            float height = _ui.m_chapter.target.height;
+            float value = 300 / (_ui.m_chapter.target.height / 1080.0f);
+            indexY = value * Mathf.Max(0, (float)levelCount);
+            _ui.m_chapter.target.scrollPane.posY = indexY;
+        }
+        private void OnClickLevelItem(EventContext context)
+        {
+            UI_CompStoryLevelItem levelItem = UI_CompStoryLevelItem.Proxy(context.sender as GObject);
+            int levelCfgId = (int)levelItem.target.data;
+            if(levelItem.m_lock.visible)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("请通过前置关卡");
+                return;
+            }
+            else
+            {
+                if(FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(levelCfgId))
+                {
+                    if(FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[levelCfgId].IsPass)
+                    {
+                        PromptController.Instance.ShowFloatTextPrompt("关卡已通过!");
+                        return;
+                    }
+                }
+            }
+            UI_CompStoryLevelItem.ProxyEnd();
+            ViewManager.Show<FieldWorkLevelInfoView>(new object[] { levelCfgId });
+        }
+        private void RenderListTagItem(int index, GObject obj)
+        {
+            UI_ComTag item = UI_ComTag.Proxy(obj);
+            string tag = FieldWorkDataManager.Instance.Tag[index];
+            int tagType = TagCfgArray.Instance.GetCfg(tag).type;
+            item.m_txtTag.text = tag;
+            item.m_loaTag.url = ResPathUtil.GetCommonGameResPath("fzd_bqbq_" + tagType);
+            UI_ComTag.ProxyEnd();
+        }
+        protected override void OnHide()
+        {
+            base.OnHide();
+            GRoot.inst.touchable = true;
+        }
+
+        private void StartCalculateScore()
+        {
+            ViewManager.Show<StoryFightSingleView>(null, true);
+            ViewManager.DeleteViewStackCountDown(null, 1);
+        }
+        private void OnClickBtnBack()
+        {
+            ViewManager.GoBackFrom(typeof(FieldWorkLevelView).FullName);
+        }
+        private void OnClickBtnShop()
+        {
+            ViewManager.Show<StoreView>(new object[] { ConstStoreTabId.STORE_EXCHANGE, 3 });
+        }
+        private void OnClickBtnReSet()
+        {
+            if (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0)
+            {
+                return;
+            }
+            if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Count == 0)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("本周暂未参与该玩法,无法使用此功能!");
+                return;
+            }
+                AlertUI.Show("重置后当前关卡进度将被清空,每周可使用一次,是否重置?")
+                .SetLeftButton(true, "否").SetRightButton(true, "是", async (object data) =>
+                {
+                    bool result = await FieldWorkSproxy.ReqFieldWorkReset();
+                    if (result)
+                    {
+                        UpdateLevel();
+                        PromptController.Instance.ShowFloatTextPrompt("重置成功!");
+                    }
+                    else
+                    {
+                        //PromptController.Instance.ShowFloatTextPrompt("没有重置次数!");
+                    }
+                });
+        }
+        private void OnClickBtnSkip()
+        {
+            int normal = CimbingTowerCfgArray.Instance.dataArray[0].ClearanceLimit;
+            int vip = CimbingTowerCfgArray.Instance.dataArray[0].VipClearanceLimit;
+            int canPassCount = 0;
+            int isPassCount = 0;
+            foreach (var item in FieldWorkDataManager.Instance.CimbingTowerLevelInfoList)
+            {
+                if (item.Value.IsPass)
+                {
+                    isPassCount++;
+                }
+            }
+            if (RoleDataManager.CheckIsMonthCardOpenByType(1) || RoleDataManager.CheckIsMonthCardOpenByType(1))
+            {
+                canPassCount = vip;
+            }
+            else
+            {
+                canPassCount = normal;
+            }
+            if (isPassCount > canPassCount)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("通关数量已超过最大可通关数量!");
+                return;
+            }
+            else if((isPassCount >= FieldWorkDataManager.Instance.MaxLevelId && FieldWorkDataManager.Instance.MaxLevelId < canPassCount))
+            {
+                PromptController.Instance.ShowFloatTextPrompt("通关数量已超过最大可通关数量!");
+                return;
+            }
+            if (FieldWorkDataManager.Instance.MaxLevelId != 0)
+            {
+                AlertUI.Show("一键通关不消耗服装和词牌的使用次数,是否快速通关?")
+                .SetLeftButton(true, "否").SetRightButton(true, "是", async (object data) =>
+                {
+                    bool result = await FieldWorkSproxy.ReqFieldWorkOneClickPass();
+                    if (result)
+                    {
+                        UpdateLevel();
+                        PromptController.Instance.ShowFloatTextPrompt("一键通关成功!");
+                    }
+                });
+            }
+            else
+            {
+                PromptController.Instance.ShowFloatTextPrompt("暂未满足通关要求,无法使用此功能!");
+            }
+        }
+        private void CheckGuide(object param)
+        {
+            if (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0)
+            {
+                UpdateCheckGuide(null);
+            }
+            else
+            {
+                Timers.inst.Remove(CheckGuide);
+            }
+        }
+        protected void UpdateCheckGuide(object param)
+        {
+            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
+            GuideController.TryGuide(_ui.m_listTag, ConstGuideId.FIELD, 2, "每周主题标签将会获得额外的属性加成!");          
+            GuideController.TryGuide(objGuide, ConstGuideId.FIELD, 3, "点击开始挑战!");
+            GuideController.TryGuide(_ui.m_resetBtn.target, ConstGuideId.FIELD, 16, "每周一5:00可以获得一次重置的机会,若遇到困难时可以考虑重置后再试试哦!", -1, true, _ui.target.height - 600);
+            GuideController.TryCompleteGuide(ConstGuideId.FIELD, 16);
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkLevelView.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3d866c1d42ac4314986e7fb2881f4b83
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 167 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkRoundResultView.cs

@@ -0,0 +1,167 @@
+using System.Threading.Tasks;
+using ET;
+using FairyGUI;
+//using UI.Arena;
+using UnityEngine;
+using UI.FieldWork;
+
+namespace GFGGame
+{
+    public class FieldWorkRoundResultView : BaseWindow
+    {
+        private UI_FieldWorkRoundResultUI _ui;
+        private FieldWorkDataManager _dataManager;
+        private int winCount = 0;
+        private bool isFinallyFight = false;//是否最后一场战斗
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            base.Dispose();
+        }
+
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_FieldWorkRoundResultUI.PACKAGE_NAME;
+            _ui = UI_FieldWorkRoundResultUI.Create();
+            this.viewCom = _ui.target;
+            this.viewCom.Center();
+            this.modal = true;
+            viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+
+            _ui.m_list.itemRenderer = RenderListItem;
+        }
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+
+        }
+        protected async override void OnShown()
+        {
+            base.OnShown();
+            ViewManager.SetMaskAlpha(0);
+            winCount = 0;
+            _dataManager = FieldWorkDataManager.Instance;
+
+            //_ui.m_list.numItems = _dataManager.CurFightIndex;
+            _ui.m_list.numItems = FieldWorkDataManager.Instance.myScore.Count;
+
+            isFinallyFight = _ui.m_list.numItems == 3;
+            _ui.m_ComResult.target.visible = isFinallyFight;
+            _ui.m_loaResule.visible = isFinallyFight;
+            this.clickBlankToClose = isFinallyFight;
+
+            if (isFinallyFight)
+            {
+                long myAllScore = 0;
+                long targetAllScore = FieldWorkDataManager.Instance.targetWinScore;
+                for (int i = 0; i < FieldWorkDataManager.Instance.myScore.Count; i++)
+                {
+                    myAllScore += FieldWorkDataManager.Instance.myScore[i];
+                }
+                bool isWin = myAllScore > targetAllScore;
+                _ui.m_loaResule.url = isWin ? "ui://FieldWork/kstzjj_slsl" : "ui://FieldWork/kstzjj_shib";
+                _ui.m_ComResult.m_comResult.m_txtMyFightScore.text = myAllScore.ToString();
+                _ui.m_ComResult.m_comResult.m_txtTargetFightScore.text = targetAllScore.ToString();
+                bool result = await FieldWorkSproxy.ReqFieldWorkFight(FieldWorkDataManager.Instance.currentLevelID);
+                if (result)
+                {
+                    if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(FieldWorkDataManager.Instance.currentLevelID))
+                    {
+                        if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[FieldWorkDataManager.Instance.currentLevelID].IsPass)
+                        {
+                            await FieldWorkSproxy.ReqChangeFieldWorkDressup();
+                        }
+                    }
+                    else
+                    {
+
+                    }
+                }
+                else
+                {
+                    //PromptController.Instance.ShowFloatTextPrompt("未通过!");
+                }
+            }
+            else
+            {
+                Timers.inst.Add(1, 1, StartNextRound);
+            }
+            Timers.inst.AddUpdate(CheckGuide);
+        }
+
+        protected override void OnHide()
+        {
+            base.OnHide();
+            ViewManager.SetMaskAlpha(0.6f);
+
+            if (isFinallyFight)
+            {
+                MusicManager.Instance.PlayCroutine(ResPathUtil.GetMusicPath(ConstMusicName.DEFAULT));
+                FinishFight();
+            }
+        }
+
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+
+        }
+        private void RenderListItem(int index, GObject obj)
+        {
+            UI_ListResultItem item = UI_ListResultItem.Proxy(obj);
+            item.m_txtRound.text = "回合 " + (index + 1).ToString();
+            RoleInfoManager.Instance.UpdateHead(item.m_comMyHead, RoleDataManager.headId, RoleDataManager.headBorderId);
+            int myCardId = FieldWorkDataManager.Instance.DressupList[index].cardId;
+            ItemCfg cardCfg = ItemCfgArray.Instance.GetCfg(myCardId);
+            item.m_loaMyCard.m_comCardmask.m_loaCard.url = cardCfg == null ? "" : ResPathUtil.GetCardIconPath(cardCfg.res);
+            int scoreType = FieldWorkDataManager.Instance.ThemeList[index];
+            item.m_loaScore.url = ResPathUtil.GetScorePath(scoreType);
+            long myScore = FieldWorkDataManager.Instance.myScore[index];
+            item.m_txtMyScore.text = myScore.ToString();
+            UI_ListResultItem.ProxyEnd();
+        }
+
+        private void StartNextRound(object param)
+        {
+            ViewManager.Hide<FieldWorkFightResultView>();
+            ViewManager.Show<StoryFightSingleScoreView>(_dataManager.DressupList[_dataManager.CurFightIndex]);
+            ViewManager.Show<FieldWorkRoundTipsView>();
+            this.Hide();
+        }
+        private void FinishFight()
+        {
+            FieldWorkDataManager dataManager = FieldWorkDataManager.Instance;
+            ViewManager.Hide<FieldWorkFightResultView>();
+            if(dataManager.BonusList != null || dataManager.BonusList.Count >0)
+            {
+                BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(dataManager.BonusList), () =>
+                {
+                    // ViewManager.Hide<ArenaFightResultView>();
+                });
+                dataManager.BonusList.Clear();
+            }
+        }
+
+        private void CheckGuide(object param)
+        {
+            if (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && isFinallyFight)
+            {
+                UpdateCheckGuide(null);
+            }
+            else
+            {
+                Timers.inst.Remove(CheckGuide);
+            }
+        }
+        protected void UpdateCheckGuide(object param)
+        {
+            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
+           GuideController.TryGuide(_ui.m_guide.target, ConstGuideId.FIELD, 15, "三轮累计的分数将决定关卡的通关与否!");
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkRoundResultView.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a587c30544dba4f4e9ddbb5fc28ac388
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 50 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkRoundTipsView.cs

@@ -0,0 +1,50 @@
+using System.Threading.Tasks;
+using ET;
+using FairyGUI;
+//using UI.Arena;
+using UnityEngine;
+using UI.FieldWork;
+
+namespace GFGGame
+{
+    class FieldWorkRoundTipsView : BaseWindow
+    {
+        private UI_FieldWorkRoundTips _ui;
+        private EffectUI _effectUI1;
+        public override void Dispose()
+        {
+            if (_ui != null)
+            {
+                _ui.Dispose();
+                _ui = null;
+            }
+            if (_effectUI1 != null)
+            {
+                EffectUIPool.Recycle(_effectUI1);
+                _effectUI1 = null;
+            }
+            base.Dispose();
+        }
+        protected override void OnInit()
+        {
+            base.OnInit();
+            packageName = UI_FieldWorkRoundTips.PACKAGE_NAME;
+            _ui = UI_FieldWorkRoundTips.Create();
+            this.viewCom = _ui.target;
+            this.viewCom.Center();
+            modal = true;
+            clickBlankToClose = false;
+            _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_effect, "ui_zj", "Tydc_Text_tx/Tydc_Text_tx");
+        }
+        protected override void OnShown()
+        {
+            base.OnShown();
+            _ui.m_icon.url = "ui://FieldWork/wz_" + FieldWorkDataManager.Instance.CurFightIndex;
+            _ui.m_t0.Play(this.Hide);
+        }
+        protected override void OnHide()
+        {
+            base.OnHide();
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/FieldWork/FieldWorkRoundTipsView.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7db69bcc0ac1ae74eac5db492599bd8a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 44 - 26
GameClient/Assets/Game/HotUpdate/Views/InstanceZones/InstanceZonesView.cs

@@ -14,7 +14,7 @@ namespace GFGGame
         private EffectUI _effectUI1;
         private EffectUI _effectUI2;
         private EffectUI _effectUI3;
-
+        private int fieldWorkLockLevel = FieldWorkDataManager.Instance.guideLevelID;
 
         public override void Dispose()
         {
@@ -49,12 +49,13 @@ namespace GFGGame
             isReturnView = true;
 
             _valueBarController = new ValueBarController(_ui.m_valueBar);
-            _ui.m_btnStudio.target.onClick.Add(OnClickBtnStudio);
-            _ui.m_btnTravel.target.onClick.Add(OnClickBtnTravel);
-            _ui.m_btnPoem.target.onClick.Add(OnClickBtnPoem);
-            _ui.m_btnPoemGudie.onClick.Add(OnClickBtnPoem);
-            _ui.m_btnField.target.onClick.Add(OnTimeTracingClick);
-            _ui.m_btnArena.target.onClick.Add(OnClickBtnArena);
+            _ui.m_instance.m_btnStudio.target.onClick.Add(OnClickBtnStudio);
+            _ui.m_instance.m_btnTravel.target.onClick.Add(OnClickBtnTravel);
+            _ui.m_instance.m_btnPoem.target.onClick.Add(OnClickBtnPoem);
+            _ui.m_instance.m_btnPoemGudie.onClick.Add(OnClickBtnPoem);
+            _ui.m_instance.m_btnField.target.onClick.Add(OnTimeTracingClick);
+            _ui.m_instance.m_btnArena.target.onClick.Add(OnClickBtnArena);
+            _ui.m_instance.m_btnFieldWork.target.onClick.Add(OnFieldWorkClick);
             _ui.m_btnBack.onClick.Add(OnClickBtnBack);
             _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("hzs_bg");
             _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_bg_eff, "ui_HaiZhiShi", "Bg_All_Tx");
@@ -67,8 +68,17 @@ namespace GFGGame
             base.OnShown();
             _valueBarController.OnShown();
             _valueBarController.UpdateList(new List<int>() { ConstItemID.POWER });
+            
             CheckFunOpen();
             UpdateRedDot();
+            if(GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.CheckLevelPass(fieldWorkLockLevel))
+            {
+                _ui.m_instance.target.scrollPane.posY = 540;
+            }
+            else
+            {
+                _ui.m_instance.target.scrollPane.posY = 0;
+            }
             Timers.inst.AddUpdate(CheckGuide);
             _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_eff, "ui_HaiZhiShi", "Bg_ZhuanChang_NiuQu");
         }
@@ -97,11 +107,11 @@ namespace GFGGame
             if (GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_PORCELAIN) <= 0
                 || GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_PROPERTY) <= 0
                 || GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_FILING) <= 0
-                || GuideDataManager.IsGuideFinish(ConstGuideId.POEM) <= 0
+                || GuideDataManager.IsGuideFinish("TimeTracingShowView") <= 0
                 || GuideDataManager.IsGuideFinish("ClothingSelectView") <= 0
                 || (GuideDataManager.IsGuideFinish("DAPEISAI_1") <=0 && MatchingCompetitionDataManager.Instance.MatchingState == 1 && MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason != 0 && InstanceZonesDataManager.CheckLevelPass(100003004))
-                || (GuideDataManager.IsGuideFinish("DAPEISAI_2") <= 0 && MatchingCompetitionDataManager.Instance.MatchingState == 2 && MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason != 0 && InstanceZonesDataManager.CheckLevelPass(100003004)))
-            //|| GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0)
+                || (GuideDataManager.IsGuideFinish("DAPEISAI_2") <= 0 && MatchingCompetitionDataManager.Instance.MatchingState == 2 && MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason != 0 && InstanceZonesDataManager.CheckLevelPass(100003004))
+                || (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.CheckLevelPass(FieldWorkDataManager.Instance.guideLevelID)))
             {
                 UpdateToCheckGuide(null);
             }
@@ -114,18 +124,19 @@ namespace GFGGame
         private void UpdateRedDot()
         {
             _valueBarController.UpdateRedPoint();
-            RedDotController.Instance.SetComRedDot(_ui.m_btnStudio.target, RedDotDataManager.Instance.GetStudioFilingRed(), "", -126, 22);
-            RedDotController.Instance.SetComRedDot(_ui.m_btnTravel.target, RedDotDataManager.Instance.GetTravelRed(), "", -152, 85);
-            RedDotController.Instance.SetComRedDot(_ui.m_btnField.target, TimeTracingDataManager.Instance.GetLevelRewardStatus() || TimeTracingDataManager.Instance.GetAllChapterReward(), "", -103, 43);
+            RedDotController.Instance.SetComRedDot(_ui.m_instance.m_btnStudio.target, RedDotDataManager.Instance.GetStudioFilingRed(), "", -126, 22);
+            RedDotController.Instance.SetComRedDot(_ui.m_instance.m_btnTravel.target, RedDotDataManager.Instance.GetTravelRed(), "", -152, 85);
+            RedDotController.Instance.SetComRedDot(_ui.m_instance.m_btnField.target, TimeTracingDataManager.Instance.GetLevelRewardStatus() || TimeTracingDataManager.Instance.GetAllChapterReward(), "", -103, 43);
         }
 
         private void CheckFunOpen()
         {
-            _ui.m_btnPoem.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(MatchingCompetitionGatheringView).Name, false);
-            _ui.m_btnStudio.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StudioView).Name, false);
-            _ui.m_btnTravel.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(TravelView).Name, false);
-            _ui.m_btnField.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(TimeTracingShowView).Name, false);
-            _ui.m_btnArena.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(ArenaView).Name, false);
+            _ui.m_instance.m_btnPoem.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(MatchingCompetitionGatheringView).Name, false);
+            _ui.m_instance.m_btnStudio.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StudioView).Name, false);
+            _ui.m_instance.m_btnTravel.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(TravelView).Name, false);
+            _ui.m_instance.m_btnField.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(TimeTracingShowView).Name, false);
+            _ui.m_instance.m_btnArena.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(ArenaView).Name, false);
+            _ui.m_instance.m_btnFieldWork.m_loaLockIcon.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(FieldWorkLevelView).Name, false);
         }
 
         private void OnClickBtnBack()
@@ -180,6 +191,10 @@ namespace GFGGame
         {
             ViewManager.Show<TimeTracingShowView>();
         }
+        private void OnFieldWorkClick()
+        {
+            ViewManager.Show<FieldWorkLevelView>();
+        }
 
         private async void OnClickBtnArena()
         {
@@ -201,21 +216,24 @@ namespace GFGGame
         {
             if (!ViewManager.CheckIsTopView(this.viewCom)) return;
             //_ui.m_loaGuidestudio.visible = false;
-            GuideController.TryGuide(_ui.m_btnStudio.target, ConstGuideId.STUDIO_PORCELAIN, 3, "工作室开门啦,进去看看~");
-            GuideController.TryGuide(_ui.m_btnStudio.target, ConstGuideId.STUDIO_FILING, 3, "工作室有新的任务啦。");
-            //GuideController.TryGuide(_ui.m_btnField.target, ConstGuideId.FIELD, 2, "外出进行历史考察,会有意想不到的收获哦。");
-            GuideController.TryGuide(_ui.m_btnStudio.target, ConstGuideId.STUDIO_PROPERTY, 2, "");
+            GuideController.TryGuide(_ui.m_instance.m_btnStudio.target, ConstGuideId.STUDIO_PORCELAIN, 3, "工作室开门啦,进去看看~");
+            GuideController.TryGuide(_ui.m_instance.m_btnStudio.target, ConstGuideId.STUDIO_FILING, 3, "工作室有新的任务啦。");
+            if (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.CheckLevelPass(FieldWorkDataManager.Instance.guideLevelID))
+            {
+                GuideController.TryGuide(_ui.m_instance.m_btnFieldWork.target, ConstGuideId.FIELD, 1, "外出进行考察,会有意想不到的收获哦。");
+            }
+            GuideController.TryGuide(_ui.m_instance.m_btnStudio.target, ConstGuideId.STUDIO_PROPERTY, 2, "");
             if(MatchingCompetitionDataManager.Instance.MatchingState == 1 && MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason != 0 && InstanceZonesDataManager.CheckLevelPass(100003004))
             {
-                GuideController.TryGuide(_ui.m_btnPoemGudie, "DAPEISAI_1", 1, "进入搭配赛,进行搭配!");
+                GuideController.TryGuide(_ui.m_instance.m_btnPoemGudie, "DAPEISAI_1", 1, "进入搭配赛,进行搭配!");
             }
             else if(MatchingCompetitionDataManager.Instance.MatchingState == 2 && MatchingCompetitionDataManager.Instance.MatchingCompetitionSeason != 0 && InstanceZonesDataManager.CheckLevelPass(100003004))
             {
-                GuideController.TryGuide(_ui.m_btnPoemGudie, "DAPEISAI_2", 1, "进入搭配赛,进行评选!");
+                GuideController.TryGuide(_ui.m_instance.m_btnPoemGudie, "DAPEISAI_2", 1, "进入搭配赛,进行评选!");
             }
-            GuideController.TryGuide(_ui.m_btnArena.target, ConstGuideId.ARENA_OPEN, 3, "在这里可以与其他小伙伴比拼搭配哦~");
+            GuideController.TryGuide(_ui.m_instance.m_btnArena.target, ConstGuideId.ARENA_OPEN, 3, "在这里可以与其他小伙伴比拼搭配哦~");
             GuideController.TryGuide(_ui.m_btnBack, ConstGuideId.ENTER_CHAPTER_5, 1, "", -1, false);
-            GuideController.TryGuide(_ui.m_btnField.target, "TimeTracingShowView", 3, "合成副本可获得奖励和服装哦~");
+            GuideController.TryGuide(_ui.m_instance.m_btnField.target, "TimeTracingShowView", 3, "合成副本可获得奖励和服装哦~");
             if (!ArenaDataManager.Instance.IsSeasonOpen)
             {
                 GuideController.TryCompleteGuide(ConstGuideId.ARENA_OPEN, 3);

+ 24 - 5
GameClient/Assets/Game/HotUpdate/Views/MainStory/ArenaFightResultView.cs

@@ -80,7 +80,16 @@ namespace GFGGame
         protected override void OnShown()
         {
             base.OnShown();
-            FightData roleData = ArenaDataManager.Instance.DressupList[ArenaDataManager.Instance.CurFightIndex];
+            FightData roleData = null;
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                roleData = FieldWorkDataManager.Instance.DressupList[FieldWorkDataManager.Instance.CurFightIndex];
+            }
+            else
+            {
+                roleData = ArenaDataManager.Instance.DressupList[ArenaDataManager.Instance.CurFightIndex];
+            }    
+            
             if (_sceneObject == null)
             {
                 _sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath("SceneFightResult"));
@@ -89,10 +98,20 @@ namespace GFGGame
             }
             MyDressUpHelper.dressUpObj.PutOnItemList(roleData.itemList);
 
-            long myScore = ArenaDataManager.Instance.myScore[ArenaDataManager.Instance.CurFightIndex];
-            long targetScore = ArenaDataManager.Instance.targetScore[ArenaDataManager.Instance.CurFightIndex];
-            _ui.m_comResult.m_c1.selectedIndex = myScore > targetScore ? 3 : 0;
-            _ui.m_comResult.m_txtScore.text = myScore.ToString();
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
+            {
+                long myScore = ArenaDataManager.Instance.myScore[ArenaDataManager.Instance.CurFightIndex];
+                long targetScore = ArenaDataManager.Instance.targetScore[ArenaDataManager.Instance.CurFightIndex];
+                _ui.m_comResult.m_c1.selectedIndex = myScore > targetScore ? 3 : 0;
+                _ui.m_comResult.m_txtScore.text = myScore.ToString();
+            }
+            else
+            {
+                long myScore = FieldWorkDataManager.Instance.myScore[FieldWorkDataManager.Instance.CurFightIndex];
+                _ui.m_comResult.m_c1.selectedIndex =  0;
+                _ui.m_comResult.m_txtScore.text = myScore.ToString();
+            }
+
 
             _ui.m_btnClose.enabled = false;
 

+ 1 - 2
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryCardChoose.cs

@@ -240,7 +240,7 @@ namespace GFGGame
             {
                 item.m_useIcon.visible = false;
             }
-
+            item.m_fieldwork.visible = false;
             item.target.asCom.RemoveChild(_comSelected);
             if (_selectedIndex == index) { 
                 item.target.asCom.AddChild(_comSelected);
@@ -255,7 +255,6 @@ namespace GFGGame
             GObject obj = context.data as GObject;
             UI_ListCardFightItem item = UI_ListCardFightItem.Proxy(obj);
             item.m_t0.Play();
-
             EffectUIPool.Recycle(_effectUI3);
             _effectUI3 = null;
             _effectUI3 = EffectUIPool.CreateEffectUI(item.m_effect, "ui_KP", "KP_Select");

+ 80 - 17
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightSingleScoreView.cs

@@ -169,7 +169,14 @@ namespace GFGGame
         protected override void OnShown()
         {
             base.OnShown();
-            roleData = InstanceZonesDataManager.roleData;
+            if(this.viewData != null)
+            {
+                roleData = this.viewData as FightData;
+            }
+            else
+            {
+                roleData = InstanceZonesDataManager.roleData;
+            }
             //if (_sceneObject == null)
             //{
             //    _sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath("SceneFightSingleScore"));
@@ -188,7 +195,10 @@ namespace GFGGame
             dressUpObjUI.dressUpObj.PutOnItemList(roleData.itemList);
             dressUpObjUI.UpdateWrapper(_ui.m_holder);
             _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("zd_g_bg");
-
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                FightDataManager.Instance.autoPlay = true;
+            }
             if (!FightDataManager.Instance.autoPlay)
             {
                 FightDataManager.Instance.fightSpeed = 1;
@@ -196,13 +206,26 @@ namespace GFGGame
             _ui.m_btnSpeedUp.visible = FightDataManager.Instance.autoPlay;
             _ui.m_btnSpeedUp.title = "x" + FightDataManager.Instance.fightSpeed;
 
-            StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(InstanceZonesDataManager.currentLevelCfgId);
-            StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
-            _ui.m_proScore.target.max = fightCfg.score3;
+            StoryLevelCfg levelCfg = null;
+            StoryFightCfg fightCfg = null;
+ 
             _ui.m_proScore.m_comBar.target.width = 0;
-            _ui.m_proScore.m_comFirstScore.target.x = (((float)fightCfg.score1 / (float)fightCfg.score3)) * (_ui.m_proScore.target.width - offsetX);
-            _ui.m_proScore.m_comSecondScore.target.x = (((float)fightCfg.score2 / (float)fightCfg.score3)) * (_ui.m_proScore.target.width - offsetX);
-            _ui.m_proScore.m_comThirdScore.target.x = (((float)fightCfg.score3 / (float)fightCfg.score3)) * (_ui.m_proScore.target.width - offsetX);
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                _ui.m_proScore.m_comFirstScore.target.visible = false;
+                _ui.m_proScore.m_comSecondScore.target.visible = false;
+                _ui.m_proScore.m_comThirdScore.target.visible = false;
+                _ui.m_proScore.target.max = FieldWorkDataManager.Instance.targetWinScore;
+            }
+            else
+            {
+                levelCfg = StoryLevelCfgArray.Instance.GetCfg(InstanceZonesDataManager.currentLevelCfgId);
+                fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
+                _ui.m_proScore.target.max = fightCfg.score3;
+                _ui.m_proScore.m_comFirstScore.target.x = (((float)fightCfg.score1 / (float)fightCfg.score3)) * (_ui.m_proScore.target.width - offsetX);
+                _ui.m_proScore.m_comSecondScore.target.x = (((float)fightCfg.score2 / (float)fightCfg.score3)) * (_ui.m_proScore.target.width - offsetX);
+                _ui.m_proScore.m_comThirdScore.target.x = (((float)fightCfg.score3 / (float)fightCfg.score3)) * (_ui.m_proScore.target.width - offsetX);
+            }
             _ui.m_proScore.m_holder.visible = false;
             _ui.m_proScore.m_txtCount.text = "0";
             _ui.m_comClick.target.touchable = false;
@@ -211,7 +234,6 @@ namespace GFGGame
             _ui.m_comClick.m_comResult.m_ppEffect.visible = false;
             _ui.m_comClick.m_comResult.m_t0.ClearHooks();
             _isAllPerfect = false;
-
             _currentTime = SkillBeginTime.FIGHT_BEGIN;
             // _stopFight = false;
             _partId = FightScoreCfgArray.Instance.dataArray[0].id;
@@ -229,6 +251,10 @@ namespace GFGGame
                 _ui.m_btnBack.visible = true;
                 Timers.inst.Add(0.5f, 1, TryShowCardSkill);
             }
+            if (GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 && InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                _ui.m_btnBack.visible = false;
+            }
             tryGuide = false;
             Timers.inst.AddUpdate(CheckGuide);
         }
@@ -238,7 +264,15 @@ namespace GFGGame
             List<int> roundTimes = ScoreSystemData.Instance.GetRoundTime(roleData.cardId, roleData.skillLvs);
             List<PassivitySkillLvlCfg> vaildSkills = ScoreSystemData.Instance.GetValidSkills(_currentTime, _partId, roleData.cardId, roleData.skillLvs, 0, null, roundTimes, new List<int>());
             ScoreSystemData.Instance.GetRoundItemSkillScore(vaildSkills, _mainScore, 0, out _skillScore, out int _targetScore, out Dictionary<int, int> skillsToShowDic);
-            bool _showCard = ScoreSystemData.Instance.IsShowCard(InstanceZonesDataManager.currentCardId, vaildSkills);
+            bool _showCard;
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                _showCard = ScoreSystemData.Instance.IsShowCard(roleData.cardId, vaildSkills);
+            }
+            else
+            {
+                _showCard = ScoreSystemData.Instance.IsShowCard(InstanceZonesDataManager.currentCardId, vaildSkills);
+            }
             if (_showCard && skillsToShowDic.Count > 0)
             {
                
@@ -697,8 +731,18 @@ namespace GFGGame
 
         private void GetCurStar(out int star)
         {
-            StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(InstanceZonesDataManager.currentLevelCfgId);
-            StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
+            StoryLevelCfg levelCfg = null;
+            StoryFightCfg fightCfg = null;
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                star = 0;
+                return;
+            }
+            else
+            {
+                levelCfg = StoryLevelCfgArray.Instance.GetCfg(InstanceZonesDataManager.currentLevelCfgId);
+                fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
+            }
             star = 0;
             if (_score >= fightCfg.score1 && _score < fightCfg.score2)
             {
@@ -723,14 +767,33 @@ namespace GFGGame
 
         private void Skip(object param = null)
         {
-            InstanceZonesController.CheckStoryFightResult().Coroutine();
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                FieldWorkDataManager.Instance.myScore.Add(_score);
+                ViewManager.Show<FieldWorkFightResultView>(new object[] { _score, 0 }, true);
+                Reset();
+            }
+            else
+            {
+                InstanceZonesController.CheckStoryFightResult().Coroutine();
+            }
         }
         private void OnBtnBackClick()
         {
-            this.Hide();
-            _prefectCount = 0;
-            InstanceZonesController.OnFinishStoryLevel(InstanceZonesDataManager.currentLevelCfgId, false, false);
-            Reset();
+            if (this.viewData != null)
+            {
+                this.Hide();
+                _prefectCount = 0;
+                ViewManager.Show<FieldWorkLevelView>();
+                Reset();
+            }
+            else
+            {
+                this.Hide();
+                _prefectCount = 0;
+                InstanceZonesController.OnFinishStoryLevel(InstanceZonesDataManager.currentLevelCfgId, false, false);
+                Reset();
+            }
         }
         protected override void RemoveEventListener()
         {

+ 26 - 5
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightSingleView.cs

@@ -47,17 +47,38 @@ namespace GFGGame
                 _sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath("SceneFightSingle"));
             }
             MyDressUpHelper.dressUpObj.setSceneObj(_sceneObject);
-            StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(InstanceZonesDataManager.currentLevelCfgId);
-            StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
+
+            StoryLevelCfg levelCfg = null;
+            StoryFightCfg fightCfg = null;
+            FightData roleFightData = null;
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
+            {
+                roleFightData = FieldWorkDataManager.Instance.DressupList[FieldWorkDataManager.Instance.CurFightIndex];
+                MyDressUpHelper.dressUpObj.PutOnItemList(FieldWorkDataManager.Instance.DressupList[FieldWorkDataManager.Instance.CurFightIndex].itemList);
+            }
+            else
+            {
+                levelCfg = StoryLevelCfgArray.Instance.GetCfg(InstanceZonesDataManager.currentLevelCfgId);
+                fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
+            }
 
             _ui.m_roleName.m_txtName.text = RoleDataManager.roleName;
             Timers.inst.Add(0.9f, 1, (object param) =>
             {
-                if (!string.IsNullOrEmpty(fightCfg.music))
+                if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.FieldWork)
                 {
-                    MusicManager.Instance.PlayCroutine(ResPathUtil.GetMusicPath(fightCfg.music, "mp3"));
+                    MusicManager.Instance.PlayCroutine(ResPathUtil.GetMusicPath("fight", "mp3"));
+                    ViewManager.Show<StoryFightSingleScoreView>(roleFightData);
+                    ViewManager.Show<FieldWorkRoundTipsView>();
                 }
-                ViewManager.Show<StoryFightSingleScoreView>();
+                else
+                {
+                    if (!string.IsNullOrEmpty(fightCfg.music))
+                    {
+                        MusicManager.Instance.PlayCroutine(ResPathUtil.GetMusicPath(fightCfg.music, "mp3"));
+                    }
+                    ViewManager.Show<StoryFightSingleScoreView>();
+                }    
                 this.Hide();
             });
         }

+ 0 - 13
GameClient/Assets/Game/HotUpdate/Views/Store/StoreGrowthFundView.cs

@@ -13,8 +13,6 @@ namespace GFGGame
         private ValueBarController _valueBarController;
         private int menu2;
         private EffectUI _effectUI1;
-        private int ScrollToViewIndex = 0;
-        private bool firstToIndex;
 
         public override void Dispose()
         {
@@ -83,8 +81,6 @@ namespace GFGGame
         private void UpdateView()
         {
             GetGrowthFundBuy();
-            ScrollToViewIndex = 0;
-            firstToIndex = true;
             int count = 0;
             for(int i = 0;i < GrowthFundCfgArray.Instance.dataArray.Length;i++)
             {
@@ -95,7 +91,6 @@ namespace GFGGame
             }
             _ui.m_txtGiftBag.text = count.ToString();
             _ui.m_list.numItems = GrowthFundCfgArray.Instance.dataArray.Length;
-            _ui.m_list.ScrollToView(ScrollToViewIndex,false,true);
         }
         private void OnBtnBuyClick()
         {
@@ -159,14 +154,6 @@ namespace GFGGame
             {
                 item.m_rewardBtn.target.onClick.Add(OnBtnGetClick);
             }
-            if(item.m_rewardBtn.m_c1.selectedIndex == 1)
-            {
-                if(firstToIndex)
-                {
-                    ScrollToViewIndex = index;
-                    firstToIndex = false;
-                }  
-            }
             item.m_rewardBtn.target.data = index + 1;
             UI_GrowthFundItemUI.ProxyEnd();
 

+ 1 - 1
GameClient/Assets/Game/Launcher/LauncherConfig.cs

@@ -82,7 +82,7 @@ namespace GFGGame
             ChannelId = (int)ChannelID.TapTap;
 #elif PT_DOUYOU
             netType = EnumNetType.PUBLIC;
-            cfgName = "cfg_douYou";
+            cfgName = "cfg_douYou12";
             ChannelId = (int)ChannelID.DouYou;
 #elif PT_IOS
             netType = EnumNetType.PUBLIC;

+ 28 - 24
GameClient/Assets/Plugins/Android/AndroidManifest.xml

@@ -1,33 +1,37 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.unity3d.player"
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.gfg.douyou"
     xmlns:tools="http://schemas.android.com/tools"
-	android:installLocation="preferExternal">
-    <!--bugly配置权限start-->
-    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
-    <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-    <uses-permission android:name="android.permission.READ_LOGS" />
-    <!--bugly配置权限end-->
-	<!-- 权限组:STORAGE == 读取存储相关的权限申请 -->
-	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    android:installLocation="auto" >
+
     <application
+        android:name="com.sdk.douyou.DouyouApplication"
         android:allowBackup="true"
+		android:usesCleartextTraffic="true"
 		android:icon="@drawable/ic_launcher"
-		android:label="万世镜Dev">
-		<activity android:name="com.unity3d.player.UnityPlayerActivity"
+		android:label="万世镜">
+
+	<activity
+            android:name="com.easy.bridge.DouYouMainActivity"
             android:configChanges="mnc|keyboardHidden|screenSize|orientation|keyboard"
             android:screenOrientation="portrait"
-            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
-			<intent-filter>
-				<action android:name="android.intent.action.MAIN" />
-				<category android:name="android.intent.category.LAUNCHER" />
-			</intent-filter>
-		</activity>
+            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <meta-data android:name="android.permission.READ_LOGS" 
+            android:value="true" />
+        <meta-data android:name="android.permission.SYSTEM_ALERT_WINDOW" android:value="true" />
+        <meta-data android:name="android.permission.SYSTEM_OVERLAY_WINDOW" android:value="true" />
+        <meta-data android:name="android.permission.BLUETOOTH" android:value="true"/>
+        <meta-data android:name="android.permission.QUERY_ALL_PACKAGES" android:value="true"/>
+        <meta-data
+            android:name="unityplayer.ForwardNativeEventsToDalvik"
+            android:value="true" />
+        <meta-data
+            android:name="unityplayer.UnityActivity"
+            android:value="true" />
     </application>
-
 </manifest>

+ 3 - 3
GameClient/Assets/Plugins/Android/launcherTemplate.gradle

@@ -71,13 +71,13 @@ MobSDK {
             SinaWeibo {
                 id 1
                 sortId 59
-                appKey "568898243"
-                appSecret "38a4f8204cc784f81f9f0daaf31e02e3"
+                appKey "4026427899"
+                appSecret "f3f473d16e26626c09b1797e5e2614f8"
                 callbackUri "http://www.sharesdk.cn"
                 shareByAppClient true
                 enable true
             }
-
+            
             TencentWeibo {
                 id 2
                 sortId 2

二進制
GameClient/Assets/Plugins/Android/libs/douyou-release.aar


+ 32 - 0
GameClient/Assets/Plugins/Android/libs/douyou-release.aar.meta

@@ -0,0 +1,32 @@
+fileFormatVersion: 2
+guid: 0edbb40c9a7f67940afddf5862a01c96
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Android: Android
+    second:
+      enabled: 1
+      settings: {}
+  - first:
+      Any: 
+    second:
+      enabled: 0
+      settings: {}
+  - first:
+      Editor: Editor
+    second:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

二進制
GameClient/Assets/Plugins/Android/libs/douyouTT-release.aar


+ 32 - 0
GameClient/Assets/Plugins/Android/libs/douyouTT-release.aar.meta

@@ -0,0 +1,32 @@
+fileFormatVersion: 2
+guid: 1c69d23e7a517184e9509ff5af0828f2
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Android: Android
+    second:
+      enabled: 1
+      settings: {}
+  - first:
+      Any: 
+    second:
+      enabled: 0
+      settings: {}
+  - first:
+      Editor: Editor
+    second:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

Some files were not shown because too many files changed in this diff