Browse Source

拍照重构

zhaoyang 3 years ago
parent
commit
7b3345f35d

+ 6 - 6
FGUIProject/assets/Main/components/comClickCircle.xml

@@ -7,17 +7,17 @@
     <component id="n7_vuz5" name="ComScoreResult" src="vuz5bi" fileName="components/ComScoreResult.xml" xy="-7,-8" visible="false"/>
   </displayList>
   <transition name="t0">
-    <item time="0" type="Scale" target="n11_vuz5" label="big" tween="true" startValue="1,1" endValue="0.5,0.5" duration="12" label2="small" ease="Linear"/>
+    <item time="0" type="Scale" target="n11_vuz5" label="big" tween="true" startValue="1,1" endValue="0.5,0.5" duration="15" label2="small" ease="Linear"/>
     <item time="0" type="Visible" target="n12_vuz5" value="true"/>
-    <item time="12" type="Scale" target="n11_vuz5" label="small" tween="true" startValue="0.5,0.5" endValue="0,0" duration="12" ease="Linear"/>
-    <item time="24" type="Visible" target="n12_vuz5" value="false"/>
+    <item time="15" type="Scale" target="n11_vuz5" label="small" tween="true" startValue="0.5,0.5" endValue="0,0" duration="14" ease="Linear"/>
+    <item time="29" type="Visible" target="n12_vuz5" value="false"/>
   </transition>
   <transition name="t1">
     <item time="0" type="Alpha" target="n7_vuz5" value="1"/>
     <item time="0" type="Visible" target="n12_vuz5" value="false"/>
     <item time="0" type="Visible" target="n7_vuz5" value="true"/>
-    <item time="0" type="XY" target="n7_vuz5" tween="true" startValue="-7,-8" endValue="-7,-259" duration="12" ease="Linear"/>
-    <item time="6" type="Alpha" target="n7_vuz5" tween="true" startValue="1" endValue="0" duration="6" ease="Linear"/>
-    <item time="12" type="Visible" target="n7_vuz5" value="false"/>
+    <item time="0" type="XY" target="n7_vuz5" tween="true" startValue="-7,-8" endValue="-7,-259" duration="19" ease="Linear"/>
+    <item time="9" type="Alpha" target="n7_vuz5" tween="true" startValue="1" endValue="0" duration="10" ease="Linear"/>
+    <item time="19" type="Visible" target="n7_vuz5" value="false"/>
   </transition>
 </component>

+ 84 - 2
GameClient/Assets/Game/HotUpdate/Data/PhotographDataManager.cs

@@ -15,6 +15,8 @@ namespace GFGGame
     }
     public class PhotographDataManager : SingletonBase<PhotographDataManager>
     {
+        public List<GameObject> itemGameObjs = new List<GameObject>();
+
         public List<int> _equipRoleData = new List<int>();//当前穿戴的角色数据
         public Dictionary<int, List<int>> _equipSceneData = new Dictionary<int, List<int>>();//当前穿戴的场景数据
 
@@ -126,10 +128,62 @@ namespace GFGGame
         }
 
 
-        public void SetLayer(GameObject parentObj, int layer, string state)
+        public void SetLayer(GameObject hitGameObj, string state)
+        {
+            if (state != "refresh")
+            {
+                int index = itemGameObjs.IndexOf(hitGameObj);
+                if (state != "top")
+                {
+                    if (index < 0)
+                    {
+                        PromptController.Instance.ShowFloatTextPrompt("未选中任物品");
+                        return;
+                    }
+                    if (index == 0 && state == "down")
+                    {
+                        PromptController.Instance.ShowFloatTextPrompt("已经在最下层了");
+                        return;
+                    }
+                    if (index == itemGameObjs.Count - 1 && state == "up")
+                    {
+                        PromptController.Instance.ShowFloatTextPrompt("已经在最上层了");
+                        return;
+                    }
+                }
+                GameObject gameObject = itemGameObjs[index];
+                itemGameObjs.RemoveAt(index);
+                if (state == "up")
+                {
+                    itemGameObjs.Insert((index + 1), gameObject);
+
+                }
+                else if (state == "down")
+                {
+                    itemGameObjs.Insert((index - 1), gameObject);
+
+                }
+                else if (state == "top")
+                {
+                    itemGameObjs.Add(gameObject);
+                }
+                else
+                {
+                    PromptController.Instance.ShowFloatTextPrompt(state + "操作失败");
+                    return;
+                }
+            }
+
+            for (int i = 0; i < itemGameObjs.Count; i++)
+            {
+                PhotographDataManager.Instance.ChangeLayer(itemGameObjs[i], i * 100, state);
+            }
+
+        }
+        private void ChangeLayer(GameObject parentObj, int layer, string state)
         {
             int count = 0;
-            if (state == "up")
+            if (state == "up" || state == "top")
             {
                 count = layer - GetMinLayer(parentObj);
             }
@@ -212,5 +266,33 @@ namespace GFGGame
             }
         }
 
