Jelajahi Sumber

Merge branch 'master' of http://10.108.64.190:3000/gfg/client

zhaoyang 2 tahun lalu
induk
melakukan
ac0d390007

+ 21 - 2
GameClient/Assets/Game/HotUpdate/Controller/LoginController.cs

@@ -200,12 +200,31 @@ namespace GFGGame
             {
                 GameGlobal.isFirstEntry = true;
                 ViewManager.Hide<ModalStatusView>();
-                GameController.ShowCreateRole();
+                //GameController.ShowCreateRole();不显示创角界面,在剧情中改名
+                await ReqCreateRole();
             }
         }
 
-        public static async ETTask ReqCreateRole(string roleName)
+        public static async ETTask<string> ReqRandomRoleName()
         {
+            (int result, string name) = await LoginHelper.ReqRandomRoleName();
+            if (result == ErrorCode.ERR_Success)
+            {
+                return name;
+            }
+            else
+            {
+                ErrorCodeController.Handler(result);
+                return "";
+            }
+        }
+
+        public static async ETTask ReqCreateRole(string roleName = null)
+        {
+            if(string.IsNullOrEmpty(roleName))
+            {
+                roleName = await ReqRandomRoleName();
+            }
             ViewManager.Show<ModalStatusView>("创建角色中...");
             int errorCode = await ET.LoginHelper.CreateRole(GameGlobal.zoneScene, roleName);
             if (errorCode != ErrorCode.ERR_Success)

+ 87 - 42
GameClient/Assets/Game/HotUpdate/DressUp/DressUpObj.cs

@@ -6,6 +6,13 @@ using ET;
 
 namespace GFGGame
 {
+    public enum DressUpOption
+    {
+        Auto,
+        Add,
+        Remove
+    }
+
     public class DressUpObj
     {
         private GameObject _sceneObj;
@@ -81,7 +88,9 @@ namespace GFGGame
             }
             else
             {
-                UpdateRoleView();
+                var tempData = DressUpDataClone();
+                TakeOffAll();
+                PutOnDressUpData(tempData);
             }
         }
 
@@ -152,7 +161,7 @@ namespace GFGGame
             return true;
         }
 
-        public void AddOrRemove(int itemId, bool checkDefault, bool isAdd = false, bool isRemove = false)
+        public void AddOrRemove(int itemId, bool checkDefault, DressUpOption dressUpOption = DressUpOption.Auto)
         {
             int subType = ItemUtilCS.GetItemSubType(itemId);
             if (subType == ConstDressUpItemType.BEI_JING)
@@ -162,14 +171,13 @@ namespace GFGGame
                     return;
                 }
                 _dressUpData.bgId = itemId;
-                bool showAni = IsAction || DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(itemId);
-                DressUpUtil.AddItem(_dressUpData.bgId, _sceneObj, _needSetMask, showAni, _roleObj);
+                DressUpUtil.AddItem(_dressUpData.bgId, _sceneObj, _needSetMask, true, _roleObj);
             }
             else
             {
                 if (!CheckDressUpItemIsOn(itemId))
                 {
-                    if (!isRemove)
+                    if (dressUpOption != DressUpOption.Remove)
                     {
                         if (checkDefault)
                         {
@@ -181,7 +189,7 @@ namespace GFGGame
                 }
                 else
                 {
-                    if (!isAdd)
+                    if (dressUpOption != DressUpOption.Add)
                     {
                         Remove(itemId);
                     }
@@ -233,7 +241,7 @@ namespace GFGGame
             _dressUpData.actionId = 0;
             foreach (int itemID in itemList)
             {
-                AddOrRemove(itemID, false, false, true);
+                AddOrRemove(itemID, false, DressUpOption.Remove);
             }
             if (checkDefault)
             {
@@ -274,12 +282,6 @@ namespace GFGGame
             }
         }
 
-        //刷新视图,用于新设置sceneobj后的初始显示
-        private void UpdateRoleView()
-        {
-            PutOnDressUpData(DressUpDataClone());
-        }
-
         /// <summary>
         /// 尝试穿戴配置套装
         /// </summary>
@@ -290,11 +292,7 @@ namespace GFGGame
         /// <param name="CheckOwn">是否只显示主角拥有的部件</param>
         public void PutOnSuitCfg(int id, bool tryShowAction, int[] excludeType = null, bool showOptional = true, bool CheckOwn = true)
         {
-            if (_dressUpData.suitId == id)
-            {
-                return;
-            }
-            TakeOffAll(false);
+            bool oldIsAction = IsAction;
             _dressUpData.suitId = id;
             bool hasSuitActionRes = DressUpMenuSuitDataManager.CheckSuitHasActionRes(_dressUpData.suitId);
             _dressUpData.actionId = (hasSuitActionRes && tryShowAction) ? id : 0;
@@ -302,13 +300,14 @@ namespace GFGGame
             List<int> items = new List<int>(suitCfg.partsArr);
             if (showOptional)
             {
-
                 if (suitCfg.partsOptionalArr != null && suitCfg.partsOptionalArr.Length > 0)
                 {
                     items.AddRange(suitCfg.partsOptionalArr);
                 }
             }
             int subType = 0;
+            //找到要穿的散件
+            List<int> targetItemList = new List<int>();
             foreach (int itemId in items)
             {
                 if (!CheckOwn || DressUpMenuItemDataManager.CheckHasItem(itemId))
@@ -319,11 +318,12 @@ namespace GFGGame
                     {
                         if (excludeType == null || Array.IndexOf(excludeType, subType) < 0)
                         {
-                            AddOrRemove(itemId, false, true);
+                            targetItemList.Add(itemId);
                         }
                     }
                 }
             }
+            CompareAndAddItemList(oldIsAction, IsAction, targetItemList);
             checkDefaultItem();
         }
 
@@ -336,10 +336,16 @@ namespace GFGGame
             {
                 foreach (int itemId in itemList)
                 {
-                    bool notInAction = SuitCfgArray.Instance.CheckItemNotInAction(itemId);
-                    if (!notInAction)
+                    if(!DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(itemId))
                     {
-                        AddOrRemove(itemId, false, false, true);
+                        //场景类型不受动作影响并且本来就有动画,对非场景类型处理
+                        AddOrRemove(itemId, false, DressUpOption.Remove);
+                        bool notInAction = SuitCfgArray.Instance.CheckItemNotInAction(itemId);
+                        if (notInAction)
+                        {
+                            //更新成动画模式
+                            AddOrRemove(itemId, false, DressUpOption.Add);
+                        }
                     }
                 }
             }
@@ -374,28 +380,41 @@ namespace GFGGame
                         bool notInAction = SuitCfgArray.Instance.CheckItemNotInAction(itemId);
                         if (!notInAction)
                         {
-                            AddOrRemove(itemId, false, true);
+                            AddOrRemove(itemId, false, DressUpOption.Add);
                         }
                     }
                 }
             }
