mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
Added mouse wheel scroll functionality for changing pages in strategic map inventory (by Asdow).
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9266 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -213,6 +213,7 @@ UINT32 uiNumberOfUnSeenItems = 0;
|
|||||||
//MOUSE_REGION MapInventoryPoolSlots[ MAP_INVENTORY_POOL_SLOT_COUNT ];
|
//MOUSE_REGION MapInventoryPoolSlots[ MAP_INVENTORY_POOL_SLOT_COUNT ];
|
||||||
MOUSE_REGION MapInventoryPoolSlots[ MAP_INVENTORY_POOL_MAX_SLOTS ];
|
MOUSE_REGION MapInventoryPoolSlots[ MAP_INVENTORY_POOL_MAX_SLOTS ];
|
||||||
MOUSE_REGION MapInventoryPoolMask;
|
MOUSE_REGION MapInventoryPoolMask;
|
||||||
|
MOUSE_REGION MapInventoryPageScrollArea;
|
||||||
// HEADROCK HAM 5: This rectangle describes the inventory. It is used to limit cursor movement while waiting for zoom input.
|
// HEADROCK HAM 5: This rectangle describes the inventory. It is used to limit cursor movement while waiting for zoom input.
|
||||||
SGPRect MapInventoryRect;
|
SGPRect MapInventoryRect;
|
||||||
|
|
||||||
@@ -407,6 +408,10 @@ void MapInventoryFilterToggle( UINT32 uiFlags );
|
|||||||
void MapInventoryFilterSet( UINT32 uiFlags );
|
void MapInventoryFilterSet( UINT32 uiFlags );
|
||||||
void HandleSetFilterButtons();
|
void HandleSetFilterButtons();
|
||||||
void InitMapInventoryCoordinates(void);
|
void InitMapInventoryCoordinates(void);
|
||||||
|
void HandleMousePageScroll(void);
|
||||||
|
void MapInvNextPage(void);
|
||||||
|
void MapInvPreviousPage(void);
|
||||||
|
|
||||||
|
|
||||||
//dnl ch75 271013 ClearAllItemPools and RefreshItemPools are relocated from "Handle Items.cpp"
|
//dnl ch75 271013 ClearAllItemPools and RefreshItemPools are relocated from "Handle Items.cpp"
|
||||||
void ClearAllItemPools()
|
void ClearAllItemPools()
|
||||||
@@ -920,6 +925,14 @@ void CreateDestroyMapInventoryPoolButtons( BOOLEAN fExitFromMapScreen )
|
|||||||
// create buttons
|
// create buttons
|
||||||
CreateMapInventoryButtons( );
|
CreateMapInventoryButtons( );
|
||||||
|
|
||||||
|
// Create mouseregion for page scroll
|
||||||
|
MSYS_DefineRegion(
|
||||||
|
&MapInventoryPageScrollArea,
|
||||||
|
UI_MAP.BorderRegion.x, UI_MAP.BorderRegion.y,
|
||||||
|
UI_MAP.BorderRegion.x + UI_MAP.BorderRegion.width, UI_MAP.BorderRegion.y + UI_MAP.BorderRegion.height,
|
||||||
|
MSYS_PRIORITY_NORMAL, MSYS_NO_CURSOR, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK
|
||||||
|
);
|
||||||
|
|
||||||
// Flugente: certain features need to alter an item's temperature value depending on the time passed
|
// Flugente: certain features need to alter an item's temperature value depending on the time passed
|
||||||
// if we do these functions here and adjust for the time passed since this sector was loaded last, it will seem to the player
|
// if we do these functions here and adjust for the time passed since this sector was loaded last, it will seem to the player
|
||||||
// as if these checks are always performed in any sector
|
// as if these checks are always performed in any sector
|
||||||
@@ -972,6 +985,8 @@ void CreateDestroyMapInventoryPoolButtons( BOOLEAN fExitFromMapScreen )
|
|||||||
|
|
||||||
DestroyInventoryPoolDoneButton( );
|
DestroyInventoryPoolDoneButton( );
|
||||||
|
|
||||||
|
MSYS_RemoveRegion(&MapInventoryPageScrollArea);
|
||||||
|
|
||||||
// HEADROCK HAM 5: Destroy big item graphics.
|
// HEADROCK HAM 5: Destroy big item graphics.
|
||||||
if (fMapInventoryZoom)
|
if (fMapInventoryZoom)
|
||||||
{
|
{
|
||||||
@@ -2770,56 +2785,32 @@ BOOLEAN AutoPlaceObjectInInventoryStash( OBJECTTYPE *pItemPtr, INT32 sGridNo, IN
|
|||||||
|
|
||||||
void MapInventoryPoolNextBtn( GUI_BUTTON *btn, INT32 reason )
|
void MapInventoryPoolNextBtn( GUI_BUTTON *btn, INT32 reason )
|
||||||
{
|
{
|
||||||
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
||||||
{
|
{
|
||||||
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
||||||
}
|
}
|
||||||
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
||||||
{
|
{
|
||||||
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
||||||
{
|
{
|
||||||
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
||||||
|
MapInvNextPage();
|
||||||
// if can go to next page, go there
|
|
||||||
if( iCurrentInventoryPoolPage < ( iLastInventoryPoolPage ) )
|
|
||||||
{
|
|
||||||
iCurrentInventoryPoolPage++;
|
|
||||||
//shadooow: this will re-render item compatibility highlighting when changing pages for currently held item
|
|
||||||
if (gpItemPointer != NULL)
|
|
||||||
{
|
|
||||||
fChangedInventorySlots = TRUE;
|
|
||||||
gfCheckForCursorOverMapSectorInventoryItem = TRUE;
|
|
||||||
}
|
|
||||||
fMapPanelDirty = TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MapInventoryPoolPrevBtn( GUI_BUTTON *btn, INT32 reason )
|
void MapInventoryPoolPrevBtn( GUI_BUTTON *btn, INT32 reason )
|
||||||
{
|
{
|
||||||
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
||||||
{
|
{
|
||||||
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
||||||
}
|
}
|
||||||
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
||||||
{
|
{
|
||||||
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
||||||
{
|
{
|
||||||
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
||||||
|
MapInvPreviousPage();
|
||||||
// if can go to next page, go there
|
|
||||||
if( iCurrentInventoryPoolPage > 0 )
|
|
||||||
{
|
|
||||||
iCurrentInventoryPoolPage--;
|
|
||||||
//shadooow: this will re-render item compatibility highlighting when changing pages for currently held item
|
|
||||||
if (gpItemPointer != NULL)
|
|
||||||
{
|
|
||||||
fChangedInventorySlots = TRUE;
|
|
||||||
gfCheckForCursorOverMapSectorInventoryItem = TRUE;
|
|
||||||
}
|
|
||||||
fMapPanelDirty = TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3800,6 +3791,7 @@ void HandleMapSectorInventory( void )
|
|||||||
{
|
{
|
||||||
HandleMouseInCompatableItemForMapSectorInventory( iCurrentlyHighLightedItem );
|
HandleMouseInCompatableItemForMapSectorInventory( iCurrentlyHighLightedItem );
|
||||||
}
|
}
|
||||||
|
HandleMousePageScroll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -6326,6 +6318,89 @@ void HandleSectorCooldownFunctions( INT16 sMapX, INT16 sMapY, INT8 sMapZ, std::v
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ResetMapInventoryWheelStates(void)
|
||||||
|
{
|
||||||
|
MapInventoryPageScrollArea.WheelState = 0;
|
||||||
|
for (UINT32 i = 0; i < MAP_INVENTORY_POOL_SLOT_COUNT; i++)
|
||||||
|
{
|
||||||
|
MapInventoryPoolSlots[i].WheelState = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleMousePageScroll(void)
|
||||||
|
{
|
||||||
|
boolean scroll = false;
|
||||||
|
if (MapInventoryPageScrollArea.WheelState > 0)
|
||||||
|
{
|
||||||
|
scroll = true;
|
||||||
|
}
|
||||||
|
for (UINT32 i = 0; i < MAP_INVENTORY_POOL_SLOT_COUNT; i++)
|
||||||
|
{
|
||||||
|
if (MapInventoryPoolSlots[i].WheelState > 0)
|
||||||
|
{
|
||||||
|
scroll = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (scroll == true)
|
||||||
|
{
|
||||||
|
MapInvPreviousPage();
|
||||||
|
ResetMapInventoryWheelStates();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MapInventoryPageScrollArea.WheelState < 0)
|
||||||
|
{
|
||||||
|
scroll = true;
|
||||||
|
}
|
||||||
|
for (UINT32 i = 0; i < MAP_INVENTORY_POOL_SLOT_COUNT; i++)
|
||||||
|
{
|
||||||
|
if (MapInventoryPoolSlots[i].WheelState < 0)
|
||||||
|
{
|
||||||
|
scroll = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (scroll == true)
|
||||||
|
{
|
||||||
|
MapInvNextPage();
|
||||||
|
ResetMapInventoryWheelStates();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MapInvNextPage(void)
|
||||||
|
{
|
||||||
|
// if can go to next page, go there
|
||||||
|
if (iCurrentInventoryPoolPage < iLastInventoryPoolPage)
|
||||||
|
{
|
||||||
|
iCurrentInventoryPoolPage++;
|
||||||
|
//shadooow: this will re-render item compatibility highlighting when changing pages for currently held item
|
||||||
|
if (gpItemPointer != NULL)
|
||||||
|
{
|
||||||
|
fChangedInventorySlots = TRUE;
|
||||||
|
gfCheckForCursorOverMapSectorInventoryItem = TRUE;
|
||||||
|
}
|
||||||
|
fMapPanelDirty = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MapInvPreviousPage(void)
|
||||||
|
{
|
||||||
|
// if can go to next page, go there
|
||||||
|
if (iCurrentInventoryPoolPage > 0)
|
||||||
|
{
|
||||||
|
iCurrentInventoryPoolPage--;
|
||||||
|
//shadooow: this will re-render item compatibility highlighting when changing pages for currently held item
|
||||||
|
if (gpItemPointer != NULL)
|
||||||
|
{
|
||||||
|
fChangedInventorySlots = TRUE;
|
||||||
|
gfCheckForCursorOverMapSectorInventoryItem = TRUE;
|
||||||
|
}
|
||||||
|
fMapPanelDirty = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void InitMapInventoryCoordinates(void)
|
void InitMapInventoryCoordinates(void)
|
||||||
{
|
{
|
||||||
if (isWidescreenUI())
|
if (isWidescreenUI())
|
||||||
|
|||||||
Reference in New Issue
Block a user