diff options
author | Paul Gilbert | 2016-08-13 15:09:57 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-08-13 15:09:57 -0400 |
commit | 786f2ca4487ea852bf3f4b95dbafc8499ed526cb (patch) | |
tree | 7369c693a1f66272e2f8c9f9f64cc8b6ba0fd9dd | |
parent | bbc9e072271e787dd151f24f4b4c43a0528c5ee3 (diff) | |
download | scummvm-rg350-786f2ca4487ea852bf3f4b95dbafc8499ed526cb.tar.gz scummvm-rg350-786f2ca4487ea852bf3f4b95dbafc8499ed526cb.tar.bz2 scummvm-rg350-786f2ca4487ea852bf3f4b95dbafc8499ed526cb.zip |
TITANIC: Implementing CBarbot game object class
-rw-r--r-- | engines/titanic/game/announce.cpp | 2 | ||||
-rw-r--r-- | engines/titanic/messages/messages.h | 2 | ||||
-rw-r--r-- | engines/titanic/npcs/barbot.cpp | 596 | ||||
-rw-r--r-- | engines/titanic/npcs/barbot.h | 139 |
4 files changed, 465 insertions, 274 deletions
diff --git a/engines/titanic/game/announce.cpp b/engines/titanic/game/announce.cpp index 04e7a84271..3b7dbe28cb 100644 --- a/engines/titanic/game/announce.cpp +++ b/engines/titanic/game/announce.cpp @@ -104,7 +104,7 @@ bool CAnnounce::TimerMsg(CTimerMsg *msg) { } else if (msg->_timerCtr == 2) { CParrotSpeakMsg speakMsg; - speakMsg._value1 = "Announcements"; + speakMsg._target = "Announcements"; speakMsg.execute("PerchedParrot"); } diff --git a/engines/titanic/messages/messages.h b/engines/titanic/messages/messages.h index 0935689db7..72da66feef 100644 --- a/engines/titanic/messages/messages.h +++ b/engines/titanic/messages/messages.h @@ -278,7 +278,7 @@ MESSAGE1(CNutPuzzleMsg, CString, value, ""); MESSAGE1(COnSummonBotMsg, int, value, 0); MESSAGE0(COpeningCreditsMsg); MESSAGE1(CPanningAwayFromParrotMsg, int, value, 0); -MESSAGE2(CParrotSpeakMsg, CString, value1, "", CString, value2, ""); +MESSAGE2(CParrotSpeakMsg, CString, target, "", CString, action, ""); MESSAGE2(CParrotTriesChickenMsg, int, value1, 0, int, value2, 0); MESSAGE1(CPhonographPlayMsg, int, value, 0); MESSAGE0(CPhonographReadyToPlayMsg); diff --git a/engines/titanic/npcs/barbot.cpp b/engines/titanic/npcs/barbot.cpp index 079e8fe10b..dace1741fa 100644 --- a/engines/titanic/npcs/barbot.cpp +++ b/engines/titanic/npcs/barbot.cpp @@ -21,6 +21,7 @@ */ #include "titanic/npcs/barbot.h" +#include "titanic/titanic.h" namespace Titanic { @@ -41,8 +42,22 @@ BEGIN_MESSAGE_MAP(CBarbot, CTrueTalkNPC) ON_MESSAGE(LoadSuccessMsg) ON_MESSAGE(MovieFrameMsg) ON_MESSAGE(EnterRoomMsg) + ON_MESSAGE(TimerMsg) END_MESSAGE_MAP() +CBarbot::FrameRanges::FrameRanges() : Common::Array<FrameRange>() { + resize(60); + Common::SeekableReadStream *stream = g_vm->_filesManager->getResource("FRAMES/BARBOT"); + for (int idx = 0; idx < 60; ++idx) { + (*this)[idx]._startFrame = stream->readUint32LE(); + (*this)[idx]._endFrame = stream->readUint32LE(); + } + + delete stream; +} + +/*------------------------------------------------------------------------*/ + CBarbot::CBarbot() : CTrueTalkNPC() { _field108 = 0; _field10C = 0; @@ -58,8 +73,8 @@ CBarbot::CBarbot() : CTrueTalkNPC() { _field134 = 0; _field138 = 0; _field13C = -1; - _field140 = 30; - _field144 = -1; + _volume = 30; + _frameNum = -1; _field148 = -1; _field14C = 0; _field150 = 0; @@ -67,125 +82,6 @@ CBarbot::CBarbot() : CTrueTalkNPC() { _field158 = -1; _field15C = 0; _field160 = 0; - _field164 = 558; - _field168 = 585; - _field16C = 659; - _field170 = 692; - _field174 = 802; - _field178 = 816; - _field17C = 1941; - _field180 = 1977; - _field184 = 1901; - _field188 = 1941; - _field18C = 810; - _field190 = 816; - _field194 = 857; - _field198 = 865; - _field19C = 842; - _field1A0 = 857; - _field1A4 = 821; - _field1A8 = 842; - _field1AC = 682; - _field1B0 = 692; - _field1B4 = 1977; - _field1B8 = 2018; - _field1BC = 2140; - _field1C0 = 2170; - _field1C4 = 2101; - _field1C8 = 2139; - _field1CC = 2018; - _field1D0 = 2099; - _field1D4 = 1902; - _field1D8 = 2015; - _field1E0 = 1811; - _field1E4 = 1901; - _field1E8 = 1810; - _field1EC = 1703; - _field1F0 = 1750; - _field1F4 = 1681; - _field1F8 = 1702; - _field1FC = 1642; - - _field200 = 1702; - _field204 = 1571; - _field208 = 1641; - _field20C = 1499; - _field210 = 1570; - _field214 = 1403; - _field218 = 1463; - _field21C = 1464; - _field220 = 1499; - _field224 = 1288; - _field228 = 1295; - _field22C = 1266; - _field230 = 1287; - _field234 = 1245; - _field238 = 1265; - _field23C = 1208; - _field240 = 1244; - _field244 = 1171; - _field248 = 1207; - _field24C = 1120; - _field250 = 1170; - _field254 = 1092; - _field258 = 1120; - _field25C = 1092; - _field260 = 1092; - _field264 = 1044; - _field268 = 1091; - _field26C = 1011; - _field270 = 1043; - _field274 = 1001; - _field278 = 1010; - _field27C = 985; - _field280 = 1001; - _field284 = 927; - _field288 = 984; - _field28C = 912; - _field290 = 926; - _field294 = 898; - _field298 = 906; - _field29C = 802; - _field2A0 = 896; - _field2A4 = 865; - _field2A8 = 896; - _field2AC = 842; - _field2B0 = 865; - _field2B4 = 816; - _field2B8 = 842; - _field2BC = 802; - _field2C0 = 842; - _field2C4 = 740; - _field2C8 = 740; - _field2CC = 740; - _field2D0 = 692; - _field2D4 = 610; - _field2D8 = 558; - _field2E0 = 610; - _field2E4 = 500; - _field2E8 = 558; - _field2EC = 467; - _field2F0 = 500; - _field2F4 = 421; - _field2F8 = 466; - _field2FC = 349; - _field300 = 306; - _field304 = 306; - _field308 = 348; - _field30C = 305; - _field310 = 306; - _field314 = 281; - _field318 = 305; - _field31C = 202; - _field320 = 281; - _field324 = 182; - _field328 = 202; - _field32C = 165; - _field330 = 182; - _field334 = 96; - _field338 = 165; - _field33C = 0; - _field340 = 95; } void CBarbot::save(SimpleFile *file, int indent) { @@ -206,8 +102,8 @@ void CBarbot::save(SimpleFile *file, int indent) { file->writeNumberLine(_field134, indent); file->writeNumberLine(_field138, indent); file->writeNumberLine(_field13C, indent); - file->writeNumberLine(_field140, indent); - file->writeNumberLine(_field144, indent); + file->writeNumberLine(_volume, indent); + file->writeNumberLine(_frameNum, indent); file->writeNumberLine(_field148, indent); file->writeNumberLine(_field14C, indent); file->writeNumberLine(_field150, indent); @@ -237,8 +133,8 @@ void CBarbot::load(SimpleFile *file) { _field134 = file->readNumber(); _field138 = file->readNumber(); _field13C = file->readNumber(); - _field140 = file->readNumber(); - _field144 = file->readNumber(); + _volume = file->readNumber(); + _frameNum = file->readNumber(); _field148 = file->readNumber(); _field14C = file->readNumber(); _field150 = file->readNumber(); @@ -251,28 +147,234 @@ void CBarbot::load(SimpleFile *file) { } bool CBarbot::ActMsg(CActMsg *msg) { - // TODO - return false; + if (msg->_action == "Vodka") { + if (!_field12C) { + playRange(_frames[47], MOVIE_NOTIFY_OBJECT); + playRange(_frames[46]); + playRange(_frames[40]); + playRange(_frames[7]); + playRange(_frames[13]); + playRange(_frames[8]); + playRange(_frames[40]); + playRange(_frames[7]); + playRange(_frames[13]); + playRange(_frames[8]); + playRange(_frames[7]); + playRange(_frames[40]); + playRange(_frames[13]); + playRange(_frames[40]); + playRange(_frames[7]); + playRange(_frames[8]); + playRange(_frames[13]); + playRange(_frames[40], MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + _frameNum = _frames[40]._endFrame; + } + } else if (msg->_action == "GiveBackVisCentre") { + if (_field134) { + playRange(_frames[27]); + _frameNum = _frames[27]._endFrame; + } + } else if (msg->_action == "Bird") { + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 2; + statusMsg.execute("PickUpGlass"); + _field158 = 3; + + playRange(_frames[32], MOVIE_NOTIFY_OBJECT); + playRange(_frames[30], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[30]._endFrame; + + if (!_field114 || !_field118 || !_field12C) { + playRange(_frames[42], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[42]._endFrame; + } + + CActMsg actMsg("InTitilator"); + actMsg.execute("BeerGlass"); + } else if (msg->_action == "None") { + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 2; + statusMsg.execute("PickUpGlass"); + _field158 = 0; + + playRange(_frames[55], MOVIE_NOTIFY_OBJECT); + playRange(_frames[54], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[54]._endFrame; + } else if (msg->_action == "Mustard" || msg->_action == "Tomato") { + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 2; + statusMsg.execute("PickUpGlass"); + _field158 = 1; + + playRange(_frames[55], MOVIE_NOTIFY_OBJECT); + playRange(_frames[54], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[54]._endFrame; + + CActMsg actMsg("InTitilator"); + actMsg.execute("BeerGlass"); + } else if (msg->_action == "Fruit") { + if (!_field114) { + CActMsg visibleMsg; + visibleMsg.execute("LemonOnBar"); + startTalking(this, 250576); + _field114 = 1; + + playRange(_frames[36], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[36]._endFrame; + + if (!_field11C || !_field118 || _field12C) { + playRange(_frames[43], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[43]._endFrame; + } + + CRemoveFromGameMsg removeMsg; + removeMsg.execute("Lemon"); + } + } else if (msg->_action == "CrushedTV") { + if (!_field118) { + CVisibleMsg visibleMsg; + visibleMsg.execute("TVOnBar"); + startTalking(this, 250584); + _field160 = 1; + + playSound("c#5.wav", _volume); + playRange(_frames[35], MOVIE_NOTIFY_OBJECT); + playRange(_frames[34]); + playRange(_frames[33], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[33]._endFrame; + + if (!_field11C || !_field114 || !_field12C) { + playRange(_frames[41], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[41]._endFrame; + } + + CRemoveFromGameMsg removeMsg; + removeMsg.execute("CrushedTV"); + } + } else if (msg->_action == "PlayerTakesGlass") { + playRange(_frames[53]); + _field124 = 0; + + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 0; + statusMsg.execute("PickUpGlass"); + } else if (msg->_action == "PlayerTakesVisCentre") { + _field128 = 0; + loadFrame(0); + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 0; + statusMsg.execute("PickUpVisCentre"); + } else if (msg->_action == "BellRing1") { + startTalking(this, 251105); + } else if (msg->_action == "BellRing2") { + startTalking(this, 251107); + } else if (msg->_action == "BellRing3") { + startTalking(this, 250285); + } else if (msg->_action == "GoRingBell") { + startTalking(this, 250285); + } else if (msg->_action == "ClickOnVision") { + startTalking(this, 251858); + } + + return true; } bool CBarbot::EnterViewMsg(CEnterViewMsg *msg) { - // TODO - return false; + // I think this is a remnant of early debugging code + if (getName() != "Barbot") + playMovie(MOVIE_REPEAT); + + return true; +} + +bool CBarbot::EnterRoomMsg(CEnterRoomMsg *msg) { + // I think this is a remnant of early debugging code + if (getName() != "Barbot") + addTimer(g_vm->getRandomNumber(20000)); + + return true; } bool CBarbot::TurnOn(CTurnOn *msg) { - // TODO - return false; + if (!_fieldC4) { + _field13C = -1; + setVisible(true); + + CGameObject *glass = findInRoom("BeerGlass"); + if (!_field130) { + CVisibleMsg visibleMsg(false); + visibleMsg.execute("BarShelfVisCentre"); + } + + if (glass && !_field11C) { + playRange(_frames[38], MOVIE_NOTIFY_OBJECT); + playRange(_frames[58], MOVIE_NOTIFY_OBJECT); + playRange(_frames[57], MOVIE_NOTIFY_OBJECT); + playRange(_frames[56], MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + _frameNum = _frames[56]._endFrame; + } else { + playRange(_frames[38]); + playRange(_frames[23], MOVIE_NOTIFY_OBJECT); + playRange(_frames[21], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[21]._endFrame; + + switch (g_vm->getRandomNumber(2)) { + case 0: + playRange(_frames[10], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[10]._endFrame; + break; + case 1: + playRange(_frames[12], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[12]._endFrame; + break; + default: + break; + } + _field124 = 0; + } + + _fieldC4 = 1; + ++_v0; + petSetArea(PET_CONVERSATION); + endTalking(this, true); + } + + return true; } bool CBarbot::TurnOff(CTurnOff *msg) { - // TODO - return false; + if (_fieldC4) { + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 0; + statusMsg.execute("PickUpGlass"); + statusMsg.execute("PickUpVisCentre"); + + if (_field124) { + playRange(_frames[17], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[17]._endFrame; + _field124 = 0; + } + + if (_field128) { + playRange(_frames[28], MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + _frameNum = _frames[28]._endFrame; + _field128 = 0; + _field134 = 1; + } + + playRange(_frames[29], MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + movieEvent(_frames[29]._startFrame); + _frameNum = _frames[29]._endFrame; + _fieldC4 = 0; + } + + return true; } bool CBarbot::LeaveViewMsg(CLeaveViewMsg *msg) { - // TODO - return false; + CTurnOff offMsg; + offMsg.execute(this); + return true; } bool CBarbot::MovieEndMsg(CMovieEndMsg *msg) { @@ -281,43 +383,233 @@ bool CBarbot::MovieEndMsg(CMovieEndMsg *msg) { } bool CBarbot::TrueTalkSelfQueueAnimSetMsg(CTrueTalkSelfQueueAnimSetMsg *msg) { - // TODO - return false; + return true; } bool CBarbot::TrueTalkQueueUpAnimSetMsg(CTrueTalkQueueUpAnimSetMsg *msg) { - // TODO - return false; + return true; } bool CBarbot::TrueTalkGetStateValueMsg(CTrueTalkGetStateValueMsg *msg) { - // TODO - return false; + switch (msg->_stateNum) { + case 2: + if (!_field130) { + if (_field15C) { + msg->_stateVal = _field134 | 1; + return true; + } + } + + msg->_stateVal = _field134; + break; + + case 3: + msg->_stateVal = 0; + if (_field114) + msg->_stateVal = 1; + if (_field11C) + msg->_stateVal |= 4; + if (_field118) + msg->_stateVal |= 8; + if (_field12C) + msg->_stateVal |= 2; + break; + + case 9: + msg->_stateVal = _field15C ? 1 : 0; + break; + + default: + break; + } + + return true; } bool CBarbot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) { - // TODO - return false; + switch (msg->_action) { + case 6: + if (_field134) { + playRange(_frames[27], MOVIE_NOTIFY_OBJECT); + _frameNum = _frames[27]._endFrame; + } else if (!_field130 && _field15C) { + playRange(_frames[45], MOVIE_NOTIFY_OBJECT); + playRange(_frames[44], MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + _frameNum = _frames[44]._endFrame; + } + break; + + case 7: { + CActMsg actMsg("Vodka"); + actMsg.execute(this); + break; + } + + case 30: + _field11C = 1; + break; + + default: + break; + } + + return true; } bool CBarbot::FrameMsg(CFrameMsg *msg) { - // TODO - return false; + if (!_fieldC4 || _frameNum != -1 || _field148 != -1 + || (msg->_ticks - _field14C) <= 5000 + || (msg->_ticks - _field150) <= 1000) + return true; + + if (!_field15C) { + if (++_field154 > 2) { + playRange(_frames[0]); + playRange(_frames[1], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[1]._endFrame; + _field154 = 0; + + return true; + } + + switch (g_vm->getRandomNumber(5)) { + case 0: + playRange(_frames[4], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[4]._endFrame; + break; + + case 1: + playRange(_frames[10], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[10]._endFrame; + break; + + case 2: + playRange(_frames[7], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[7]._endFrame; + break; + + case 3: + playRange(_frames[0]); + playRange(_frames[1], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[1]._endFrame; + break; + + case 4: + playRange(_frames[3], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[3]._endFrame; + break; + + case 5: + if (!_field160 && !_field128) { + playRange(_frames[15], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[15]._endFrame; + } + break; + + default: + break; + } + } else { + static const int CASES[23] = { + 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7 + }; + switch (CASES[g_vm->getRandomNumber(22)]) { + case 0: + playRange(_frames[13], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[13]._endFrame; + break; + + case 1: + playRange(_frames[4], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[4]._endFrame; + break; + + case 2: + playRange(_frames[8], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[8]._endFrame; + break; + + case 3: + playRange(_frames[7], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[7]._endFrame; + break; + + case 4: + playRange(_frames[10], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[10]._endFrame; + break; + + case 5: + playRange(_frames[2], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[2]._endFrame; + break; + + case 6: + playRange(_frames[6], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[6]._endFrame; + break; + + default: + playRange(_frames[3], MOVIE_NOTIFY_OBJECT); + _field148 = _frames[3]._endFrame; + break; + } + } + + return true; } bool CBarbot::LoadSuccessMsg(CLoadSuccessMsg *msg) { - // TODO - return false; + _field14C = _field150 = g_vm->_events->getTicksCount(); + _frameNum = -1; + _field148 = -1; + + return true; } bool CBarbot::MovieFrameMsg(CMovieFrameMsg *msg) { - // TODO - return false; + if (msg->_frameNumber == _frames[29]._startFrame) { + playSound("c#2.wav", _volume); + + } else if (msg->_frameNumber == _frames[55]._startFrame + || msg->_frameNumber == _frames[32]._startFrame) { + CStatusChangeMsg statusMsg; + statusMsg._newStatus = 0; + statusMsg.execute("PickUpGlass"); + + if (_field158 == 0) { + startTalking(this, 250574); + } else if (_field158 > 0 && _field158 <= 3) { + startTalking(this, 250580); + petSetArea(PET_CONVERSATION); + } + + _field158 = -1; + + } else if (msg->_frameNumber == _frames[36]._startFrame) { + CVisibleMsg visibleMsg(false); + visibleMsg.execute("LemonOnBar"); + + } else if (msg->_frameNumber == _frames[35]._startFrame) { + CVisibleMsg visibleMsg(false); + visibleMsg.execute("TVOnBar"); + } + + return true; } -bool CBarbot::EnterRoomMsg(CEnterRoomMsg *msg) { - // TODO - return false; +bool CBarbot::TimerMsg(CTimerMsg *msg) { + if (!_fieldC4 && compareRoomNameTo("Bar")) { + CParrotSpeakMsg speakMsg("Barbot", "AskForDrink"); + speakMsg.execute("PerchedParrot"); + addTimer(10000 + g_vm->getRandomNumber(20000)); + } + + return true; +} + +void CBarbot::playRange(const FrameRange &range, uint flags) { + playMovie(range._startFrame, range._endFrame, flags); } } // End of namespace Titanic diff --git a/engines/titanic/npcs/barbot.h b/engines/titanic/npcs/barbot.h index 123e39afed..2bd4cb2f1e 100644 --- a/engines/titanic/npcs/barbot.h +++ b/engines/titanic/npcs/barbot.h @@ -29,6 +29,16 @@ namespace Titanic { class CBarbot : public CTrueTalkNPC { + struct FrameRange { + int _startFrame; + int _endFrame; + FrameRange() : _startFrame(0), _endFrame(0) {} + }; + class FrameRanges : public Common::Array<FrameRange> { + public: + FrameRanges(); + }; + DECLARE_MESSAGE_MAP; bool ActMsg(CActMsg *msg); bool EnterViewMsg(CEnterViewMsg *msg); @@ -44,9 +54,11 @@ class CBarbot : public CTrueTalkNPC { bool LoadSuccessMsg(CLoadSuccessMsg *msg); bool MovieFrameMsg(CMovieFrameMsg *msg); bool EnterRoomMsg(CEnterRoomMsg *msg); + bool TimerMsg(CTimerMsg *msg); private: static int _v0; private: + FrameRanges _frames; int _field108; int _field10C; int _field110; @@ -61,8 +73,8 @@ private: int _field134; int _field138; int _field13C; - int _field140; - int _field144; + int _volume; + int _frameNum; int _field148; int _field14C; int _field150; @@ -70,124 +82,11 @@ private: int _field158; int _field15C; int _field160; - int _field164; - int _field168; - int _field16C; - int _field170; - int _field174; - int _field178; - int _field17C; - int _field180; - int _field184; - int _field188; - int _field18C; - int _field190; - int _field194; - int _field198; - int _field19C; - int _field1A0; - int _field1A4; - int _field1A8; - int _field1AC; - int _field1B0; - int _field1B4; - int _field1B8; - int _field1BC; - int _field1C0; - int _field1C4; - int _field1C8; - int _field1CC; - int _field1D0; - int _field1D4; - int _field1D8; - int _field1E0; - int _field1E4; - int _field1E8; - int _field1EC; - int _field1F0; - int _field1F4; - int _field1F8; - int _field1FC; - int _field200; - int _field204; - int _field208; - int _field20C; - int _field210; - int _field214; - int _field218; - int _field21C; - int _field220; - int _field224; - int _field228; - int _field22C; - int _field230; - int _field234; - int _field238; - int _field23C; - int _field240; - int _field244; - int _field248; - int _field24C; - int _field250; - int _field254; - int _field258; - int _field25C; - int _field260; - int _field264; - int _field268; - int _field26C; - int _field270; - int _field274; - int _field278; - int _field27C; - int _field280; - int _field284; - int _field288; - int _field28C; - int _field290; - int _field294; - int _field298; - int _field29C; - int _field2A0; - int _field2A4; - int _field2A8; - int _field2AC; - int _field2B0; - int _field2B4; - int _field2B8; - int _field2BC; - int _field2C0; - int _field2C4; - int _field2C8; - int _field2CC; - int _field2D0; - int _field2D4; - int _field2D8; - int _field2E0; - int _field2E4; - int _field2E8; - int _field2EC; - int _field2F0; - int _field2F4; - int _field2F8; - int _field2FC; - int _field300; - int _field304; - int _field308; - int _field30C; - int _field310; - int _field314; - int _field318; - int _field31C; - int _field320; - int _field324; - int _field328; - int _field32C; - int _field330; - int _field334; - int _field338; - int _field33C; - int _field340; +private: + /** + * Plays a given range of movie frames + */ + void playRange(const FrameRange &range, uint flags = 0); public: CLASSDEF; CBarbot(); |