+
+
+        public void AddItemGameObject(GameObject parentGameObj, bool setLayer)
+        {
+            itemGameObjs.Add(parentGameObj);
+
+            if (setLayer)
+            {
+                int index = itemGameObjs.Count - 1;
+                PhotographDataManager.Instance.ChangeLayer(itemGameObjs[index], index * 100, "up");
+            }
+            itemGameObjs.Sort((GameObject a, GameObject b) =>
+            {
+
+                int layerA = PhotographDataManager.Instance.GetMinLayer(a);
+                int layerB = PhotographDataManager.Instance.GetMinLayer(b);
+                if (layerA < layerB)
+                {
+                    return -1;
+                }
+                else if (layerA > layerB)
+                {
+                    return 1;
+                }
+                return 0;
+            });
+
+        }
     }
 }

+ 60 - 0
GameClient/Assets/Game/HotUpdate/Data/PhotographSceneManager.cs

@@ -0,0 +1,60 @@
+using UnityEngine;
+
+namespace GFGGame
+{
+    public class PhotographSceneManager : SingletonBase<PhotographSceneManager>
+    {
+        public GameObject sceneObject;
+
+        public void AddBgItem(ItemCfg itemCfg)
+        {
+            Transform tf = sceneObject.transform.Find("Bg/BgRes");
+            string resPath = ResPathUtil.GetDressUpPath(itemCfg.res, ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType));
+            SceneController.SetSpriteRendererToTransform(tf, resPath);
+            SpriteRenderer spr = tf.GetComponent<SpriteRenderer>();
+            spr.sortingOrder = ItemTypeCfgArray.Instance.GetCfg(ConstDressUpItemType.BEI_JING).defaultLayer;
+            SceneController.SetBoxCollider2DToGameObject(tf.gameObject);
+
+        }
+        public void AddBorderItem(ItemCfg itemCfg)
+        {
+            Transform tf = sceneObject.transform.Find("Border/BorderRes");
+            SpriteRenderer spr = tf.GetComponent<SpriteRenderer>();
+            if (spr != null)
+            {
+                GameObject.Destroy(spr);
+            }
+            string resPath = ResPathUtil.GetPhotographFPath(itemCfg.res, ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType));
+            SceneController.SetSpriteRendererToTransform(tf, resPath);
+            spr = tf.GetComponent<SpriteRenderer>();
+            spr.sortingOrder = 10000;//边框在所有道具的上边
+
+        }
+        public void AddSceneItem(ItemCfg itemCfg, int layer, bool setLayer)
+        {
+
+            GameObject parentGameObj = new GameObject(string.Format("{0}_{1}", itemCfg.id, 0));
+            SceneController.AddItemToScene(sceneObject, parentGameObj, itemCfg.id, 1, layer);
+            PhotographDataManager.Instance.AddItemGameObject(parentGameObj, setLayer);
+
+        }
+        public void AddNpcItem(ItemCfg itemCfg)
+        {
+            Transform tf = sceneObject.transform.Find("Scene/Npc/NpcRes");
+            string resPath = ResPathUtil.GetNpcPicFPath(itemCfg.res);
+            SceneController.SetSpriteRendererToTransform(tf, resPath);
+            SpriteRenderer spr = tf.GetComponent<SpriteRenderer>();
+
+            tf.localPosition = new Vector2(-spr.bounds.center.x, -spr.bounds.center.y);
+            SceneController.SetBoxCollider2DToGameObject(tf.gameObject);
+            PhotographDataManager.Instance.AddItemGameObject(tf.parent.gameObject, true);
+
+        }
+        public void AddBodyItem()
+        {
+            GameObject bodyParent = sceneObject.transform.Find("Scene/Role").gameObject;
+            SceneController.UpdatePhotographBody(PhotographDataManager.Instance._equipRoleData.ToArray(), sceneObject, bodyParent);
+            PhotographDataManager.Instance.AddItemGameObject(bodyParent, false);
+        }
+    }
+}

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

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

