NEVERHOOD: More changes to the Klayman class:

- Rename some stuff
- Reorder methods (in the Klayman header only until I'm happy with it :)
This commit is contained in:
johndoe123 2012-10-04 07:08:09 +00:00 committed by Willem Jan Palenstijn
parent 3ef691f1af
commit debc7e953d
2 changed files with 385 additions and 338 deletions

View File

@ -60,7 +60,7 @@ Klayman::Klayman(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y, int
_isWalkingOpenDoorNotified(false), _countdown1(0), _tapesToInsert(0), _keysToInsert(0), /*_field118(0), */_status2(0), _acceptInput(true),
_attachedSprite(NULL), _isWalking(false), _status3(1), _parentScene(parentScene), _isSneaking(false), _isLargeStep(false),
_flagF6(false), _isLeverDown(false), _isSittingInTeleporter(false), _flagFA(false), _ladderStatus(0), _pathPoints(NULL), _soundFlag(false),
_idleTableNum(0), _otherSprite(NULL), _moveObjectCountdown(0), _readyToSpit(false) {
_idleTableNum(0), _otherSprite(NULL), _moveObjectCountdown(0), _readyToSpit(false), _walkResumeFrameIncr(0) {
// TODO DirtySurface
createSurface(surfacePriority, 320, 200);
@ -301,21 +301,21 @@ void Klayman::upSitIdleTeleporter() {
} else if (++_blinkCounter >= _blinkCounterMax) {
_blinkCounter = 0;
_blinkCounterMax = _vm->_rnd->getRandomNumber(64 - 1) + 24;
stIdleSitBlink();
stSitIdleTeleporterBlink();
}
}
void Klayman::stIdleSitBlink() {
void Klayman::stSitIdleTeleporterBlink() {
_status2 = 0;
_acceptInput = true;
startAnimation(0x5C24C018, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmLowLevelAnimation);
SetSpriteUpdate(NULL);
NextState(&Klayman::stIdleSitBlinkSecond);
NextState(&Klayman::stSitIdleTeleporterBlinkSecond);
}
void Klayman::stIdleSitBlinkSecond() {
void Klayman::stSitIdleTeleporterBlinkSecond() {
_status2 = 0;
_acceptInput = true;
startAnimation(0x5C24C018, 0, -1);
@ -331,7 +331,7 @@ void Klayman::stPickUpNeedle() {
_acceptInput = false;
startAnimation(0x1449C169, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmPickUpGeneric);
SetMessageHandler(&Klayman::hmPickUpObject);
SetSpriteUpdate(NULL);
}
}
@ -675,7 +675,7 @@ bool Klayman::stStartAction(AnimationCb callback3) {
startAnimation(0x5C7080D4, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmStartAction);
SetSpriteUpdate(&Klayman::spriteUpdate41F250);
SetSpriteUpdate(&Klayman::suAction);
NextState(callback3);
return true;
} else {
@ -684,7 +684,7 @@ bool Klayman::stStartAction(AnimationCb callback3) {
}
}
void Klayman::spriteUpdate41F250() {
void Klayman::suAction() {
int16 xdiff = _destX - _x;
@ -715,7 +715,7 @@ void Klayman::spriteUpdate41F250() {
}
void Klayman::suWalking() {
void Klayman::suSneaking() {
int16 xdiff = _destX - _x;
@ -770,11 +770,11 @@ void Klayman::stSneak() {
startAnimation(0x5C48C506, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmSneaking);
SetSpriteUpdate(&Klayman::suWalking);
FinalizeState(&Klayman::stWalkingDone);
SetSpriteUpdate(&Klayman::suSneaking);
FinalizeState(&Klayman::evSneakingDone);
}
void Klayman::stWalkingDone() {
void Klayman::evSneakingDone() {
_isSneaking = false;
}
@ -810,12 +810,12 @@ void Klayman::stStartWalking() {
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmStartWalking);
SetSpriteUpdate(&Klayman::suWalkingTestExit);
FinalizeState(&Klayman::stStartWalkingDone);
NextState(&Klayman::stWalking);
FinalizeState(&Klayman::evStartWalkingDone);
NextState(&Klayman::stWalkingFirst);
}
}
void Klayman::stStartWalkingDone() {
void Klayman::evStartWalkingDone() {
_isWalking = false;
}
@ -833,19 +833,19 @@ uint32 Klayman::hmStartWalking(int messageNum, const MessageParam &param, Entity
return messageResult;
}
void Klayman::stWalking() {
void Klayman::stWalkingFirst() {
_status2 = 0;
_isWalking = true;
_acceptInput = true;
startAnimation(0x1A249001, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmWalking);
SetSpriteUpdate(&Klayman::spriteUpdate41F300);
FinalizeState(&Klayman::stStartWalkingDone);
NextState(&Klayman::stUpdateWalking);
SetSpriteUpdate(&Klayman::suWalkingFirst);
FinalizeState(&Klayman::evStartWalkingDone);
NextState(&Klayman::stUpdateWalkingFirst);
}
void Klayman::spriteUpdate41F300() {
void Klayman::suWalkingFirst() {
SetSpriteUpdate(&Klayman::suWalkingTestExit);
_deltaX = 0;
}
@ -864,7 +864,7 @@ uint32 Klayman::hmWalking(int messageNum, const MessageParam &param, Entity *sen
return messageResult;
}
void Klayman::stUpdateWalking() {
void Klayman::stUpdateWalkingFirst() {
if (_status3 == 2) {
gotoNextStateExt();
} else if (_status3 == 3) {
@ -891,8 +891,8 @@ void Klayman::stUpdateWalking() {
}
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmSneaking);
SetSpriteUpdate(&Klayman::suWalking);
FinalizeState(&Klayman::stWalkingDone);
SetSpriteUpdate(&Klayman::suSneaking);
FinalizeState(&Klayman::evSneakingDone);
}
}
@ -962,12 +962,12 @@ void Klayman::stPickUpGeneric() {
_acceptInput = false;
startAnimation(0x1C28C178, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmPickUpGeneric);
SetMessageHandler(&Klayman::hmPickUpObject);
SetSpriteUpdate(NULL);
}
}
uint32 Klayman::hmPickUpGeneric(int messageNum, const MessageParam &param, Entity *sender) {
uint32 Klayman::hmPickUpObject(int messageNum, const MessageParam &param, Entity *sender) {
uint32 messageResult = hmLowLevelAnimation(messageNum, param, sender);
switch (messageNum) {
case 0x100D:
@ -991,8 +991,8 @@ uint32 Klayman::hmPickUpGeneric(int messageNum, const MessageParam &param, Entit
}
void Klayman::stTurnPressButton() {
if (!stStartAction(AnimationCallback(&Klayman::stTurnPressButton))) {
void Klayman::stPressButton() {
if (!stStartAction(AnimationCallback(&Klayman::stPressButton))) {
_status2 = 2;
_acceptInput = true;
startAnimation(0x1C02B03D, 0, -1);
@ -1018,8 +1018,8 @@ uint32 Klayman::hmPressButton(int messageNum, const MessageParam &param, Entity
return messageResult;
}
void Klayman::stStampFloorButton() {
if (!stStartAction(AnimationCallback(&Klayman::stStampFloorButton))) {
void Klayman::stPressFloorButton() {
if (!stStartAction(AnimationCallback(&Klayman::stPressFloorButton))) {
_status2 = 2;
_acceptInput = true;
startAnimation(0x1C16B033, 0, -1);
@ -1036,7 +1036,7 @@ void Klayman::stPressButtonSide() {
startAnimation(0x1CD89029, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmPressButton);
SetSpriteUpdate(&Klayman::spriteUpdate41F250);
SetSpriteUpdate(&Klayman::suAction);
}
}
@ -1093,7 +1093,7 @@ void Klayman::stStartWalkingSmall() {
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmWalkingSmall);
SetSpriteUpdate(&Klayman::suWalkingTestExit);
FinalizeState(&Klayman::stStartWalkingDone);
FinalizeState(&Klayman::evStartWalkingDone);
}
uint32 Klayman::hmWalkingSmall(int messageNum, const MessageParam &param, Entity *sender) {
@ -1221,7 +1221,7 @@ void Klayman::stPullCord() {
_acceptInput = false;
startAnimation(0x3F28E094, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmPullCord);
SetMessageHandler(&Klayman::hmPullReleaseCord);
SetSpriteUpdate(NULL);
NextState(&Klayman::stReleaseCord);
}
@ -1231,11 +1231,11 @@ void Klayman::stReleaseCord() {
_acceptInput = false;
startAnimation(0x3A28C094, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmPullCord);
SetMessageHandler(&Klayman::hmPullReleaseCord);
SetSpriteUpdate(NULL);
}
uint32 Klayman::hmPullCord(int messageNum, const MessageParam &param, Entity *sender) {
uint32 Klayman::hmPullReleaseCord(int messageNum, const MessageParam &param, Entity *sender) {
uint32 messageResult = hmLowLevelAnimation(messageNum, param, sender);
switch (messageNum) {
case 0x100D:
@ -1286,16 +1286,16 @@ uint32 Klayman::hmUseTube(int messageNum, const MessageParam &param, Entity *sen
return messageResult;
}
void Klayman::stWalkingExt() {
void Klayman::stWalkingFirstExt() {
_status2 = 0;
_isWalking = true;
_acceptInput = true;
startAnimation(0x5A2CBC00, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmWalking);
SetSpriteUpdate(&Klayman::spriteUpdate41F300);
NextState(&Klayman::stUpdateWalking);
FinalizeState(&Klayman::stStartWalkingDone);
SetSpriteUpdate(&Klayman::suWalkingFirst);
NextState(&Klayman::stUpdateWalkingFirst);
FinalizeState(&Klayman::evStartWalkingDone);
}
void Klayman::stStartWalkingExt() {
@ -1308,8 +1308,8 @@ void Klayman::stStartWalkingExt() {
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmStartWalking);
SetSpriteUpdate(&Klayman::suWalkingTestExit);
FinalizeState(&Klayman::stStartWalkingDone);
NextState(&Klayman::stWalkingExt);
FinalizeState(&Klayman::evStartWalkingDone);
NextState(&Klayman::stWalkingFirstExt);
}
}
@ -1588,7 +1588,7 @@ void Klayman::stJumpToRing3() {
SetUpdateHandler(&Klayman::update);
SetSpriteUpdate(&Klayman::suUpdateDestX);
SetMessageHandler(&Klayman::hmJumpToRing3);
NextState(&Klayman::stHoldRing);
NextState(&Klayman::stHoldRing3);
sendMessage(_attachedSprite, 0x482B, 0);
}
}
@ -1611,16 +1611,16 @@ uint32 Klayman::hmJumpToRing3(int messageNum, const MessageParam &param, Entity
return messageResult;
}
void Klayman::stHoldRing() {
void Klayman::stHoldRing3() {
_status2 = 0;
_acceptInput = true;
startAnimation(0x4A293FB0, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmHoldRing);
SetMessageHandler(&Klayman::hmHoldRing3);
SetSpriteUpdate(NULL);
}
uint32 Klayman::hmHoldRing(int messageNum, const MessageParam &param, Entity *sender) {
uint32 Klayman::hmHoldRing3(int messageNum, const MessageParam &param, Entity *sender) {
if (messageNum == 0x1008) {
stReleaseRing();
return 0;
@ -1702,21 +1702,21 @@ void Klayman::stClimbLadderHalf() {
_acceptInput = false;
startAnimationByHash(0x3A292504, 0x02421405, 0);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::handleMessage41DFD0);
SetMessageHandler(&Klayman::hmClimbLadderHalf);
SetSpriteUpdate(&Klayman::suUpdateDestX);
} else if (_ladderStatus == 2) {
_ladderStatus = 0;
_acceptInput = false;
startAnimationByHash(0x122D1505, 0x02421405, 0);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::handleMessage41DFD0);
SetMessageHandler(&Klayman::hmClimbLadderHalf);
SetSpriteUpdate(&Klayman::suUpdateDestX);
} else {
gotoNextStateExt();
}
}
uint32 Klayman::handleMessage41DFD0(int messageNum, const MessageParam &param, Entity *sender) {
uint32 Klayman::hmClimbLadderHalf(int messageNum, const MessageParam &param, Entity *sender) {
uint32 messageResult = hmLowLevelAnimation(messageNum, param, sender);
switch (messageNum) {
case 0x100D:
@ -2077,10 +2077,10 @@ void Klayman::stReleaseLever() {
void Klayman::stLetGoOfLever() {
startAnimation(0x0928C048, 0, -1);
FinalizeState(&Klayman::cbLeverReleasedEvent);
FinalizeState(&Klayman::evLeverReleasedEvent);
}
void Klayman::cbLeverReleasedEvent() {
void Klayman::evLeverReleasedEvent() {
sendMessage(_attachedSprite, 0x482A, 0);
}
@ -2101,7 +2101,7 @@ void Klayman::stInsertDisk() {
} else {
startAnimation(0xD8C8D100, 0, -1);
SetUpdateHandler(&Klayman::update);
SetSpriteUpdate(&Klayman::spriteUpdate41F250);
SetSpriteUpdate(&Klayman::suAction);
SetMessageHandler(&Klayman::hmInsertDisk);
_acceptInput = false;
_tapesToInsert--;
@ -2249,8 +2249,8 @@ void Klayman::stJumpToGrabRelease() {
_acceptInput = false;
startAnimationByHash(0x00AB8C10, 0x320AC306, 0);
SetUpdateHandler(&Klayman::update);
SetSpriteUpdate(NULL);
SetMessageHandler(&Klayman::hmJumpToGrabRelease);
SetSpriteUpdate(NULL);
NextState(&Klayman::stReleaseRing);
}
@ -2276,7 +2276,7 @@ void Klayman::stIdleTeleporterHands() {
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmLowLevelAnimation);
SetSpriteUpdate(NULL);
NextState(&Klayman::stIdleSitBlinkSecond);
NextState(&Klayman::stSitIdleTeleporterBlinkSecond);
}
void Klayman::stDoIdleTeleporterHands2() {
@ -2290,7 +2290,7 @@ void Klayman::stIdleTeleporterHands2() {
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmLowLevelAnimation);
SetSpriteUpdate(NULL);
NextState(&Klayman::stIdleSitBlinkSecond);
NextState(&Klayman::stSitIdleTeleporterBlinkSecond);
}
void Klayman::teleporterAppear(uint32 fileHash) {
@ -2519,7 +2519,7 @@ void Klayman::stInsertKey() {
_acceptInput = false;
startAnimation(0xDC409440, 0, -1);
SetUpdateHandler(&Klayman::update);
SetSpriteUpdate(&Klayman::spriteUpdate41F250);
SetSpriteUpdate(&Klayman::suAction);
SetMessageHandler(&Klayman::hmInsertKey);
_keysToInsert--;
}
@ -2676,7 +2676,7 @@ void Klayman::suRidePlatformDown() {
}
void Klayman::stRidePlatformDown() {
if (!stStartActionFromIdle(AnimationCallback(&KmScene2206::stRidePlatformDown))) {
if (!stStartActionFromIdle(AnimationCallback(&Klayman::stRidePlatformDown))) {
_status2 = 1;
sendMessage(_parentScene, 0x4803, 0);
_acceptInput = false;
@ -2697,7 +2697,7 @@ void Klayman::stCrashDown() {
SetUpdateHandler(&Klayman::update);
SetSpriteUpdate(NULL);
SetMessageHandler(&Klayman::hmLowLevelAnimation);
NextState(&KmScene1305::stCrashDownFinished);
NextState(&Klayman::stCrashDownFinished);
}
void Klayman::stCrashDownFinished() {
@ -2902,6 +2902,18 @@ void Klayman::stSpitOutFall0() {
sendMessage(_parentScene, 0x8000, 0);
}
void Klayman::stSpitOutFall2() {
_countdown1 = 1;
_status2 = 0;
_acceptInput = false;
startAnimation(0x9308C132, 0, -1);
SetUpdateHandler(&Klayman::upSpitOutFall);
SetMessageHandler(&Klayman::hmLowLevelAnimation);
SetSpriteUpdate(&Klayman::suFallDown);
NextState(&Klayman::stFalling);
sendMessage(_parentScene, 0x8000, 0);
}
void Klayman::stFalling() {
sendMessage(_parentScene, 0x1024, 1);
playSound(0, 0x41648271);
@ -2919,18 +2931,6 @@ void Klayman::stFalling() {
sendMessage(_parentScene, 0x8001, 0);
}
void Klayman::stSpitOutFall2() {
_countdown1 = 1;
_status2 = 0;
_acceptInput = false;
startAnimation(0x9308C132, 0, -1);
SetUpdateHandler(&Klayman::upSpitOutFall);
SetMessageHandler(&Klayman::hmLowLevelAnimation);
SetSpriteUpdate(&Klayman::suFallDown);
NextState(&Klayman::stFalling);
sendMessage(_parentScene, 0x8000, 0);
}
void Klayman::stFallTouchdown() {
setDoDeltaX(2);
stTryStandIdle();
@ -2971,7 +2971,7 @@ void Klayman::stPressDoorButton() {
startAnimation(0x1CD89029, 0, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmPressDoorButton);
SetSpriteUpdate(&Klayman::spriteUpdate41F250);
SetSpriteUpdate(&Klayman::suAction);
}
void Klayman::stHitByBoxingGlove() {
@ -2981,10 +2981,10 @@ void Klayman::stHitByBoxingGlove() {
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmHitByBoxingGlove);
SetSpriteUpdate(&AnimatedSprite::updateDeltaXY);
FinalizeState(&Klayman::stHitByBoxingGloveDone);
FinalizeState(&Klayman::evHitByBoxingGloveDone);
}
void Klayman::stHitByBoxingGloveDone() {
void Klayman::evHitByBoxingGloveDone() {
sendMessage(_parentScene, 0x1024, 1);
}
@ -2998,7 +2998,7 @@ void Klayman::stMoveVenusFlyTrap() {
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmMoveVenusFlyTrap);
SetSpriteUpdate(&AnimatedSprite::updateDeltaXY);
FinalizeState(&Klayman::stMoveVenusFlyTrapDone);
FinalizeState(&Klayman::evMoveVenusFlyTrapDone);
}
}
@ -3009,10 +3009,10 @@ void Klayman::stContinueMovingVenusFlyTrap() {
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmMoveVenusFlyTrap);
SetSpriteUpdate(&AnimatedSprite::updateDeltaXY);
FinalizeState(&Klayman::stMoveVenusFlyTrapDone);
FinalizeState(&Klayman::evMoveVenusFlyTrapDone);
}
void Klayman::stMoveVenusFlyTrapDone() {
void Klayman::evMoveVenusFlyTrapDone() {
sendMessage(_attachedSprite, 0x482A, 0);
}
@ -3292,9 +3292,9 @@ void Klayman::startWalkingResume(int16 frameIncr) {
startAnimation(0x1A249001, frameIndex, -1);
SetUpdateHandler(&Klayman::update);
SetMessageHandler(&Klayman::hmWalking);
SetSpriteUpdate(&Klayman::spriteUpdate41F300);
NextState(&Klayman::stUpdateWalking);
FinalizeState(&Klayman::stStartWalkingDone);
SetSpriteUpdate(&Klayman::suWalkingFirst);
NextState(&Klayman::stUpdateWalkingFirst);
FinalizeState(&Klayman::evStartWalkingDone);
}
//##############################################################################
@ -3326,9 +3326,9 @@ uint32 KmScene1001::xHandleMessage(int messageNum, const MessageParam &param) {
break;
case NM_KLAYMAN_PRESS_BUTTON:
if (param.asInteger() == 1) {
GotoState(&Klayman::stTurnPressButton);
GotoState(&Klayman::stPressButton);
} else if (param.asInteger() == 2) {
GotoState(&Klayman::stStampFloorButton);
GotoState(&Klayman::stPressFloorButton);
} else {
GotoState(&Klayman::stPressButtonSide);
}
@ -3592,7 +3592,7 @@ uint32 KmScene1109::xHandleMessage(int messageNum, const MessageParam &param) {
case 0x4804:
if (param.asInteger() != 0) {
_destX = param.asInteger();
GotoState(&Klayman::stWalking);
GotoState(&Klayman::stWalkingFirst);
} else {
GotoState(&Klayman::stPeekWall);
}
@ -3838,9 +3838,9 @@ uint32 KmScene1306::xHandleMessage(int messageNum, const MessageParam &param) {
break;
case NM_KLAYMAN_PRESS_BUTTON:
if (param.asInteger() == 1) {
GotoState(&Klayman::stTurnPressButton);
GotoState(&Klayman::stPressButton);
} else if (param.asInteger() == 2) {
GotoState(&Klayman::stStampFloorButton);
GotoState(&Klayman::stPressFloorButton);
} else {
GotoState(&Klayman::stPressButtonSide);
}
@ -4031,9 +4031,9 @@ uint32 KmScene1401::xHandleMessage(int messageNum, const MessageParam &param) {
break;
case NM_KLAYMAN_PRESS_BUTTON:
if (param.asInteger() == 1) {
GotoState(&Klayman::stTurnPressButton);
GotoState(&Klayman::stPressButton);
} else if (param.asInteger() == 2) {
GotoState(&Klayman::stStampFloorButton);
GotoState(&Klayman::stPressFloorButton);
} else {
GotoState(&Klayman::stPressButtonSide);
}
@ -4510,7 +4510,7 @@ uint32 KmScene2001::xHandleMessage(int messageNum, const MessageParam &param) {
case 0x4804:
if (param.asInteger() != 0) {
_destX = param.asInteger();
GotoState(&Klayman::stWalking);
GotoState(&Klayman::stWalkingFirst);
} else
GotoState(&Klayman::stPeekWall);
break;
@ -4587,9 +4587,9 @@ uint32 KmScene2101::xHandleMessage(int messageNum, const MessageParam &param) {
break;
case NM_KLAYMAN_PRESS_BUTTON:
if (param.asInteger() == 1) {
GotoState(&Klayman::stTurnPressButton);
GotoState(&Klayman::stPressButton);
} else if (param.asInteger() == 2) {
GotoState(&Klayman::stStampFloorButton);
GotoState(&Klayman::stPressFloorButton);
} else {
GotoState(&Klayman::stPressButtonSide);
}
@ -4734,9 +4734,9 @@ uint32 KmScene2203::xHandleMessage(int messageNum, const MessageParam &param) {
break;
case NM_KLAYMAN_PRESS_BUTTON:
if (param.asInteger() == 1) {
GotoState(&Klayman::stTurnPressButton);
GotoState(&Klayman::stPressButton);
} else if (param.asInteger() == 2) {
GotoState(&Klayman::stStampFloorButton);
GotoState(&Klayman::stPressFloorButton);
} else {
GotoState(&Klayman::stPressButtonSide);
}
@ -4836,6 +4836,7 @@ void KmScene2205::stStartWalkingResume() {
KmScene2206::KmScene2206(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y)
: Klayman(vm, parentScene, x, y, 1000, 1000) {
_walkResumeFrameIncr = 1;
_vm->_soundMan->addSound(0x80101800, 0xD3B02847);
}
@ -4876,9 +4877,9 @@ uint32 KmScene2206::xHandleMessage(int messageNum, const MessageParam &param) {
break;
case NM_KLAYMAN_PRESS_BUTTON:
if (param.asInteger() == 1) {
GotoState(&Klayman::stTurnPressButton);
GotoState(&Klayman::stPressButton);
} else if (param.asInteger() == 2) {
GotoState(&Klayman::stStampFloorButton);
GotoState(&Klayman::stPressFloorButton);
} else {
GotoState(&Klayman::stPressButtonSide);
}
@ -4971,9 +4972,9 @@ uint32 KmScene2207::xHandleMessage(int messageNum, const MessageParam &param) {
break;
case NM_KLAYMAN_PRESS_BUTTON:
if (param.asInteger() == 1) {
GotoState(&Klayman::stTurnPressButton);
GotoState(&Klayman::stPressButton);
} else if (param.asInteger() == 2) {
GotoState(&Klayman::stStampFloorButton);
GotoState(&Klayman::stPressFloorButton);
} else {
GotoState(&Klayman::stPressButtonSide);
}
@ -5213,9 +5214,9 @@ uint32 KmScene2401::xHandleMessage(int messageNum, const MessageParam &param) {
break;
case NM_KLAYMAN_PRESS_BUTTON:
if (param.asInteger() == 1) {
GotoState(&Klayman::stTurnPressButton);
GotoState(&Klayman::stPressButton);
} else if (param.asInteger() == 2) {
GotoState(&Klayman::stStampFloorButton);
GotoState(&Klayman::stPressFloorButton);
} else {
GotoState(&Klayman::stPressButtonSide);
}
@ -5300,7 +5301,7 @@ uint32 KmScene2402::xHandleMessage(int messageNum, const MessageParam &param) {
case 0x4804:
if (param.asInteger() != 0) {
_destX = param.asInteger();
GotoState(&Klayman::stWalking);
GotoState(&Klayman::stWalkingFirst);
} else {
GotoState(&Klayman::stPeekWall);
}
@ -5310,9 +5311,9 @@ uint32 KmScene2402::xHandleMessage(int messageNum, const MessageParam &param) {
break;
case NM_KLAYMAN_PRESS_BUTTON:
if (param.asInteger() == 1) {
GotoState(&Klayman::stTurnPressButton);
GotoState(&Klayman::stPressButton);
} else if (param.asInteger() == 2) {
GotoState(&Klayman::stStampFloorButton);
GotoState(&Klayman::stPressFloorButton);
} else {
GotoState(&Klayman::stPressButtonSide);
}
@ -5374,9 +5375,9 @@ uint32 KmScene2403::xHandleMessage(int messageNum, const MessageParam &param) {
break;
case NM_KLAYMAN_PRESS_BUTTON:
if (param.asInteger() == 1) {
GotoState(&Klayman::stTurnPressButton);
GotoState(&Klayman::stPressButton);
} else if (param.asInteger() == 2) {
GotoState(&Klayman::stStampFloorButton);
GotoState(&Klayman::stPressFloorButton);
} else {
GotoState(&Klayman::stPressButtonSide);
}
@ -5455,7 +5456,7 @@ uint32 KmScene2406::xHandleMessage(int messageNum, const MessageParam &param) {
case 0x4804:
if (param.asInteger() != 0) {
_destX = param.asInteger();
GotoState(&Klayman::stWalking);
GotoState(&Klayman::stWalkingFirst);
} else {
GotoState(&Klayman::stPeekWall);
}

View File

@ -52,87 +52,311 @@ public:
void update();
void startIdleAnimation(uint32 fileHash, AnimationCb callback);
void upIdleAnimation();
void stDoIdlePickEar();
void stIdlePickEar();
void evIdlePickEarDone();
uint32 hmIdlePickEar(int messageNum, const MessageParam &param, Entity *sender);
void stDoIdleSpinHead();
void stIdleSpinHead();
uint32 hmIdleSpinHead(int messageNum, const MessageParam &param, Entity *sender);
void stDoIdleArms();
void stIdleArms();
void evIdleArmsDone();
uint32 hmIdleArms(int messageNum, const MessageParam &param, Entity *sender);
void stDoIdleChest();
void stIdleChest();
uint32 hmIdleChest(int messageNum, const MessageParam &param, Entity *sender);
void stDoIdleHeadOff();
void stIdleHeadOff();
uint32 hmIdleHeadOff(int messageNum, const MessageParam &param, Entity *sender);
void stDoIdleTeleporterHands();
void stIdleTeleporterHands();
void stDoIdleTeleporterHands2();
void stIdleTeleporterHands2();
void stTryStandIdle();
void stWakeUp();
void stSleeping();
void stPickUpGeneric();
void stTurnPressButton();
void stStampFloorButton();
void stPressButtonSide();
void stLargeStep();
void stWonderAboutHalf();
void stWonderAboutAfter();
void stTurnToUseHalf();
void stTurnAwayFromUse();
void stWonderAbout();
void stPeekWall();
void stJumpToRing1();
void setupJumpToRing();
void stHangOnRing();
void stJumpToRing2();
void stJumpToRing3();
void stHoldRing();
void stReleaseRing();
void stJumpToRing4();
void stContinueClimbLadderUp();
void stStartClimbLadderDown();
void stClimbLadderHalf();
void stStartClimbLadderUp();
void stStandAround();
void upStandIdle();
void stIdleBlink();
bool stStartAction(AnimationCb callback3);
bool stStartActionFromIdle(AnimationCb callback);
uint32 hmStartAction(int messageNum, const MessageParam &param, Entity *sender);
void stSneak();
uint32 hmSneaking(int messageNum, const MessageParam &param, Entity *sender);
void suSneaking();
void evSneakingDone();
void stStartWalking();
void stStartWalkingExt();
void stWalkingOpenDoor();
void suWalkingOpenDoor();
void stStepOver();
uint32 hmStartWalking(int messageNum, const MessageParam &param, Entity *sender);
void evStartWalkingDone();
void stWalkingFirst();
void stWalkingFirstExt();
void startWalkingResume(int16 frameIncr);
void stUpdateWalkingFirst();
uint32 hmWalking(int messageNum, const MessageParam &param, Entity *sender);
void suWalkingFirst();
void stWalkToFrontNoStep();
void stWalkToFront();
void stTurnToFront();
void stTurnToBack();
void stLandOnFeet();
uint32 hmWalkToFront(int messageNum, const MessageParam &param, Entity *sender);
void stTurnToBackToUse();
void stClayDoorOpen();
void stTurnToUse();
void stReturnFromUse();
void stWalkingOpenDoor();
void stSitIdleTeleporter();
void stIdleSitBlink();
void stIdleSitBlinkSecond();
uint32 hmTurnToBackToUse(int messageNum, const MessageParam &param, Entity *sender);
void stPickUpGeneric();
void stPickUpNeedle();
uint32 hmPickUpObject(int messageNum, const MessageParam &param, Entity *sender);
void stPickUpTube();
void stTurnToUseInTeleporter();
void stReturnFromUseInTeleporter();
void stStepOver();
void stSitInTeleporter();
void stGetUpFromTeleporter();
void stMoveObjectSkipTurnFaceObject();
void evMoveObjectTurnDone();
void stMoveObjectSkipTurn();
void stMoveObjectFaceObject();
uint32 hmPickUpTube(int messageNum, const MessageParam &param, Entity *sender);
void stTurnToUse();
void stTurnToUseHalf();
void stTurnAwayFromUse();
void stReturnFromUse();
void stTurnToUseExt();
uint32 hmTurnToUse(int messageNum, const MessageParam &param, Entity *sender);
void stLargeStep();
uint32 hmLargeStep(int messageNum, const MessageParam &param, Entity *sender);
void stInsertKey();
uint32 hmInsertKey(int messageNum, const MessageParam &param, Entity *sender);
void stReadNote();
uint32 hmReadNote(int messageNum, const MessageParam &param, Entity *sender);
void stHitByDoor();
uint32 hmHitByDoor(int messageNum, const MessageParam &param, Entity *sender);
void stPeekWall();
uint32 hmPeekWall(int messageNum, const MessageParam &param, Entity *sender);
void stPeekWallReturn();
uint32 hmPeekWallReturn(int messageNum, const MessageParam &param, Entity *sender);
void stPeekWallBlink();
void upPeekWallBlink();
void stPeekWall1();
void stPeekWall2();
void stPullHammerLever();
uint32 hmPullHammerLever(int messageNum, const MessageParam &param, Entity *sender);
void stRidePlatformDown();
void suRidePlatformDown();
void stCrashDown();
void stCrashDownFinished();
void stShrink();
uint32 hmShrink(int messageNum, const MessageParam &param, Entity *sender);
void stGrow();
uint32 hmGrow(int messageNum, const MessageParam &param, Entity *sender);
void stDrinkPotion();
uint32 hmDrinkPotion(int messageNum, const MessageParam &param, Entity *sender);
void stPullCord();
void stReleaseCord();
uint32 hmPullReleaseCord(int messageNum, const MessageParam &param, Entity *sender);
void stUseTube();
uint32 hmUseTube(int messageNum, const MessageParam &param, Entity *sender);
void stUseLever();
void stPullLeverDown();
void stHoldLeverDown();
void stUseLeverRelease();
void stReleaseLever();
void stInteractLever();
uint32 hmLever(int messageNum, const MessageParam &param, Entity *sender);
void stLetGoOfLever();
void cbLeverReleasedEvent();
void evLeverReleasedEvent();
void stWakeUp();
void stSleeping();
uint32 hmSleeping(int messageNum, const MessageParam &param, Entity *sender);
void stPressButton();
void stPressFloorButton();
void stPressButtonSide();
uint32 hmPressButton(int messageNum, const MessageParam &param, Entity *sender);
void stWonderAbout();
void stWonderAboutHalf();
void stWonderAboutAfter();
void stStandWonderAbout();
void stStartClimbLadderUp();
void stStartClimbLadderDown();
uint32 hmClimbLadderUpDown(int messageNum, const MessageParam &param, Entity *sender);
void stContinueClimbLadderUp();
void stClimbLadderHalf();
uint32 hmClimbLadderHalf(int messageNum, const MessageParam &param, Entity *sender);
void setupJumpToRing();
void stJumpToRing1();
void stJumpToRing2();
void stJumpToRing4();
uint32 hmJumpToRing(int messageNum, const MessageParam &param, Entity *sender);
void stHangOnRing();
void stJumpToRing3();
uint32 hmJumpToRing3(int messageNum, const MessageParam &param, Entity *sender);
void stHoldRing3();
uint32 hmHoldRing3(int messageNum, const MessageParam &param, Entity *sender);
void stReleaseRing();
void stLandOnFeet();
uint32 hmLandOnFeet(int messageNum, const MessageParam &param, Entity *sender);
void stPullLeverDown();
void stHoldLeverDown();
void stInsertDisk();
void stWalking();
void stUpdateWalking();
void stStartWalkingDone();
uint32 hmInsertDisk(int messageNum, const MessageParam &param, Entity *sender);
void stMoveObjectSkipTurnFaceObject();
void stMoveObjectSkipTurn();
void stMoveObjectFaceObject();
uint32 hmMoveObjectTurn(int messageNum, const MessageParam &param, Entity *sender);
void evMoveObjectTurnDone();
void stJumpToGrab();
void stJumpToGrabFall();
uint32 hmJumpToGrab(int messageNum, const MessageParam &param, Entity *sender);
void suJumpToGrab();
void stJumpToGrabRelease();
uint32 hmJumpToGrabRelease(int messageNum, const MessageParam &param, Entity *sender);
void stSitInTeleporter();
uint32 hmSitInTeleporter(int messageNum, const MessageParam &param, Entity *sender);
void stSitIdleTeleporter();
void upSitIdleTeleporter();
void stSitIdleTeleporterBlink();
void stSitIdleTeleporterBlinkSecond();
void stTurnToUseInTeleporter();
void stReturnFromUseInTeleporter();
void stGetUpFromTeleporter();
void teleporterAppear(uint32 fileHash);
void teleporterDisappear(uint32 fileHash);
uint32 hmTeleporterAppearDisappear(int messageNum, const MessageParam &param, Entity *sender);
void stClayDoorOpen();
uint32 hmClayDoorOpen(int messageNum, const MessageParam &param, Entity *sender);
void stFallSkipJump();
void suFallSkipJump();
void stMoveObject();
void stContinueMoveObject();
uint32 hmMoveObject(int messageNum, const MessageParam &param, Entity *sender);
void upMoveObject();
void stCloseEyes();
void stTumbleHeadless();
uint32 hmTumbleHeadless(int messageNum, const MessageParam &param, Entity *sender);
void stFetchMatch();
void stLightMatch();
uint32 hmMatch(int messageNum, const MessageParam &param, Entity *sender);
void stHitByBoxingGlove();
uint32 hmHitByBoxingGlove(int messageNum, const MessageParam &param, Entity *sender);
void evHitByBoxingGloveDone();
void stStandIdleSmall();
void stWonderAboutSmall();
void stWonderAboutHalfSmall();
void stWonderAboutAfterSmall();
void stWalkToFrontNoStepSmall();
void stWalkToFrontSmall();
void stWalkToFront2Small();
void stTurnToBackHalfSmall();
void stTurnToBackWalkSmall();
void stTurnToBackSmall();
uint32 hmWalkFrontBackSmall(int messageNum, const MessageParam &param, Entity *sender);
void sub421230();//stGrow??
uint32 handleMessage41F1D0(int messageNum, const MessageParam &param, Entity *sender);
void stJumpToRingVenusFlyTrap();
uint32 hmJumpToRingVenusFlyTrap(int messageNum, const MessageParam &param, Entity *sender);
void stDropFromRing();
void stStandIdleSpecial();
uint32 hmStandIdleSpecial(int messageNum, const MessageParam &param, Entity *sender);
void stPressDoorButton();
uint32 hmPressDoorButton(int messageNum, const MessageParam &param, Entity *sender);
void stSpitOutFall0();
void stSpitOutFall2();
void suFallDown();
void upSpitOutFall();
void stJumpAndFall();
uint32 hmJumpAndFall(int messageNum, const MessageParam &param, Entity *sender);
void stFalling();
void stFallTouchdown();
void stMoveVenusFlyTrap();
void stContinueMovingVenusFlyTrap();
uint32 hmMoveVenusFlyTrap(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmFirstMoveVenusFlyTrap(int messageNum, const MessageParam &param, Entity *sender);
void evMoveVenusFlyTrapDone();
////////////////////////////////////////////////////////////////////////////
void stopWalking();
void spriteUpdate41F250();
void suWalking();
void suAction();
void suLargeStep();
void suUpdateDestX();
void suWalkingOpenDoor();
void spriteUpdate41F300();
void suWalkingTestExit();
uint32 hmLowLevel(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmLowLevelAnimation(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmWalking(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmLever(int messageNum, const MessageParam &param, Entity *sender);
void setKlaymanIdleTable(const KlaymanIdleTableItem *table, int tableCount);
void setKlaymanIdleTable1();
@ -141,134 +365,17 @@ public:
void setSoundFlag(bool value) { _soundFlag = value; }
void stStandIdleSmall();
void stWonderAboutAfterSmall();
void stWonderAboutHalfSmall();
void stWonderAboutSmall();
void stWalkToFrontNoStepSmall();
void stWalkToFront2Small();
void stWalkToFrontSmall();
void stTurnToBackHalfSmall();
void stTurnToBackWalkSmall();
void stTurnToBackSmall();
void stPullCord();
void stReleaseCord();
uint32 hmPullCord(int messageNum, const MessageParam &param, Entity *sender);
void stUseTube();
uint32 hmUseTube(int messageNum, const MessageParam &param, Entity *sender);
void stWalkingExt();
void stStartWalkingExt();
void stJumpToGrab();
void suJumpToGrab();
uint32 hmJumpToGrab(int messageNum, const MessageParam &param, Entity *sender);
void sub421230();//stGrow??
uint32 handleMessage41F1D0(int messageNum, const MessageParam &param, Entity *sender);
void stTurnToUseExt();
void stJumpToGrabFall();
void stJumpToGrabRelease();
uint32 hmJumpToGrabRelease(int messageNum, const MessageParam &param, Entity *sender);
void stDoIdleTeleporterHands();
void stIdleTeleporterHands();
void stDoIdleTeleporterHands2();
void stIdleTeleporterHands2();
void teleporterAppear(uint32 fileHash);
void teleporterDisappear(uint32 fileHash);
uint32 hmTeleporterAppearDisappear(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmShrink(int messageNum, const MessageParam &param, Entity *sender);
void stShrink();
void stStandWonderAbout();
uint32 hmDrinkPotion(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmGrow(int messageNum, const MessageParam &param, Entity *sender);
void stGrow();
void stDrinkPotion();
uint32 hmInsertKey(int messageNum, const MessageParam &param, Entity *sender);
void stInsertKey();
uint32 hmReadNote(int messageNum, const MessageParam &param, Entity *sender);
void stReadNote();
uint32 hmHitByDoor(int messageNum, const MessageParam &param, Entity *sender);
void stHitByDoor();
uint32 hmPeekWallReturn(int messageNum, const MessageParam &param, Entity *sender);
void upPeekWallBlink();
void stPeekWall1();
void stPeekWall2();
void stPeekWallBlink();
void stPeekWallReturn();
void stPullHammerLever();
uint32 hmPullHammerLever(int messageNum, const MessageParam &param, Entity *sender);
void suRidePlatformDown();
void stRidePlatformDown();
void stCrashDown();
void stCrashDownFinished();
void upSpitOutFall();
uint32 hmJumpToRingVenusFlyTrap(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmStandIdleSpecial(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmPressDoorButton(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmMoveVenusFlyTrap(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmFirstMoveVenusFlyTrap(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmHitByBoxingGlove(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmJumpAndFall(int messageNum, const MessageParam &param, Entity *sender);
void suFallDown();
void stJumpToRingVenusFlyTrap();
void stStandIdleSpecial();
void stSpitOutFall0();
void stFalling();
void stSpitOutFall2();
void stFallTouchdown();
void stJumpAndFall();
void stDropFromRing();
void stPressDoorButton();
void stHitByBoxingGlove();
void stHitByBoxingGloveDone();
void stMoveVenusFlyTrap();
void stContinueMovingVenusFlyTrap();
void stMoveVenusFlyTrapDone();
void suFallSkipJump();
void stFallSkipJump();
void upMoveObject();
uint32 hmMatch(int messageNum, const MessageParam &param, Entity *sender);
void stFetchMatch();
void stLightMatch();
uint32 hmMoveObject(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmTumbleHeadless(int messageNum, const MessageParam &param, Entity *sender);
void stMoveObject();
void stContinueMoveObject();
void stTumbleHeadless();
void stCloseEyes();
uint32 hmSpit(int messageNum, const MessageParam &param, Entity *sender);
void stTrySpitIntoPipe();
void spitIntoPipe();
void stTrySpitIntoPipe();
void stContSpitIntoPipe();
uint32 hmSpit(int messageNum, const MessageParam &param, Entity *sender);
void suRidePlatform();
void stRidePlatform();
void stInteractLever();
void suRidePlatform();
void stPullLever();
void stLookLeverDown();
void stWaitLeverDown();
void startWalkingResume(int16 frameIncr);
protected:
Entity *_parentScene;
Sprite *_attachedSprite;
@ -305,6 +412,8 @@ protected:
Sprite *_otherSprite;
int _idleTableNum;
int16 _walkResumeFrameIncr;
int _moveObjectCountdown;
bool _canSpitPipe;
@ -326,77 +435,14 @@ protected:
void sub41CC40(int16 x1, int16 x2);
void sub41CCE0(int16 x);
bool stStartActionFromIdle(AnimationCb callback);
void gotoNextStateExt();
void sub41C770();
void sub41C790();
void stIdlePickEar();
void evIdlePickEarDone();
uint32 hmIdlePickEar(int messageNum, const MessageParam &param, Entity *sender);
void stIdleSpinHead();
uint32 hmIdleSpinHead(int messageNum, const MessageParam &param, Entity *sender);
void stIdleArms();
void evIdleArmsDone();
uint32 hmIdleArms(int messageNum, const MessageParam &param, Entity *sender);
void stIdleChest();
uint32 hmIdleChest(int messageNum, const MessageParam &param, Entity *sender);
void stIdleHeadOff();
uint32 hmIdleHeadOff(int messageNum, const MessageParam &param, Entity *sender);
void startIdleAnimation(uint32 fileHash, AnimationCb callback);
void upIdleAnimation();
void upStandIdle();
void stIdleBlink();
void stStandAround();
uint32 hmStartAction(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmSleeping(int messageNum, const MessageParam &param, Entity *sender);
bool stStartAction(AnimationCb callback3);
void stSneak();
void stWalkingDone();
uint32 hmSneaking(int messageNum, const MessageParam &param, Entity *sender);
void stStartWalking();
uint32 hmStartWalking(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmPickUpGeneric(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmPressButton(int messageNum, const MessageParam &param, Entity *sender);
void stLargeStepDone();
uint32 hmLargeStep(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmTurnToUse(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmPeekWall(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmJumpToRing(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmJumpToRing3(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmHoldRing(int messageNum, const MessageParam &param, Entity *sender);
uint32 handleMessage41DFD0(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmClimbLadderUpDown(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmWalkToFront(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmLandOnFeet(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmTurnToBackToUse(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmPickUpTube(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmSitInTeleporter(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmMoveObjectTurn(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmClayDoorOpen(int messageNum, const MessageParam &param, Entity *sender);
void upSitIdleTeleporter();
uint32 hmInsertDisk(int messageNum, const MessageParam &param, Entity *sender);
void stStartWalkingSmall();
uint32 hmWalkingSmall(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmWalkFrontBackSmall(int messageNum, const MessageParam &param, Entity *sender);
void walkAlongPathPoints();