-            UpdateRoleView();
+            //更新非场景类型部件形态
+            foreach (int itemId in itemList)
+            {
+                if (!DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(itemId))
+                {
+                    //场景类型不受动作影响并且本来就有动画,对非场景类型处理
+                    bool notInAction = SuitCfgArray.Instance.CheckItemNotInAction(itemId);
+                    if (notInAction)
+                    {
+                        //更新成图片模式
+                        AddOrRemove(itemId, false, DressUpOption.Add);
+                    }
+                }
+            }
+            checkDefaultItem();
         }
 
         //穿戴一组换装数据
-        public void PutOnDressUpData(DressUpData dressUpData)
+        public void PutOnDressUpData(DressUpData targetDressUpData)
         {
-            TakeOffAll(false);
-            _dressUpData.suitId = dressUpData.suitId;
-            _dressUpData.actionId = dressUpData.actionId;
-            if (dressUpData.bgId > 0)
-            {
-                AddOrRemove(dressUpData.bgId, false);
-            }
-            foreach (int itemID in dressUpData.itemList)
+            bool oldIsAction = IsAction;
+            _dressUpData.suitId = targetDressUpData.suitId;
+            _dressUpData.actionId = targetDressUpData.actionId;
+            var targetItemList = new List<int>();
+            targetItemList.AddRange(targetDressUpData.itemList);
+            if (targetDressUpData.bgId > 0)
             {
-                AddOrRemove(itemID, false, true);
+                targetItemList.Add(targetDressUpData.bgId);
             }
+            CompareAndAddItemList(oldIsAction, IsAction, targetItemList);
             checkDefaultItem();
 
         }
@@ -406,14 +425,13 @@ namespace GFGGame
             PutOnDressUpData(DressUpData.CreateDefault());
         }
 
-        //穿戴一组散件数据(会先脱掉原来的再穿
-        public void PutOnItemList(List<int> itemList)
+        //穿戴一组散件数据(会脱掉不包含的部分
+        public void PutOnItemList(List<int> targetItemList)
         {
-            TakeOffAll(false);
-            foreach (int itemID in itemList)
-            {
-                AddOrRemove(itemID, false, true);
-            }
+            bool oldIsAction = IsAction;
+            _dressUpData.suitId = 0;
+            _dressUpData.actionId = 0;
+            CompareAndAddItemList(oldIsAction, IsAction, targetItemList);
             checkDefaultItem();
         }
 
@@ -469,6 +487,33 @@ namespace GFGGame
             }
         }
 
+        //与身上的散件对比差异然后添加
+        private void CompareAndAddItemList(bool oldIsAction, bool newIsAction, List<int> targetItemList)
+        {
+            bool actionStatusChanged = (oldIsAction && !newIsAction) || (!oldIsAction && newIsAction);
+            foreach (int itemID in itemList)
+            {
+                if (!targetItemList.Contains(itemID))
+                {
+                    //移除不穿的部件
+                    AddOrRemove(itemID, false, DressUpOption.Remove);
+                }
+                else if (actionStatusChanged)
+                {
+                    //当动画形态切换时
+                    if (!DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(itemID))
+                    {
+                        //非场景类型重穿
+                        AddOrRemove(itemID, false, DressUpOption.Remove);
+                    }
+                }
+            }
+            foreach (int itemID in targetItemList)
+            {
+                AddOrRemove(itemID, false, DressUpOption.Add);
+            }
+        }
+
         //检测当前穿戴是否是一件完整套装,且只穿了一件套装,返回套装id
         private int CheckCurDressIsSuit()
         {

+ 1 - 0
GameClient/Assets/Game/HotUpdate/DressUp/DressUpPart.cs

@@ -14,6 +14,7 @@ namespace GFGGame
             {
                 Timers.inst.Remove(OnTimer);
             }
+            OnTimer = null;
         }
     }
 }

