SuitView.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using FairyGUI;
  4. using UI.ClothingFoster;
  5. using UnityEngine;
  6. namespace GFGGame
  7. {
  8. public class SuitView : BaseWindow
  9. {
  10. private UI_SuitUI _ui;
  11. private GameObject _scenePrefab;
  12. private GameObject _sceneObject;
  13. private GoWrapper _wrapper;
  14. private DressUpObjDataCache _dressUpObjDataCache;
  15. private bool _actionIsPic;
  16. private List<int> _suitIds;//已解锁套装列表
  17. private SortedList _propertyList;
  18. private int _suitId;
  19. private int _index;
  20. public override void Dispose()
  21. {
  22. base.Dispose();
  23. }
  24. protected override void OnInit()
  25. {
  26. base.OnInit();
  27. packageName = UI_SuitUI.PACKAGE_NAME;
  28. _ui = UI_SuitUI.Create();
  29. this.viewCom = _ui.target;
  30. this.viewCom.Center();
  31. isfullScreen = true;
  32. this.clickBlankToClose = false;
  33. _scenePrefab = GFGAsset.Load<GameObject>(ResPathUtil.GetPrefabPath("SceneDressUp"));
  34. _dressUpObjDataCache = new DressUpObjDataCache();
  35. _ui.m_btnBack.onClick.Add(OnClickBtnBack);
  36. _ui.m_btnLeft.onClick.Add(() => { OnClickBtnDirection(-1); });
  37. _ui.m_btnRight.onClick.Add(() => { OnClickBtnDirection(1); });
  38. _ui.m_btnReward.target.onClick.Add(OnClickBtnReward);
  39. _ui.m_btnPropertyShow.onClick.Add(OnClickBtnPropertyShow);
  40. _ui.m_listFoster.itemRenderer = ListFosterItemRender;
  41. _ui.m_listFoster.onClickItem.Add(OnClickListFosterItem);
  42. }
  43. protected override void OnShown()
  44. {
  45. base.OnShown();
  46. object[] datas = this.viewData as object[];
  47. _suitId = (int)datas[0];
  48. List<int> suitIds = datas[1] as List<int>;
  49. _suitIds = new List<int>();
  50. foreach (int suitId in suitIds)
  51. {
  52. if (DressUpMenuSuitDataManager.CheckHaveSuit(suitId))
  53. {
  54. _suitIds.Add(suitId);
  55. }
  56. }
  57. UpdateView();
  58. }
  59. protected override void OnHide()
  60. {
  61. base.OnHide();
  62. }
  63. private void OnClickBtnBack()
  64. {
  65. ViewManager.GoBackFrom(typeof(SuitView).FullName);
  66. }
  67. private void UpdateView()
  68. {
  69. UpdateArrows();
  70. UpdateSuitView();
  71. _ui.m_listFoster.numItems = SuitFosterCfgArray.Instance.GetCfgs(_suitId).Length;
  72. _propertyList = SuitFosterDataManager.Instance.GetPropertyData(_suitId, _index);
  73. _ui.m_listProperty.numItems = _propertyList.Count;
  74. }
  75. private void UpdateArrows()
  76. {
  77. int index = _suitIds.IndexOf(_suitId);
  78. int count = _suitIds.Count;
  79. _ui.m_btnRight.visible = (index + 1 < count);
  80. _ui.m_btnLeft.visible = (index - 1 >= 0);
  81. }
  82. private void OnClickBtnDirection(int direction)
  83. {
  84. int index = _suitIds.IndexOf(_suitId);
  85. int targetIndex = index + direction;
  86. if (targetIndex >= 0 && direction == -1 || targetIndex < _suitIds.Count && direction == 1)
  87. {
  88. _suitId = _suitIds[targetIndex];
  89. UpdateView();
  90. }
  91. }
  92. private void UpdateSuitView(bool isPic = true)
  93. {
  94. _actionIsPic = isPic;
  95. SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(_suitId);
  96. _ui.m_txtName.text = suitCfg.name;
  97. if (_sceneObject != null)
  98. {
  99. GameObject.Destroy(_sceneObject);
  100. _sceneObject = null;
  101. }
  102. _sceneObject = GameObject.Instantiate(_scenePrefab);
  103. int scale = 100;
  104. _sceneObject.transform.localScale = new Vector3(scale, scale, scale);
  105. _dressUpObjDataCache.setSceneObj(_sceneObject);
  106. _dressUpObjDataCache.PutOnDefaultSuitSaved(false);
  107. _dressUpObjDataCache.PutOnSuitCfg(_suitId, isPic, false, new int[] { ConstDressUpItemType.BEI_JING });
  108. if (_wrapper == null)
  109. {
  110. _wrapper = new GoWrapper(_sceneObject);
  111. _ui.m_holder.SetNativeObject(_wrapper);
  112. }
  113. else
  114. {
  115. _wrapper.wrapTarget = _sceneObject;
  116. }
  117. }
  118. private void ListFosterItemRender(int index, GObject obj)
  119. {
  120. UI_ListFosterItem item = UI_ListFosterItem.Proxy(obj);
  121. item.target.data = index;
  122. if (SuitFosterDataManager.Instance.GetSuitFosterData(_suitId).maintainStep == index)
  123. {
  124. _index = index;
  125. }
  126. }
  127. private void OnClickListFosterItem(EventContext context)
  128. {
  129. int index = (int)(context.data as GObject).data;
  130. if (index == _index)
  131. {
  132. ViewManager.Show<SuitFosterView>(new object[] { _suitId, index });
  133. }
  134. }
  135. private void OnClickBtnReward()
  136. {
  137. ViewManager.Show<SuitRewardView>(_suitId);
  138. }
  139. private void OnClickBtnPropertyShow()
  140. {
  141. ViewManager.Show<SuitPropertyShowView>(new object[] { _suitId, _index });
  142. }
  143. }
  144. }