aboutsummaryrefslogtreecommitdiff
path: root/engines/sludge
diff options
context:
space:
mode:
authorSimei Yin2018-05-27 20:55:57 +0200
committerSimei Yin2018-05-27 22:11:38 +0200
commitbf3084df0eff1f21c9bc94d4254dff11e71b31bc (patch)
tree831216856b8751e74543338d533407688480197a /engines/sludge
parent057bf6ea921bea28c3b09a4905c81af65f03c7eb (diff)
downloadscummvm-rg350-bf3084df0eff1f21c9bc94d4254dff11e71b31bc.tar.gz
scummvm-rg350-bf3084df0eff1f21c9bc94d4254dff11e71b31bc.tar.bz2
scummvm-rg350-bf3084df0eff1f21c9bc94d4254dff11e71b31bc.zip
SLUDGE: Move built-in function parameter number to structure
Diffstat (limited to 'engines/sludge')
-rw-r--r--engines/sludge/builtin.cpp32
-rw-r--r--engines/sludge/functionlist.h338
2 files changed, 173 insertions, 197 deletions
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index e06cea204b..0867f7cdf3 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -65,31 +65,6 @@ extern int numBIFNames, numUserFunc;
extern Common::String *allUserFunc;
extern Common::String *allBIFNames;
-int paramNum[] = { -1, 0, 1, 1, -1, -1, 1, 3, 4, 1, 0, 0, 8, -1, // SAY->MOVEMOUSE
- -1, 0, 0, -1, -1, 1, 1, 1, 1, 4, 1, 1, 2, 1,// FOCUS->REMOVEREGION
- 2, 2, 0, 0, 2, // ANIMATE->SETSCALE
- -1, 2, 1, 0, 0, 0, 1, 0, 3, // new/push/pop stack, status stuff
- 2, 0, 0, 3, 1, 0, 2, // delFromStack->completeTimers
- -1, -1, -1, 2, 2, 0, 3, 1, // anim, costume, pO, setC, wait, sS, substring, stringLength
- 0, 1, 1, 0, 2, // dark, save, load, quit, rename
- 1, 3, 3, 1, 2, 1, 1, 3, 1, 0, 0, 2, 1, // stackSize, pasteString, startMusic, defvol, vol, stopmus, stopsound, setfont, alignStatus, show x 2, pos'Status, setFloor
- -1, -1, 1, 1, 2, 1, 1, 1, -1, -1, -1, 1, 1, // force, jump, peekstart, peekend, enqueue, getSavedGames, inFont, loopSound, removeChar, stopCharacter
- 1, 0, 3, 3, 1, 2, 1, 2, 2, // launch, howFrozen, pastecol, litcol, checksaved, float, cancelfunc, walkspeed, delAll
- 2, 3, 1, 2, 2, 0, 0, 1, 2, 3, 1, -1, // extras, mixoverlay, pastebloke, getMScreenX/Y, setSound(Default/-)Volume, looppoints, speechMode, setLightMap
- -1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, // think, getCharacterDirection, is(char/region/moving), deleteGame, renameGame, hardScroll, stringWidth, speechSpeed, normalCharacter
- 2, 1, 2, 1, 3, 1, 1, 2, 1, // fetchEvent, setBrightness, spin, fontSpace, burnString, captureAll, cacheSound, setSpinSpeed, transitionMode
- 1, 0, 0, 1, 0, 2, 1, 1, 1, // movie(Start/Abort/Playing), updateDisplay, getSoundCache, savedata, loaddata, savemode, freeSound
- 3, 0, 3, 3, 2, 1, 1, // setParallax, clearParallax, setBlankColour, setBurnColour, getPixelColour, makeFastArray, getCharacterScale
- 0, 2, 0, // getLanguage, launchWith, getFramesPerSecond
- 3, 2, 2, 0, 0, 1, // readThumbnail, setThumbnailSize, hasFlag, snapshot, clearSnapshot, anyFilename
- 2, 1, // regGet, fatal
- 4, 3, -1, 0, // chr AA, max AA, setBackgroundEffect, doBackgroundEffect
- 2, // setCharacterAngleOffset
- 2, 5, // setCharacterTransparency, setCharacterColourise
- 1, // zoomCamera
- 1, 0, 0 // playMovie, stopMovie, pauseMovie
- };
-
bool failSecurityCheck(const Common::String &fn) {
if (fn.empty())
return true;
@@ -117,6 +92,7 @@ LoadedFunction *saverFunc;
typedef BuiltReturn (*builtInSludgeFunc)(int numParams, LoadedFunction *fun);
struct builtInFunctionData {
builtInSludgeFunc func;
+ int paramNum;
};
#define builtIn(a) static BuiltReturn builtIn_ ## a (int numParams, LoadedFunction *fun)
@@ -2574,9 +2550,9 @@ BuiltReturn callBuiltIn(int whichFunc, int numParams, LoadedFunction *fun) {
}
if (whichFunc < NUM_FUNCS) {
- if (paramNum[whichFunc] != -1) {
- if (paramNum[whichFunc] != numParams) {
- Common::String buff = Common::String::format("Built in function must have %i parameter%s", paramNum[whichFunc], (paramNum[whichFunc] == 1) ? "" : "s");
+ if (builtInFunctionArray[whichFunc].paramNum != -1) {
+ if (builtInFunctionArray[whichFunc].paramNum != numParams) {
+ Common::String buff = Common::String::format("Built in function must have %i parameter%s", builtInFunctionArray[whichFunc].paramNum, (builtInFunctionArray[whichFunc].paramNum == 1) ? "" : "s");
Common::String msg = buff;
fatal(msg);
return BR_ERROR;
diff --git a/engines/sludge/functionlist.h b/engines/sludge/functionlist.h
index 025f80a844..c7858a2d03 100644
--- a/engines/sludge/functionlist.h
+++ b/engines/sludge/functionlist.h
@@ -29,178 +29,178 @@
namespace Sludge {
-#define FUNC(special,name) {builtIn_ ## name},
+#define FUNC(special,name,paramNum) {builtIn_ ## name, paramNum},
static builtInFunctionData builtInFunctionArray[] = {
- FUNC(true, say)
- FUNC(true, skipSpeech)
- FUNC(true, statusText)
- FUNC(true, pause)
- FUNC(true, onLeftMouse)
- FUNC(true, onRightMouse)
- FUNC(true, setCursor)
- FUNC(true, addOverlay)
- FUNC(true, addCharacter)
- FUNC(true, playSound)
- FUNC(true, getMouseX)
- FUNC(true, getMouseY)
- FUNC(true, addScreenRegion)
- FUNC(true, onMoveMouse)
- FUNC(true, onFocusChange)
- FUNC(true, getOverObject)
- FUNC(true, blankScreen)
- FUNC(true, moveCharacter)
- FUNC(true, onKeyboard)
- FUNC(true, getObjectX)
- FUNC(true, getObjectY)
- FUNC(true, random)
- FUNC(true, spawnSub)
- FUNC(true, blankArea)
- FUNC(true, hideCharacter)
- FUNC(true, showCharacter)
- FUNC(true, callEvent)
- FUNC(true, removeScreenRegion)
- FUNC(true, animate)
- FUNC(true, turnCharacter)
- FUNC(true, removeAllCharacters)
- FUNC(true, removeAllScreenRegions)
- FUNC(true, setScale)
- FUNC(true, newStack)
- FUNC(true, pushToStack)
- FUNC(true, popFromStack)
- FUNC(true, clearStatus)
- FUNC(true, addStatus)
- FUNC(true, removeLastStatus)
- FUNC(true, lightStatus)
- FUNC(true, getStatusText)
- FUNC(true, setStatusColour)
- FUNC(true, deleteFromStack)
- FUNC(true, freeze)
- FUNC(true, unfreeze)
- FUNC(true, pasteImage)
- FUNC(true, copyStack)
- FUNC(true, completeTimers)
- FUNC(true, setCharacterDrawMode)
- FUNC(true, anim)
- FUNC(true, costume)
- FUNC(true, pickOne)
- FUNC(true, setCostume)
- FUNC(true, wait)
- FUNC(true, somethingSpeaking)
- FUNC(true, substring)
- FUNC(true, stringLength)
- FUNC(true, darkBackground)
- FUNC(true, saveGame)
- FUNC(true, loadGame)
- FUNC(true, quitGame)
- FUNC(true, rename)
- FUNC(true, stackSize)
- FUNC(true, pasteString)
- FUNC(true, startMusic)
- FUNC(true, setDefaultMusicVolume)
- FUNC(true, setMusicVolume)
- FUNC(true, stopMusic)
- FUNC(true, stopSound)
- FUNC(true, setFont)
- FUNC(true, alignStatus)
- FUNC(true, showFloor)
- FUNC(true, showBoxes)
- FUNC(true, positionStatus)
- FUNC(true, setFloor)
- FUNC(true, forceCharacter)
- FUNC(true, jumpCharacter)
- FUNC(true, peekStart)
- FUNC(true, peekEnd)
- FUNC(true, enqueue)
- FUNC(true, setZBuffer)
- FUNC(true, getMatchingFiles)
- FUNC(true, inFont)
- FUNC(true, onLeftMouseUp)
- FUNC(true, onRightMouseUp)
- FUNC(true, loopSound)
- FUNC(true, removeCharacter)
- FUNC(true, stopCharacter)
- FUNC(true, launch)
- FUNC(true, howFrozen)
- FUNC(true, setPasteColour)
- FUNC(true, setLitStatusColour)
- FUNC(true, fileExists)
- FUNC(true, floatCharacter)
- FUNC(true, cancelSub)
- FUNC(true, setCharacterWalkSpeed)
- FUNC(true, deleteAllFromStack)
- FUNC(true, setCharacterExtra)
- FUNC(true, mixOverlay)
- FUNC(true, pasteCharacter)
- FUNC(true, setSceneDimensions)
- FUNC(true, aimCamera)
- FUNC(true, getMouseScreenX)
- FUNC(true, getMouseScreenY)
- FUNC(true, setDefaultSoundVolume)
- FUNC(true, setSoundVolume)
- FUNC(true, setSoundLoopPoints)
- FUNC(true, setSpeechMode)
- FUNC(true, setLightMap)
- FUNC(true, think)
- FUNC(true, getCharacterDirection)
- FUNC(true, isCharacter)
- FUNC(true, isScreenRegion)
- FUNC(true, isMoving)
- FUNC(true, deleteFile)
- FUNC(true, renameFile)
- FUNC(true, hardScroll)
- FUNC(true, stringWidth)
- FUNC(true, setSpeechSpeed)
- FUNC(true, normalCharacter)
- FUNC(true, fetchEvent)
- FUNC(true, transitionLevel)
- FUNC(true, spinCharacter)
- FUNC(true, setFontSpacing)
- FUNC(true, burnString)
- FUNC(true, captureAllKeys)
- FUNC(true, cacheSound)
- FUNC(true, setCharacterSpinSpeed)
- FUNC(true, transitionMode)
- FUNC(false, _rem_movieStart)
- FUNC(false, _rem_movieAbort)
- FUNC(false, _rem_moviePlaying)
- FUNC(false, _rem_updateDisplay)
- FUNC(true, getSoundCache)
- FUNC(true, saveCustomData)
- FUNC(true, loadCustomData)
- FUNC(true, setCustomEncoding)
- FUNC(true, freeSound)
- FUNC(true, parallaxAdd)
- FUNC(true, parallaxClear)
- FUNC(true, setBlankColour)
- FUNC(true, setBurnColour)
- FUNC(true, getPixelColour)
- FUNC(true, makeFastArray)
- FUNC(true, getCharacterScale)
- FUNC(true, getLanguageID)
- FUNC(false, _rem_launchWith)
- FUNC(true, getFramesPerSecond)
- FUNC(true, showThumbnail)
- FUNC(true, setThumbnailSize)
- FUNC(true, hasFlag)
- FUNC(true, snapshotGrab)
- FUNC(true, snapshotClear)
- FUNC(true, bodgeFilenames)
- FUNC(false, _rem_registryGetString)
- FUNC(true, quitWithFatalError)
- FUNC(true, _rem_setCharacterAA)
- FUNC(true, _rem_setMaximumAA)
- FUNC(true, setBackgroundEffect)
- FUNC(true, doBackgroundEffect)
- FUNC(true, setCharacterAngleOffset)
- FUNC(true, setCharacterTransparency)
- FUNC(true, setCharacterColourise)
- FUNC(true, zoomCamera)
- FUNC(true, playMovie)
- FUNC(true, stopMovie)
- FUNC(true, pauseMovie)
+ FUNC(true, say, -1)
+ FUNC(true, skipSpeech, 0)
+ FUNC(true, statusText, 1)
+ FUNC(true, pause, 1)
+ FUNC(true, onLeftMouse, -1)
+ FUNC(true, onRightMouse, -1)
+ FUNC(true, setCursor, 1)
+ FUNC(true, addOverlay, 3)
+ FUNC(true, addCharacter, 4)
+ FUNC(true, playSound, 1)
+ FUNC(true, getMouseX, 0)
+ FUNC(true, getMouseY, 0)
+ FUNC(true, addScreenRegion, 8)
+ FUNC(true, onMoveMouse, -1)
+ FUNC(true, onFocusChange, -1)
+ FUNC(true, getOverObject, 0)
+ FUNC(true, blankScreen, 0)
+ FUNC(true, moveCharacter, -1)
+ FUNC(true, onKeyboard, -1)
+ FUNC(true, getObjectX, 1)
+ FUNC(true, getObjectY, 1)
+ FUNC(true, random, 1)
+ FUNC(true, spawnSub, 1)
+ FUNC(true, blankArea, 4)
+ FUNC(true, hideCharacter, 1)
+ FUNC(true, showCharacter, 1)
+ FUNC(true, callEvent, 2)
+ FUNC(true, removeScreenRegion, 1)
+ FUNC(true, animate, 2)
+ FUNC(true, turnCharacter, 2)
+ FUNC(true, removeAllCharacters, 0)
+ FUNC(true, removeAllScreenRegions, 0)
+ FUNC(true, setScale, 2)
+ FUNC(true, newStack, -1)
+ FUNC(true, pushToStack, 2)
+ FUNC(true, popFromStack, 1)
+ FUNC(true, clearStatus, 0)
+ FUNC(true, addStatus, 0)
+ FUNC(true, removeLastStatus, 0)
+ FUNC(true, lightStatus, 1)
+ FUNC(true, getStatusText, 0)
+ FUNC(true, setStatusColour, 3)
+ FUNC(true, deleteFromStack, 2)
+ FUNC(true, freeze, 0)
+ FUNC(true, unfreeze, 0)
+ FUNC(true, pasteImage, 3)
+ FUNC(true, copyStack, 1)
+ FUNC(true, completeTimers, 0)
+ FUNC(true, setCharacterDrawMode, 2)
+ FUNC(true, anim, -1)
+ FUNC(true, costume, -1)
+ FUNC(true, pickOne, -1)
+ FUNC(true, setCostume, 2)
+ FUNC(true, wait, 2)
+ FUNC(true, somethingSpeaking, 0)
+ FUNC(true, substring, 3)
+ FUNC(true, stringLength, 1)
+ FUNC(true, darkBackground, 0)
+ FUNC(true, saveGame, 1)
+ FUNC(true, loadGame, 1)
+ FUNC(true, quitGame, 0)
+ FUNC(true, rename, 2)
+ FUNC(true, stackSize, 1)
+ FUNC(true, pasteString, 3)
+ FUNC(true, startMusic, 3)
+ FUNC(true, setDefaultMusicVolume, 1)
+ FUNC(true, setMusicVolume, 2)
+ FUNC(true, stopMusic, 1)
+ FUNC(true, stopSound, 1)
+ FUNC(true, setFont, 3)
+ FUNC(true, alignStatus, 1)
+ FUNC(true, showFloor, 0)
+ FUNC(true, showBoxes, 0)
+ FUNC(true, positionStatus, 2)
+ FUNC(true, setFloor, 1)
+ FUNC(true, forceCharacter, -1)
+ FUNC(true, jumpCharacter, -1)
+ FUNC(true, peekStart, 1)
+ FUNC(true, peekEnd, 1)
+ FUNC(true, enqueue, 2)
+ FUNC(true, setZBuffer, 1)
+ FUNC(true, getMatchingFiles, 1)
+ FUNC(true, inFont, 1)
+ FUNC(true, onLeftMouseUp, -1)
+ FUNC(true, onRightMouseUp, -1)
+ FUNC(true, loopSound, -1)
+ FUNC(true, removeCharacter, 1)
+ FUNC(true, stopCharacter, 1)
+ FUNC(true, launch, 1)
+ FUNC(true, howFrozen, 0)
+ FUNC(true, setPasteColour, 3)
+ FUNC(true, setLitStatusColour, 3)
+ FUNC(true, fileExists, 1)
+ FUNC(true, floatCharacter, 2)
+ FUNC(true, cancelSub, 1)
+ FUNC(true, setCharacterWalkSpeed, 2)
+ FUNC(true, deleteAllFromStack, 2)
+ FUNC(true, setCharacterExtra, 2)
+ FUNC(true, mixOverlay, 3)
+ FUNC(true, pasteCharacter, 1)
+ FUNC(true, setSceneDimensions, 2)
+ FUNC(true, aimCamera, 2)
+ FUNC(true, getMouseScreenX, 0)
+ FUNC(true, getMouseScreenY, 0)
+ FUNC(true, setDefaultSoundVolume, 1)
+ FUNC(true, setSoundVolume, 2)
+ FUNC(true, setSoundLoopPoints, 3)
+ FUNC(true, setSpeechMode, 1)
+ FUNC(true, setLightMap, -1)
+ FUNC(true, think, -1)
+ FUNC(true, getCharacterDirection, 1)
+ FUNC(true, isCharacter, 1)
+ FUNC(true, isScreenRegion, 1)
+ FUNC(true, isMoving, 1)
+ FUNC(true, deleteFile, 1)
+ FUNC(true, renameFile, 2)
+ FUNC(true, hardScroll, 1)
+ FUNC(true, stringWidth, 1)
+ FUNC(true, setSpeechSpeed, 1)
+ FUNC(true, normalCharacter, 1)
+ FUNC(true, fetchEvent, 2)
+ FUNC(true, transitionLevel, 1)
+ FUNC(true, spinCharacter, 2)
+ FUNC(true, setFontSpacing, 1)
+ FUNC(true, burnString, 3)
+ FUNC(true, captureAllKeys, 1)
+ FUNC(true, cacheSound, 1)
+ FUNC(true, setCharacterSpinSpeed, 2)
+ FUNC(true, transitionMode, 1)
+ FUNC(false, _rem_movieStart, 1)
+ FUNC(false, _rem_movieAbort, 0)
+ FUNC(false, _rem_moviePlaying, 0)
+ FUNC(false, _rem_updateDisplay, 1)
+ FUNC(true, getSoundCache, 0)
+ FUNC(true, saveCustomData, 2)
+ FUNC(true, loadCustomData, 1)
+ FUNC(true, setCustomEncoding, 1)
+ FUNC(true, freeSound, 1)
+ FUNC(true, parallaxAdd, 3)
+ FUNC(true, parallaxClear, 0)
+ FUNC(true, setBlankColour, 3)
+ FUNC(true, setBurnColour, 3)
+ FUNC(true, getPixelColour, 2)
+ FUNC(true, makeFastArray, 1)
+ FUNC(true, getCharacterScale, 1)
+ FUNC(true, getLanguageID, 0)
+ FUNC(false, _rem_launchWith, 2)
+ FUNC(true, getFramesPerSecond, 0)
+ FUNC(true, showThumbnail, 3)
+ FUNC(true, setThumbnailSize, 2)
+ FUNC(true, hasFlag, 2)
+ FUNC(true, snapshotGrab, 0)
+ FUNC(true, snapshotClear, 0)
+ FUNC(true, bodgeFilenames, 1)
+ FUNC(false, _rem_registryGetString, 2)
+ FUNC(true, quitWithFatalError, 1)
+ FUNC(true, _rem_setCharacterAA, 4)
+ FUNC(true, _rem_setMaximumAA, 3)
+ FUNC(true, setBackgroundEffect, -1)
+ FUNC(true, doBackgroundEffect, 0)
+ FUNC(true, setCharacterAngleOffset, 2)
+ FUNC(true, setCharacterTransparency, 2)
+ FUNC(true, setCharacterColourise, 5)
+ FUNC(true, zoomCamera, 1)
+ FUNC(true, playMovie, 1)
+ FUNC(true, stopMovie, 0)
+ FUNC(true, pauseMovie, 0)
};
#undef FUNC
-int NUM_FUNCS = (sizeof (builtInFunctionArray) / sizeof (builtInFunctionArray[0]));
+const static int NUM_FUNCS = (sizeof (builtInFunctionArray) / sizeof (builtInFunctionArray[0]));
} // End of namespace Sludge