+ 57 - 195
GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographView.cs

@@ -25,10 +25,12 @@ namespace GFGGame
         private const string RolePath = "Scene/Role";
         private const string RoleName = "Role";
         private const string NpcPath = "Scene/Npc";
+        private const string NpcName = "Npc";
         private const string BgResName = "BgRes";
 
         private List<int> _listData = null;//当前选择的资源数据
-        private List<GameObject> _itemGameObjs = new List<GameObject>();
+        private List<GameObject> _itemGameObjs;// = new List<GameObject>();
+
         public Dictionary<int, List<int>> _equipSceneData = new Dictionary<int, List<int>>();//当前穿戴的场景数据
         private Dictionary<GameObject, float> _equipDistance = new Dictionary<GameObject, float>();
 
@@ -82,7 +84,7 @@ namespace GFGGame
             _ui.m_comSelectBox.m_btnFlip.onTouchEnd.Add(OnTouchBtnFlipEnd);
 
             _ui.m_comSelectBox.m_btnDelete.onTouchBegin.Add(OnTouchBtnDeleteBegin);
-            _ui.m_comSelectBox.m_btnDelete.onTouchEnd.Add(OnTouchBtnDeleteEnd);
+
 
             _ui.m_btnUp.onClick.Add(OnClickBtnUp);
             _ui.m_btnDown.onClick.Add(OnClickBtnDown);
@@ -97,11 +99,13 @@ namespace GFGGame
             PhotographDataManager.Instance.ClassifyEquipData();
             _equipSceneData = PhotographDataManager.Instance._equipSceneData;
 
-            _itemGameObjs.Clear();
+            PhotographDataManager.Instance.itemGameObjs.Clear();
+            _itemGameObjs = PhotographDataManager.Instance.itemGameObjs;
             if (_sceneObject == null)
             {
                 _sceneObject = GameObject.Instantiate(_scenePrefab);
                 EquipDataCache.cacher.setSceneObj(_sceneObject);
+                PhotographSceneManager.Instance.sceneObject = _sceneObject;
             }
             pinchGesture = new PinchGesture(_ui.target);
             pinchGesture.onAction.Add(OnPinch);
@@ -112,13 +116,18 @@ namespace GFGGame
 
             RefreshList(EnumPhotographType.BG);
             SetUIView();
-            UpdateBg(ItemCfgArray.Instance.GetCfg(EquipDataCache.cacher.bgId));
-            UpdateBody();
+            // UpdateBg(ItemCfgArray.Instance.GetCfg(EquipDataCache.cacher.bgId));
+            PhotographSceneManager.Instance.AddBgItem(ItemCfgArray.Instance.GetCfg(EquipDataCache.cacher.bgId));
+
+            // UpdateBody();
+            PhotographSceneManager.Instance.AddBodyItem();
             UpdateScene();
