Interface Items.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. #ifndef __INTERFACE_ITEMS_H
  2. #define __INTERFACE_ITEMS_H
  3. #include "items.h"
  4. #include "Handle Items.h"
  5. // DEFINES FOR ITEM SLOT SIZES IN PIXELS
  6. #define BIG_INV_SLOT_WIDTH 61
  7. #define BIG_INV_SLOT_HEIGHT 22
  8. #define SM_INV_SLOT_WIDTH 30
  9. #define SM_INV_SLOT_HEIGHT 23
  10. #define VEST_INV_SLOT_WIDTH 43
  11. #define VEST_INV_SLOT_HEIGHT 24
  12. #define LEGS_INV_SLOT_WIDTH 43
  13. #define LEGS_INV_SLOT_HEIGHT 24
  14. #define HEAD_INV_SLOT_WIDTH 43
  15. #define HEAD_INV_SLOT_HEIGHT 24
  16. // A STRUCT USED INTERNALLY FOR INV SLOT REGIONS
  17. typedef struct
  18. {
  19. BOOLEAN fBigPocket;
  20. INT16 sBarDx;
  21. INT16 sBarDy;
  22. INT16 sWidth;
  23. INT16 sHeight;
  24. INT16 sX; // starts at 0, gets set via InitInvSlotInterface()
  25. INT16 sY; // starts at 0, gets set via InitInvSlotInterface()
  26. } INV_REGIONS;
  27. // USED TO SETUP REGION POSITIONS, ETC
  28. typedef struct
  29. {
  30. INT16 sX;
  31. INT16 sY;
  32. } INV_REGION_DESC;
  33. // Itempickup stuff
  34. BOOLEAN InitializeItemPickupMenu( SOLDIERTYPE *pSoldier, INT16 sGridNo, ITEM_POOL *pItemPool, INT16 sScreenX, INT16 sScreenY, INT8 bZLevel );
  35. void RenderItemPickupMenu( );
  36. void RemoveItemPickupMenu( );
  37. void SetItemPickupMenuDirty( BOOLEAN fDirtyLevel );
  38. BOOLEAN HandleItemPickupMenu( );
  39. void SetPickUpMenuDirtyLevel( BOOLEAN fDirtyLevel );
  40. // FUNCTIONS FOR INTERFACEING WITH ITEM PANEL STUFF
  41. void INVRenderINVPanelItem( SOLDIERTYPE *pSoldier, INT16 sPocket, UINT8 fDirtyLevel );
  42. BOOLEAN InitInvSlotInterface( INV_REGION_DESC *pRegionDesc , INV_REGION_DESC *pCamoRegion, MOUSE_CALLBACK INVMoveCallback, MOUSE_CALLBACK INVClickCallback, MOUSE_CALLBACK INVMoveCammoCallback, MOUSE_CALLBACK INVClickCammoCallback, BOOLEAN fSetHighestPrioity );
  43. void ShutdownInvSlotInterface( );
  44. void GetSlotInvXY( UINT8 ubPos, INT16 *psX, INT16 *psY );
  45. void GetSlotInvHeightWidth( UINT8 ubPos, INT16 *psWidth, INT16 *psHeight );
  46. void HandleRenderInvSlots( SOLDIERTYPE *pSoldier, UINT8 fDirtyLevel );
  47. void HandleNewlyAddedItems( SOLDIERTYPE *pSoldier, BOOLEAN *fDirtyLevel );
  48. void RenderInvBodyPanel( SOLDIERTYPE *pSoldier, INT16 sX, INT16 sY );
  49. void DisableInvRegions( BOOLEAN fDisable );
  50. void DegradeNewlyAddedItems( );
  51. void CheckForAnyNewlyAddedItems( SOLDIERTYPE *pSoldier );
  52. BOOLEAN HandleCompatibleAmmoUI( SOLDIERTYPE *pSoldier, INT8 bInvPos, BOOLEAN fOn );
  53. // THIS FUNCTION IS CALLED TO RENDER AN ITEM.
  54. // uiBuffer - The Dest Video Surface - can only be FRAME_BUFFER or guiSAVEBUFFER
  55. // pSoldier - used for determining whether burst mode needs display
  56. // pObject - Usually taken from pSoldier->inv[HANDPOS]
  57. // sX, sY, Width, Height, - Will Center it in the Width
  58. // fDirtyLevel if == DIRTYLEVEL2 will render everything
  59. // if == DIRTYLEVEL1 will render bullets and status only
  60. //
  61. // pubHighlightCounter - if not null, and == 2 - will display name above item
  62. // - if == 1 will only dirty the name space and then set counter to 0
  63. // Last parameter used mainly for when mouse is over item
  64. void INVRenderItem( UINT32 uiBuffer, SOLDIERTYPE * pSoldier, OBJECTTYPE *pObject, INT16 sX, INT16 sY, INT16 sWidth, INT16 sHeight, UINT8 fDirtyLevel, UINT8 *pubHighlightCounter, UINT8 ubStatusIndex, BOOLEAN fOutline, INT16 sOutlineColor );
  65. BOOLEAN gfInItemDescBox;
  66. BOOLEAN InItemDescriptionBox( );
  67. BOOLEAN InitItemDescriptionBox( SOLDIERTYPE *pSoldier, UINT8 ubPosition, INT16 sX, INT16 sY, UINT8 ubStatusIndex );
  68. BOOLEAN InternalInitItemDescriptionBox( OBJECTTYPE *pObject, INT16 sX, INT16 sY, UINT8 ubStatusIndex, SOLDIERTYPE *pSoldier );
  69. BOOLEAN InitKeyItemDescriptionBox( SOLDIERTYPE *pSoldier, UINT8 ubPosition, INT16 sX, INT16 sY, UINT8 ubStatusIndex );
  70. void RenderItemDescriptionBox( );
  71. void HandleItemDescriptionBox( BOOLEAN *pfDirty );
  72. void DeleteItemDescriptionBox( );
  73. BOOLEAN InItemStackPopup( );
  74. BOOLEAN InitItemStackPopup( SOLDIERTYPE *pSoldier, UINT8 ubPosition, INT16 sInvX, INT16 sInvY, INT16 sInvWidth, INT16 sInvHeight );
  75. void RenderItemStackPopup( BOOLEAN fFullRender );
  76. void HandleItemStackPopup( );
  77. void DeleteItemStackPopup( );
  78. void EndItemStackPopupWithItemInHand( );
  79. // keyring handlers
  80. BOOLEAN InitKeyRingPopup( SOLDIERTYPE *pSoldier, INT16 sInvX, INT16 sInvY, INT16 sInvWidth, INT16 sInvHeight );
  81. void RenderKeyRingPopup( BOOLEAN fFullRender );
  82. void InitKeyRingInterface( MOUSE_CALLBACK KeyRingClickCallback );
  83. void InitMapKeyRingInterface( MOUSE_CALLBACK KeyRingClickCallback );
  84. void DeleteKeyRingPopup( );
  85. void ShutdownKeyRingInterface( void );
  86. BOOLEAN InKeyRingPopup( void );
  87. void BeginKeyRingItemPointer( SOLDIERTYPE *pSoldier, UINT8 ubKeyRingPosition );
  88. OBJECTTYPE *gpItemPointer;
  89. OBJECTTYPE gItemPointer;
  90. SOLDIERTYPE *gpItemPointerSoldier;
  91. UINT16 usItemSnapCursor;
  92. UINT16 us16BPPItemCyclePlacedItemColors[ 20 ];
  93. BOOLEAN gfItemPointerDifferentThanDefault;
  94. void BeginItemPointer( SOLDIERTYPE *pSoldier, UINT8 ubHandPos );
  95. void InternalBeginItemPointer( SOLDIERTYPE *pSoldier, OBJECTTYPE *pObject, INT8 bHandPos );
  96. void EndItemPointer( );
  97. void DrawItemFreeCursor( );
  98. void DrawItemTileCursor( );
  99. void HideItemTileCursor( );
  100. void InitItemInterface( );
  101. BOOLEAN ItemCursorInLobRange( UINT16 usMapPos );
  102. BOOLEAN HandleItemPointerClick( UINT16 usMapPos );
  103. UINT32 GetInterfaceGraphicForItem( INVTYPE *pItem );
  104. UINT16 GetTileGraphicForItem( INVTYPE *pItem );
  105. BOOLEAN LoadTileGraphicForItem( INVTYPE *pItem, UINT32 *puiVo );
  106. void GetHelpTextForItem( INT16 *pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier );
  107. BOOLEAN AttemptToApplyCamo( SOLDIERTYPE *pSoldier, UINT16 usItemIndex );
  108. UINT8 GetPrefferedItemSlotGraphicNum( UINT16 usItem );
  109. void CancelItemPointer( );
  110. BOOLEAN LoadItemCursorFromSavedGame( HWFILE hFile );
  111. BOOLEAN SaveItemCursorToSavedGame( HWFILE hFile );
  112. void EnableKeyRing( BOOLEAN fEnable );
  113. // handle compatable items for merc and map inventory
  114. BOOLEAN HandleCompatibleAmmoUIForMapScreen( SOLDIERTYPE *pSoldier, INT32 bInvPos, BOOLEAN fOn, BOOLEAN fFromMerc );
  115. BOOLEAN HandleCompatibleAmmoUIForMapInventory( SOLDIERTYPE *pSoldier, INT32 bInvPos, INT32 iStartSlotNumber, BOOLEAN fOn, BOOLEAN fFromMerc );
  116. void ResetCompatibleItemArray( );
  117. void CycleItemDescriptionItem( );
  118. #endif