|
@@ -13,43 +13,49 @@ namespace GFGGame
|
|
|
private UI_PhotographUI _ui;
|
|
|
private GameObject _scenePrefab;
|
|
|
private GameObject _sceneObject;
|
|
|
- private DressUpObjDataCache equipDataCache;
|
|
|
+ // private DressUpObjDataCache equipDataCache;
|
|
|
|
|
|
- private const string MOVE = "MOVE";
|
|
|
- private const string SCALE = "SCALE";
|
|
|
- private const string ROTATION = "ROTATION";
|
|
|
+ // private const string MOVE = "MOVE";
|
|
|
+ // private const string SCALE = "SCALE";
|
|
|
+ // private const string ROTATION = "ROTATION";
|
|
|
private const float MaxScale = 2;
|
|
|
private const float MinScale = 0.1f;
|
|
|
-
|
|
|
- private GameObject bodyParent;
|
|
|
- private GameObject bgParent;
|
|
|
- private GameObject npcParent;
|
|
|
- private GameObject borderParent;
|
|
|
- private GameObject sceneParent;
|
|
|
+ private const string BgResPath = "Bg/BgRes";
|
|
|
+ private const string BorderResPath = "Border/BorderRes";
|
|
|
+ private const string NpcResPath = "Scene/Npc/NpcRes";
|
|
|
+ private const string RolePath = "Scene/Role";
|
|
|
+ private const string NpcPath = "Scene/Npc";
|
|
|
+ private const string BgResName = "BgRes";
|
|
|
+ // private const string BorderResName = "BorderRes";
|
|
|
+
|
|
|
+ // private GameObject bodyParent;
|
|
|
+ // private GameObject bgParent;
|
|
|
+ // private GameObject npcParent;
|
|
|
+ // private GameObject borderParent;
|
|
|
+ // private GameObject sceneParent;
|
|
|
|
|
|
private List<int> _listData = null;//当前选择的资源数据
|
|
|
- private List<int> _equipRoleData = new List<int>();//当前穿戴的角色数据
|
|
|
- private Dictionary<int, List<int>> _equipSceneData = new Dictionary<int, List<int>>();//当前穿戴的场景数据
|
|
|
- private Dictionary<GameObject, Vector2> _equipPos = new Dictionary<GameObject, Vector2>();
|
|
|
- private Dictionary<GameObject, Vector2> _mousePos = new Dictionary<GameObject, Vector2>();
|
|
|
+ public List<int> _equipRoleData = new List<int>();//当前穿戴的角色数据
|
|
|
+ public Dictionary<int, List<int>> _equipSceneData = new Dictionary<int, List<int>>();//当前穿戴的场景数据
|
|
|
private Dictionary<GameObject, float> _equipDistance = new Dictionary<GameObject, float>();
|
|
|
- // private GameObject hitGameObj;//当前选中的物体
|
|
|
- private GameObject hitParentGameObj;//当前选中的父物体(需要进行移动缩放旋转的物体)
|
|
|
- private GameObject memoryHitParentGameObj;//当前选中的父物体(需要进行移动缩放旋转的物体)
|
|
|
+
|
|
|
+ private GameObject hitGameObj;//当前选中的物体(单指拖动,双指缩放旋转)
|
|
|
+ private GameObject memoryHitGameObj;//当前选中的物体(单指缩放旋转)
|
|
|
|
|
|
private Vector3 distance = Vector3.zero;//点击位置和点击物体原点的距离,用于
|
|
|
private Vector2 lastPos = Vector2.zero;//上一次移动后从物体中心到鼠标位置的方向
|
|
|
|
|
|
- private float _startDistance;//从物体中心到缩放按钮的距离
|
|
|
+ // private float _startDistance;//从物体中心到缩放按钮的距离
|
|
|
|
|
|
|
|
|
private SwipeGesture swipeGesture;
|
|
|
private PinchGesture pinchGesture;
|
|
|
private RotationGesture rotationGesture;
|
|
|
|
|
|
- private bool isTouchUI = false;//点击在m_comSelectBox按钮上
|
|
|
+
|
|
|
private bool isTwoTouchPoint = false;
|
|
|
private int maxLayer = int.MinValue;//最上层的层级数
|
|
|
+
|
|
|
protected override void OnInit()
|
|
|
{
|
|
|
base.OnInit();
|
|
@@ -59,7 +65,7 @@ namespace GFGGame
|
|
|
isfullScreen = true;
|
|
|
|
|
|
_ui.m_btnBg.onClick.Add(OnClickBtnBg);
|
|
|
- _ui.m_btnChoose.onClick.Add(OnClickBtnChoose);
|
|
|
+ _ui.m_btnChoose.onClick.Add(SetUIView);
|
|
|
_ui.m_btnBack.onClick.Add(OnClickBtnBack);
|
|
|
_ui.m_btnPhotograph.onClick.Add(OnClickBtnPhotograph);
|
|
|
|
|
@@ -89,31 +95,26 @@ namespace GFGGame
|
|
|
{
|
|
|
base.OnShown();
|
|
|
Input.multiTouchEnabled = true;
|
|
|
- equipDataCache = EquipDataCache.cacher;
|
|
|
+ // equipDataCache = EquipDataCache.cacher;
|
|
|
+ PhotographDataManager.Instance.ClassifyEquipData();
|
|
|
+ _equipRoleData = PhotographDataManager.Instance._equipRoleData;
|
|
|
+ _equipSceneData = PhotographDataManager.Instance._equipSceneData;
|
|
|
|
|
|
if (_sceneObject == null)
|
|
|
{
|
|
|
_sceneObject = GameObject.Instantiate(_scenePrefab);
|
|
|
EquipDataCache.cacher.setSceneObj(_sceneObject);
|
|
|
- bgParent = _sceneObject.transform.Find("Bg").gameObject;
|
|
|
- bodyParent = _sceneObject.transform.Find("Scene/Role").gameObject;
|
|
|
- sceneParent = _sceneObject.transform.Find("Scene").gameObject;
|
|
|
- npcParent = _sceneObject.transform.Find("Scene/Npc").gameObject;
|
|
|
- borderParent = _sceneObject.transform.Find("Border").gameObject;
|
|
|
}
|
|
|
-
|
|
|
pinchGesture = new PinchGesture(_ui.target);
|
|
|
pinchGesture.onAction.Add(OnPinch);
|
|
|
rotationGesture = new RotationGesture(_ui.target);
|
|
|
rotationGesture.onAction.Add(OnRotate);
|
|
|
|
|
|
_ui.m_ComSelectRes.m_comBtnTab.m_c1.selectedIndex = 0;
|
|
|
- OnClickBtnChoose();
|
|
|
- RefreshList(EnumPhotographType.BG);
|
|
|
- DisposeEquipData();
|
|
|
-
|
|
|
- SceneController.UpdatePhotographBgOrNpcOrBorder(_sceneObject, EnumPhotographType.BG, equipDataCache.bgId, maxLayer, out maxLayer);
|
|
|
|
|
|
+ RefreshList(EnumPhotographType.BG);
|
|
|
+ SetUIView();
|
|
|
+ UpdateBg(ItemCfgArray.Instance.GetCfg(EquipDataCache.cacher.bgId));
|
|
|
UpdateBody();
|
|
|
UpdateScene();
|
|
|
|
|
@@ -128,24 +129,7 @@ namespace GFGGame
|
|
|
{
|
|
|
_ui.m_ComSelectRes.m_list.numItems = 0;
|
|
|
|
|
|
- switch (index)
|
|
|
- {
|
|
|
- case EnumPhotographType.BG:
|
|
|
- _listData = PhotographDataManager.Instance.listBgData;
|
|
|
- break;
|
|
|
- case EnumPhotographType.NPC:
|
|
|
- _listData = PhotographDataManager.Instance.listNpcData;
|
|
|
- break;
|
|
|
- case EnumPhotographType.SCENE:
|
|
|
- _listData = PhotographDataManager.Instance.listSceneData;
|
|
|
- break;
|
|
|
- case EnumPhotographType.BORDER:
|
|
|
- _listData = PhotographDataManager.Instance.listBorderData;
|
|
|
- break;
|
|
|
- case EnumPhotographType.EFFECT:
|
|
|
- _listData = PhotographDataManager.Instance.listEffectData;
|
|
|
- break;
|
|
|
- }
|
|
|
+ _listData = PhotographDataManager.Instance.GetListData(index);
|
|
|
_ui.m_ComSelectRes.m_list.numItems = _listData.Count;
|
|
|
}
|
|
|
private void RenderListItem(int index, GObject obj)
|
|
@@ -161,184 +145,158 @@ namespace GFGGame
|
|
|
private void OnListItemClick(EventContext context)
|
|
|
{
|
|
|
int itemID = (int)((context.data as GObject).data);
|
|
|
+ ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemID);
|
|
|
+
|
|
|
EnumPhotographType type = (EnumPhotographType)_ui.m_ComSelectRes.m_comBtnTab.m_c1.selectedIndex;
|
|
|
switch (type)
|
|
|
{
|
|
|
case EnumPhotographType.BG:
|
|
|
+ UpdateBg(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);
|
|
|
+ break;
|
|
|
+
|
|
|
case EnumPhotographType.NPC:
|
|
|
- SceneController.UpdatePhotographBgOrNpcOrBorder(_sceneObject, type, itemID, maxLayer, out maxLayer);
|
|
|
+
|
|
|
+ UpdateNpc(itemCfg);
|
|
|
break;
|
|
|
|
|
|
case EnumPhotographType.SCENE:
|
|
|
|
|
|
- PhotographDataManager.Instance.AddEquipItem(_equipSceneData, itemID, out _equipSceneData);
|
|
|
- SceneController.AddScene(_sceneObject, itemID, _equipSceneData[itemID].Count - 1, maxLayer + 1);
|
|
|
- maxLayer++;
|
|
|
+ AddSceneItem(itemCfg, false);
|
|
|
break;
|
|
|
case EnumPhotographType.EFFECT:
|
|
|
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- /************************** **********************************场景*********************************************************/
|
|
|
+ /************************************************************场景*********************************************************/
|
|
|
|
|
|
private void OnTouchUIBegin(EventContext context)
|
|
|
{
|
|
|
context.CaptureTouch();
|
|
|
- if (_ui.m_ComSelectRes.target.visible == true) return;
|
|
|
- if (Stage.inst.touchCount > 1 || context.inputEvent.touchId != 0 || isTwoTouchPoint) return;//只监听一根手指
|
|
|
- if (isTouchUI) return;
|
|
|
+
|
|
|
+ if (_ui.m_ComSelectRes.target.visible == true) return;//添加道具不监听场景点击
|
|
|
+ if (Stage.inst.touchCount > 1 && hitGameObj != null || Stage.inst.touchCount == 1 && context.inputEvent.touchId != 0) return;//两根手指&&两指不是同时按下||一根手指但属于中途换指
|
|
|
+ if (PhotographDataManager.Instance.IsTouchUI(this.viewCom)) return;
|
|
|
|
|
|
RaycastHit2D[] hit2Ds = Physics2D.RaycastAll(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
|
|
|
if (hit2Ds.Length > 0)
|
|
|
{
|
|
|
- maxLayer++;
|
|
|
- hitParentGameObj = SceneController.GetFirstHitObj(hit2Ds);
|
|
|
+ // maxLayer++;
|
|
|
+ lastPos = Vector2.zero;
|
|
|
+
|
|
|
+ hitGameObj = SceneController.GetFirstHitObj(hit2Ds);
|
|
|
|
|
|
_ui.m_comSelectBox.m_btnDelete.visible = true;
|
|
|
- if (hitParentGameObj.name == "Body")//主角不可删除
|
|
|
+ if (hitGameObj.name == "Body")//主角不可删除
|
|
|
{
|
|
|
_ui.m_comSelectBox.m_btnDelete.visible = false;
|
|
|
}
|
|
|
_ui.m_comSelectBox.target.visible = false;
|
|
|
- if (hitParentGameObj.name != "BgRes")//背景不可改动层级
|
|
|
+ if (hitGameObj.name != BgResName)//背景不可改动层级
|
|
|
{
|
|
|
- hitParentGameObj.GetComponent<SpriteRenderer>().sortingOrder = maxLayer;
|
|
|
- hitParentGameObj = hitParentGameObj.transform.parent.gameObject;
|
|
|
+ hitGameObj = hitGameObj.transform.parent.gameObject;
|
|
|
+
|
|
|
+ PhotographDataManager.Instance.SetItemLayer(hitGameObj, maxLayer);
|
|
|
+ maxLayer = PhotographDataManager.Instance.GetMaxLayer(hitGameObj, maxLayer) + 1;
|
|
|
_ui.m_comSelectBox.target.visible = true;
|
|
|
|
|
|
+ SceneController.SetGameObjectCenter(hitGameObj);
|
|
|
}
|
|
|
+ memoryHitGameObj = hitGameObj;
|
|
|
|
|
|
- distance = Input.mousePosition - Camera.main.WorldToScreenPoint(hitParentGameObj.transform.position);
|
|
|
-
|
|
|
-
|
|
|
- if (_ui.m_comSelectBox.target.data == null || _ui.m_comSelectBox.target.data as GameObject != hitParentGameObj)
|
|
|
- {
|
|
|
- lastPos = Vector2.zero;
|
|
|
- _ui.m_comSelectBox.target.rotation = -hitParentGameObj.transform.eulerAngles.z;
|
|
|
- _ui.m_comSelectBox.target.size = SceneController.GetGameObjectSize(hitParentGameObj);
|
|
|
- }
|
|
|
- _ui.m_comSelectBox.target.data = hitParentGameObj;
|
|
|
+ distance = Input.mousePosition - Camera.main.WorldToScreenPoint(hitGameObj.transform.position);
|
|
|
|
|
|
+ _ui.m_comSelectBox.target.rotation = -hitGameObj.transform.eulerAngles.z;
|
|
|
+ _ui.m_comSelectBox.target.size = SceneController.GetGameObjectSize(hitGameObj);
|
|
|
ControllerSelectBoxPos();
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
private void OnTouchUIMove(EventContext context)
|
|
|
{
|
|
|
- if (hitParentGameObj == null) return;//未选中任何物体
|
|
|
- if (Stage.inst.touchCount > 1 || context.inputEvent.touchId != 0 || isTwoTouchPoint) return; //只监听1根手指
|
|
|
- if (isTouchUI) return;
|
|
|
+ if (hitGameObj == null) return;//未选中任何物体
|
|
|
+ if (Stage.inst.touchCount > 1) return; //只监听1根手指
|
|
|
+ if (PhotographDataManager.Instance.IsTouchUI(this.viewCom)) return;
|
|
|
|
|
|
Debug.Log("拖动");
|
|
|
ControllerObjectPos();
|
|
|
ControllerSelectBoxPos();
|
|
|
-
|
|
|
}
|
|
|
private void OnTouchUIEnd(EventContext context)
|
|
|
{
|
|
|
- if (Stage.inst.touchCount > 1 || context.inputEvent.touchId != 0) return; //只监听1根手指
|
|
|
- hitParentGameObj = null;
|
|
|
- if (Stage.inst.touchCount == 0)
|
|
|
- {
|
|
|
- isTwoTouchPoint = false;
|
|
|
- }
|
|
|
+ // if (Stage.inst.touchCount > 1 || context.inputEvent.touchId != 0) return; //只监听1根手指
|
|
|
+ hitGameObj = null;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//选中物体的位置
|
|
|
private void ControllerObjectPos()
|
|
|
{
|
|
|
- hitParentGameObj.transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition - distance);
|
|
|
- if (hitParentGameObj.name == "BgRes")
|
|
|
+ hitGameObj.transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition - distance);
|
|
|
+ if (hitGameObj.name == BgResName)
|
|
|
{
|
|
|
- Vector2 size = hitParentGameObj.GetComponent<SpriteRenderer>().size;
|
|
|
- Vector2 uiSize = _ui.target.size;
|
|
|
- float deviationWidth = (size.x - uiSize.x / 100) / 2;
|
|
|
- float deviationHeigh = (size.y - uiSize.y / 100) / 2;
|
|
|
- Vector2 pos = hitParentGameObj.transform.position;
|
|
|
- if (pos.x <= -deviationWidth)
|
|
|
- {
|
|
|
- hitParentGameObj.transform.position = new Vector2(-deviationWidth, hitParentGameObj.transform.position.y);
|
|
|
- }
|
|
|
- if (pos.x >= deviationWidth)
|
|
|
- {
|
|
|
- hitParentGameObj.transform.position = new Vector2(deviationWidth, hitParentGameObj.transform.position.y);
|
|
|
- }
|
|
|
- if (pos.y <= -deviationHeigh)
|
|
|
- {
|
|
|
- hitParentGameObj.transform.position = new Vector2(hitParentGameObj.transform.position.x, -deviationHeigh);
|
|
|
- }
|
|
|
- if (pos.y >= deviationHeigh)
|
|
|
- {
|
|
|
- hitParentGameObj.transform.position = new Vector2(hitParentGameObj.transform.position.x, deviationHeigh);
|
|
|
- }
|
|
|
+ PhotographDataManager.Instance.SetBgPos(hitGameObj, _ui.target.size);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
//选中框的位置
|
|
|
private void ControllerSelectBoxPos()
|
|
|
{
|
|
|
- SceneController.SetGameObjectCenter(hitParentGameObj);
|
|
|
-
|
|
|
- //位置:角色、道具、npc全用对应父物体的位置
|
|
|
- Vector2 objScreenPos = Camera.main.WorldToScreenPoint(hitParentGameObj.transform.position);
|
|
|
+ Vector2 objScreenPos = Camera.main.WorldToScreenPoint(hitGameObj.transform.position);
|
|
|
Vector2 localPos = this.viewCom.GlobalToLocal(new Vector2(objScreenPos.x, (Screen.height - objScreenPos.y)));
|
|
|
-
|
|
|
- _ui.m_comSelectBox.target.position = localPos;//(localPos.x, localPos.y);
|
|
|
-
|
|
|
+ _ui.m_comSelectBox.target.position = localPos;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnTouchBtnSizeBegin(EventContext context)
|
|
|
{
|
|
|
- isTouchUI = true;
|
|
|
-
|
|
|
- GameObject gameObject = _ui.m_comSelectBox.target.data as GameObject;
|
|
|
InputEvent inputEvent = (InputEvent)context.data;
|
|
|
Vector2 screenPos = this.viewCom.GlobalToLocal(_ui.m_comSelectBox.m_btnSize.LocalToGlobal(Vector2.zero));
|
|
|
Vector2 pt = new Vector2(screenPos.x, screenPos.y);
|
|
|
- Vector2 pt1 = this.viewCom.GlobalToLocal(new Vector2(inputEvent.x, inputEvent.y));
|
|
|
Vector2 pt2 = new Vector2(_ui.m_comSelectBox.target.x, _ui.m_comSelectBox.target.y);
|
|
|
- Debug.Log("pt1" + pt1 + " pt2:" + pt2);
|
|
|
|
|
|
- if (!_equipDistance.ContainsKey(gameObject))
|
|
|
+ if (!_equipDistance.ContainsKey(memoryHitGameObj))
|
|
|
{
|
|
|
- float distance = Vector2.Distance(pt, pt2) / gameObject.transform.localScale.x;
|
|
|
- _equipDistance.Add(gameObject, distance);
|
|
|
+ float distance = Vector2.Distance(pt, pt2) / memoryHitGameObj.transform.localScale.x;
|
|
|
+ _equipDistance.Add(memoryHitGameObj, distance);
|
|
|
}
|
|
|
- _startDistance = _equipDistance[gameObject];
|
|
|
- Debug.Log("_startDistance:" + _startDistance);
|
|
|
-
|
|
|
}
|
|
|
private void OnTouchBtnSizeMove(EventContext context)
|
|
|
{
|
|
|
- GameObject gameObject = _ui.m_comSelectBox.target.data as GameObject;
|
|
|
- if (gameObject == null) return;
|
|
|
+ if (memoryHitGameObj == null) return;
|
|
|
InputEvent inputEvent = (InputEvent)context.data;
|
|
|
Vector2 pt1 = this.viewCom.GlobalToLocal(new Vector2(inputEvent.x, inputEvent.y));
|
|
|
Vector2 pt2 = new Vector2(_ui.m_comSelectBox.target.x, _ui.m_comSelectBox.target.y);
|
|
|
Vector2 curPos = pt1 - pt2;
|
|
|
- Debug.Log("pt1" + pt1 + " pt2:" + pt2 + " curPos:" + curPos + " lastPos:" + lastPos);
|
|
|
+
|
|
|
float angle = Vector3.Angle(lastPos, curPos); //求出两向量之间的夹角
|
|
|
Vector3 normal = Vector3.Cross(lastPos, curPos);//叉乘求出法线向量
|
|
|
angle *= Mathf.Sign(Vector3.Dot(normal, Vector3.forward)); //Mathf.Sign()求符号,Vector3.Dot()求方向,求法线向量与物体上方向向量点乘,结果为1或-1,修正旋转方向
|
|
|
lastPos = curPos;
|
|
|
- ControllerRotate(angle, gameObject);
|
|
|
- Debug.Log("angle:" + angle);
|
|
|
+ ControllerRotate(angle, memoryHitGameObj);
|
|
|
|
|
|
- float dist = Vector2.Distance(pt1, pt2);
|
|
|
- Debug.Log("dist:" + dist);
|
|
|
|
|
|
- float ss = dist / _startDistance;
|
|
|
+ float dist = Vector2.Distance(pt1, pt2);
|
|
|
+ float ss = dist / _equipDistance[memoryHitGameObj];
|
|
|
float newValue = Mathf.Clamp(ss, 0.1f, 2);
|
|
|
- ControllerScale(newValue, gameObject);
|
|
|
+ ControllerScale(newValue, memoryHitGameObj);
|
|
|
|
|
|
}
|
|
|
private void OnTouchBtnSizeEnd(EventContext context)
|
|
|
{
|
|
|
- isTouchUI = false;
|
|
|
lastPos = Vector2.zero;
|
|
|
}
|
|
|
|
|
@@ -347,41 +305,39 @@ namespace GFGGame
|
|
|
//双指缩放
|
|
|
private void OnPinch(EventContext context)
|
|
|
{
|
|
|
- if (hitParentGameObj == null) return;
|
|
|
- if (hitParentGameObj.name == "BgRes") return;//背景不可以缩放、旋转
|
|
|
- isTwoTouchPoint = true;
|
|
|
|
|
|
- GTween.Kill(hitParentGameObj);
|
|
|
+ if (hitGameObj == null) return;
|
|
|
+ if (hitGameObj.name == BgResName) return;//背景不可以缩放、旋转
|
|
|
|
|
|
+ GTween.Kill(hitGameObj);
|
|
|
PinchGesture gesture = (PinchGesture)context.sender;
|
|
|
- float newValue = Mathf.Clamp(hitParentGameObj.transform.localScale.x + gesture.delta, 0.3f, 2);
|
|
|
+ float newValue = Mathf.Clamp(hitGameObj.transform.localScale.x + gesture.delta, 0.3f, 2);
|
|
|
Debug.Log("双指缩放:" + newValue);
|
|
|
|
|
|
- ControllerScale(newValue, hitParentGameObj);
|
|
|
+ ControllerScale(newValue, hitGameObj);
|
|
|
}
|
|
|
-
|
|
|
- private void ControllerScale(float value, GameObject gameObject)
|
|
|
- {
|
|
|
- if (value > MaxScale || value < MinScale) return;
|
|
|
- gameObject.transform.localScale = new Vector3(value, value, value);
|
|
|
- Vector2 size = SceneController.GetGameObjectSize(gameObject);
|
|
|
- _ui.m_comSelectBox.target.SetSize(size.x, size.y);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ //双指旋转
|
|
|
private void OnRotate(EventContext context)
|
|
|
{
|
|
|
- if (hitParentGameObj == null) return;
|
|
|
- if (hitParentGameObj.name == "BgRes") return;//背景不可以缩放、旋转
|
|
|
- isTwoTouchPoint = true;
|
|
|
-
|
|
|
-
|
|
|
- GTween.Kill(hitParentGameObj.transform);
|
|
|
+ Debug.Log("双指旋转hitGameObj:" + hitGameObj);
|
|
|
+ if (hitGameObj == null) return;
|
|
|
+ Debug.Log("双指旋转name:" + hitGameObj.name);
|
|
|
+ if (hitGameObj.name == BgResName) return;//背景不可以缩放、旋转
|
|
|
+ // isTwoTouchPoint = true;
|
|
|
|
|
|
+ GTween.Kill(hitGameObj.transform);
|
|
|
RotationGesture gesture = (RotationGesture)context.sender;
|
|
|
Debug.Log("双指旋转:" + gesture.delta);
|
|
|
+ ControllerRotate(gesture.delta, hitGameObj);
|
|
|
+ }
|
|
|
|
|
|
- ControllerRotate(gesture.delta, hitParentGameObj);
|
|
|
+
|
|
|
+ private void ControllerScale(float value, GameObject gameObject)
|
|
|
+ {
|
|
|
+ if (value > MaxScale || value < MinScale) return;
|
|
|
+ gameObject.transform.localScale = new Vector3(value, value, 1);
|
|
|
+ Vector2 size = SceneController.GetGameObjectSize(gameObject);
|
|
|
+ _ui.m_comSelectBox.target.SetSize(size.x, size.y);
|
|
|
}
|
|
|
private void ControllerRotate(float value, GameObject gameObject)
|
|
|
{
|
|
@@ -389,13 +345,25 @@ namespace GFGGame
|
|
|
_ui.m_comSelectBox.target.rotation += value;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ 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(_equipRoleData.ToArray(), _sceneObject, bodyParent);
|
|
|
|
|
|
- SceneController.UpdatePhotographBody(_equipRoleData.ToArray(), _sceneObject, false, null, false, bodyParent);
|
|
|
+ maxLayer = PhotographDataManager.Instance.GetMaxLayer(bodyParent, maxLayer) + 1;
|
|
|
}
|
|
|
- //场景道具
|
|
|
+ //添加初始场景道具
|
|
|
private void UpdateScene()
|
|
|
{
|
|
|
ICollection keys = _equipSceneData.Keys;
|
|
@@ -403,75 +371,112 @@ namespace GFGGame
|
|
|
{
|
|
|
for (int i = 0; i < _equipSceneData[key].Count; i++)
|
|
|
{
|
|
|
- SceneController.AddScene(_sceneObject, key, i);
|
|
|
ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(key);
|
|
|
- PhotographDataManager.Instance.GetMaxLayer(maxLayer, false, itemCfg, out maxLayer);
|
|
|
+ int defaultLayer = ItemTypeCfgArray.Instance.GetCfg(itemCfg.subType).defaultLayer;
|
|
|
+ AddSceneItem(itemCfg, true);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- //滤镜效果
|
|
|
+ private void UpdateNpc(ItemCfg itemCfg)
|
|
|
+ {
|
|
|
+ maxLayer++;
|
|
|
+ Transform tf = _sceneObject.transform.Find(NpcResPath);
|
|
|
+ string resPath = ResPathUtil.GetNpcPicFPath(itemCfg.res);
|
|
|
+ SceneController.SetSpriteRendererToTransform(tf, resPath);
|
|
|
+ SpriteRenderer spr = tf.GetComponent<SpriteRenderer>();
|
|
|
+ spr.sortingOrder = maxLayer;
|
|
|
+ tf.localPosition = new Vector2(-spr.bounds.center.x, -spr.bounds.center.y);
|
|
|
+ SceneController.SetBoxCollider2DToGameObject(tf.gameObject);
|
|
|
+ }
|
|
|
+ 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 DisposeEquipData()
|
|
|
+ private void AddSceneItem(ItemCfg itemCfg, bool isDefaultLayer)
|
|
|
{
|
|
|
- for (int i = 0; i < equipDataCache.equipDatas.Length; i++)
|
|
|
+ int index = 0;
|
|
|
+
|
|
|
+ GameObject parentGameObj;
|
|
|
+ if (itemCfg.resLayer2 > 0)
|
|
|
{
|
|
|
- ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(equipDataCache.equipDatas[i]);
|
|
|
- if (itemCfg.subType == ConstDressUpItemType.QIAN_JING || itemCfg.subType == ConstDressUpItemType.BEI_SHI || itemCfg.subType == ConstDressUpItemType.HUAN_JING)
|
|
|
+ if (!isDefaultLayer)
|
|
|
{
|
|
|
PhotographDataManager.Instance.AddEquipItem(_equipSceneData, itemCfg.id, out _equipSceneData);
|
|
|
}
|
|
|
- else
|
|
|
+ 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);
|
|
|
+
|
|
|
+ maxLayer = PhotographDataManager.Instance.GetMaxLayer(parentGameObj, maxLayer) + 1;
|
|
|
+
|
|
|
+ if (!isDefaultLayer)
|
|
|
{
|
|
|
- _equipRoleData.Add(equipDataCache.equipDatas[i]);
|
|
|
+ PhotographDataManager.Instance.SetItemLayer(parentGameObj, maxLayer);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
+ 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);
|
|
|
+
|
|
|
+ maxLayer = PhotographDataManager.Instance.GetMaxLayer(parentGameObj, maxLayer) + 1;
|
|
|
|
|
|
+ if (!isDefaultLayer)
|
|
|
+ {
|
|
|
+ PhotographDataManager.Instance.SetItemLayer(parentGameObj, maxLayer);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
private void OnClickBtnBg()
|
|
|
{
|
|
|
_ui.m_ComSelectRes.target.visible = false;
|
|
|
-
|
|
|
- }
|
|
|
- private void OnClickBtnChoose()
|
|
|
- {
|
|
|
- _ui.m_ComSelectRes.target.visible = true;
|
|
|
- _ui.m_comSelectBox.target.visible = false;
|
|
|
- hitParentGameObj = null;
|
|
|
}
|
|
|
- private void OnTouchBtnFlipBegin()
|
|
|
+ private void OnTouchBtnFlipBegin()//翻转
|
|
|
{
|
|
|
- isTouchUI = true;
|
|
|
- Transform transform = (_ui.m_comSelectBox.target.data as GameObject).transform;
|
|
|
+ Transform transform = memoryHitGameObj.transform;
|
|
|
for (int i = 0; i < transform.childCount; i++)
|
|
|
{
|
|
|
- transform.GetChild(i).Rotate(Vector3.up, 180, Space.World);
|
|
|
+ transform.GetChild(i).Rotate(Vector3.up, 180, Space.Self);
|
|
|
}
|
|
|
}
|
|
|
private void OnTouchBtnFlipEnd()
|
|
|
{
|
|
|
- isTouchUI = false;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- private void OnTouchBtnDeleteBegin()
|
|
|
+ private void OnTouchBtnDeleteBegin()//删除
|
|
|
{
|
|
|
- isTouchUI = true;
|
|
|
- GameObject gameObject = _ui.m_comSelectBox.target.data as GameObject;
|
|
|
- if (gameObject.transform.gameObject == bodyParent)
|
|
|
+ if (memoryHitGameObj.transform.name == RolePath)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
- else if (gameObject.transform.gameObject == npcParent)
|
|
|
+ else if (memoryHitGameObj.transform.name == NpcPath)
|
|
|
{
|
|
|
- SpriteRenderer spriteRenderer = gameObject.transform.GetChild(0).GetComponent<SpriteRenderer>();
|
|
|
+ SpriteRenderer spriteRenderer = memoryHitGameObj.transform.GetChild(0).GetComponent<SpriteRenderer>();
|
|
|
if (spriteRenderer != null)
|
|
|
{
|
|
|
GameObject.Destroy(spriteRenderer);
|
|
@@ -479,14 +484,21 @@ namespace GFGGame
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- GameObject.DestroyImmediate(gameObject);
|
|
|
+ GameObject.DestroyImmediate(memoryHitGameObj);
|
|
|
}
|
|
|
_ui.m_comSelectBox.target.visible = false;
|
|
|
|
|
|
}
|
|
|
private void OnTouchBtnDeleteEnd()
|
|
|
{
|
|
|
- isTouchUI = false;
|
|
|
+
|
|
|
+ }
|
|
|
+ private void SetUIView()
|
|
|
+ {
|
|
|
+ _ui.m_ComSelectRes.target.visible = true;
|
|
|
+ _ui.m_comSelectBox.target.visible = false;
|
|
|
+ hitGameObj = null;
|
|
|
+ memoryHitGameObj = null;
|
|
|
}
|
|
|
private void OnClickBtnPhotograph()
|
|
|
{
|
|
@@ -505,7 +517,6 @@ namespace GFGGame
|
|
|
|
|
|
ViewManager.Show<PhotographSaveView>(tex);
|
|
|
_ui.target.visible = true;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
private void OnClickBtnBack()
|
|
@@ -522,10 +533,11 @@ namespace GFGGame
|
|
|
GameObject.Destroy(_sceneObject);
|
|
|
_sceneObject = null;
|
|
|
}
|
|
|
- equipDataCache = null;
|
|
|
+ // equipDataCache = null;
|
|
|
_equipRoleData.Clear();
|
|
|
_equipSceneData.Clear();
|
|
|
- hitParentGameObj = null;
|
|
|
+ hitGameObj = null;
|
|
|
+ memoryHitGameObj = null;
|
|
|
|
|
|
pinchGesture.onAction.Remove(OnPinch);
|
|
|
rotationGesture.onAction.Remove(OnRotate);
|