-            for (int i = 0; i < _itemGameObjs.Count; i++)
-            {
-                PhotographDataManager.Instance.SetLayer(_itemGameObjs[i], i * 100, "up");
-            }
+            // for (int i = 0; i < _itemGameObjs.Count; i++)
+            // {
+            //     PhotographDataManager.Instance.ChangeLayer(_itemGameObjs[i], i * 100, "up");
+            // }
+            PhotographDataManager.Instance.SetLayer(null, "refresh");
+
             if (GuideDataManager.GetGuideCountCopy(ConstGuideId.PHOTOGRAPH) > 0)
             {
                 _ui.m_loaGuide.enabled = false;
@@ -168,30 +177,21 @@ namespace GFGGame
             switch (type)
             {
                 case EnumPhotographType.BG:
-                    UpdateBg(itemCfg);
+
+                    PhotographSceneManager.Instance.AddBgItem(itemCfg);
                     break;
 
                 case EnumPhotographType.BORDER:
-                    if (_listData.IndexOf(itemID) == 0)
-                    {
-                        Transform tf = _sceneObject.transform.Find(BorderResPath);
-                        SpriteRenderer spr = tf.GetComponent<SpriteRenderer>();
-                        if (spr != null)
-                        {
-                            GameObject.Destroy(spr);
-                        }
-                        return;
-                    }
-                    UpdateBorder(itemCfg);
+
+                    PhotographSceneManager.Instance.AddBorderItem(itemCfg);
                     break;
 
                 case EnumPhotographType.NPC:
 
-                    UpdateNpc(itemCfg);
+                    PhotographSceneManager.Instance.AddNpcItem(itemCfg);
                     break;
 
                 case EnumPhotographType.SCENE:
-
                     AddSceneItem(itemCfg, false, true);
                     break;
                 case EnumPhotographType.EFFECT:
@@ -199,6 +199,33 @@ namespace GFGGame
                     break;
             }
         }
+        //添加初始场景道具
+        private void UpdateScene()
+        {
+            ICollection keys = _equipSceneData.Keys;
+            foreach (int key in keys)
+            {
+                for (int i = 0; i < _equipSceneData[key].Count; i++)
+                {
+                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(key);
+
+                    AddSceneItem(itemCfg, true, false);
+                }
+            }
+        }
+
+        private void AddSceneItem(ItemCfg itemCfg, bool isDefaultLayer, bool setLayer)
+        {
+            if (itemCfg.resLayer2 > 0)
+            {
+                PhotographSceneManager.Instance.AddSceneItem(itemCfg, itemCfg.resLayer2, setLayer);
+            }
+
+            if (itemCfg.resLayer1 > 0)
+            {
+                PhotographSceneManager.Instance.AddSceneItem(itemCfg, itemCfg.resLayer1, setLayer);
+            }
+        }
         /************************************************************场景*********************************************************/
 
         private void OnTouchUIBegin(EventContext context)
@@ -228,14 +255,7 @@ namespace GFGGame
 
                     _ui.m_comSelectBox.target.visible = true;
 
-                    int index = _itemGameObjs.IndexOf(hitGameObj);
-                    GameObject gameObject = _itemGameObjs[index];
-                    _itemGameObjs.RemoveAt(index);
-                    _itemGameObjs.Add(gameObject);
-                    for (int i = 0; i < _itemGameObjs.Count; i++)
-                    {
-                        PhotographDataManager.Instance.SetLayer(_itemGameObjs[i], i * 100, "up");
-                    }
+                    PhotographDataManager.Instance.SetLayer(hitGameObj, "top");
 
                     if (!_equipDistance.ContainsKey(hitGameObj))
                     {
@@ -263,13 +283,14 @@ namespace GFGGame
                         rotation = hitGameObj.transform.localEulerAngles.z;
                     }
                 }
-                _ui.m_comSelectBox.target.rotation = rotation;// localEulerAngles.y != 0 ? hitGameObj.transform.localEulerAngles.z : -hitGameObj.transform.localEulerAngles.z;
+                _ui.m_comSelectBox.target.rotation = rotation;
                 Debug.Log("rotation:" + _ui.m_comSelectBox.target.rotation + "   " + _ui.m_comSelectBox.target.rotationX + "    " + _ui.m_comSelectBox.target.rotationY);
                 _ui.m_comSelectBox.target.size = SceneController.GetGameObjectSize(hitGameObj);
                 ControllerSelectBoxPos();
 
             }
         }
+
         private void OnTouchUIMove(EventContext context)
         {
             if (hitGameObj == null) return;//未选中任何物体
@@ -282,7 +303,6 @@ namespace GFGGame
         }
         private void OnTouchUIEnd(EventContext context)
         {
-            // if (Stage.inst.touchCount > 1 || context.inputEvent.touchId != 0) return; //只监听1根手指
             hitGameObj = null;
         }
 
