From 562a1bf2857137b3587b73ff2fb3549804d93028 Mon Sep 17 00:00:00 2001 From: Martin Haye Date: Wed, 22 Jan 2020 09:44:18 -0800 Subject: [PATCH] Finished the item-generation split refactor. --- .../src/org/badvision/A2PackPartitions.groovy | 1 + Platform/Apple/virtual/src/plasma/combat.pla | 14 ++++---- Platform/Apple/virtual/src/plasma/gamelib.plh | 1 - .../Apple/virtual/src/plasma/gameloop.pla | 8 +---- .../Apple/virtual/src/plasma/globalDefs.plh | 4 --- Platform/Apple/virtual/src/plasma/store.pla | 34 +++++++++---------- 6 files changed, 25 insertions(+), 37 deletions(-) diff --git a/Platform/Apple/tools/PackPartitions/src/org/badvision/A2PackPartitions.groovy b/Platform/Apple/tools/PackPartitions/src/org/badvision/A2PackPartitions.groovy index 0f84ccbc..a6498d8d 100644 --- a/Platform/Apple/tools/PackPartitions/src/org/badvision/A2PackPartitions.groovy +++ b/Platform/Apple/tools/PackPartitions/src/org/badvision/A2PackPartitions.groovy @@ -3217,6 +3217,7 @@ class A2PackPartitions def mapCode = row.@"map-code"; assert mapCode def groupSize = row.@"group-size"; assert groupSize def lootChance = row.@"loot-chance"; // optional, defaults to 10% + lootChance = "100"; println("FIXME: setting lootChance to 100") def lootCode = row.@"loot-code" // optional def goldLoot = row.@"gold-loot"; assert goldLoot def gangChance = row.@"gang-chance"; // optional diff --git a/Platform/Apple/virtual/src/plasma/combat.pla b/Platform/Apple/virtual/src/plasma/combat.pla index f829e1dd..70aff51d 100644 --- a/Platform/Apple/virtual/src/plasma/combat.pla +++ b/Platform/Apple/virtual/src/plasma/combat.pla @@ -1127,7 +1127,7 @@ end /////////////////////////////////////////////////////////////////////////////////////////////////// def collectLootAndXP()#2 - word group, enemy, gold, xp, pItemsModule, itemFunc, pItem + word group, enemy, gold, xp, pItemTblModule, itemNum, pItem byte lootedItem gold = 0 @@ -1142,15 +1142,15 @@ def collectLootAndXP()#2 if !lootedItem and enemy=>s_lootCode and enemy->b_lootChance if rollPercentileWithLuck(-(global=>p_players->b_luck)) < enemy->b_lootChance mmgr(START_LOAD, 1) // code is in partition 1 - pItemsModule = mmgr(QUEUE_LOAD, MOD_GEN_ITEMS<<8 | RES_TYPE_MODULE) + pItemTblModule = mmgr(QUEUE_LOAD, MOD_GEN_ITEM_TABLES<<8 | RES_TYPE_MODULE) mmgr(FINISH_LOAD, 0) - itemFunc = randomFromArray(pItemsModule()=>items_forLootCode(enemy=>s_lootCode), NULL) - pItem = itemFunc() + itemNum = randomFromArray(pItemTblModule()=>items_forLootCode(enemy=>s_lootCode), NULL) + pItem = createItem(itemNum) if pItem->t_type == TYPE_FANCY_ITEM pItem=>w_count = rollDiceWithLuck(pItem=>r_lootAmount, global=>p_players->b_luck) fin addItem(pItem) - mmgr(FREE_MEMORY, pItemsModule) + mmgr(FREE_MEMORY, pItemTblModule) lootedItem = TRUE fin fin @@ -1276,10 +1276,8 @@ def processWin()#0 clearWindow fin - // Make max space avail for item tables. Really oughta break them up sometime. + // Make max space avail for item tables. freePreloaded - freePortrait - needRender = FALSE // Grab the loot gold, xp = collectLootAndXP() diff --git a/Platform/Apple/virtual/src/plasma/gamelib.plh b/Platform/Apple/virtual/src/plasma/gamelib.plh index 896a6eed..341cda84 100644 --- a/Platform/Apple/virtual/src/plasma/gamelib.plh +++ b/Platform/Apple/virtual/src/plasma/gamelib.plh @@ -55,7 +55,6 @@ import gamelib predef first(p, sel)#1 predef forEach(p, do)#0 predef forSome(p, sel, do)#0 - predef freePortrait()#0 predef getCharResponse()#1 predef getCursor()#2 predef getDir()#1 diff --git a/Platform/Apple/virtual/src/plasma/gameloop.pla b/Platform/Apple/virtual/src/plasma/gameloop.pla index d3177b47..c364f250 100644 --- a/Platform/Apple/virtual/src/plasma/gameloop.pla +++ b/Platform/Apple/virtual/src/plasma/gameloop.pla @@ -2152,19 +2152,13 @@ end /////////////////////////////////////////////////////////////////////////////////////////////////// // Display a portrait drawing (typically called from scripts) -export def freePortrait()#0 +export def clearPortrait()#0 if curPortrait auxMmgr(FREE_MEMORY, curPortrait) curPortrait = NULL curPortraitNum = 0 needRender = TRUE fin -end - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Display a portrait drawing (typically called from scripts) -export def clearPortrait()#0 - freePortrait if curFullscreenImg auxMmgr(FREE_MEMORY, curFullscreenImg) curFullscreenImg = NULL diff --git a/Platform/Apple/virtual/src/plasma/globalDefs.plh b/Platform/Apple/virtual/src/plasma/globalDefs.plh index 3f562c02..ef78f681 100644 --- a/Platform/Apple/virtual/src/plasma/globalDefs.plh +++ b/Platform/Apple/virtual/src/plasma/globalDefs.plh @@ -92,7 +92,3 @@ const EMUSIG_2D_MAP = $C022 // e.g. wilderness const EMUSIG_3D_MAP = $C023 // e.g. in town const EMUSIG_AUTOMAP = $C024 // all color except the map title const EMUSIG_STORY = $C025 // all text except a portrait - -// FIXME FOO -const MOD_GEN_ITEMS = 99 // FIXME - diff --git a/Platform/Apple/virtual/src/plasma/store.pla b/Platform/Apple/virtual/src/plasma/store.pla index ba8f2bb8..5404e4ac 100644 --- a/Platform/Apple/virtual/src/plasma/store.pla +++ b/Platform/Apple/virtual/src/plasma/store.pla @@ -27,7 +27,7 @@ predef _buyFromStore(storeCode, profitPercent)#1 predef _sellToStore(profitPercent)#1 word[] funcTbl = @_buyFromStore, @_sellToStore -word pItemsModule, pItemutilModule +word pItemTblModule, pItemutilModule const MAX_PAGE_ITEMS = 20 // should be plenty word pageItems[MAX_PAGE_ITEMS] word pagePrices[MAX_PAGE_ITEMS] @@ -60,14 +60,14 @@ end /////////////////////////////////////////////////////////////////////////////////////////////////// def loadExtraModules()#0 mmgr(START_LOAD, 1) // code is in partition 1 - pItemsModule = mmgr(QUEUE_LOAD, MOD_GEN_ITEMS<<8 | RES_TYPE_MODULE) + pItemTblModule = mmgr(QUEUE_LOAD, MOD_GEN_ITEM_TABLES<<8 | RES_TYPE_MODULE) pItemutilModule = mmgr(QUEUE_LOAD, MOD_ITEMUTIL<<8 | RES_TYPE_MODULE) mmgr(FINISH_LOAD, 0) end /////////////////////////////////////////////////////////////////////////////////////////////////// def unloadExtraModules()#0 - mmgr(FREE_MEMORY, pItemsModule) + mmgr(FREE_MEMORY, pItemTblModule) mmgr(FREE_MEMORY, pItemutilModule) end @@ -76,7 +76,7 @@ def displayTitle(titleAction, columnAction, pageNum, nPages)#0 clearWindow() rawDisplayf2("^I %s %s ", pPlayer=>s_name, titleAction) if (nPages > 1) - rawDisplayf2("p.%d/%d ", pageNum+1, nPages) + rawDisplayf2("p. %d/%d ", pageNum+1, nPages) fin rightJustifyStr(sprintf1(" %d party gold ", global=>w_gold), BIGWIN_RIGHT - 15) rawDisplayf1("^N\n^V014^L%s^T046Price^T085Item^L", columnAction) @@ -114,27 +114,27 @@ end /////////////////////////////////////////////////////////////////////////////////////////////////// def displayBuyPage(pItemTbl, markupRatio, pageNum, nPages)#1 - byte itemNum - word pFunc, pItem + byte numOnPage + word pItemNum, pItem // Clear stuff from previous page heapCollect() displayTitle("buying", "Browse", pageNum, nPages) - pFunc = pItemTbl + ((pageNum*PAGE_SIZE) << 1) - for itemNum = 0 to PAGE_SIZE-1 - if !(*pFunc); break; fin - pItem = (*pFunc)() + pItemNum = pItemTbl + ((pageNum*PAGE_SIZE) << 1) + for numOnPage = 0 to PAGE_SIZE-1 + if !(*pItemNum); break; fin + pItem = createItem(*pItemNum) if pItem->t_type == TYPE_FANCY_ITEM pItem=>w_count = pItem=>w_storeAmount fin - pageItems[itemNum] = pItem - pagePrices[itemNum] = max(1, pItem=>w_price + addRatio(pItem=>w_price, markupRatio)) - displayItemLine(itemNum) - pFunc = pFunc + 2 + pageItems[numOnPage] = pItem + pagePrices[numOnPage] = max(1, pItem=>w_price + addRatio(pItem=>w_price, markupRatio)) + displayItemLine(numOnPage) + pItemNum = pItemNum + 2 next - displayPaging("Browse", itemNum, pageNum, nPages) - return itemNum + displayPaging("Browse", numOnPage, pageNum, nPages) + return numOnPage end /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -259,7 +259,7 @@ def _buyFromStore(storeCode, profitPercent)#1 byte nItemsOnPage, pageNum, nPages, redisplay storeSetup() - pItemTbl = pItemsModule()=>items_forStoreCode(storeCode) + pItemTbl = pItemTblModule()=>items_forStoreCode(storeCode) nPages = (countArray(pItemTbl) + PAGE_SIZE - 1) / PAGE_SIZE pageNum = 0