aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/game/bar_menu.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2016-08-14 15:52:03 -0400
committerPaul Gilbert2016-08-14 15:52:03 -0400
commit8ea436686dc0bd1726831f1648778903896b26c7 (patch)
tree79bcf7b1165faa25e3b374d78ba7363200da73c6 /engines/titanic/game/bar_menu.cpp
parentb670c02835f52673064cce9b025a353ca8fe82ce (diff)
downloadscummvm-rg350-8ea436686dc0bd1726831f1648778903896b26c7.tar.gz
scummvm-rg350-8ea436686dc0bd1726831f1648778903896b26c7.tar.bz2
scummvm-rg350-8ea436686dc0bd1726831f1648778903896b26c7.zip
TITANIC: Implemented CBarMenu and CBarMenuButton classes
Diffstat (limited to 'engines/titanic/game/bar_menu.cpp')
-rw-r--r--engines/titanic/game/bar_menu.cpp70
1 files changed, 63 insertions, 7 deletions
diff --git a/engines/titanic/game/bar_menu.cpp b/engines/titanic/game/bar_menu.cpp
index b24c429c9b..3812a8dab6 100644
--- a/engines/titanic/game/bar_menu.cpp
+++ b/engines/titanic/game/bar_menu.cpp
@@ -24,25 +24,81 @@
namespace Titanic {
-CBarMenu::CBarMenu() : CGameObject(), _fieldBC(0), _fieldC0(0), _fieldC4(6) {
+BEGIN_MESSAGE_MAP(CBarMenu, CGameObject)
+ ON_MESSAGE(PETActivateMsg)
+ ON_MESSAGE(PETDownMsg)
+ ON_MESSAGE(PETUpMsg)
+ ON_MESSAGE(EnterViewMsg)
+ ON_MESSAGE(LeaveViewMsg)
+END_MESSAGE_MAP()
+
+CBarMenu::CBarMenu() : CGameObject(), _barFrameNumber(0), _visibleFlag(false), _numFrames(6) {
}
void CBarMenu::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeNumberLine(_fieldBC, indent);
- file->writeNumberLine(_fieldC0, indent);
- file->writeNumberLine(_fieldC4, indent);
+ file->writeNumberLine(_barFrameNumber, indent);
+ file->writeNumberLine(_visibleFlag, indent);
+ file->writeNumberLine(_numFrames, indent);
CGameObject::save(file, indent);
}
void CBarMenu::load(SimpleFile *file) {
file->readNumber();
- _fieldBC = file->readNumber();
- _fieldC0 = file->readNumber();
- _fieldC4 = file->readNumber();
+ _barFrameNumber = file->readNumber();
+ _visibleFlag = file->readNumber();
+ _numFrames = file->readNumber();
CGameObject::load(file);
}
+bool CBarMenu::PETActivateMsg(CPETActivateMsg *msg) {
+ if (msg->_name == "Television") {
+ _visibleFlag = !_visibleFlag;
+ setVisible(_visibleFlag);
+ loadFrame(_barFrameNumber);
+ }
+
+ return true;
+}
+
+bool CBarMenu::PETDownMsg(CPETDownMsg *msg) {
+ if (_visibleFlag) {
+ if (--_barFrameNumber < 0)
+ _barFrameNumber = _numFrames - 1;
+
+ loadFrame(_barFrameNumber);
+ }
+
+ return true;
+}
+
+bool CBarMenu::PETUpMsg(CPETUpMsg *msg) {
+ if (_visibleFlag) {
+ _barFrameNumber = (_barFrameNumber + 1) % _numFrames;
+ loadFrame(_barFrameNumber);
+ }
+
+ return true;
+}
+
+bool CBarMenu::EnterViewMsg(CEnterViewMsg *msg) {
+ petSetArea(PET_REMOTE);
+ petHighlightGlyph(2);
+ petSetRemoteTarget();
+ setVisible(_visibleFlag);
+ loadFrame(_barFrameNumber);
+
+ return true;
+}
+
+bool CBarMenu::LeaveViewMsg(CLeaveViewMsg *msg) {
+ petClear();
+ _visibleFlag = false;
+ setVisible(false);
+
+ return true;
+}
+
} // End of namespace Titanic