Problem with shooting gallery scene.
This commit is contained in:
parent
2a3d70d31d
commit
f127b96aa6
1 changed files with 91 additions and 76 deletions
|
@ -29,7 +29,7 @@ END_FRAME = -1 -- If not -1, play video until this frame is reached
|
|||
DELAY = 0 -- How long to sit before next state, in roughly half seconds
|
||||
|
||||
-- Game Engine States
|
||||
STATE_NONE = -1
|
||||
STATE_NONE = 0 -- Lua tables start at 1, so this is an invalid state
|
||||
STATE_GET_NAME = 1
|
||||
STATE_GOT_NAME = 2
|
||||
STATE_BOMB_PLANTED = 3
|
||||
|
@ -50,7 +50,7 @@ STATE_PLAY_AGAIN = 17
|
|||
STATE_BREAK_BOX = 18
|
||||
STATE_WON_BEAR = 19
|
||||
STATE_CHOOSE_PRIZE = 20
|
||||
STATE_WIN_GAME = 21
|
||||
STATE_WON_GAME = 21
|
||||
STATE_EXIT_GAME = 22
|
||||
STATE_PUT_WHERE = 23
|
||||
|
||||
|
@ -146,7 +146,7 @@ ROOMS = {
|
|||
EXITS = "Q@@@",
|
||||
NAME = "THE OBSERVATION TOWER",
|
||||
DESCRIPTION = "BELOW, YOU CAN SEE THE WHOLE CARNIVAL. THE TOP OF THE ROLLER COASTER IS IN SIGHT.",
|
||||
VIDEO = "FR8300SE/FR8488PL/"
|
||||
VIDEO = "FR8300SE/FR8458PL/"
|
||||
}, {
|
||||
-- M 13
|
||||
EXITS = "I@G@",
|
||||
|
@ -186,57 +186,7 @@ ROOMS = {
|
|||
}
|
||||
}
|
||||
|
||||
OBJECTS = {
|
||||
{
|
||||
NAME = "COINS",
|
||||
DESCRIPTION = "TWO DIMES AND A NICKEL",
|
||||
LOCATION = 4
|
||||
}, {
|
||||
NAME = "TOOLKIT",
|
||||
DESCRIPTION = "IT CONTAINS EVERYTHING NEEDED FOR SMALL ELECTRONIC REPAIRS",
|
||||
LOCATION = 7
|
||||
}, {
|
||||
NAME = "TICKET",
|
||||
DESCRIPTION = "IT SAYS, 'GOOD FOR 1 FREE GAME AT THE BALL TOSS, COURTESY OF CREATIVE COMPUTING, THE #1 MAGAZINE OF SOFTWARE AND APPLICATIONS.'",
|
||||
LOCATION = 14
|
||||
}, {
|
||||
NAME = "BOOK",
|
||||
DESCRIPTION = "THE TITLE IS 'RADIO FREQUENCY JAMMING TECHNIQUES.'",
|
||||
LOCATION = 15
|
||||
}, {
|
||||
NAME = "LAMP",
|
||||
DESCRIPTION = "IT IS VERY GAUDY.",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "TOWELS",
|
||||
DESCRIPTION = "NICE AND FLUFFY.",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "POSTER",
|
||||
DESCRIPTION = "WHOOPIE -- IT'S THE DALLAS CHEERLEADERS.",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "BEAR",
|
||||
DESCRIPTION = "WHEN YOU PUSH THE BUTTON ON ITS BACK, IT SAYS 'I WUV YOU.'",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "UNIFORM",
|
||||
DESCRIPTION = "",
|
||||
LOCATION = 10
|
||||
}, {
|
||||
NAME = "RADIO",
|
||||
DESCRIPTION = "",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "BATTERIES",
|
||||
DESCRIPTION = "",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "JAMMER",
|
||||
DESCRIPTION = "",
|
||||
LOCATION = -1
|
||||
}
|
||||
}
|
||||
OBJECTS = {} -- Initialized in resetGameData
|
||||
|
||||
FURNITURE = {
|
||||
{
|
||||
|
@ -318,7 +268,6 @@ function onOverlayUpdate()
|
|||
colorBackground(0, 0, 0, 255) -- The 255 makes this black opaque to hide the blue disc stopped screen.
|
||||
overlayClear()
|
||||
colorBackground(0, 0, 0, 0) -- Then we set it back to transparent for future rendering.
|
||||
|
||||
x = (overlayGetWidth() - spriteGetWidth(SHOW_JPG)) * 0.5
|
||||
y = (overlayGetHeight() - spriteGetHeight(SHOW_JPG)) * 0.5
|
||||
if x < 0 then x = 0 end
|
||||
|
@ -330,7 +279,9 @@ function onOverlayUpdate()
|
|||
end
|
||||
|
||||
if END_FRAME ~= -1 then
|
||||
--debugPrint("Frame " .. discGetFrame() .. " Waiting " .. END_FRAME)
|
||||
if (discGetFrame() >= END_FRAME) then
|
||||
debugPrint("Playback end. Switching to state " .. NEXT_STATE)
|
||||
discSearch(END_FRAME)
|
||||
END_FRAME = -1
|
||||
STATE = NEXT_STATE
|
||||
|
@ -453,6 +404,8 @@ function pioneer(newstate, command)
|
|||
NEXT_STATE = newstate
|
||||
end
|
||||
|
||||
debugPrint("Laserdisc " .. command .. " NEXT_STATE " .. NEXT_STATE .. " STATE " .. STATE)
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
@ -466,6 +419,7 @@ function processGameState(what)
|
|||
local func = STATES[STATE]
|
||||
|
||||
if (func) then
|
||||
debugPrint("Firing state " .. STATE .. " with [" .. what .. "]")
|
||||
func(what)
|
||||
end
|
||||
|
||||
|
@ -476,7 +430,7 @@ function processInput()
|
|||
|
||||
-- Send input to processGameState and display on screen.
|
||||
if INPUT ~= "" then
|
||||
screenPrint(INPUT)
|
||||
screenPrint(">" .. INPUT)
|
||||
if NEXT_STATE ~= STATE_NONE then
|
||||
STATE = NEXT_STATE
|
||||
NEXT_STATE = STATE_NONE
|
||||
|
@ -497,6 +451,58 @@ function resetGameData()
|
|||
T = 0 -- Time
|
||||
BK = 0 -- Has read book
|
||||
B = 0 -- Batteries in jammer
|
||||
|
||||
OBJECTS = {
|
||||
{
|
||||
NAME = "COINS",
|
||||
DESCRIPTION = "TWO DIMES AND A NICKEL",
|
||||
LOCATION = 4
|
||||
}, {
|
||||
NAME = "TOOLKIT",
|
||||
DESCRIPTION = "IT CONTAINS EVERYTHING NEEDED FOR SMALL ELECTRONIC REPAIRS",
|
||||
LOCATION = 7
|
||||
}, {
|
||||
NAME = "TICKET",
|
||||
DESCRIPTION = "IT SAYS, 'GOOD FOR 1 FREE GAME AT THE BALL TOSS, COURTESY OF CREATIVE COMPUTING, THE #1 MAGAZINE OF SOFTWARE AND APPLICATIONS.'",
|
||||
LOCATION = 14
|
||||
}, {
|
||||
NAME = "BOOK",
|
||||
DESCRIPTION = "THE TITLE IS 'RADIO FREQUENCY JAMMING TECHNIQUES.'",
|
||||
LOCATION = 15
|
||||
}, {
|
||||
NAME = "LAMP",
|
||||
DESCRIPTION = "IT IS VERY GAUDY.",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "TOWELS",
|
||||
DESCRIPTION = "NICE AND FLUFFY.",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "POSTER",
|
||||
DESCRIPTION = "WHOOPIE -- IT'S THE DALLAS CHEERLEADERS.",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "BEAR",
|
||||
DESCRIPTION = "WHEN YOU PUSH THE BUTTON ON ITS BACK, IT SAYS 'I WUV YOU.'",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "UNIFORM",
|
||||
DESCRIPTION = "",
|
||||
LOCATION = 10
|
||||
}, {
|
||||
NAME = "RADIO",
|
||||
DESCRIPTION = "",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "BATTERIES",
|
||||
DESCRIPTION = "",
|
||||
LOCATION = -1
|
||||
}, {
|
||||
NAME = "JAMMER",
|
||||
DESCRIPTION = "",
|
||||
LOCATION = -1
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
|
@ -672,7 +678,7 @@ STATES = {
|
|||
end
|
||||
-- Exits
|
||||
for i = 1,4,1 do
|
||||
if ROOMS[L].EXITS:sub(i, 1) ~= "@" then
|
||||
if ROOMS[L].EXITS:sub(i, i) ~= "@" then
|
||||
exits = exits .. DIRECTIONS[i] .. " "
|
||||
end
|
||||
end
|
||||
|
@ -815,6 +821,8 @@ STATES = {
|
|||
|
||||
V, N = getVerbNoun(what)
|
||||
|
||||
debugPrint("Parser [" .. V .. "][" .. N .. "]")
|
||||
|
||||
STATE = STATE_NONE
|
||||
|
||||
-- And now the fun!
|
||||
|
@ -852,10 +860,9 @@ STATES = {
|
|||
|
||||
if (V == "EXAMINE" or V == "LOOK") and N ~= "" then
|
||||
KW = 1
|
||||
-- 27000
|
||||
t = 0
|
||||
for i = 1,NO,1 do
|
||||
if (OBJECTS[i].LOCATION == 0 or OBJECTS[i].LOCATION = L) and N == OBJECTS[i].NAME then
|
||||
if (OBJECTS[i].LOCATION == 0 or OBJECTS[i].LOCATION == L) and N == OBJECTS[i].NAME then
|
||||
if OBJECTS[i].DESCRIPTION == "" then
|
||||
screenPrint("I SEE NOTHING IMPORTANT.")
|
||||
else
|
||||
|
@ -865,7 +872,7 @@ STATES = {
|
|||
end
|
||||
end
|
||||
for i = 1,NF,1 do
|
||||
if (FURNITURE[i].LOCATION == 0 or FURNITURE[i].LOCATION = L) and N == FURNITURE[i].NAME then
|
||||
if (FURNITURE[i].LOCATION == 0 or FURNITURE[i].LOCATION == L) and N == FURNITURE[i].NAME then
|
||||
if FURNITURE[i].DESCRIPTION == "" then
|
||||
screenPrint("NOTHING EXTRAORDINARY HERE.")
|
||||
else
|
||||
|
@ -890,7 +897,8 @@ STATES = {
|
|||
|
||||
if V == "GO" then
|
||||
KW = 1
|
||||
processGameState(STATE_PARSER, N)
|
||||
STATE = STATE_PARSER
|
||||
processGameState(N)
|
||||
end
|
||||
|
||||
if (what == "GIVE COINS" or what == "PLAY" or what == "SHOOT") and L == 6 then
|
||||
|
@ -903,6 +911,7 @@ STATES = {
|
|||
screenPrint("UP THE GUN.")
|
||||
OBJECTS[1].LOCATION = -1
|
||||
pioneer(STATE_WON_BEAR, "FR10960SE/FR11107PL/")
|
||||
debugPrint("Asked for state " .. STATE_WON_BEAR)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -955,7 +964,7 @@ STATES = {
|
|||
if B == 0 then
|
||||
screenPrint("IT DOESN'T WORK, MAYBE IT NEEDS BATTERIES?")
|
||||
else
|
||||
pioneer(STATE_WIN_GAME, "FR12169SE/FR12227PL/")
|
||||
pioneer(STATE_WON_GAME, "FR12169SE/FR12227PL/")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1027,7 +1036,7 @@ STATES = {
|
|||
singeQuit()
|
||||
end
|
||||
|
||||
if what == "READ BOOK" and (OBJECT[3].LOCATION == 0 or OBJECT[3].LOCATION == L) then
|
||||
if what == "READ BOOK" and (OBJECTS[3].LOCATION == 0 or OBJECTS[3].LOCATION == L) then
|
||||
KW = 1
|
||||
screenPrint("YOU NOW KNOW HOw TO MAKE A")
|
||||
screenPrint("JAMMER FROM A RADIO.")
|
||||
|
@ -1036,7 +1045,8 @@ STATES = {
|
|||
|
||||
if what == "READ TICKET" then
|
||||
KW = 1
|
||||
processGameState(STATE_PARSER, "LOOK TICKET")
|
||||
STATE = STATE_PARSER
|
||||
processGameState("LOOK TICKET")
|
||||
end
|
||||
|
||||
if what == "S" or what == "SOUTH" then
|
||||
|
@ -1044,7 +1054,7 @@ STATES = {
|
|||
D = 3
|
||||
end
|
||||
|
||||
if what == "TAKE" and N ~= "" then
|
||||
if (V == "TAKE" or V == "GET") and N ~= "" then
|
||||
KW = 1
|
||||
t = 0
|
||||
t2 = 0
|
||||
|
@ -1053,7 +1063,7 @@ STATES = {
|
|||
screenPrint("YOU ALREADY HAVE THE " .. N .. ".")
|
||||
t = -1
|
||||
end
|
||||
if (N == "ALL" or N == "EVERYTHING" or N == OBJECTS[i].NAME) and OBJECTS[i].LOCATION == L)
|
||||
if (N == "ALL" or N == "EVERYTHING" or N == OBJECTS[i].NAME) and OBJECTS[i].LOCATION == L then
|
||||
OBJECTS[i].LOCATION = 0
|
||||
t = 1
|
||||
screenPrint(N .. " TAKEN.")
|
||||
|
@ -1084,11 +1094,11 @@ STATES = {
|
|||
D = 4
|
||||
end
|
||||
|
||||
if what == "WEAR UNIFORM" and (OBJECT[9].LOCATION == 0 or OBJECT[9].LOCATION == L) then
|
||||
if what == "WEAR UNIFORM" and (OBJECTS[9].LOCATION == 0 or OBJECTS[9].LOCATION == L) then
|
||||
KW = 1
|
||||
screenPrint("IT FITS WELL AND MAKES A GOOD")
|
||||
screenPrint("DISGUISE.")
|
||||
OBJECT[9].LOCATION = 0
|
||||
OBJECTS[9].LOCATION = 0
|
||||
pioneer(STATE_PARSER, "FR5890SE/")
|
||||
end
|
||||
|
||||
|
@ -1118,6 +1128,9 @@ STATES = {
|
|||
if STATE == STATE_NONE then
|
||||
NEXT_STATE = STATE_PARSER
|
||||
end
|
||||
|
||||
debugPrint("Parser Exit")
|
||||
|
||||
end,
|
||||
|
||||
[STATE_BOOM] = function(what)
|
||||
|
@ -1129,7 +1142,7 @@ STATES = {
|
|||
|
||||
[STATE_PLAY_AGAIN] = function(what)
|
||||
if what == "" then
|
||||
screenClear()
|
||||
screenPrint("")
|
||||
screenPrint("IT IS ONE YEAR LATER.")
|
||||
screenPrint("THE ROLLER COASTER HAS BEEN REBUILT.")
|
||||
screenPrint("THE SABOTEUR PLANS TO DESTROY IT AGAIN.")
|
||||
|
@ -1160,7 +1173,8 @@ STATES = {
|
|||
screenPrint("GOOD SHOOTING.")
|
||||
screenPrint("HE HANDS YOU A TEDDY BEAR.")
|
||||
OBJECTS[8].LOCATION = 0
|
||||
NEXT_STATE = STATE_PARSER
|
||||
DELAY = 1
|
||||
NEXT_STATE = STATE_NONE
|
||||
end,
|
||||
|
||||
[STATE_CHOOSE_PRIZE] = function(what)
|
||||
|
@ -1185,12 +1199,11 @@ STATES = {
|
|||
end,
|
||||
|
||||
[STATE_WON_GAME] = function(what)
|
||||
screenClear()
|
||||
screenPrint("")
|
||||
screenPrint("CONGRATULATIONS!")
|
||||
screenPrint("")
|
||||
screenPrint("YOU SAVED THE ROLLER COASTER!")
|
||||
screenPrint("")
|
||||
screenPrint("")
|
||||
screenPrint("ANY KEY TO EXIT.")
|
||||
KEYHIT_ON = ON
|
||||
NEXT_STATE = STATE_EXIT_GAME
|
||||
|
@ -1208,13 +1221,15 @@ STATES = {
|
|||
V, N = getVerbNoun(what)
|
||||
|
||||
if what == "DOWN" then
|
||||
processGameState(STATE_PARSER, "DROP " .. STATE_DATA)
|
||||
STATE = STATE_PARSER
|
||||
processGameState("DROP " .. STATE_DATA)
|
||||
else
|
||||
if V ~= "IN" and V ~= "ON" then
|
||||
screenPrint("I CAN'T DO THAT.")
|
||||
else
|
||||
if N == "FLOOR" or N == "TABLE" then
|
||||
processGameState(STATE_PARSER, "DROP " .. STATE_DATA)
|
||||
STATE = STATE_PARSER
|
||||
processGameState("DROP " .. STATE_DATA)
|
||||
else
|
||||
for i = 1,NO,1 do
|
||||
if N == OBJECTS[i].NAME and (OBJECTS[i].LOCATION == L or OBJECTS[i].LOCATION == 0) then
|
||||
|
@ -1259,7 +1274,7 @@ screenClear()
|
|||
NEXT_STATE = STATE_NONE
|
||||
STATE = STATE_GET_NAME
|
||||
|
||||
--NA = "SCOTT"
|
||||
--STATE = STATE_LOOK
|
||||
NA = "SCOTT"
|
||||
STATE = STATE_LOOK
|
||||
|
||||
pioneer(STATE, "FR2818SE/")
|
||||
|
|
Loading…
Add table
Reference in a new issue