aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2015-01-12 00:04:38 +0100
committerStrangerke2015-01-12 00:04:38 +0100
commitec381ae36439ba151c9b904e1139dba4b2b313c2 (patch)
treed19e652de49a6ee84006649dbdf17f931f29beef
parent8249de3d44eee83ebd2f638692b53842bda550fe (diff)
downloadscummvm-rg350-ec381ae36439ba151c9b904e1139dba4b2b313c2.tar.gz
scummvm-rg350-ec381ae36439ba151c9b904e1139dba4b2b313c2.tar.bz2
scummvm-rg350-ec381ae36439ba151c9b904e1139dba4b2b313c2.zip
ACCESS: MM - Start implementing MM dialog box, split cmdConverse in two (WIP)
-rw-r--r--engines/access/access.cpp4
-rw-r--r--engines/access/access.h8
-rw-r--r--engines/access/bubble_box.cpp7
-rw-r--r--engines/access/bubble_box.h3
-rw-r--r--engines/access/scripts.cpp51
-rw-r--r--engines/access/scripts.h4
6 files changed, 66 insertions, 11 deletions
diff --git a/engines/access/access.cpp b/engines/access/access.cpp
index af3b2cc089..adcb5facd6 100644
--- a/engines/access/access.cpp
+++ b/engines/access/access.cpp
@@ -55,8 +55,6 @@ AccessEngine::AccessEngine(OSystem *syst, const AccessGameDescription *gameDesc)
_currentMan = 0;
_currentManOld = -1;
_converseMode = 0;
- _startAboutBox = 0;
- _startTravelBox = 0;
_numAnimTimers = 0;
_startup = 0;
_currentCharFlag = false;
@@ -99,7 +97,7 @@ AccessEngine::AccessEngine(OSystem *syst, const AccessGameDescription *gameDesc)
STARTTRAVELITEM = STARTTRAVELBOX = 0;
for (int i = 0; i < 16; i++)
ASK[i];
- _startAboutItem = 0;
+ _startAboutItem = _startAboutBox = 0;
_vidEnd = false;
}
diff --git a/engines/access/access.h b/engines/access/access.h
index 3d839f64a3..94e27e83c1 100644
--- a/engines/access/access.h
+++ b/engines/access/access.h
@@ -180,8 +180,6 @@ public:
int _playerDataCount;
int _currentManOld;
int _converseMode;
- int _startAboutBox;
- int _startTravelBox;
bool _currentCharFlag;
bool _boxSelect;
int _scale;
@@ -210,11 +208,17 @@ public:
uint32 _newDate;
int _flags[256];
+ // Fields used by MM
+ // TODO: Refactor
int TRAVEL[60];
int STARTTRAVELITEM;
int STARTTRAVELBOX;
int ASK[16];
int _startAboutItem;
+ int _startAboutBox;
+ int BOXDATASTART;
+ int BOXSELECTY;
+ //
bool _vidEnd;
bool _clearSummaryFlag;
diff --git a/engines/access/bubble_box.cpp b/engines/access/bubble_box.cpp
index 7ecba7b027..ec6a3b18a3 100644
--- a/engines/access/bubble_box.cpp
+++ b/engines/access/bubble_box.cpp
@@ -26,7 +26,7 @@
namespace Access {
- BubbleBox::BubbleBox(AccessEngine *vm, Access::BoxType type, int x, int y, int w, int h, int val1, int val2, int val3, int val4, Common::String title) : Manager(vm) {
+BubbleBox::BubbleBox(AccessEngine *vm, Access::BoxType type, int x, int y, int w, int h, int val1, int val2, int val3, int val4, Common::String title) : Manager(vm) {
_type = type;
_bounds = Common::Rect(x, y, x + w, y + h);
_bubbleDisplStr = title;
@@ -279,4 +279,9 @@ void BubbleBox::doBox(int item, int box) {
delete icons;
}
+int BubbleBox::doBox_v1(int item, int box, int &type) {
+ warning("TODO: dobox_v1");
+ return -1;
+}
+
} // End of namespace Access
diff --git a/engines/access/bubble_box.h b/engines/access/bubble_box.h
index 8bfbc40e0c..f2ec3a27ac 100644
--- a/engines/access/bubble_box.h
+++ b/engines/access/bubble_box.h
@@ -82,6 +82,9 @@ public:
void drawBubble(int index);
void doBox(int item, int box);
+
+ int doBox_v1(int item, int box, int &type);
+ void getList() { warning("TODO: getList"); } // TODO: Check if implementation is useful
};
} // End of namespace Access
diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp
index 440ae5e3cc..a50509dcd6 100644
--- a/engines/access/scripts.cpp
+++ b/engines/access/scripts.cpp
@@ -38,6 +38,9 @@ Scripts::Scripts(AccessEngine *vm) : Manager(vm) {
_charsOrg = Common::Point(0, 0);
_texsOrg = Common::Point(0, 0);
setOpcodes();
+
+ for (int i = 0; i < 60; i++)
+ TMPLPTR[i] = 0;
}
Scripts::~Scripts() {
@@ -392,8 +395,8 @@ void Scripts::cmdNewRoom() {
cmdRetPos();
}
-void Scripts::cmdConverse() {
- _vm->_conversation = _data->readUint16LE();
+void Scripts::converse1(int val) {
+ _vm->_conversation = val;
_vm->_room->clearRoom();
_vm->freeChar();
_vm->_char->loadChar(_vm->_conversation);
@@ -409,6 +412,11 @@ void Scripts::cmdConverse() {
}
}
+void Scripts::cmdConverse() {
+ int val = _data->readUint16LE();
+ converse1(val);
+}
+
void Scripts::cmdCheckFrame() {
int id = _data->readUint16LE();
Animation *anim = _vm->_animation->findAnimation(id);
@@ -475,8 +483,7 @@ void Scripts::cmdSetAbout() {
int idx = _data->readByte();
int val = _data->readByte();
_vm->ASK[idx] = val;
- _vm->_startAboutBox = 0;
- _vm->_startAboutItem = 0;
+ _vm->_startAboutBox = _vm->_startAboutItem = 0;
}
void Scripts::cmdSetTimer() {
@@ -609,7 +616,41 @@ void Scripts::cmdRemoveLast() {
}
void Scripts::cmdDoTravel() {
- error("TODO: DEMO - cmdDoTravel");
+ while (true) {
+ _vm->_travelBox->getList();
+ int type = 0;
+ int boxX = _vm->_travelBox->doBox_v1(_vm->STARTTRAVELITEM, _vm->STARTTRAVELBOX, type);
+ _vm->STARTTRAVELITEM = _vm->BOXDATASTART;
+ _vm->STARTTRAVELBOX = _vm->BOXSELECTY;
+
+ if (boxX == -1)
+ type = 2;
+
+ if (type != 2) {
+ int idx = TMPLPTR[boxX];
+ warning("TODO: if (_byte1EEB5[idx] != _byte26CB5) {");
+ // _vm->_bubbleBox->_bubbleTitle = "TRAVEL";
+ // _vm->_scripts->printString("YOU CAN'T GET THERE FROM HERE.");
+ // continue;
+ // }
+ if (_vm->_player->_roomNumber != idx) {
+ if (Martian::TRAVEL_POS[idx][0] == -1) {
+ _vm->_player->_roomNumber = idx;
+ _vm->_room->_conFlag = true;
+ _vm->_scripts->converse1(Martian::TRAVEL_POS[idx][1]);
+ return;
+ }
+ _vm->_player->_rawPlayer = Common::Point(Martian::TRAVEL_POS[idx][0], Martian::TRAVEL_POS[idx][1]);
+ cmdRetPos();
+ return;
+ }
+ }
+
+ if (_vm->_player->_roomNumber == -1)
+ continue;
+
+ return;
+ }
}
void Scripts::cmdCheckAbout() {
diff --git a/engines/access/scripts.h b/engines/access/scripts.h
index abb8e5a80c..d9715afddf 100644
--- a/engines/access/scripts.h
+++ b/engines/access/scripts.h
@@ -44,6 +44,8 @@ private:
void charLoop();
void printWatch();
+ void converse1(int val);
+
protected:
Common::SeekableReadStream *_data;
ScriptMethodPtr COMMAND_LIST[100];
@@ -143,6 +145,8 @@ public:
int _choice;
int32 _choiceStart;
Common::Point _charsOrg, _texsOrg;
+
+ int TMPLPTR[60];
public:
Scripts(AccessEngine *vm);