mirror of
https://github.com/badvision/lawless-legends.git
synced 2024-11-16 10:04:42 +00:00
Progress on story mode.
This commit is contained in:
parent
63f40d60b5
commit
0139adca30
@ -2387,6 +2387,7 @@ class A2PackPartitions
|
|||||||
compileModule("automap", "src/plasma/")
|
compileModule("automap", "src/plasma/")
|
||||||
//compileModule("sndseq", "src/plasma/") // not yet
|
//compileModule("sndseq", "src/plasma/") // not yet
|
||||||
compileModule("questlog", "src/plasma/")
|
compileModule("questlog", "src/plasma/")
|
||||||
|
compileModule("story", "src/plasma/")
|
||||||
lastSysModule = modules.size() // used only for reporting
|
lastSysModule = modules.size() // used only for reporting
|
||||||
compileModule("gen_enemies", "src/plasma/")
|
compileModule("gen_enemies", "src/plasma/")
|
||||||
compileModule("gen_enemies0", "src/plasma/")
|
compileModule("gen_enemies0", "src/plasma/")
|
||||||
|
@ -56,6 +56,7 @@ include "intimate.plh"
|
|||||||
include "godmode.plh"
|
include "godmode.plh"
|
||||||
include "automap.plh"
|
include "automap.plh"
|
||||||
include "questlog.plh"
|
include "questlog.plh"
|
||||||
|
include "story.plh"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Data structures
|
// Data structures
|
||||||
@ -155,6 +156,7 @@ word animPauseCt
|
|||||||
byte showingLamp = TRUE
|
byte showingLamp = TRUE
|
||||||
byte lampFrame = 0
|
byte lampFrame = 0
|
||||||
word lampDir = 1
|
word lampDir = 1
|
||||||
|
byte storyMode = FALSE
|
||||||
|
|
||||||
// Time and clock
|
// Time and clock
|
||||||
byte prevClockColor, prevClockHour, prevClockMinute
|
byte prevClockColor, prevClockHour, prevClockMinute
|
||||||
@ -1810,6 +1812,8 @@ end
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
def resetAnimPause()#0
|
def resetAnimPause()#0
|
||||||
|
anyAnims = TRUE // for now; might get cleared if we discover otherwise on advance
|
||||||
|
animDirCt = 1
|
||||||
animPauseCt = ANIM_PAUSE_MAX
|
animPauseCt = ANIM_PAUSE_MAX
|
||||||
showingLamp = mapIs3D and (skyNum == 0 or skyNum == 8)
|
showingLamp = mapIs3D and (skyNum == 0 or skyNum == 8)
|
||||||
lampFrame = 0
|
lampFrame = 0
|
||||||
@ -1837,8 +1841,6 @@ export def loadFrameImg(img)#0
|
|||||||
curFullscreenImg = auxMmgr(QUEUE_LOAD, img<<8 | RES_TYPE_SCREEN)
|
curFullscreenImg = auxMmgr(QUEUE_LOAD, img<<8 | RES_TYPE_SCREEN)
|
||||||
auxMmgr(FINISH_LOAD, 0)
|
auxMmgr(FINISH_LOAD, 0)
|
||||||
|
|
||||||
anyAnims = TRUE // for now; might get cleared if we discover otherwise on advance
|
|
||||||
animDirCt = 1
|
|
||||||
resetAnimPause()
|
resetAnimPause()
|
||||||
|
|
||||||
// And show the first frame of the screen image
|
// And show the first frame of the screen image
|
||||||
@ -2281,8 +2283,6 @@ def initMap(x, y, dir)#0
|
|||||||
fin
|
fin
|
||||||
|
|
||||||
// Assume there might be animations until we learn otherwise
|
// Assume there might be animations until we learn otherwise
|
||||||
anyAnims = TRUE // for now; might get cleared if we discover otherwise on advance
|
|
||||||
animDirCt = 1
|
|
||||||
resetAnimPause
|
resetAnimPause
|
||||||
|
|
||||||
// Populate script handlers for the current square, so that leave handlers will trigger right.
|
// Populate script handlers for the current square, so that leave handlers will trigger right.
|
||||||
@ -2769,12 +2769,16 @@ end
|
|||||||
def showAnimFrame()#0
|
def showAnimFrame()#0
|
||||||
byte top
|
byte top
|
||||||
if curPortrait
|
if curPortrait
|
||||||
// Blit portrait to the appropriate area on the screen
|
if storyMode
|
||||||
top = 32 // start at 4th text line in 2D
|
blit(1, curPortrait + 2, getScreenLine(0)+20, 128, 18)
|
||||||
if frameLoaded == 3 // 3D-mode frame? Note: don't check mapIs3D, because we might be in an engine
|
else
|
||||||
top = 24 // start at 4th text line in 3D
|
// Blit portrait to the appropriate area on the screen
|
||||||
|
top = 32 // start at 4th text line in 2D
|
||||||
|
if frameLoaded == 3 // 3D-mode frame? Note: don't check mapIs3D, because we might be in an engine
|
||||||
|
top = 24 // start at 4th text line in 3D
|
||||||
|
fin
|
||||||
|
blit(1, curPortrait + 2, getScreenLine(top)+2, 128, 18)
|
||||||
fin
|
fin
|
||||||
blit(1, curPortrait + 2, getScreenLine(top)+2, 128, 18)
|
|
||||||
needRender = FALSE // suppress display of map for this frame
|
needRender = FALSE // suppress display of map for this frame
|
||||||
if showingLamp; nextLampFrame(); fin
|
if showingLamp; nextLampFrame(); fin
|
||||||
elsif curFullscreenImg
|
elsif curFullscreenImg
|
||||||
@ -2843,8 +2847,6 @@ export def setPortrait(portraitNum)#0
|
|||||||
curPortrait = auxMmgr(QUEUE_LOAD, portraitNum<<8 | RES_TYPE_PORTRAIT)
|
curPortrait = auxMmgr(QUEUE_LOAD, portraitNum<<8 | RES_TYPE_PORTRAIT)
|
||||||
curPortraitNum = portraitNum
|
curPortraitNum = portraitNum
|
||||||
mmgr(FINISH_LOAD, 0)
|
mmgr(FINISH_LOAD, 0)
|
||||||
anyAnims = TRUE // for now; might get cleared if we discover otherwise on advance
|
|
||||||
animDirCt = 1
|
|
||||||
resetAnimPause
|
resetAnimPause
|
||||||
|
|
||||||
// And show the first frame
|
// And show the first frame
|
||||||
@ -3653,12 +3655,27 @@ end
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
export def setStoryMode(enable)#0
|
export def setStoryMode(enable)#0
|
||||||
// TODO
|
// Story mode only exists on 800K or hard drive builds
|
||||||
|
if !isFloppyVer
|
||||||
|
storyMode = enable
|
||||||
|
if enable
|
||||||
|
loadEngine(MOD_STORY)
|
||||||
|
curEngine()=>story_mode(TRUE, preEnginePortraitNum)
|
||||||
|
needRender = FALSE
|
||||||
|
frameLoaded = 0 // since we just destroyed it
|
||||||
|
textDrawn = FALSE
|
||||||
|
textClearCountdown = 0
|
||||||
|
else
|
||||||
|
curEngine()=>story_mode(FALSE, 0)
|
||||||
|
preEnginePortraitNum = 0 // so we don't restore it
|
||||||
|
returnFromEngine(TRUE)
|
||||||
|
fin
|
||||||
|
fin
|
||||||
end
|
end
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
export def displayStory(num)#0
|
export def displayStory(storyNum)#0
|
||||||
// TODO
|
curEngine()=>story_display(storyNum)
|
||||||
end
|
end
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -3718,6 +3735,7 @@ end
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Main code.
|
// Main code.
|
||||||
//
|
//
|
||||||
|
isFloppyVer = FALSE // FIXME
|
||||||
scriptDisplayStr(@_scriptDisplayStr) // 1-time init
|
scriptDisplayStr(@_scriptDisplayStr) // 1-time init
|
||||||
startGame(TRUE, TRUE) // first time init; ask whether new or load
|
startGame(TRUE, TRUE) // first time init; ask whether new or load
|
||||||
kbdLoop()
|
kbdLoop()
|
||||||
|
61
Platform/Apple/virtual/src/plasma/story.pla
Normal file
61
Platform/Apple/virtual/src/plasma/story.pla
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (C) 2019 The 8-Bit Bunch. Licensed under the Apache License, Version 1.1
|
||||||
|
// (the "License"); you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-1.1>.
|
||||||
|
// Unless required by applicable law or agreed to in writing, software distributed under
|
||||||
|
// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||||
|
// ANY KIND, either express or implied. See the License for the specific language
|
||||||
|
// governing permissions and limitations under the License.
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
include "gamelib.plh"
|
||||||
|
include "globalDefs.plh"
|
||||||
|
include "playtype.plh"
|
||||||
|
|
||||||
|
// Exported functions go here. First a predef for each one, then a table with function pointers
|
||||||
|
// in the same order as the constants are defined in the the header.
|
||||||
|
predef _story_mode(enable, portraitNum)#1, _story_display(storyNum)#1
|
||||||
|
word[] funcTbl = @_story_mode, @_story_display
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
def setBlock1()#0
|
||||||
|
setWindow(0, 192, 7, 133)
|
||||||
|
end
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
def setBlock2()#0
|
||||||
|
setWindow(135, 192, 140, 266)
|
||||||
|
end
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Set up (or clear) story mode
|
||||||
|
def _story_mode(enable, portraitNum)#1
|
||||||
|
if enable
|
||||||
|
setWindow(0, 192, 0, 280)
|
||||||
|
clearWindow
|
||||||
|
setPortrait(portraitNum)
|
||||||
|
setBlock1
|
||||||
|
else
|
||||||
|
// nothing yet
|
||||||
|
fin
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Display string on a blank screen, with blanking follow-up
|
||||||
|
def _story_display(storyNum)#1
|
||||||
|
displayStr("\n\nHe heh hee lorem ipsum Blah blah blah. Also blah blah blah blah and blah.")
|
||||||
|
displayStr(" Blah blah blah. Blah blah blah blah and blah. Blah blah.")
|
||||||
|
displayStr("\n\nHe heh hee lorem ipsum Blah blah blah. Also blah blah blah blah and blah.")
|
||||||
|
displayStr(" Blah blah blah. Blah blah blah blah and blah. Blah blah.")
|
||||||
|
setBlock2
|
||||||
|
displayStr("More story goes here. Blah blah blah. Also blah blah blah blah and blah.")
|
||||||
|
displayStr(" Blah blah blah. Blah blah blah blah and blah. Blah blah, blah blabh.")
|
||||||
|
getUpperKey
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Boilerplate module initialization code
|
||||||
|
return @funcTbl
|
||||||
|
done
|
13
Platform/Apple/virtual/src/plasma/story.plh
Normal file
13
Platform/Apple/virtual/src/plasma/story.plh
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (C) 2019 The 8-Bit Bunch. Licensed under the Apache License, Version 1.1
|
||||||
|
// (the "License"); you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-1.1>.
|
||||||
|
// Unless required by applicable law or agreed to in writing, software distributed under
|
||||||
|
// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||||
|
// ANY KIND, either express or implied. See the License for the specific language
|
||||||
|
// governing permissions and limitations under the License.
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Each module-exported function needs its own constant, 0..n
|
||||||
|
const story_mode = 0
|
||||||
|
const story_display = 2
|
Loading…
Reference in New Issue
Block a user