diff options
Diffstat (limited to 'engines/sludge/builtin.cpp')
-rw-r--r-- | engines/sludge/builtin.cpp | 105 |
1 files changed, 52 insertions, 53 deletions
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp index dba5f01694..8195fc53f9 100644 --- a/engines/sludge/builtin.cpp +++ b/engines/sludge/builtin.cpp @@ -60,10 +60,8 @@ Variable *launchResult = NULL; extern int lastFramesPerSecond, thumbWidth, thumbHeight; extern bool allowAnyFilename; -extern bool captureAllKeys; extern VariableStack *noStack; extern StatusStuff *nowStatus; -extern ScreenRegion *overRegion; extern int numBIFNames, numUserFunc; extern Common::String *allUserFunc; @@ -197,7 +195,7 @@ builtIn(howFrozen) { builtIn(setCursor) { UNUSEDALL - PersonaAnimation *aa = getAnimationFromVar(fun->stack->thisVar); + PersonaAnimation *aa = getAnimationFromVar(fun->stack->thisVar); g_sludge->_cursorMan->pickAnimCursor(aa); trimStack(fun->stack); return BR_CONTINUE; @@ -402,7 +400,7 @@ builtIn(pasteImage) { if (!getValueType(x, SVT_INT, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - PersonaAnimation *pp = getAnimationFromVar(fun->stack->thisVar); + PersonaAnimation *pp = getAnimationFromVar(fun->stack->thisVar); trimStack(fun->stack); if (pp == NULL) return BR_CONTINUE; @@ -857,7 +855,7 @@ builtIn(anim) { } // First store the frame numbers and take 'em off the stack - PersonaAnimation *ba = createPersonaAnim(numParams - 1, fun->stack); + PersonaAnimation *ba = new PersonaAnimation(numParams - 1, fun->stack); // Only remaining paramter is the file number int fileNumber; @@ -869,7 +867,7 @@ builtIn(anim) { LoadedSpriteBank *sprBanky = g_sludge->_gfxMan->loadBankForAnim(fileNumber); if (!sprBanky) return BR_ERROR; // File not found, fatal done already - setBankFile(ba, sprBanky); + ba->theSprites = sprBanky; // Return value newAnimationVariable(fun->reg, ba); @@ -1312,9 +1310,9 @@ builtIn(skipSpeech) { builtIn(getOverObject) { UNUSEDALL - if (overRegion) + if (g_sludge->_regionMan->getOverRegion()) // Return value - setVariable(fun->reg, SVT_OBJTYPE, overRegion->thisType->objectNum); + setVariable(fun->reg, SVT_OBJTYPE, g_sludge->_regionMan->getOverRegion()->thisType->objectNum); else // Return value setVariable(fun->reg, SVT_INT, 0); @@ -1342,11 +1340,11 @@ builtIn(getObjectX) { return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *pers = findPerson(objectNumber); + OnScreenPerson *pers = g_sludge->_peopleMan->findPerson(objectNumber); if (pers) { setVariable(fun->reg, SVT_INT, pers->x); } else { - ScreenRegion *la = getRegionForObject(objectNumber); + ScreenRegion *la = g_sludge->_regionMan->getRegionForObject(objectNumber); if (la) { setVariable(fun->reg, SVT_INT, la->sX); } else { @@ -1363,11 +1361,11 @@ builtIn(getObjectY) { return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *pers = findPerson(objectNumber); + OnScreenPerson *pers = g_sludge->_peopleMan->findPerson(objectNumber); if (pers) { setVariable(fun->reg, SVT_INT, pers->y); } else { - ScreenRegion *la = getRegionForObject(objectNumber); + ScreenRegion *la = g_sludge->_regionMan->getRegionForObject(objectNumber); if (la) { setVariable(fun->reg, SVT_INT, la->sY); } else { @@ -1404,7 +1402,7 @@ builtIn(addScreenRegion) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - if (addScreenRegion(x1, y1, x2, y2, sX, sY, di, objectNumber)) + if (g_sludge->_regionMan->addScreenRegion(x1, y1, x2, y2, sX, sY, di, objectNumber)) return BR_CONTINUE; return BR_ERROR; @@ -1416,19 +1414,19 @@ builtIn(removeScreenRegion) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - removeScreenRegion(objectNumber); + g_sludge->_regionMan->removeScreenRegion(objectNumber); return BR_CONTINUE; } builtIn(showBoxes) { UNUSEDALL - showBoxes(); + g_sludge->_regionMan->showBoxes(); return BR_CONTINUE; } builtIn(removeAllScreenRegions) { UNUSEDALL - killAllRegions(); + g_sludge->_regionMan->kill(); return BR_CONTINUE; } @@ -1451,7 +1449,7 @@ builtIn(addCharacter) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - if (addPerson(x, y, objectNumber, p)) + if (g_sludge->_peopleMan->addPerson(x, y, objectNumber, p)) return BR_CONTINUE; return BR_ERROR; } @@ -1462,7 +1460,7 @@ builtIn(hideCharacter) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setShown(false, objectNumber); + g_sludge->_peopleMan->setShown(false, objectNumber); return BR_CONTINUE; } @@ -1472,14 +1470,14 @@ builtIn(showCharacter) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setShown(true, objectNumber); + g_sludge->_peopleMan->setShown(true, objectNumber); return BR_CONTINUE; } builtIn(removeAllCharacters) { UNUSEDALL killSpeechTimers(); - killMostPeople(); + g_sludge->_peopleMan->killMostPeople(); return BR_CONTINUE; } @@ -1492,7 +1490,7 @@ builtIn(setCharacterDrawMode) { if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setDrawMode(di, obj); + g_sludge->_peopleMan->setDrawMode(di, obj); return BR_CONTINUE; } builtIn(setCharacterTransparency) { @@ -1504,7 +1502,7 @@ builtIn(setCharacterTransparency) { if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setPersonTransparency(obj, x); + g_sludge->_peopleMan->setPersonTransparency(obj, x); return BR_CONTINUE; } builtIn(setCharacterColourise) { @@ -1525,7 +1523,7 @@ builtIn(setCharacterColourise) { if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setPersonColourise(obj, r, g, b, mix); + g_sludge->_peopleMan->setPersonColourise(obj, r, g, b, mix); return BR_CONTINUE; } @@ -1538,7 +1536,7 @@ builtIn(setScale) { if (!getValueType(val1, SVT_INT, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setScale((int16)val1, (int16)val2); + g_sludge->_peopleMan->setScale((int16)val1, (int16)val2); return BR_CONTINUE; } @@ -1550,7 +1548,7 @@ builtIn(stopCharacter) { trimStack(fun->stack); // Return value - setVariable(fun->reg, SVT_INT, stopPerson(obj)); + setVariable(fun->reg, SVT_INT, g_sludge->_peopleMan->stopPerson(obj)); return BR_CONTINUE; } @@ -1561,7 +1559,7 @@ builtIn(pasteCharacter) { return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *thisPerson = findPerson(obj); + OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(obj); if (thisPerson) { PersonaAnimation *myAnim; myAnim = thisPerson->myAnim; @@ -1583,15 +1581,15 @@ builtIn(pasteCharacter) { builtIn(animate) { UNUSEDALL int obj; - PersonaAnimation *pp = getAnimationFromVar(fun->stack->thisVar); + PersonaAnimation *pp = getAnimationFromVar(fun->stack->thisVar); if (pp == NULL) return BR_ERROR; trimStack(fun->stack); if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - animatePerson(obj, pp); - setVariable(fun->reg, SVT_INT, timeForAnim(pp)); + g_sludge->_peopleMan->animatePerson(obj, pp); + setVariable(fun->reg, SVT_INT, pp->getTotalTime()); return BR_CONTINUE; } @@ -1605,7 +1603,7 @@ builtIn(setCostume) { if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - animatePerson(obj, pp); + g_sludge->_peopleMan->animatePerson(obj, pp); return BR_CONTINUE; } @@ -1618,7 +1616,7 @@ builtIn(floatCharacter) { if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setVariable(fun->reg, SVT_INT, floatCharacter(di, obj)); + setVariable(fun->reg, SVT_INT, g_sludge->_peopleMan->floatCharacter(di, obj)); return BR_CONTINUE; } @@ -1631,7 +1629,7 @@ builtIn(setCharacterWalkSpeed) { if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setVariable(fun->reg, SVT_INT, setCharacterWalkSpeed(di, obj)); + setVariable(fun->reg, SVT_INT, g_sludge->_peopleMan->setCharacterWalkSpeed(di, obj)); return BR_CONTINUE; } @@ -1644,7 +1642,7 @@ builtIn(turnCharacter) { if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setVariable(fun->reg, SVT_INT, turnPersonToFace(obj, di)); + setVariable(fun->reg, SVT_INT, g_sludge->_peopleMan->turnPersonToFace(obj, di)); return BR_CONTINUE; } @@ -1657,7 +1655,7 @@ builtIn(setCharacterExtra) { if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setVariable(fun->reg, SVT_INT, setPersonExtra(obj, di)); + setVariable(fun->reg, SVT_INT, g_sludge->_peopleMan->setPersonExtra(obj, di)); return BR_CONTINUE; } @@ -1667,7 +1665,7 @@ builtIn(removeCharacter) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - removeOneCharacter(objectNumber); + g_sludge->_peopleMan->removeOneCharacter(objectNumber); return BR_CONTINUE; } @@ -1687,12 +1685,12 @@ static BuiltReturn moveChr(int numParams, LoadedFunction *fun, bool force, bool trimStack(fun->stack); if (force) { - if (forceWalkingPerson(x, y, objectNumber, fun, -1)) + if (g_sludge->_peopleMan->forceWalkingPerson(x, y, objectNumber, fun, -1)) return BR_PAUSE; } else if (immediate) { - jumpPerson(x, y, objectNumber); + g_sludge->_peopleMan->jumpPerson(x, y, objectNumber); } else { - if (makeWalkingPerson(x, y, objectNumber, fun, -1)) + if (g_sludge->_peopleMan->makeWalkingPerson(x, y, objectNumber, fun, -1)) return BR_PAUSE; } return BR_CONTINUE; @@ -1708,17 +1706,17 @@ static BuiltReturn moveChr(int numParams, LoadedFunction *fun, bool force, bool if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - reggie = getRegionForObject(toObj); + reggie = g_sludge->_regionMan->getRegionForObject(toObj); if (reggie == NULL) return BR_CONTINUE; if (force) { - if (forceWalkingPerson(reggie->sX, reggie->sY, objectNumber, fun, reggie->di)) + if (g_sludge->_peopleMan->forceWalkingPerson(reggie->sX, reggie->sY, objectNumber, fun, reggie->di)) return BR_PAUSE; } else if (immediate) { - jumpPerson(reggie->sX, reggie->sY, objectNumber); + g_sludge->_peopleMan->jumpPerson(reggie->sX, reggie->sY, objectNumber); } else { - if (makeWalkingPerson(reggie->sX, reggie->sY, objectNumber, fun, reggie->di)) + if (g_sludge->_peopleMan->makeWalkingPerson(reggie->sX, reggie->sY, objectNumber, fun, reggie->di)) return BR_PAUSE; } return BR_CONTINUE; @@ -1945,7 +1943,7 @@ builtIn(isScreenRegion) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - setVariable(fun->reg, SVT_INT, getRegionForObject(objectNumber) != NULL); + setVariable(fun->reg, SVT_INT, g_sludge->_regionMan->getRegionForObject(objectNumber) != NULL); return BR_CONTINUE; } @@ -1991,9 +1989,10 @@ builtIn(transitionLevel) { builtIn(captureAllKeys) { UNUSEDALL - captureAllKeys = getBoolean(fun->stack->thisVar); + // This built-in function doesn't have any effect any more, we capture all keys by default + bool captureAllKeysDeprecated = getBoolean(fun->stack->thisVar); trimStack(fun->stack); - setVariable(fun->reg, SVT_INT, captureAllKeys); + setVariable(fun->reg, SVT_INT, captureAllKeysDeprecated); return BR_CONTINUE; } @@ -2007,7 +2006,7 @@ builtIn(spinCharacter) { return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *thisPerson = findPerson(objectNumber); + OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber); if (thisPerson) { thisPerson->wantAngle = number; thisPerson->spinning = true; @@ -2026,7 +2025,7 @@ builtIn(getCharacterDirection) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *thisPerson = findPerson(objectNumber); + OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber); if (thisPerson) { setVariable(fun->reg, SVT_INT, thisPerson->direction); } else { @@ -2041,7 +2040,7 @@ builtIn(isCharacter) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *thisPerson = findPerson(objectNumber); + OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber); setVariable(fun->reg, SVT_INT, thisPerson != NULL); return BR_CONTINUE; } @@ -2052,7 +2051,7 @@ builtIn(normalCharacter) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *thisPerson = findPerson(objectNumber); + OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber); if (thisPerson) { thisPerson->myAnim = thisPerson->myPersona->animation[thisPerson->direction]; setVariable(fun->reg, SVT_INT, 1); @@ -2068,7 +2067,7 @@ builtIn(isMoving) { if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar)) return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *thisPerson = findPerson(objectNumber); + OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber); if (thisPerson) { setVariable(fun->reg, SVT_INT, thisPerson->walking); } else { @@ -2173,7 +2172,7 @@ builtIn(setCharacterSpinSpeed) { return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *thisPerson = findPerson(who); + OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(who); if (thisPerson) { thisPerson->spinSpeed = speed; @@ -2194,7 +2193,7 @@ builtIn(setCharacterAngleOffset) { return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *thisPerson = findPerson(who); + OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(who); if (thisPerson) { thisPerson->angleOffset = angle; @@ -2390,7 +2389,7 @@ builtIn(getCharacterScale) { return BR_ERROR; trimStack(fun->stack); - OnScreenPerson *pers = findPerson(objectNumber); + OnScreenPerson *pers = g_sludge->_peopleMan->findPerson(objectNumber); if (pers) { setVariable(fun->reg, SVT_INT, pers->scale * 100); } else { |