mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
For more info, see http://thepit.ja-galaxy-forum.com/index.php?t=msg&th=23643&goto=352475&#msg_352475 Requires GameDir >= r2401. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8522 3b4a5df2-a311-0410-b5c6-a8a6f20db521
135 lines
4.9 KiB
C++
135 lines
4.9 KiB
C++
#ifndef _SHOPKEEPER_INTERFACE__H_
|
|
#define _SHOPKEEPER_INTERFACE__H_
|
|
|
|
#include "Store Inventory.h"
|
|
|
|
//Enums used for when the user clicks on an item and the item goes to..
|
|
enum
|
|
{
|
|
ARMS_DEALER_INVENTORY,
|
|
ARMS_DEALER_OFFER_AREA,
|
|
PLAYERS_OFFER_AREA,
|
|
PLAYERS_INVENTORY,
|
|
};
|
|
|
|
#define ARMS_INV_ITEM_SELECTED 0x00000001 // The item has been placed into the offer area
|
|
//#define ARMS_INV_PLAYERS_ITEM_SELECTED 0x00000002 // The source location for the item has been selected
|
|
#define ARMS_INV_PLAYERS_ITEM_HAS_VALUE 0x00000004 // The Players item is worth something to this dealer
|
|
//#define ARMS_INV_ITEM_HIGHLIGHTED 0x00000008 // If the items is highlighted
|
|
#define ARMS_INV_ITEM_NOT_REPAIRED_YET 0x00000010 // The item is in for repairs but not repaired yet
|
|
#define ARMS_INV_ITEM_REPAIRED 0x00000020 // The item is repaired
|
|
#define ARMS_INV_JUST_PURCHASED 0x00000040 // The item was just purchased
|
|
#define ARMS_INV_PLAYERS_ITEM_HAS_BEEN_EVALUATED 0x00000080 // The Players item has been evaluated
|
|
|
|
|
|
class OLD_INVENTORY_IN_SLOT_101
|
|
{
|
|
public:
|
|
BOOLEAN fActive;
|
|
INT16 sItemIndex;
|
|
UINT32 uiFlags;
|
|
OLD_OBJECTTYPE_101 oldItemObject;
|
|
UINT8 ubLocationOfObject; //An enum value for the location of the item ( either in the arms dealers inventory, one of the offer areas or in the users inventory)
|
|
INT8 bSlotIdInOtherLocation;
|
|
|
|
UINT8 ubIdOfMercWhoOwnsTheItem;
|
|
UINT32 uiItemPrice; //Only used for the players item that have been evaluated
|
|
|
|
INT16 sSpecialItemElement; // refers to which special item element an item in a dealer's inventory area
|
|
// occupies. -1 Means the item is "perfect" and has no associated special item.
|
|
};
|
|
|
|
class INVENTORY_IN_SLOT
|
|
{
|
|
public:
|
|
BOOLEAN Save(HWFILE hFile);
|
|
BOOLEAN Load(HWFILE hFile);
|
|
INVENTORY_IN_SLOT() {initialize();};
|
|
INVENTORY_IN_SLOT& operator=(OLD_INVENTORY_IN_SLOT_101& src);
|
|
void initialize();
|
|
BOOLEAN fActive;
|
|
INT16 sItemIndex;
|
|
UINT32 uiFlags;
|
|
UINT8 ubLocationOfObject; //An enum value for the location of the item ( either in the arms dealers inventory, one of the offer areas or in the users inventory)
|
|
INT16 bSlotIdInOtherLocation;
|
|
|
|
UINT8 ubIdOfMercWhoOwnsTheItem;
|
|
UINT32 uiItemPrice; //Only used for the players item that have been evaluated
|
|
|
|
UINT32 uiRepairDoneTime; //so that we can sort repairman's inventory easily
|
|
|
|
char endOfPod;
|
|
OBJECTTYPE ItemObject;
|
|
};
|
|
|
|
#define SIZEOF_INVENTORY_IN_SLOT_POD offsetof (INVENTORY_IN_SLOT, endOfPod)
|
|
|
|
extern INT32 giShopKeepDialogueEventinProgress;
|
|
|
|
|
|
//extern BOOLEAN gfRedrawSkiScreen;
|
|
|
|
enum
|
|
{
|
|
SKI_DIRTY_LEVEL0, // no redraw
|
|
SKI_DIRTY_LEVEL1, // redraw only items
|
|
SKI_DIRTY_LEVEL2, // redraw everything
|
|
};
|
|
|
|
extern UINT8 gubSkiDirtyLevel;
|
|
|
|
extern OBJECTTYPE *gpHighLightedItemObject;
|
|
|
|
|
|
extern INVENTORY_IN_SLOT gMoveingItem;
|
|
|
|
|
|
extern OBJECTTYPE *pShopKeeperItemDescObject;
|
|
|
|
|
|
UINT32 ShopKeeperScreenInit( void );
|
|
UINT32 ShopKeeperScreenHandle( void );
|
|
UINT32 ShopKeeperScreenShutdown( void );
|
|
|
|
bool ArmsDealerItemQsortCompare(INVENTORY_IN_SLOT& pInvSlot1, INVENTORY_IN_SLOT& pInvSlot2);
|
|
bool RepairmanItemQsortCompare(INVENTORY_IN_SLOT& pInvSlot1, INVENTORY_IN_SLOT& pInvSlot2);
|
|
|
|
void EnterShopKeeperInterfaceScreen( UINT8 ubArmsDealer );
|
|
|
|
// Flugente: set up shopkeeper with a non-NPC
|
|
void EnterShopKeeperInterfaceScreen_NonNPC( INT8 ubArmsDealerID, UINT8 aMercID );
|
|
|
|
void EnableDisableShopkeeperButtons(UINT32 uiCurrentItemDescriptionScreen, int bpAction);
|
|
|
|
void DrawHatchOnInventory( UINT32 uiSurface, UINT16 usPosX, UINT16 usPosY, UINT16 usWidth, UINT16 usHeight, UINT16 usColor = 0 );
|
|
void DrawHatchOnInventory_MilitiaAccess( UINT32 uiSurface, UINT16 usPosX, UINT16 usPosY, UINT16 usWidth, UINT16 usHeight, UINT16 usColor = 0 );
|
|
BOOLEAN ShouldSoldierDisplayHatchOnItem( UINT8 ubProfileID, INT16 sSlotNum );
|
|
INT8 AddItemToPlayersOfferArea( UINT8 ubProfileID, INVENTORY_IN_SLOT* pInvSlot, INT16 bSlotIdInOtherLocation );
|
|
void ConfirmToDeductMoneyFromPlayersAccountMessageBoxCallBack( UINT8 bExitValue );
|
|
void ConfirmToDeductIntelFromPlayersAccountMessageBoxCallBack( UINT8 bExitValue );
|
|
void ConfirmDontHaveEnoughForTheDealerMessageBoxCallBack( UINT8 bExitValue );
|
|
|
|
void SkiHelpTextDoneCallBack( void );
|
|
void SetSkiCursor( UINT16 usCursor );
|
|
|
|
void InitShopKeeperSubTitledText( STR16 pString );
|
|
|
|
void AddItemToPlayersOfferAreaAfterShopKeeperOpen( OBJECTTYPE *pItemObject);
|
|
|
|
void BeginSkiItemPointer( UINT8 ubSource, INT16 bSlotNum, BOOLEAN fOfferToDealerFirst );
|
|
|
|
void DeleteShopKeeperItemDescBox();
|
|
|
|
BOOLEAN CanMercInteractWithSelectedShopkeeper( SOLDIERTYPE *pSoldier );
|
|
|
|
void DealerGetsBribed( UINT8 ubProfileId, UINT32 uiMoneyAmount );
|
|
|
|
|
|
#ifdef JA2TESTVERSION
|
|
void AddShopkeeperToGridNo( UINT8 ubProfile, INT32 sGridNo );
|
|
#endif
|
|
|
|
void RestrictSkiMouseCursor();
|
|
|
|
#endif
|