mirror of
https://github.com/badvision/lawless-legends.git
synced 2024-10-01 09:56:05 +00:00
Get size of map window to adjust number of items displayed
This commit is contained in:
parent
ad8d58f62e
commit
dfc5f974db
@ -21,9 +21,9 @@ import gamelib
|
|||||||
predef beep, showParty, mmgr, setWindow1, setWindow2, setWindow3, reboot, brk
|
predef beep, showParty, mmgr, setWindow1, setWindow2, setWindow3, reboot, brk
|
||||||
predef encodeDice, rollDice, setPlural, getStringResponse
|
predef encodeDice, rollDice, setPlural, getStringResponse
|
||||||
predef streqi, strncpy, fatal, pause, tossStrings, charToUpper
|
predef streqi, strncpy, fatal, pause, tossStrings, charToUpper
|
||||||
predef addEncounterZone, clearEncounterZones, showMapName, setMapWindow, makeModifier
|
predef addEncounterZone, clearEncounterZones, showMapName, setMapWindow, getMapWindow
|
||||||
predef addGold, countGold, payGold
|
predef addGold, countGold, payGold
|
||||||
predef calcPlayerArmor, diskActivity, rdkey, initHeap, scriptCombat
|
predef calcPlayerArmor, diskActivity, rdkey, initHeap, scriptCombat, makeModifier
|
||||||
predef giveItemToPlayer, takeItemFromPlayer, playerHasItem, getStat, setStat
|
predef giveItemToPlayer, takeItemFromPlayer, playerHasItem, getStat, setStat
|
||||||
predef setGameFlag, getGameFlag, setAvatar
|
predef setGameFlag, getGameFlag, setAvatar
|
||||||
|
|
||||||
|
@ -1139,7 +1139,15 @@ export def setMapWindow()
|
|||||||
setWindow(24, 169, 14, 140) // Top, Bottom, Left, Right
|
setWindow(24, 169, 14, 140) // Top, Bottom, Left, Right
|
||||||
fin
|
fin
|
||||||
end
|
end
|
||||||
|
export def getMapWindow(width, height)
|
||||||
|
if frameLoaded == 3 // don't check mapIs3D, since we might be in an engine
|
||||||
|
*width = 140-14
|
||||||
|
*height = 153-24
|
||||||
|
else
|
||||||
|
*width = 140-14
|
||||||
|
*height = 169-24
|
||||||
|
fin
|
||||||
|
end
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
export def rightJustifyStr(str, rightX)
|
export def rightJustifyStr(str, rightX)
|
||||||
word x
|
word x
|
||||||
|
@ -22,9 +22,10 @@ include "globalDefs.plh"
|
|||||||
include "party.plh"
|
include "party.plh"
|
||||||
|
|
||||||
// Number of items that fit in inventory pane
|
// Number of items that fit in inventory pane
|
||||||
const INV_PAGE_NUM = 13
|
const INV_PAGE_NUM = 11
|
||||||
|
|
||||||
const CHAR_WND_STAT_X = 20
|
const CHAR_WND_STAT_X = 20
|
||||||
|
const CHAR_WND_INV_X = 16
|
||||||
|
|
||||||
// This pointer is the root of all heap-tracked (and garbage collected) objects.
|
// This pointer is the root of all heap-tracked (and garbage collected) objects.
|
||||||
// See playtype.plh for definitions of all the datastructures and how they interconnect.
|
// See playtype.plh for definitions of all the datastructures and how they interconnect.
|
||||||
@ -35,6 +36,7 @@ word global
|
|||||||
predef _party_doPlayerSheet
|
predef _party_doPlayerSheet
|
||||||
word[] funcTbl = @_party_doPlayerSheet
|
word[] funcTbl = @_party_doPlayerSheet
|
||||||
byte[] strWhichItem = "\n^YWhich item?^Y"
|
byte[] strWhichItem = "\n^YWhich item?^Y"
|
||||||
|
byte[] strYouSure = "\n^YAre you sure (Y/N)?^Y"
|
||||||
|
|
||||||
// Other global variables here
|
// Other global variables here
|
||||||
|
|
||||||
@ -70,28 +72,30 @@ def unequip(player, type, kind)
|
|||||||
end
|
end
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Display inventory pane
|
// Display inventory pane
|
||||||
def showInventory(player, page, select)
|
def showInventory(player, page, height, select)
|
||||||
word item
|
word item
|
||||||
byte n_item, n_page
|
byte n_item, n_page
|
||||||
|
|
||||||
setMapWindow()
|
setMapWindow()
|
||||||
clearWindow()
|
clearWindow()
|
||||||
rawDisplayStr("^Y^LInventory^L^N")
|
rawDisplayStr("^Y^LInventory^L^N")
|
||||||
displayf1("\nGroup Gold: %d", countGold())
|
rawDisplayStr("\n^T018")
|
||||||
|
displayf1("Group Gold: %d", countGold())
|
||||||
item = player=>p_items
|
item = player=>p_items
|
||||||
n_item = 0
|
n_item = 0
|
||||||
n_page = page * INV_PAGE_NUM
|
n_page = page * height
|
||||||
if page
|
if page
|
||||||
while item and n_item < n_page
|
while item and n_item < n_page
|
||||||
item = item=>p_nextObj
|
item = item=>p_nextObj
|
||||||
n_item++
|
n_item++
|
||||||
loop
|
loop
|
||||||
fin
|
fin
|
||||||
while item and n_item < (n_page + INV_PAGE_NUM)
|
while item and n_item < (n_page + height)
|
||||||
if select
|
if select
|
||||||
displayf2("\n%c) %s", 'A' + n_item, item=>s_name)
|
displayf2("\n%c) %s", 'A' + n_item, item=>s_name)
|
||||||
else
|
else
|
||||||
displayf1("\n%s", item=>s_name)
|
rawDisplayStr("\n^T018")
|
||||||
|
displayf1("%s", item=>s_name)
|
||||||
fin
|
fin
|
||||||
//if item=>s_itemKind
|
//if item=>s_itemKind
|
||||||
// displayf1(" (%s)", item=>s_itemKind)
|
// displayf1(" (%s)", item=>s_itemKind)
|
||||||
@ -111,7 +115,7 @@ def showInventory(player, page, select)
|
|||||||
item = item=>p_nextObj
|
item = item=>p_nextObj
|
||||||
n_item++
|
n_item++
|
||||||
loop
|
loop
|
||||||
while n_item < (n_page + INV_PAGE_NUM)
|
while n_item < (n_page + height)
|
||||||
displayChar('\n')
|
displayChar('\n')
|
||||||
n_item++
|
n_item++
|
||||||
loop
|
loop
|
||||||
@ -130,9 +134,9 @@ def displaySkill(str, val, col)
|
|||||||
displayf2("%d %s", val, @mystr)
|
displayf2("%d %s", val, @mystr)
|
||||||
end
|
end
|
||||||
// Show player data
|
// Show player data
|
||||||
def showPlayerSheet(num)
|
def showPlayerSheet(num, mapHeight)
|
||||||
word player, skill
|
word player, skill
|
||||||
byte col
|
byte col, n_item
|
||||||
|
|
||||||
// Count the number of players
|
// Count the number of players
|
||||||
player = global=>p_players
|
player = global=>p_players
|
||||||
@ -174,7 +178,7 @@ def showPlayerSheet(num)
|
|||||||
col++
|
col++
|
||||||
loop
|
loop
|
||||||
// Next, show inventory in the main panel
|
// Next, show inventory in the main panel
|
||||||
showInventory(player, 0, FALSE)
|
showInventory(player, 0, mapHeight, FALSE)
|
||||||
rawDisplayStr("\n^YE)quip, U)se, D)rop^Y")
|
rawDisplayStr("\n^YE)quip, U)se, D)rop^Y")
|
||||||
return player
|
return player
|
||||||
end
|
end
|
||||||
@ -182,11 +186,16 @@ end
|
|||||||
// Show player sheet and accept command
|
// Show player sheet and accept command
|
||||||
def _party_doPlayerSheet(num)
|
def _party_doPlayerSheet(num)
|
||||||
word player, item
|
word player, item
|
||||||
byte n_item, n_page
|
word hInv, vInv
|
||||||
|
byte n_item, n_page, i
|
||||||
|
|
||||||
|
|
||||||
|
// Get size of inventory pane in chars
|
||||||
|
getMapWindow(@hInv, @vInv)
|
||||||
|
vInv = vInv / 11
|
||||||
n_page = 0
|
n_page = 0
|
||||||
repeat
|
repeat
|
||||||
player = showPlayerSheet(num)
|
player = showPlayerSheet(num, vInv)
|
||||||
if !player; return; fin // Invalid player
|
if !player; return; fin // Invalid player
|
||||||
// Get a key, do something
|
// Get a key, do something
|
||||||
when getUpperKey()
|
when getUpperKey()
|
||||||
@ -196,7 +205,7 @@ def _party_doPlayerSheet(num)
|
|||||||
is '3'; num = 2; n_page = 0; break
|
is '3'; num = 2; n_page = 0; break
|
||||||
// Equip player with weapon/armor
|
// Equip player with weapon/armor
|
||||||
is 'E'
|
is 'E'
|
||||||
showInventory(player, n_page, TRUE)
|
showInventory(player, n_page, vInv, TRUE)
|
||||||
rawDisplayStr(@strWhichItem)
|
rawDisplayStr(@strWhichItem)
|
||||||
item = itemNum(player, getUpperKey() - 'A')
|
item = itemNum(player, getUpperKey() - 'A')
|
||||||
if item
|
if item
|
||||||
@ -209,7 +218,7 @@ def _party_doPlayerSheet(num)
|
|||||||
break
|
break
|
||||||
// Use an item
|
// Use an item
|
||||||
is 'U'
|
is 'U'
|
||||||
showInventory(player, n_page, TRUE)
|
showInventory(player, n_page, vInv, TRUE)
|
||||||
rawDisplayStr(@strWhichItem)
|
rawDisplayStr(@strWhichItem)
|
||||||
item = itemNum(player, getUpperKey() - 'A')
|
item = itemNum(player, getUpperKey() - 'A')
|
||||||
if item
|
if item
|
||||||
@ -228,13 +237,27 @@ def _party_doPlayerSheet(num)
|
|||||||
break
|
break
|
||||||
// Drop an item
|
// Drop an item
|
||||||
is 'D'
|
is 'D'
|
||||||
showInventory(player, n_page, TRUE)
|
showInventory(player, n_page, vInv, TRUE)
|
||||||
rawDisplayStr(@strWhichItem)
|
rawDisplayStr(@strWhichItem)
|
||||||
item = itemNum(player, getUpperKey() - 'A')
|
n_item = getUpperKey() - 'A'
|
||||||
|
item = itemNum(player, n_item)
|
||||||
if item
|
if item
|
||||||
|
clearWindow()
|
||||||
|
rawDisplayStr("^Y^LDrop^L^Y")
|
||||||
|
for i = 0 to n_item
|
||||||
|
rawDisplayStr("\n")
|
||||||
|
next
|
||||||
|
rawDisplayStr("\n^T018")
|
||||||
|
displayf1("%s", item=>s_name)
|
||||||
|
for i = n_item + 2 to vInv
|
||||||
|
rawDisplayStr("\n")
|
||||||
|
next
|
||||||
|
rawDisplayStr(@strYouSure)
|
||||||
|
if getYN()
|
||||||
removeFromList(@player=>p_items, item)
|
removeFromList(@player=>p_items, item)
|
||||||
calcPlayerArmor(player)
|
calcPlayerArmor(player)
|
||||||
fin
|
fin
|
||||||
|
fin
|
||||||
break
|
break
|
||||||
// Next inventory page
|
// Next inventory page
|
||||||
is '>'
|
is '>'
|
||||||
|
Loading…
Reference in New Issue
Block a user