mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
Minor adjustments to some of the rendering functions to grant a bit more control to the code. Adjusted the mouse areas for key and item popup windows. Added the pocket capacity indicator to sector inventory when using NewInv mode. Added the right click option to sector inventory so you can view/manipulate stacks and view item descriptions without first equiping an item. Updated sector inventory so that capacity values appear in all pockets. Not just currently filled one. Updated sector inventory so that newly placed items could be right-clicked on for details. Increased the mouse region for the various stack popups so there is always room to close the popup without activating the description box. Fixed a bug in the sector inventory description panel that caused a crash when trying to remove an attachment. Fixed sector inventory so you can add attachments to weapons. Fixed some weight issues. Fixed a crash resulting from right-clicking in sector inventory while Item Desc window was already open. Fixed the "Active Squad" message so it displays the squad that is actually activated. Fixed a bug that allowed you to start a new game in NewInv mode while in 640x480 resolution. Updated the Item Description windows so you can load a gun as well as unload. Added new CTRL+SHIFT+D hotkey to delete all items in sector. Added new CTRL+SHIFT+S hotkey to sell all items in sector, assuming you have the ALT+LMB option turned on in your INI file. Fixed a problem with sector inventory item description where the status did not appear for items that couldn't stack. Fixed a problem with Nails so he always starts with his leather jacket, even if you don't buy his gear. Incorporated a failsafe so that NewInv mode can't be selected, nor NIV saves loaded, when no custom data path is set. Add new IC_BELTCLIP item class. Update pocket definition restrictions to use bitwise compare. Add failsafe so that you can't merge LBENODEs. Reset VC2005 so it doesn't point to a specific drive. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1936 3b4a5df2-a311-0410-b5c6-a8a6f20db521
204 lines
8.2 KiB
C++
204 lines
8.2 KiB
C++
#ifndef __INTERFACE_ITEMS_H
|
|
#define __INTERFACE_ITEMS_H
|
|
|
|
#include "items.h"
|
|
#include "Handle Items.h"
|
|
|
|
// DEFINES FOR ITEM SLOT SIZES IN PIXELS
|
|
#define BIG_INV_SLOT_WIDTH 61
|
|
#define BIG_INV_SLOT_HEIGHT 22
|
|
#define SM_INV_SLOT_WIDTH 30
|
|
#define SM_INV_SLOT_HEIGHT 23
|
|
#define VEST_INV_SLOT_WIDTH 43
|
|
#define VEST_INV_SLOT_HEIGHT 24
|
|
#define LEGS_INV_SLOT_WIDTH 43
|
|
#define LEGS_INV_SLOT_HEIGHT 24
|
|
#define HEAD_INV_SLOT_WIDTH 43
|
|
#define HEAD_INV_SLOT_HEIGHT 24
|
|
|
|
|
|
|
|
// A STRUCT USED INTERNALLY FOR INV SLOT REGIONS
|
|
typedef struct
|
|
{
|
|
BOOLEAN fBigPocket;
|
|
INT16 sBarDx;
|
|
INT16 sBarDy;
|
|
INT16 sWidth;
|
|
INT16 sHeight;
|
|
INT16 sX; // starts at 0, gets set via InitInvSlotInterface()
|
|
INT16 sY; // starts at 0, gets set via InitInvSlotInterface()
|
|
} INV_REGIONS;
|
|
|
|
// USED TO SETUP REGION POSITIONS, ETC
|
|
typedef struct
|
|
{
|
|
INT16 sX;
|
|
INT16 sY;
|
|
} INV_REGION_DESC;
|
|
|
|
|
|
class OLD_ITEM_CURSOR_SAVE_INFO_101
|
|
{
|
|
public:
|
|
OLD_OBJECTTYPE_101 ItemPointerInfo;
|
|
UINT8 ubSoldierID;
|
|
UINT8 ubInvSlot;
|
|
BOOLEAN fCursorActive;
|
|
INT8 bPadding[5];
|
|
|
|
};
|
|
|
|
|
|
class ITEM_CURSOR_SAVE_INFO
|
|
{
|
|
public:
|
|
ITEM_CURSOR_SAVE_INFO& operator=(OLD_ITEM_CURSOR_SAVE_INFO_101& src)
|
|
{
|
|
this->fCursorActive = src.fCursorActive;
|
|
this->ItemPointerInfo = src.ItemPointerInfo;
|
|
this->ubInvSlot = src.ubInvSlot;
|
|
this->ubSoldierID = src.ubSoldierID;
|
|
return *this;
|
|
}
|
|
//could use a little tidying up
|
|
BOOLEAN Save(HWFILE hFile);
|
|
BOOLEAN Load(HWFILE hFile);
|
|
|
|
UINT8 ubSoldierID;
|
|
UINT8 ubInvSlot;
|
|
BOOLEAN fCursorActive;
|
|
OBJECTTYPE ItemPointerInfo;
|
|
};
|
|
|
|
// Itempickup stuff
|
|
BOOLEAN InitializeItemPickupMenu( SOLDIERTYPE *pSoldier, INT16 sGridNo, ITEM_POOL *pItemPool, INT16 sScreenX, INT16 sScreenY, INT8 bZLevel );
|
|
void RenderItemPickupMenu( );
|
|
void RemoveItemPickupMenu( );
|
|
void SetItemPickupMenuDirty( BOOLEAN fDirtyLevel );
|
|
BOOLEAN HandleItemPickupMenu( );
|
|
void SetPickUpMenuDirtyLevel( BOOLEAN fDirtyLevel );
|
|
|
|
|
|
// FUNCTIONS FOR INTERFACEING WITH ITEM PANEL STUFF
|
|
void INVRenderINVPanelItem( SOLDIERTYPE *pSoldier, INT16 sPocket, UINT8 fDirtyLevel );
|
|
BOOLEAN InitInvSlotInterface( INV_REGION_DESC *pRegionDesc , INV_REGION_DESC *pCamoRegion, MOUSE_CALLBACK INVMoveCallback, MOUSE_CALLBACK INVClickCallback, MOUSE_CALLBACK INVMoveCammoCallback, MOUSE_CALLBACK INVClickCammoCallback, BOOLEAN fSetHighestPrioity );
|
|
void ShutdownInvSlotInterface( );
|
|
void GetSlotInvXY( UINT8 ubPos, INT16 *psX, INT16 *psY );
|
|
void GetSlotInvHeightWidth( UINT8 ubPos, INT16 *psWidth, INT16 *psHeight );
|
|
void HandleRenderInvSlots( SOLDIERTYPE *pSoldier, UINT8 fDirtyLevel );
|
|
void HandleNewlyAddedItems( SOLDIERTYPE *pSoldier, BOOLEAN *fDirtyLevel );
|
|
void RenderInvBodyPanel( SOLDIERTYPE *pSoldier, INT16 sX, INT16 sY );
|
|
void DisableInvRegions( BOOLEAN fDisable );
|
|
|
|
void DegradeNewlyAddedItems( );
|
|
void CheckForAnyNewlyAddedItems( SOLDIERTYPE *pSoldier );
|
|
|
|
|
|
BOOLEAN HandleCompatibleAmmoUI( SOLDIERTYPE *pSoldier, INT8 bInvPos, BOOLEAN fOn );
|
|
|
|
|
|
|
|
// THIS FUNCTION IS CALLED TO RENDER AN ITEM.
|
|
// uiBuffer - The Dest Video Surface - can only be FRAME_BUFFER or guiSAVEBUFFER
|
|
// pSoldier - used for determining whether burst mode needs display
|
|
// pObject - Usually taken from pSoldier->inv[HANDPOS]
|
|
// sX, sY, Width, Height, - Will Center it in the Width
|
|
// fDirtyLevel if == DIRTYLEVEL2 will render everything
|
|
// if == DIRTYLEVEL1 will render bullets and status only
|
|
//
|
|
// pubHighlightCounter - if not null, and == 2 - will display name above item
|
|
// - if == 1 will only dirty the name space and then set counter to 0
|
|
// Last parameter used mainly for when mouse is over item
|
|
|
|
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, UINT8 iter = 0 );
|
|
// CHRISL: Add a new function that will be used to render a pocket silhouette
|
|
void INVRenderSilhouette( UINT32 uiBugger, INT16 PocketIndex, INT16 SilIndex, INT16 sX, INT16 sY, INT16 sWideth, INT16 sHeight);
|
|
// CHRISL: New function to handle display of inventory quantities based on item current in cursor
|
|
void RenderPocketItemCapacity( UINT32 uiWhichBuffer, UINT8 pCapacity, INT16 bPos, SOLDIERTYPE *pSoldier, OBJECTTYPE *pObj, INT16 sX, INT16 sY );
|
|
// CHRISL: New function to display items stored in an LBENODE
|
|
void RenderLBENODEItems( OBJECTTYPE *pObj, int subObject );
|
|
// CHRISL: New function to setup GSMInvData based on game options
|
|
void InitInvData(INV_REGIONS &InvData, BOOLEAN fBigPocket, INT16 sBarDx, INT16 sBarDy, INT16 sWidth, INT16 sHeight, INT16 sX, INT16 sY);
|
|
void InitInventoryOld();
|
|
void InitInventoryNew();
|
|
void InitInventoryVehicle(INV_REGION_DESC *pRegionDesc, MOUSE_CALLBACK INVMoveCallback, MOUSE_CALLBACK INVClickCallback, BOOLEAN fSetHighestPrioity);
|
|
void InitInventorySoldier(INV_REGION_DESC *pRegionDesc, MOUSE_CALLBACK INVMoveCallback, MOUSE_CALLBACK INVClickCallback, BOOLEAN fSetHighestPrioity);
|
|
|
|
|
|
|
|
extern BOOLEAN gfInItemDescBox;
|
|
|
|
BOOLEAN InItemDescriptionBox( );
|
|
BOOLEAN InitItemDescriptionBox( SOLDIERTYPE *pSoldier, UINT8 ubPosition, INT16 sX, INT16 sY, UINT8 ubStatusIndex );
|
|
BOOLEAN InternalInitItemDescriptionBox( OBJECTTYPE *pObject, INT16 sX, INT16 sY, UINT8 ubStatusIndex, SOLDIERTYPE *pSoldier, UINT8 ubPosition = NUM_INV_SLOTS );
|
|
BOOLEAN InitKeyItemDescriptionBox( SOLDIERTYPE *pSoldier, UINT8 ubPosition, INT16 sX, INT16 sY, UINT8 ubStatusIndex );
|
|
void RenderItemDescriptionBox( );
|
|
void HandleItemDescriptionBox( BOOLEAN *pfDirty );
|
|
void DeleteItemDescriptionBox( );
|
|
|
|
|
|
BOOLEAN InItemStackPopup( );
|
|
BOOLEAN InitItemStackPopup( SOLDIERTYPE *pSoldier, UINT8 ubPosition, INT16 sInvX, INT16 sInvY, INT16 sInvWidth, INT16 sInvHeight );
|
|
BOOLEAN InSectorStackPopup( );
|
|
BOOLEAN InitSectorStackPopup( WORLDITEM *pInventoryPoolList, INT32 ubPosition, INT16 sInvX, INT16 sInvY, INT16 sInvWidth, INT16 sInvHeight );
|
|
void RenderItemStackPopup( BOOLEAN fFullRender );
|
|
void HandleItemStackPopup( );
|
|
void DeleteItemStackPopup( );
|
|
void EndItemStackPopupWithItemInHand( );
|
|
|
|
|
|
// keyring handlers
|
|
BOOLEAN InitKeyRingPopup( SOLDIERTYPE *pSoldier, INT16 sInvX, INT16 sInvY, INT16 sInvWidth, INT16 sInvHeight );
|
|
void RenderKeyRingPopup( BOOLEAN fFullRender );
|
|
void InitKeyRingInterface( MOUSE_CALLBACK KeyRingClickCallback );
|
|
void InitMapKeyRingInterface( MOUSE_CALLBACK KeyRingClickCallback );
|
|
void DeleteKeyRingPopup( );
|
|
|
|
|
|
void ShutdownKeyRingInterface( void );
|
|
BOOLEAN InKeyRingPopup( void );
|
|
void BeginKeyRingItemPointer( SOLDIERTYPE *pSoldier, UINT8 ubKeyRingPosition );
|
|
|
|
|
|
extern OBJECTTYPE *gpItemPointer;
|
|
extern OBJECTTYPE gItemPointer;
|
|
extern SOLDIERTYPE *gpItemPointerSoldier;
|
|
extern UINT16 usItemSnapCursor;
|
|
extern UINT16 us16BPPItemCyclePlacedItemColors[ 20 ];
|
|
extern BOOLEAN gfItemPointerDifferentThanDefault;
|
|
|
|
|
|
void BeginItemPointer( SOLDIERTYPE *pSoldier, UINT8 ubHandPos );
|
|
void InternalBeginItemPointer( SOLDIERTYPE *pSoldier, OBJECTTYPE *pObject, INT8 bHandPos );
|
|
void EndItemPointer( );
|
|
void DrawItemFreeCursor( );
|
|
void DrawItemTileCursor( );
|
|
void HideItemTileCursor( );
|
|
void InitItemInterface( );
|
|
BOOLEAN ItemCursorInLobRange( INT16 sMapPos );
|
|
BOOLEAN HandleItemPointerClick( INT16 sMapPos );
|
|
UINT32 GetInterfaceGraphicForItem( INVTYPE *pItem );
|
|
UINT16 GetTileGraphicForItem( INVTYPE *pItem );
|
|
BOOLEAN LoadTileGraphicForItem( INVTYPE *pItem, UINT32 *puiVo );
|
|
|
|
void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier, int subObject = -1 );
|
|
|
|
void CancelItemPointer( );
|
|
|
|
BOOLEAN LoadItemCursorFromSavedGame( HWFILE hFile );
|
|
BOOLEAN SaveItemCursorToSavedGame( HWFILE hFile );
|
|
|
|
void EnableKeyRing( BOOLEAN fEnable );
|
|
|
|
// handle compatable items for merc and map inventory
|
|
BOOLEAN HandleCompatibleAmmoUIForMapScreen( SOLDIERTYPE *pSoldier, INT32 bInvPos, BOOLEAN fOn, BOOLEAN fFromMerc );
|
|
BOOLEAN HandleCompatibleAmmoUIForMapInventory( SOLDIERTYPE *pSoldier, INT32 bInvPos, INT32 iStartSlotNumber, BOOLEAN fOn, BOOLEAN fFromMerc );
|
|
void ResetCompatibleItemArray( );
|
|
|
|
void CycleItemDescriptionItem( INT16 sX, INT16 sY );
|
|
|
|
BOOLEAN InitializeStealItemPickupMenu( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, ITEM_POOL *pItemPool, UINT8 ubCount);
|
|
|
|
#endif
|