mirror of
https://github.com/badvision/lawless-legends.git
synced 2025-02-08 18:30:35 +00:00
Fix to not ask about loading unless an initial save game is present. Avoid double-locking the heap area.
This commit is contained in:
parent
cfc84188c6
commit
de0135b3c6
@ -258,10 +258,35 @@ def _loadGame()
|
||||
end
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
def _newOrLoadGame()
|
||||
def newGame()
|
||||
word playersModule, globalScriptsModule
|
||||
initHeap(0) // initially empty heap
|
||||
global = getGlobals()
|
||||
playersModule = mmgr(QUEUE_LOAD, MODULE_GEN_PLAYERS<<8 | RES_TYPE_MODULE)
|
||||
globalScriptsModule = mmgr(QUEUE_LOAD, MODULE_GEN_GLOBAL_SCRIPTS<<8 | RES_TYPE_MODULE)
|
||||
mmgr(FINISH_LOAD, LEAVE_OPEN)
|
||||
playersModule()=>makeInitialParty()
|
||||
globalScriptsModule()=>sc_newGame()
|
||||
end
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
def gameExists()
|
||||
open_filename = @game1_filename
|
||||
open_buffer = $5000
|
||||
if callMLI(MLI_OPEN, @open_params) > 0; return FALSE; fin
|
||||
close_fileref = open_fileref
|
||||
guaranteeMLI(MLI_CLOSE, @close_params)
|
||||
return TRUE
|
||||
end
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
def _newOrLoadGame()
|
||||
byte key
|
||||
|
||||
if !gameExists()
|
||||
newGame(); return 1
|
||||
fin
|
||||
|
||||
home()
|
||||
^$c053
|
||||
^$25 = 20
|
||||
@ -272,14 +297,7 @@ def _newOrLoadGame()
|
||||
^$c052
|
||||
if key > $60; key = key - $20; fin
|
||||
if key == 'N'
|
||||
initHeap(0) // initially empty heap
|
||||
global = getGlobals()
|
||||
playersModule = mmgr(QUEUE_LOAD, MODULE_GEN_PLAYERS<<8 | RES_TYPE_MODULE)
|
||||
globalScriptsModule = mmgr(QUEUE_LOAD, MODULE_GEN_GLOBAL_SCRIPTS<<8 | RES_TYPE_MODULE)
|
||||
mmgr(FINISH_LOAD, LEAVE_OPEN)
|
||||
playersModule()=>makeInitialParty()
|
||||
globalScriptsModule()=>sc_newGame()
|
||||
return 1
|
||||
newGame(); return 1
|
||||
elsif key == 'L' and loadInternal()
|
||||
return 0
|
||||
fin
|
||||
|
@ -72,6 +72,7 @@ word triggerTbl
|
||||
|
||||
word cmdTbl[96] // ASCII $00..$5F
|
||||
byte frameLoaded = 0
|
||||
byte heapLocked = FALSE
|
||||
|
||||
// Queue setMap / teleport, since otherwise script might be replaced while executing
|
||||
byte q_mapIs3D = 0
|
||||
@ -2062,9 +2063,13 @@ end
|
||||
def _initHeap(loadedSize)
|
||||
byte i
|
||||
|
||||
mmgr(SET_MEM_TARGET, HEAP_BOTTOM)
|
||||
mmgr(REQUEST_MEMORY, HEAP_SIZE)
|
||||
mmgr(LOCK_MEMORY, HEAP_BOTTOM)
|
||||
if !heapLocked
|
||||
mmgr(SET_MEM_TARGET, HEAP_BOTTOM)
|
||||
mmgr(REQUEST_MEMORY, HEAP_SIZE)
|
||||
mmgr(LOCK_MEMORY, HEAP_BOTTOM)
|
||||
heapLocked = TRUE
|
||||
fin
|
||||
|
||||
if loadedSize <> 0
|
||||
mmgr(SET_MEM_TARGET, HEAP_BOTTOM + loadedSize)
|
||||
fin
|
||||
|
Loading…
x
Reference in New Issue
Block a user