rightarea.c 5.1 KB

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