@@ -404,132 +424,9 @@ namespace GFGGame
         }
 
 
-        private void UpdateBg(ItemCfg itemCfg)
-        {
-            Transform tf = _sceneObject.transform.Find(BgResPath);
-            string resPath = ResPathUtil.GetDressUpPath(itemCfg.res, ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType));
-            SceneController.SetSpriteRendererToTransform(tf, resPath);
-            SpriteRenderer spr = tf.GetComponent<SpriteRenderer>();
-            spr.sortingOrder = ItemTypeCfgArray.Instance.GetCfg(ConstDressUpItemType.BEI_JING).defaultLayer;
-            SceneController.SetBoxCollider2DToGameObject(tf.gameObject);
-        }
-        //主角
-        private void UpdateBody()
-        {
-            GameObject bodyParent = _sceneObject.transform.Find(RolePath).gameObject;
-            SceneController.UpdatePhotographBody(PhotographDataManager.Instance._equipRoleData.ToArray(), _sceneObject, bodyParent);
-            AddItemGameObject(bodyParent, false);
-
-        }
-        //添加初始场景道具
-        private void UpdateScene()
-        {
-            ICollection keys = _equipSceneData.Keys;
-            foreach (int key in keys)
-            {
-                for (int i = 0; i < _equipSceneData[key].Count; i++)
-                {
-                    ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(key);
-                    int defaultLayer = ItemTypeCfgArray.Instance.GetCfg(itemCfg.subType).defaultLayer;
-                    AddSceneItem(itemCfg, true, false);
-                }
-            }
-        }
-        private void UpdateNpc(ItemCfg itemCfg)
-        {
-            Transform tf = _sceneObject.transform.Find(NpcResPath);
-            string resPath = ResPathUtil.GetNpcPicFPath(itemCfg.res);
-            SceneController.SetSpriteRendererToTransform(tf, resPath);
-            SpriteRenderer spr = tf.GetComponent<SpriteRenderer>();
-
-            tf.localPosition = new Vector2(-spr.bounds.center.x, -spr.bounds.center.y);
-            SceneController.SetBoxCollider2DToGameObject(tf.gameObject);
-            AddItemGameObject(tf.parent.gameObject, true);
-
-        }
-        private void UpdateBorder(ItemCfg itemCfg)
-        {
-            Transform tf = _sceneObject.transform.Find(BorderResPath);
-            string resPath = ResPathUtil.GetPhotographFPath(itemCfg.res, ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType));
-            SceneController.SetSpriteRendererToTransform(tf, resPath);
-            SpriteRenderer spr = tf.GetComponent<SpriteRenderer>();
-            spr.sortingOrder = 10000;//边框在所有道具的上边
-        }
-        private void UpdateEffect()
-        {
-
-        }
-
-
-        private void AddSceneItem(ItemCfg itemCfg, bool isDefaultLayer, bool setLayer)
-        {
-            int index = 0;
-
-            GameObject parentGameObj;
-            if (itemCfg.resLayer2 > 0)
-            {
-                if (!isDefaultLayer)
-                {
-                    PhotographDataManager.Instance.AddEquipItem(_equipSceneData, itemCfg.id, out _equipSceneData);
-                }
-                index = _equipSceneData[itemCfg.id].Count - 1;
-                parentGameObj = new GameObject(string.Format("{0}_{1}_{2}", itemCfg.id, index, 1));
-                SceneController.AddItemToScene(_sceneObject, parentGameObj, itemCfg.id, 2, itemCfg.resLayer2);
-
-                AddItemGameObject(parentGameObj, setLayer);
-
-            }
-            if (itemCfg.resLayer1 > 0)
-            {
-                if (!isDefaultLayer)
-                {
-                    PhotographDataManager.Instance.AddEquipItem(_equipSceneData, itemCfg.id, out _equipSceneData);
-                }
-                index = _equipSceneData[itemCfg.id].Count - 1;
-
-                parentGameObj = new GameObject(string.Format("{0}_{1}_{2}", itemCfg.id, index, 0));
-                SceneController.AddItemToScene(_sceneObject, parentGameObj, itemCfg.id, 1, itemCfg.resLayer1);
-
-                AddItemGameObject(parentGameObj, setLayer);
-
-            }
-        }
-
-        private void AddItemGameObject(GameObject parentGameObj, bool setLayer)
-        {
-            _itemGameObjs.Add(parentGameObj);
-
-            if (setLayer)
-            {
-                int index = _itemGameObjs.Count - 1;
-                PhotographDataManager.Instance.SetLayer(_itemGameObjs[index], index * 100, "up");
-            }
-            _itemGameObjs.Sort((GameObject a, GameObject b) =>
-            {
-
-                int layerA = PhotographDataManager.Instance.GetMinLayer(a);
-                int layerB = PhotographDataManager.Instance.GetMinLayer(b);
-                if (layerA < layerB)
-                {
-                    return -1;
-                }
-                else if (layerA > layerB)
-                {
-                    return 1;
-                }
-                return 0;
-            });
-
-        }
-
-
-
-
         private void OnClickBtnBg()
         {
             _ui.m_ComSelectRes.target.visible = false;
-            // GuideController.TryGuideOpenPhotographView(null);
-
         }
         private void OnClickLoaGuide()
         {
@@ -566,7 +463,7 @@ namespace GFGGame
             {
                 return;
             }
-            else if (memoryHitGameObj.transform.name == NpcPath)
+            else if (memoryHitGameObj.transform.name == NpcName)
             {
                 SpriteRenderer spriteRenderer = memoryHitGameObj.transform.GetChild(0).GetComponent<SpriteRenderer>();
                 if (spriteRenderer != null)
@@ -580,12 +477,8 @@ namespace GFGGame
             }
             _itemGameObjs.Remove(memoryHitGameObj);
             _ui.m_comSelectBox.target.visible = false;
-
         }