+ 11 - 3
GameClient/Assets/Game/HotUpdate/DressUp/DressUpUtil.cs

@@ -262,8 +262,12 @@ namespace GFGGame
             var objName = string.Format(FORMAT_ANIMATION_NAME, itemCfg.subType, layerId);
             TryRemoveObj(parentObj, objName);
             string ext = ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType);
-            //这里需要先添加静态图,防止加载动画有延迟,出现光头
-            GameObject spriteObj = AddSpriteObj(res, ext, spritObjName, parentObj, sortingOrder, needSetMask);
+            GameObject spriteObj = null;
+            if (DressUpMenuItemCfg1Array.Instance.CheckIsDefaultType(itemCfg.subType))
+            {
+                //默认类型的部件需要先添加静态图,防止加载动画有延迟,出现光头
+                spriteObj = AddSpriteObj(res, ext, spritObjName, parentObj, sortingOrder, needSetMask);
+            }
 
             GameObject addAniObj = null;
             if (showAni)
@@ -301,7 +305,11 @@ namespace GFGGame
                     Timers.inst.Add(0.03f, 1, dressUpPart.OnTimer);
                 }
             }
-
+            if (spriteObj == null && addAniObj == null)
+            {
+                //如果两个都没有,就添加静态图
+                spriteObj = AddSpriteObj(res, ext, spritObjName, parentObj, sortingOrder, needSetMask);
+            }
             objName = string.Format(FORMAT_EFFECT_OBJ_NAME, itemCfg.subType, layerId);
             TryRemoveObj(parentObj, objName);
             TryAddEffectObj(res, objName, parentObj, sortingOrder, addAniObj != null);

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/ClothingShop/ClothingShopView.cs

@@ -231,7 +231,7 @@ namespace GFGGame
         private void UpdateRole(bool tween)
         {
             _dressUpObjUI.ResetSceneObj(70, false, true, null, false);
-            _dressUpObjUI.dressUpObj.AddOrRemove(_cfgSelected.itemId, true, true);
+            _dressUpObjUI.dressUpObj.AddOrRemove(_cfgSelected.itemId, true, DressUpOption.Add);
             _dressUpObjUI.UpdateWrapper(_ui.m_compHolder.m_compMover.m_holder);
             int type = ItemUtilCS.GetItemSubType(_cfgSelected.itemId);
             float duration = DURATION;

+ 2 - 9
GameClient/Assets/Game/HotUpdate/Views/CreateRole/CreateRoleView.cs

@@ -74,15 +74,8 @@ namespace GFGGame
 
         private async void RandomRoleName()
         {
-            (int result, string name) = await LoginHelper.ReqRandomRoleName();
-            if (result == ErrorCode.ERR_Success)
-            {
-                _ui.m_inputName.text = name;
-            }
-            else
-            {
-                ErrorCodeController.Handler(result);
-            }
+            string name = await LoginController.ReqRandomRoleName();
+            _ui.m_inputName.text = name;
         }
 
     }

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

@@ -344,7 +344,6 @@ namespace GFGGame
             _isNormalSuitType = !showAction;
             this.showListParts2(suitId);
             this.hideListParts();
-            MyDressUpHelper.dressUpObj.TakeOffAll();
             if (showAction)
             {
 

+ 2 - 2
GameClient/ProjectSettings/ProjectSettings.asset

@@ -257,7 +257,7 @@ PlayerSettings:
   AndroidTargetArchitectures: 2
   AndroidTargetDevices: 0
   AndroidSplashScreenScale: 2
-  androidSplashScreen: {fileID: 2800000, guid: 54987337fef777b46980ba168894a879, type: 3}
+  androidSplashScreen: {fileID: 2800000, guid: f6233d8fa06ec8f47be121cb17376b7c, type: 3}
   AndroidKeystoreName: 
   AndroidKeyaliasName: 
   AndroidBuildApkPerCpuArchitecture: 0
@@ -679,7 +679,7 @@ PlayerSettings:
   ps4IncludedModules: []
   ps4attribVROutputEnabled: 0
   monoEnv: 
-  splashScreenBackgroundSourceLandscape: {fileID: 21300000, guid: 54987337fef777b46980ba168894a879, type: 3}
+  splashScreenBackgroundSourceLandscape: {fileID: 21300000, guid: f6233d8fa06ec8f47be121cb17376b7c, type: 3}
   splashScreenBackgroundSourcePortrait: {fileID: 0}
   blurSplashScreenBackground: 0
   spritePackerPolicy: