rightarea.c 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. class RightArea: Container
  2. {
  3. ref PlayerContainer m_PlayerContainer;
  4. protected Widget m_ContentParent;
  5. protected Widget m_SlotsHeader;
  6. protected Widget m_SlotsContent;
  7. protected ScrollWidget m_ScrollWidget;
  8. protected Widget m_UpIcon;
  9. protected Widget m_DownIcon;
  10. protected ref SizeToChild m_ContentResize;
  11. protected bool m_ShouldChangeSize = true;
  12. protected bool m_ProcessGridMovement;
  13. void RightArea(LayoutHolder parent)
  14. {
  15. m_MainWidget.Show(true);
  16. m_SlotsHeader = m_MainWidget.FindAnyWidget("SlotsHeader");
  17. m_SlotsContent = m_MainWidget.FindAnyWidget("SlotsContent");
  18. m_ScrollWidget = ScrollWidget.Cast(m_MainWidget.FindAnyWidget("Scroller"));
  19. m_MainWidget = m_MainWidget.FindAnyWidget("Content");
  20. //m_ContentParent = m_RootWidget.FindAnyWidget("ContentParent");
  21. m_PlayerContainer = new PlayerContainer(this, false);
  22. m_PlayerContainer.SetPlayer(PlayerBase.Cast(GetGame().GetPlayer()));
  23. m_Body.Insert(m_PlayerContainer);
  24. m_ActiveIndex = 0;
  25. m_ProcessGridMovement = false;
  26. m_UpIcon = m_RootWidget.FindAnyWidget("Up");
  27. m_DownIcon = m_RootWidget.FindAnyWidget("Down");
  28. //m_ContentParent.GetScript(m_ContentResize);
  29. RecomputeOpenedContainers();
  30. }
  31. PlayerContainer GetPlayerContainer()
  32. {
  33. return m_PlayerContainer;
  34. }
  35. override void DraggingOverHeader(Widget w, int x, int y, Widget receiver)
  36. {
  37. m_PlayerContainer.DraggingOverHeader(w, x, y, receiver);
  38. }
  39. override bool Select()
  40. {
  41. return m_PlayerContainer.Select();
  42. }
  43. override bool SelectItem()
  44. {
  45. return m_PlayerContainer.SelectItem();
  46. }
  47. override bool Combine()
  48. {
  49. return m_PlayerContainer.Combine();
  50. }
  51. override bool SplitItem()
  52. {
  53. return m_PlayerContainer.SplitItem();
  54. }
  55. override bool EquipItem()
  56. {
  57. return m_PlayerContainer.EquipItem();
  58. }
  59. override bool TransferItem()
  60. {
  61. return m_PlayerContainer.TransferItem();
  62. }
  63. override bool InspectItem()
  64. {
  65. return m_PlayerContainer.InspectItem();
  66. }
  67. override bool TransferItemToVicinity()
  68. {
  69. return m_PlayerContainer.TransferItemToVicinity();
  70. }
  71. override void UnfocusGrid()
  72. {
  73. m_PlayerContainer.UnfocusGrid();
  74. }
  75. override bool CanTakeToInventory()
  76. {
  77. return false;
  78. }
  79. override bool CanTakeToInventoryEx(EntityAI focusedEntity)
  80. {
  81. return false;
  82. }
  83. bool HasEntityContainerVisible(EntityAI entity)
  84. {
  85. return m_PlayerContainer.HasEntityContainerVisible(entity);
  86. }
  87. void SwapItemsInOrder(int slot1, int slot2)
  88. {
  89. m_PlayerContainer.SwapItemsInOrder(slot1, slot2);
  90. }
  91. bool IsPlayerEquipmentActive()
  92. {
  93. return m_PlayerContainer.IsPlayerEquipmentActive();
  94. }
  95. override void SetSameLevelNextActive()
  96. {
  97. super.SetSameLevelNextActive();
  98. Refresh();
  99. }
  100. override void SetSameLevelPreviousActive()
  101. {
  102. super.SetSameLevelPreviousActive();
  103. Refresh();
  104. }
  105. override void ExpandCollapseContainer()
  106. {
  107. m_PlayerContainer.ExpandCollapseContainer();
  108. }
  109. override void Refresh()
  110. {
  111. m_ScrollWidget.Update();
  112. m_PlayerContainer.Refresh();
  113. m_ShouldChangeSize = true;
  114. }
  115. override void SetLayoutName()
  116. {
  117. #ifdef PLATFORM_CONSOLE
  118. m_LayoutName = WidgetLayoutName.RightAreaXbox;
  119. #else
  120. switch (InventoryMenu.GetWidthType())
  121. {
  122. case ScreenWidthType.NARROW:
  123. m_LayoutName = WidgetLayoutName.RightAreaNarrow;
  124. break;
  125. case ScreenWidthType.MEDIUM:
  126. m_LayoutName = WidgetLayoutName.RightAreaMedium;
  127. break;
  128. case ScreenWidthType.WIDE:
  129. m_LayoutName = WidgetLayoutName.RightAreaWide;
  130. break;
  131. }
  132. #endif
  133. }
  134. override void SetParentWidget()
  135. {
  136. m_ParentWidget = m_Parent.GetMainWidget().FindAnyWidget("RightPanel");
  137. }
  138. override void OnShow()
  139. {
  140. super.OnShow();
  141. Refresh();
  142. }
  143. override void UpdateInterval()
  144. {
  145. super.UpdateInterval();
  146. m_PlayerContainer.UpdateInterval();
  147. CheckScrollbarVisibility();
  148. }
  149. void MoveUpDownIcons()
  150. {
  151. if (m_UpIcon && m_DownIcon)
  152. {
  153. m_UpIcon.Show( m_IsActive );
  154. m_DownIcon.Show( m_IsActive );
  155. if( m_IsActive )
  156. {
  157. float x, y;
  158. m_UpIcon.GetScreenSize( x, y );
  159. float top_y = GetCurrentContainerTopY();
  160. m_UpIcon.SetPos( 0, Math.Clamp( top_y, 0, 99999 ) );
  161. #ifndef PLATFORM_CONSOLE
  162. float x2, y2;
  163. m_DownIcon.GetScreenSize( x2, y2 );
  164. float bottom_y = GetCurrentContainerBottomY() - y2;
  165. float diff = bottom_y - ( top_y + y );
  166. if( diff < 0 )
  167. {
  168. top_y += diff / 2;
  169. bottom_y -= diff / 2;
  170. }
  171. m_DownIcon.SetPos( 0, bottom_y );
  172. #endif
  173. }
  174. }
  175. /*else
  176. {
  177. ErrorEx("up/down icons not present!");
  178. }
  179. #else
  180. m_ScrollWidget.Update();
  181. #endif*/
  182. }
  183. override ScrollWidget GetScrollWidget()
  184. {
  185. return m_ScrollWidget;
  186. }
  187. override void UpdateSelectionIcons()
  188. {
  189. #ifdef PLATFORM_CONSOLE
  190. ScrollToActiveContainer();
  191. #endif
  192. MoveUpDownIcons();
  193. }
  194. float GetCurrentContainerTopY()
  195. {
  196. float x, y;
  197. GetMainWidget().Update();
  198. GetMainWidget().GetScreenPos( x, y );
  199. float cont_screen_pos = GetFocusedContainerYScreenPos();
  200. return cont_screen_pos - y;
  201. }
  202. float GetCurrentContainerBottomY()
  203. {
  204. float x, y;
  205. GetMainWidget().Update();
  206. GetMainWidget().GetScreenPos( x, y );
  207. float cont_screen_pos = GetFocusedContainerYScreenPos();
  208. float cont_screen_height = GetFocusedContainerHeight();
  209. return cont_screen_pos - y + cont_screen_height;
  210. }
  211. Widget GetSlotsArea()
  212. {
  213. return m_SlotsContent;
  214. }
  215. Widget GetSlotsHeader()
  216. {
  217. return m_SlotsHeader;
  218. }
  219. }