mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-16 15:08:59 +00:00
TITANIC: Added CStarControl message handlers
This commit is contained in:
parent
ed06a1a44e
commit
46ec1a004b
51
engines/titanic/star_control/error_code.h
Normal file
51
engines/titanic/star_control/error_code.h
Normal 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 */
|
@ -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");
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user