rightarea.c 5.0 KB

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