@ -45,7 +45,7 @@ bool InGameMenu()
namespace {
namespace {
int s lot = SLOTXY_INV_FIRST ;
int S lot = SLOTXY_INV_FIRST ;
/**
/**
* Number of angles to turn to face the coordinate
* Number of angles to turn to face the coordinate
@ -257,9 +257,9 @@ void FindMeleeTarget()
SearchNode node = queue . front ( ) ;
SearchNode node = queue . front ( ) ;
queue . pop_front ( ) ;
queue . pop_front ( ) ;
for ( int i = 0 ; i < 8 ; i + + ) {
for ( auto pathDir : PathDirs ) {
const int dx = node . x + pathxdir [ i ] ;
const int dx = node . x + pathDir . deltaX ;
const int dy = node . y + pathydir [ i ] ;
const int dy = node . y + pathDir . deltaY ;
if ( visited [ dx ] [ dy ] )
if ( visited [ dx ] [ dy ] )
continue ; // already visisted
continue ; // already visisted
@ -577,9 +577,9 @@ Size GetItemSizeOnSlot(int slot, char &itemInvId)
if ( slot > = SLOTXY_INV_FIRST & & slot < = SLOTXY_INV_LAST ) {
if ( slot > = SLOTXY_INV_FIRST & & slot < = SLOTXY_INV_LAST ) {
int ig = slot - SLOTXY_INV_FIRST ;
int ig = slot - SLOTXY_INV_FIRST ;
auto & myPlayer = Players [ MyPlayerId ] ;
auto & myPlayer = Players [ MyPlayerId ] ;
char ii = myPlayer . InvGrid [ ig ] ;
int8_t ii = myPlayer . InvGrid [ ig ] ;
if ( ii ! = 0 ) {
if ( ii ! = 0 ) {
int iv = ii ;
int8_t iv = ii ;
if ( ii < = 0 ) {
if ( ii < = 0 ) {
iv = - ii ;
iv = - ii ;
}
}
@ -605,29 +605,29 @@ Size GetItemSizeOnSlot(int slot, char &itemInvId)
void ResetInvCursorPosition ( )
void ResetInvCursorPosition ( )
{
{
Point mousePos { } ;
Point mousePos { } ;
if ( s lot < SLOTXY_INV_FIRST ) {
if ( S lot < SLOTXY_INV_FIRST ) {
mousePos = InvGetEquipSlotCoordFromInvSlot ( ( inv_xy_slot ) s lot) ;
mousePos = InvGetEquipSlotCoordFromInvSlot ( ( inv_xy_slot ) S lot) ;
} else if ( s lot < SLOTXY_BELT_FIRST ) {
} else if ( S lot < SLOTXY_BELT_FIRST ) {
char itemInvId ;
char itemInvId ;
auto itemSize = GetItemSizeOnSlot ( s lot, itemInvId ) ;
auto itemSize = GetItemSizeOnSlot ( S lot, itemInvId ) ;
// search the 'first slot' for that item in the inventory, it should have the positive number of that same InvId
// search the 'first slot' for that item in the inventory, it should have the positive number of that same InvId
if ( itemInvId < 0 ) {
if ( itemInvId < 0 ) {
for ( int s = 0 ; s < SLOTXY_INV_LAST - SLOTXY_INV_FIRST ; + + s ) {
for ( int s = 0 ; s < SLOTXY_INV_LAST - SLOTXY_INV_FIRST ; + + s ) {
if ( Players [ MyPlayerId ] . InvGrid [ s ] = = - itemInvId ) {
if ( Players [ MyPlayerId ] . InvGrid [ s ] = = - itemInvId ) {
s lot = SLOTXY_INV_FIRST + s ;
S lot = SLOTXY_INV_FIRST + s ;
break ;
break ;
}
}
}
}
}
}
// offset the slot to always move to the top-left most slot of that item
// offset the slot to always move to the top-left most slot of that item
s lot - = ( ( itemSize . height - 1 ) * INV_ROW_SLOT_SIZE ) ;
S lot - = ( ( itemSize . height - 1 ) * INV_ROW_SLOT_SIZE ) ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
mousePos . x + = ( ( itemSize . width - 1 ) * InventorySlotSizeInPixels . width ) / 2 ;
mousePos . x + = ( ( itemSize . width - 1 ) * InventorySlotSizeInPixels . width ) / 2 ;
mousePos . y + = ( ( itemSize . height - 1 ) * InventorySlotSizeInPixels . height ) / 2 ;
mousePos . y + = ( ( itemSize . height - 1 ) * InventorySlotSizeInPixels . height ) / 2 ;
} else {
} else {
mousePos = BeltGetSlotCoord ( s lot) ;
mousePos = BeltGetSlotCoord ( S lot) ;
}
}
mousePos . x + = ( InventorySlotSizeInPixels . width / 2 ) ;
mousePos . x + = ( InventorySlotSizeInPixels . width / 2 ) ;
@ -649,271 +649,271 @@ void InvMove(AxisDirection dir)
return ;
return ;
char itemInvId ;
char itemInvId ;
auto itemSize = GetItemSizeOnSlot ( s lot, itemInvId ) ;
auto itemSize = GetItemSizeOnSlot ( S lot, itemInvId ) ;
Point mousePos = MousePosition ;
Point mousePos = MousePosition ;
const bool isHoldingItem = pcurs > 1 ;
const bool isHoldingItem = pcurs > 1 ;
// normalize slots
// normalize slots
if ( s lot < 0 )
if ( S lot < 0 )
s lot = 0 ;
S lot = 0 ;
else if ( s lot > = SLOTXY_HEAD_FIRST & & s lot < = SLOTXY_HEAD_LAST )
else if ( S lot > = SLOTXY_HEAD_FIRST & & S lot < = SLOTXY_HEAD_LAST )
s lot = SLOTXY_HEAD_FIRST ;
S lot = SLOTXY_HEAD_FIRST ;
else if ( s lot > = SLOTXY_HAND_LEFT_FIRST & & s lot < = SLOTXY_HAND_LEFT_LAST )
else if ( S lot > = SLOTXY_HAND_LEFT_FIRST & & S lot < = SLOTXY_HAND_LEFT_LAST )
s lot = SLOTXY_HAND_LEFT_FIRST ;
S lot = SLOTXY_HAND_LEFT_FIRST ;
else if ( s lot > = SLOTXY_CHEST_FIRST & & s lot < = SLOTXY_CHEST_LAST )
else if ( S lot > = SLOTXY_CHEST_FIRST & & S lot < = SLOTXY_CHEST_LAST )
s lot = SLOTXY_CHEST_FIRST ;
S lot = SLOTXY_CHEST_FIRST ;
else if ( s lot > = SLOTXY_HAND_RIGHT_FIRST & & s lot < = SLOTXY_HAND_RIGHT_LAST )
else if ( S lot > = SLOTXY_HAND_RIGHT_FIRST & & S lot < = SLOTXY_HAND_RIGHT_LAST )
s lot = SLOTXY_HAND_RIGHT_FIRST ;
S lot = SLOTXY_HAND_RIGHT_FIRST ;
else if ( s lot > SLOTXY_BELT_LAST )
else if ( S lot > SLOTXY_BELT_LAST )
s lot = SLOTXY_BELT_LAST ;
S lot = SLOTXY_BELT_LAST ;
const int initialSlot = s lot;
const int initialSlot = S lot;
auto & myPlayer = Players [ MyPlayerId ] ;
auto & myPlayer = Players [ MyPlayerId ] ;
// when item is on cursor (pcurs > 1), this is the real cursor XY
// when item is on cursor (pcurs > 1), this is the real cursor XY
if ( dir . x = = AxisDirectionX_LEFT ) {
if ( dir . x = = AxisDirectionX_LEFT ) {
if ( isHoldingItem ) {
if ( isHoldingItem ) {
if ( s lot > = SLOTXY_INV_FIRST & & s lot < = SLOTXY_INV_LAST ) {
if ( S lot > = SLOTXY_INV_FIRST & & S lot < = SLOTXY_INV_LAST ) {
if ( s lot = = SLOTXY_INV_ROW1_FIRST | | s lot = = SLOTXY_INV_ROW2_FIRST | | s lot = = SLOTXY_INV_ROW3_FIRST | | s lot = = SLOTXY_INV_ROW4_FIRST ) {
if ( S lot = = SLOTXY_INV_ROW1_FIRST | | S lot = = SLOTXY_INV_ROW2_FIRST | | S lot = = SLOTXY_INV_ROW3_FIRST | | S lot = = SLOTXY_INV_ROW4_FIRST ) {
s lot + = INV_ROW_SLOT_SIZE - icursW28 ;
S lot + = INV_ROW_SLOT_SIZE - icursW28 ;
} else {
} else {
s lot - = 1 ;
S lot - = 1 ;
}
}
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot > SLOTXY_BELT_FIRST & & s lot < = SLOTXY_BELT_LAST ) {
} else if ( S lot > SLOTXY_BELT_FIRST & & S lot < = SLOTXY_BELT_LAST ) {
s lot - = 1 ;
S lot - = 1 ;
mousePos = BeltGetSlotCoord ( s lot) ;
mousePos = BeltGetSlotCoord ( S lot) ;
} else if ( myPlayer . HoldItem . _itype = = ITYPE_RING ) {
} else if ( myPlayer . HoldItem . _itype = = ITYPE_RING ) {
s lot = SLOTXY_RING_LEFT ;
S lot = SLOTXY_RING_LEFT ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_LEFT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_LEFT ) ;
} else if ( myPlayer . HoldItem . isWeapon ( ) | | myPlayer . HoldItem . isShield ( ) ) {
} else if ( myPlayer . HoldItem . isWeapon ( ) | | myPlayer . HoldItem . isShield ( ) ) {
if ( s lot = = SLOTXY_HAND_LEFT_FIRST ) {
if ( S lot = = SLOTXY_HAND_LEFT_FIRST ) {
s lot = SLOTXY_HAND_RIGHT_FIRST ;
S lot = SLOTXY_HAND_RIGHT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
} else if ( s lot = = SLOTXY_HAND_RIGHT_FIRST ) {
} else if ( S lot = = SLOTXY_HAND_RIGHT_FIRST ) {
s lot = SLOTXY_HAND_LEFT_FIRST ;
S lot = SLOTXY_HAND_LEFT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_LEFT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_LEFT ) ;
}
}
}
}
} else {
} else {
if ( s lot = = SLOTXY_HAND_RIGHT_FIRST ) {
if ( S lot = = SLOTXY_HAND_RIGHT_FIRST ) {
s lot = SLOTXY_CHEST_FIRST ;
S lot = SLOTXY_CHEST_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_CHEST ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_CHEST ) ;
} else if ( s lot = = SLOTXY_CHEST_FIRST ) {
} else if ( S lot = = SLOTXY_CHEST_FIRST ) {
s lot = SLOTXY_HAND_LEFT_FIRST ;
S lot = SLOTXY_HAND_LEFT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_LEFT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_LEFT ) ;
} else if ( s lot = = SLOTXY_AMULET ) {
} else if ( S lot = = SLOTXY_AMULET ) {
s lot = SLOTXY_HEAD_FIRST ;
S lot = SLOTXY_HEAD_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HEAD ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HEAD ) ;
} else if ( s lot = = SLOTXY_RING_RIGHT ) {
} else if ( S lot = = SLOTXY_RING_RIGHT ) {
s lot = SLOTXY_RING_LEFT ;
S lot = SLOTXY_RING_LEFT ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_LEFT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_LEFT ) ;
} else if ( s lot > = SLOTXY_INV_FIRST & & s lot < = SLOTXY_INV_LAST ) {
} else if ( S lot > = SLOTXY_INV_FIRST & & S lot < = SLOTXY_INV_LAST ) {
if ( s lot = = SLOTXY_INV_ROW1_FIRST | | s lot = = SLOTXY_INV_ROW2_FIRST | | s lot = = SLOTXY_INV_ROW3_FIRST | | s lot = = SLOTXY_INV_ROW4_FIRST ) {
if ( S lot = = SLOTXY_INV_ROW1_FIRST | | S lot = = SLOTXY_INV_ROW2_FIRST | | S lot = = SLOTXY_INV_ROW3_FIRST | | S lot = = SLOTXY_INV_ROW4_FIRST ) {
s lot + = INV_ROW_SLOT_SIZE - 1 ;
S lot + = INV_ROW_SLOT_SIZE - 1 ;
} else {
} else {
s lot - = 1 ;
S lot - = 1 ;
}
}
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot > SLOTXY_BELT_FIRST & & s lot < = SLOTXY_BELT_LAST ) {
} else if ( S lot > SLOTXY_BELT_FIRST & & S lot < = SLOTXY_BELT_LAST ) {
s lot - = 1 ;
S lot - = 1 ;
mousePos = BeltGetSlotCoord ( s lot) ;
mousePos = BeltGetSlotCoord ( S lot) ;
}
}
}
}
} else if ( dir . x = = AxisDirectionX_RIGHT ) {
} else if ( dir . x = = AxisDirectionX_RIGHT ) {
if ( isHoldingItem ) {
if ( isHoldingItem ) {
if ( s lot > = SLOTXY_INV_FIRST & & s lot < = SLOTXY_INV_LAST ) {
if ( S lot > = SLOTXY_INV_FIRST & & S lot < = SLOTXY_INV_LAST ) {
if (
if (
s lot = = SLOTXY_INV_ROW1_LAST + 1 - icursW28 | | s lot = = SLOTXY_INV_ROW2_LAST + 1 - icursW28 | | s lot = = SLOTXY_INV_ROW3_LAST + 1 - icursW28 | | s lot = = SLOTXY_INV_ROW4_LAST + 1 - icursW28 ) {
S lot = = SLOTXY_INV_ROW1_LAST + 1 - icursW28 | | S lot = = SLOTXY_INV_ROW2_LAST + 1 - icursW28 | | S lot = = SLOTXY_INV_ROW3_LAST + 1 - icursW28 | | S lot = = SLOTXY_INV_ROW4_LAST + 1 - icursW28 ) {
s lot - = INV_ROW_SLOT_SIZE - icursW28 ;
S lot - = INV_ROW_SLOT_SIZE - icursW28 ;
} else {
} else {
s lot + = 1 ;
S lot + = 1 ;
}
}
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot > = SLOTXY_BELT_FIRST & & s lot < SLOTXY_BELT_LAST ) {
} else if ( S lot > = SLOTXY_BELT_FIRST & & S lot < SLOTXY_BELT_LAST ) {
s lot + = 1 ;
S lot + = 1 ;
mousePos = BeltGetSlotCoord ( s lot) ;
mousePos = BeltGetSlotCoord ( S lot) ;
} else if ( myPlayer . HoldItem . _itype = = ITYPE_RING ) {
} else if ( myPlayer . HoldItem . _itype = = ITYPE_RING ) {
s lot = SLOTXY_RING_RIGHT ;
S lot = SLOTXY_RING_RIGHT ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_RIGHT ) ;
} else if ( myPlayer . HoldItem . isWeapon ( ) | | myPlayer . HoldItem . isShield ( ) ) {
} else if ( myPlayer . HoldItem . isWeapon ( ) | | myPlayer . HoldItem . isShield ( ) ) {
if ( s lot = = SLOTXY_HAND_LEFT_FIRST ) {
if ( S lot = = SLOTXY_HAND_LEFT_FIRST ) {
s lot = SLOTXY_HAND_RIGHT_FIRST ;
S lot = SLOTXY_HAND_RIGHT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
} else if ( s lot = = SLOTXY_HAND_RIGHT_FIRST ) {
} else if ( S lot = = SLOTXY_HAND_RIGHT_FIRST ) {
s lot = SLOTXY_HAND_LEFT_FIRST ;
S lot = SLOTXY_HAND_LEFT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_LEFT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_LEFT ) ;
}
}
}
}
} else {
} else {
if ( s lot = = SLOTXY_RING_LEFT ) {
if ( S lot = = SLOTXY_RING_LEFT ) {
s lot = SLOTXY_RING_RIGHT ;
S lot = SLOTXY_RING_RIGHT ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_RIGHT ) ;
} else if ( s lot = = SLOTXY_HAND_LEFT_FIRST ) {
} else if ( S lot = = SLOTXY_HAND_LEFT_FIRST ) {
s lot = SLOTXY_CHEST_FIRST ;
S lot = SLOTXY_CHEST_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_CHEST ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_CHEST ) ;
} else if ( s lot = = SLOTXY_CHEST_FIRST ) {
} else if ( S lot = = SLOTXY_CHEST_FIRST ) {
s lot = SLOTXY_HAND_RIGHT_FIRST ;
S lot = SLOTXY_HAND_RIGHT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
} else if ( s lot = = SLOTXY_HEAD_FIRST ) {
} else if ( S lot = = SLOTXY_HEAD_FIRST ) {
s lot = SLOTXY_AMULET ;
S lot = SLOTXY_AMULET ;
mousePos = InvGetEquipSlotCoord ( INVLOC_AMULET ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_AMULET ) ;
} else if ( s lot > = SLOTXY_INV_FIRST & & s lot < = SLOTXY_INV_LAST ) {
} else if ( S lot > = SLOTXY_INV_FIRST & & S lot < = SLOTXY_INV_LAST ) {
if (
if (
s lot = = SLOTXY_INV_ROW1_LAST + 1 - itemSize . width | | s lot = = SLOTXY_INV_ROW2_LAST + 1 - itemSize . width | | s lot = = SLOTXY_INV_ROW3_LAST + 1 - itemSize . width | | s lot = = SLOTXY_INV_ROW4_LAST + 1 - itemSize . width ) {
S lot = = SLOTXY_INV_ROW1_LAST + 1 - itemSize . width | | S lot = = SLOTXY_INV_ROW2_LAST + 1 - itemSize . width | | S lot = = SLOTXY_INV_ROW3_LAST + 1 - itemSize . width | | S lot = = SLOTXY_INV_ROW4_LAST + 1 - itemSize . width ) {
s lot - = INV_ROW_SLOT_SIZE - itemSize . width ;
S lot - = INV_ROW_SLOT_SIZE - itemSize . width ;
} else {
} else {
s lot + = itemSize . width ;
S lot + = itemSize . width ;
}
}
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot > = SLOTXY_BELT_FIRST & & s lot < SLOTXY_BELT_LAST ) {
} else if ( S lot > = SLOTXY_BELT_FIRST & & S lot < SLOTXY_BELT_LAST ) {
s lot + = 1 ;
S lot + = 1 ;
mousePos = BeltGetSlotCoord ( s lot) ;
mousePos = BeltGetSlotCoord ( S lot) ;
}
}
}
}
}
}
if ( dir . y = = AxisDirectionY_UP ) {
if ( dir . y = = AxisDirectionY_UP ) {
if ( isHoldingItem ) {
if ( isHoldingItem ) {
if ( s lot > = SLOTXY_INV_ROW2_FIRST ) { // general inventory
if ( S lot > = SLOTXY_INV_ROW2_FIRST ) { // general inventory
s lot - = INV_ROW_SLOT_SIZE ;
S lot - = INV_ROW_SLOT_SIZE ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot > = SLOTXY_INV_FIRST ) {
} else if ( S lot > = SLOTXY_INV_FIRST ) {
if ( myPlayer . HoldItem . _itype = = ITYPE_RING ) {
if ( myPlayer . HoldItem . _itype = = ITYPE_RING ) {
if ( s lot > = SLOTXY_INV_ROW1_FIRST & & s lot < = SLOTXY_INV_ROW1_FIRST + ( INV_ROW_SLOT_SIZE / 2 ) - 1 ) {
if ( S lot > = SLOTXY_INV_ROW1_FIRST & & S lot < = SLOTXY_INV_ROW1_FIRST + ( INV_ROW_SLOT_SIZE / 2 ) - 1 ) {
s lot = SLOTXY_RING_LEFT ;
S lot = SLOTXY_RING_LEFT ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_LEFT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_LEFT ) ;
} else {
} else {
s lot = SLOTXY_RING_RIGHT ;
S lot = SLOTXY_RING_RIGHT ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_RIGHT ) ;
}
}
} else if ( myPlayer . HoldItem . isWeapon ( ) ) {
} else if ( myPlayer . HoldItem . isWeapon ( ) ) {
s lot = SLOTXY_HAND_LEFT_FIRST ;
S lot = SLOTXY_HAND_LEFT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_LEFT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_LEFT ) ;
} else if ( myPlayer . HoldItem . isShield ( ) ) {
} else if ( myPlayer . HoldItem . isShield ( ) ) {
s lot = SLOTXY_HAND_RIGHT_FIRST ;
S lot = SLOTXY_HAND_RIGHT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
} else if ( myPlayer . HoldItem . isHelm ( ) ) {
} else if ( myPlayer . HoldItem . isHelm ( ) ) {
s lot = SLOTXY_HEAD_FIRST ;
S lot = SLOTXY_HEAD_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HEAD ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HEAD ) ;
} else if ( myPlayer . HoldItem . isArmor ( ) ) {
} else if ( myPlayer . HoldItem . isArmor ( ) ) {
s lot = SLOTXY_CHEST_FIRST ;
S lot = SLOTXY_CHEST_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_CHEST ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_CHEST ) ;
} else if ( myPlayer . HoldItem . _itype = = ITYPE_AMULET ) {
} else if ( myPlayer . HoldItem . _itype = = ITYPE_AMULET ) {
s lot = SLOTXY_AMULET ;
S lot = SLOTXY_AMULET ;
mousePos = InvGetEquipSlotCoord ( INVLOC_AMULET ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_AMULET ) ;
}
}
}
}
} else {
} else {
if ( s lot > = SLOTXY_INV_ROW1_FIRST & & s lot < SLOTXY_INV_ROW1_FIRST + 3 ) { // first 3 general slots
if ( S lot > = SLOTXY_INV_ROW1_FIRST & & S lot < SLOTXY_INV_ROW1_FIRST + 3 ) { // first 3 general slots
s lot = SLOTXY_RING_LEFT ;
S lot = SLOTXY_RING_LEFT ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_LEFT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_LEFT ) ;
} else if ( s lot > = SLOTXY_INV_ROW1_FIRST + 3 & & s lot < SLOTXY_INV_ROW1_FIRST + 7 ) { // middle 4 general slots
} else if ( S lot > = SLOTXY_INV_ROW1_FIRST + 3 & & S lot < SLOTXY_INV_ROW1_FIRST + 7 ) { // middle 4 general slots
s lot = SLOTXY_CHEST_FIRST ;
S lot = SLOTXY_CHEST_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_CHEST ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_CHEST ) ;
} else if ( s lot > = SLOTXY_INV_ROW1_FIRST + 7 & & s lot < SLOTXY_INV_ROW1_LAST ) { // last 3 general slots
} else if ( S lot > = SLOTXY_INV_ROW1_FIRST + 7 & & S lot < SLOTXY_INV_ROW1_LAST ) { // last 3 general slots
s lot = SLOTXY_RING_RIGHT ;
S lot = SLOTXY_RING_RIGHT ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_RIGHT ) ;
} else if ( s lot = = SLOTXY_CHEST_FIRST | | s lot = = SLOTXY_HAND_LEFT_FIRST ) {
} else if ( S lot = = SLOTXY_CHEST_FIRST | | S lot = = SLOTXY_HAND_LEFT_FIRST ) {
s lot = SLOTXY_HEAD_FIRST ;
S lot = SLOTXY_HEAD_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HEAD ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HEAD ) ;
} else if ( s lot = = SLOTXY_RING_LEFT ) {
} else if ( S lot = = SLOTXY_RING_LEFT ) {
s lot = SLOTXY_HAND_LEFT_FIRST ;
S lot = SLOTXY_HAND_LEFT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_LEFT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_LEFT ) ;
} else if ( s lot = = SLOTXY_RING_RIGHT ) {
} else if ( S lot = = SLOTXY_RING_RIGHT ) {
s lot = SLOTXY_HAND_RIGHT_FIRST ;
S lot = SLOTXY_HAND_RIGHT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
} else if ( s lot = = SLOTXY_HAND_RIGHT_FIRST ) {
} else if ( S lot = = SLOTXY_HAND_RIGHT_FIRST ) {
s lot = SLOTXY_AMULET ;
S lot = SLOTXY_AMULET ;
mousePos = InvGetEquipSlotCoord ( INVLOC_AMULET ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_AMULET ) ;
} else if ( s lot > = SLOTXY_INV_ROW2_FIRST ) {
} else if ( S lot > = SLOTXY_INV_ROW2_FIRST ) {
s lot - = INV_ROW_SLOT_SIZE ;
S lot - = INV_ROW_SLOT_SIZE ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
}
}
}
}
} else if ( dir . y = = AxisDirectionY_DOWN ) {
} else if ( dir . y = = AxisDirectionY_DOWN ) {
if ( isHoldingItem ) {
if ( isHoldingItem ) {
if ( s lot = = SLOTXY_HEAD_FIRST | | s lot = = SLOTXY_CHEST_FIRST ) {
if ( S lot = = SLOTXY_HEAD_FIRST | | S lot = = SLOTXY_CHEST_FIRST ) {
s lot = SLOTXY_INV_ROW1_FIRST + 4 ;
S lot = SLOTXY_INV_ROW1_FIRST + 4 ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot = = SLOTXY_RING_LEFT | | s lot = = SLOTXY_HAND_LEFT_FIRST ) {
} else if ( S lot = = SLOTXY_RING_LEFT | | S lot = = SLOTXY_HAND_LEFT_FIRST ) {
s lot = SLOTXY_INV_ROW1_FIRST + 1 ;
S lot = SLOTXY_INV_ROW1_FIRST + 1 ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot = = SLOTXY_RING_RIGHT | | s lot = = SLOTXY_HAND_RIGHT_FIRST | | s lot = = SLOTXY_AMULET ) {
} else if ( S lot = = SLOTXY_RING_RIGHT | | S lot = = SLOTXY_HAND_RIGHT_FIRST | | S lot = = SLOTXY_AMULET ) {
s lot = SLOTXY_INV_ROW1_LAST - 1 ;
S lot = SLOTXY_INV_ROW1_LAST - 1 ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot < = ( SLOTXY_INV_ROW4_LAST - ( icursH28 * INV_ROW_SLOT_SIZE ) ) ) {
} else if ( S lot < = ( SLOTXY_INV_ROW4_LAST - ( icursH28 * INV_ROW_SLOT_SIZE ) ) ) {
s lot + = INV_ROW_SLOT_SIZE ;
S lot + = INV_ROW_SLOT_SIZE ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot < = SLOTXY_INV_LAST & & myPlayer . HoldItem . _itype = = ITYPE_MISC & & icursW28 = = 1 & & icursH28 = = 1 ) { // forcing only 1x1 misc items
} else if ( S lot < = SLOTXY_INV_LAST & & myPlayer . HoldItem . _itype = = ITYPE_MISC & & icursW28 = = 1 & & icursH28 = = 1 ) { // forcing only 1x1 misc items
s lot + = INV_ROW_SLOT_SIZE ;
S lot + = INV_ROW_SLOT_SIZE ;
if ( s lot > SLOTXY_BELT_LAST )
if ( S lot > SLOTXY_BELT_LAST )
s lot = SLOTXY_BELT_LAST ;
S lot = SLOTXY_BELT_LAST ;
mousePos = BeltGetSlotCoord ( s lot) ;
mousePos = BeltGetSlotCoord ( S lot) ;
}
}
} else {
} else {
if ( s lot = = SLOTXY_HEAD_FIRST ) {
if ( S lot = = SLOTXY_HEAD_FIRST ) {
s lot = SLOTXY_CHEST_FIRST ;
S lot = SLOTXY_CHEST_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_CHEST ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_CHEST ) ;
} else if ( s lot = = SLOTXY_CHEST_FIRST ) {
} else if ( S lot = = SLOTXY_CHEST_FIRST ) {
s lot = SLOTXY_INV_ROW1_FIRST + ( INV_ROW_SLOT_SIZE / 2 ) ;
S lot = SLOTXY_INV_ROW1_FIRST + ( INV_ROW_SLOT_SIZE / 2 ) ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot = = SLOTXY_HAND_LEFT_FIRST ) {
} else if ( S lot = = SLOTXY_HAND_LEFT_FIRST ) {
s lot = SLOTXY_RING_LEFT ;
S lot = SLOTXY_RING_LEFT ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_LEFT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_LEFT ) ;
} else if ( s lot = = SLOTXY_RING_LEFT ) {
} else if ( S lot = = SLOTXY_RING_LEFT ) {
s lot = SLOTXY_INV_ROW1_FIRST + 1 ;
S lot = SLOTXY_INV_ROW1_FIRST + 1 ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot = = SLOTXY_RING_RIGHT ) {
} else if ( S lot = = SLOTXY_RING_RIGHT ) {
s lot = SLOTXY_INV_ROW1_LAST - 1 ;
S lot = SLOTXY_INV_ROW1_LAST - 1 ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot = = SLOTXY_AMULET ) {
} else if ( S lot = = SLOTXY_AMULET ) {
s lot = SLOTXY_HAND_RIGHT_FIRST ;
S lot = SLOTXY_HAND_RIGHT_FIRST ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_HAND_RIGHT ) ;
} else if ( s lot = = SLOTXY_HAND_RIGHT_FIRST ) {
} else if ( S lot = = SLOTXY_HAND_RIGHT_FIRST ) {
s lot = SLOTXY_RING_RIGHT ;
S lot = SLOTXY_RING_RIGHT ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_RIGHT ) ;
mousePos = InvGetEquipSlotCoord ( INVLOC_RING_RIGHT ) ;
} else if ( s lot < = ( SLOTXY_INV_ROW4_LAST - ( itemSize . height * INV_ROW_SLOT_SIZE ) ) ) {
} else if ( S lot < = ( SLOTXY_INV_ROW4_LAST - ( itemSize . height * INV_ROW_SLOT_SIZE ) ) ) {
s lot + = itemSize . height * INV_ROW_SLOT_SIZE ;
S lot + = itemSize . height * INV_ROW_SLOT_SIZE ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
} else if ( s lot < = SLOTXY_INV_LAST ) {
} else if ( S lot < = SLOTXY_INV_LAST ) {
s lot + = itemSize . height * INV_ROW_SLOT_SIZE ;
S lot + = itemSize . height * INV_ROW_SLOT_SIZE ;
if ( s lot > SLOTXY_BELT_LAST )
if ( S lot > SLOTXY_BELT_LAST )
s lot = SLOTXY_BELT_LAST ;
S lot = SLOTXY_BELT_LAST ;
mousePos = BeltGetSlotCoord ( s lot) ;
mousePos = BeltGetSlotCoord ( S lot) ;
}
}
}
}
}
}
// no movement was made
// no movement was made
if ( s lot = = initialSlot )
if ( S lot = = initialSlot )
return ;
return ;
// get item under new slot if navigating on the inventory
// get item under new slot if navigating on the inventory
if ( ! isHoldingItem & & s lot > = SLOTXY_INV_FIRST & & s lot < = SLOTXY_INV_LAST ) {
if ( ! isHoldingItem & & S lot > = SLOTXY_INV_FIRST & & S lot < = SLOTXY_INV_LAST ) {
itemSize = GetItemSizeOnSlot ( s lot, itemInvId ) ;
itemSize = GetItemSizeOnSlot ( S lot, itemInvId ) ;
// search the 'first slot' for that item in the inventory, it should have the positive number of that same InvId
// search the 'first slot' for that item in the inventory, it should have the positive number of that same InvId
if ( itemInvId < 0 ) {
if ( itemInvId < 0 ) {
for ( int s = 0 ; s < SLOTXY_INV_LAST - SLOTXY_INV_FIRST ; + + s ) {
for ( int s = 0 ; s < SLOTXY_INV_LAST - SLOTXY_INV_FIRST ; + + s ) {
if ( myPlayer . InvGrid [ s ] = = - itemInvId ) {
if ( myPlayer . InvGrid [ s ] = = - itemInvId ) {
s lot = SLOTXY_INV_FIRST + s ;
S lot = SLOTXY_INV_FIRST + s ;
break ;
break ;
}
}
}
}
}
}
// offset the slot to always move to the top-left most slot of that item
// offset the slot to always move to the top-left most slot of that item
s lot - = ( ( itemSize . height - 1 ) * INV_ROW_SLOT_SIZE ) ;
S lot - = ( ( itemSize . height - 1 ) * INV_ROW_SLOT_SIZE ) ;
mousePos = InvGetSlotCoord ( s lot) ;
mousePos = InvGetSlotCoord ( S lot) ;
mousePos . x + = ( ( itemSize . width - 1 ) * InventorySlotSizeInPixels . width ) / 2 ;
mousePos . x + = ( ( itemSize . width - 1 ) * InventorySlotSizeInPixels . width ) / 2 ;
mousePos . y + = ( ( itemSize . height - 1 ) * InventorySlotSizeInPixels . height ) / 2 ;
mousePos . y + = ( ( itemSize . height - 1 ) * InventorySlotSizeInPixels . height ) / 2 ;
}
}
// move cursor to the center of the slot if not holding anything or top left is holding an object
// move cursor to the center of the slot if not holding anything or top left is holding an object
if ( isHoldingItem ) {
if ( isHoldingItem ) {
if ( s lot > = SLOTXY_INV_FIRST )
if ( S lot > = SLOTXY_INV_FIRST )
mousePos . y - = InventorySlotSizeInPixels . height ;
mousePos . y - = InventorySlotSizeInPixels . height ;
else
else
mousePos . y - = ( int ) ( ( icursH28 / 2.0 ) * InventorySlotSizeInPixels . height ) + ( InventorySlotSizeInPixels . height / 2 ) ;
mousePos . y - = ( int ) ( ( icursH28 / 2.0 ) * InventorySlotSizeInPixels . height ) + ( InventorySlotSizeInPixels . height / 2 ) ;
@ -1297,7 +1297,7 @@ void HandleRightStickMotion()
*/
*/
void FocusOnInventory ( )
void FocusOnInventory ( )
{
{
s lot = SLOTXY_INV_FIRST ;
S lot = SLOTXY_INV_FIRST ;
ResetInvCursorPosition ( ) ;
ResetInvCursorPosition ( ) ;
}
}