-        private void OnTouchBtnDeleteEnd()
-        {
 
-        }
         private void SetUIView()
         {
             _ui.m_ComSelectRes.target.visible = true;
@@ -597,46 +490,15 @@ namespace GFGGame
         private void OnClickBtnUp()
         {
 
-            int index = _itemGameObjs.IndexOf(memoryHitGameObj);
-            if (index < 0)
-            {
-                PromptController.Instance.ShowFloatTextPrompt("未选中任物品");
-                return;
-            }
-            if (index == _itemGameObjs.Count - 1)
-            {
-                PromptController.Instance.ShowFloatTextPrompt("已经在最上层了");
-                return;
-            }
-
-            GameObject gameObject = _itemGameObjs[index];
-            _itemGameObjs.RemoveAt(index);
-            _itemGameObjs.Insert((index + 1), gameObject);
-            PhotographDataManager.Instance.SetLayer(memoryHitGameObj, (index + 1) * 100, "up");
-            PhotographDataManager.Instance.SetLayer(_itemGameObjs[index], index * 100, "down");
+            PhotographDataManager.Instance.SetLayer(memoryHitGameObj, "up");
         }
         private void OnClickBtnDown()
         {
+            PhotographDataManager.Instance.SetLayer(memoryHitGameObj, "down");
+        }
 
-            int index = _itemGameObjs.IndexOf(memoryHitGameObj);
-            if (index < 0)
-            {
-                PromptController.Instance.ShowFloatTextPrompt("未选中任物品");
-                return;
-            }
-            if (index == 0)
-            {
-                PromptController.Instance.ShowFloatTextPrompt("已经在最下层了");
-                return;
-            }
 
-            GameObject gameObject = _itemGameObjs[index];
-            _itemGameObjs.RemoveAt(index);
-            _itemGameObjs.Insert((index - 1), gameObject);
-            PhotographDataManager.Instance.SetLayer(memoryHitGameObj, (index - 1) * 100, "down");
-            PhotographDataManager.Instance.SetLayer(_itemGameObjs[index], index * 100, "up");
 
-        }
         private void OnClickBtnPhotograph()
         {
             _ui.target.visible = false;