TITANIC: Added CStarControl message handlers

This commit is contained in:
Paul Gilbert 2016-07-02 18:46:54 -04:00
parent ed06a1a44e
commit 46ec1a004b
5 changed files with 145 additions and 0 deletions

View File

@ -0,0 +1,51 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef TITANIC_ERROR_CODE_H
#define TITANIC_ERROR_CODE_H
namespace Titanic {
class CErrorCode {
private:
int _value;
public:
CErrorCode() : _value(0) {}
/**
* Sets the error code
*/
void set() { _value = 1; }
/**
* Gets the error code and resets it
*/
int get() {
int result = _value;
_value = 0;
return result;
}
};
} // End of namespace Titanic
#endif /* TITANIC_ERROR_CODE_H */

View File

@ -22,9 +22,17 @@
#include "titanic/support/screen_manager.h"
#include "titanic/star_control/star_control.h"
#include "titanic/star_control/error_code.h"
namespace Titanic {
BEGIN_MESSAGE_MAP(CStarControl, CGameObject)
ON_MESSAGE(MouseMoveMsg)
ON_MESSAGE(MouseButtonDownMsg)
ON_MESSAGE(KeyCharMsg)
ON_MESSAGE(FrameMsg)
END_MESSAGE_MAP()
CStarControl::CStarControl() : _fieldBC(0), _field80B0(0),
_starRect(20, 10, 620, 350) {
}
@ -63,6 +71,53 @@ void CStarControl::draw(CScreenManager *screenManager) {
_view.draw(screenManager);
}
bool CStarControl::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (_visible && _starRect.contains(msg->_mousePos)) {
_view.MouseButtonDownMsg(0, Point(msg->_mousePos.x - 20,
msg->_mousePos.y - 10));
return true;
} else {
return false;
}
}
bool CStarControl::MouseMoveMsg(CMouseMoveMsg *msg) {
if (_visible && _starRect.contains(msg->_mousePos)) {
_view.MouseMoveMsg(0, Point(msg->_mousePos.x - 20,
msg->_mousePos.y - 10));
makeDirty();
return true;
} else {
return false;
}
}
bool CStarControl::KeyCharMsg(CKeyCharMsg *msg) {
if (_visible)
_view.KeyCharMsg(msg->_key);
return false;
}
bool CStarControl::FrameMsg(CFrameMsg *msg) {
if (_visible) {
Point pt = getMousePos();
if (_starRect.contains(pt))
_view.MouseMoveMsg(0, pt);
newFrame();
makeDirty();
return true;
} else {
return false;
}
}
void CStarControl::newFrame() {
// TODO
}
void CStarControl::fn3() {
warning("CStarControl::fn3");
}

View File

@ -30,12 +30,22 @@
namespace Titanic {
class CStarControl : public CGameObject {
DECLARE_MESSAGE_MAP
bool MouseButtonDownMsg(CMouseButtonDownMsg *msg);
bool MouseMoveMsg(CMouseMoveMsg *msg);
bool KeyCharMsg(CKeyCharMsg *msg);
bool FrameMsg(CFrameMsg *msg);
private:
int _fieldBC;
CStarControlSub1 _sub1;
CStarView _view;
Rect _starRect;
int _field80B0;
private:
/**
* Called for ever new game frame
*/
void newFrame();
public:
CLASSDEF
CStarControl();

View File

@ -93,4 +93,17 @@ void CStarView::draw(CScreenManager *screenManager) {
}
}
void CStarView::MouseButtonDownMsg(int unused, const Point &pt) {
// TODO
}
void CStarView::MouseMoveMsg(int unused, const Point &pt) {
// TODO
}
CErrorCode CStarView::KeyCharMsg(int key) {
// TODO
return CErrorCode();
}
} // End of namespace Titanic

View File

@ -28,6 +28,7 @@
#include "titanic/star_control/star_control_sub12.h"
#include "titanic/star_control/star_control_sub13.h"
#include "titanic/star_control/surface_fader.h"
#include "titanic/star_control/error_code.h"
namespace Titanic {
@ -72,6 +73,21 @@ public:
* Allows the item to draw itself
*/
void draw(CScreenManager *screenManager);
/**
* Handles mouse down messages
*/
void MouseButtonDownMsg(int unused, const Point &pt);
/**
* Handles mouse move messages
*/
void MouseMoveMsg(int unused, const Point &pt);
/**
* Handles keyboard messages
*/
CErrorCode KeyCharMsg(int key);
};
} // End of namespace Titanic