From 2267c5eb4c5addecbf0012495f84ece6d6df835d Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 19 Jun 2016 16:21:49 -0400 Subject: TITANIC: Beginnings of CCreditText class --- engines/titanic/core/game_object.cpp | 23 ++++++++- engines/titanic/core/game_object.h | 20 +++++++- engines/titanic/module.mk | 1 + engines/titanic/support/credit_text.cpp | 63 +++++++++++++++++++++++ engines/titanic/support/credit_text.h | 90 +++++++++++++++++++++++++++++++++ engines/titanic/titanic.cpp | 2 + 6 files changed, 195 insertions(+), 4 deletions(-) create mode 100644 engines/titanic/support/credit_text.cpp create mode 100644 engines/titanic/support/credit_text.h (limited to 'engines/titanic') diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp index 5f68037f22..2da7d79949 100644 --- a/engines/titanic/core/game_object.cpp +++ b/engines/titanic/core/game_object.cpp @@ -38,7 +38,19 @@ namespace Titanic { BEGIN_MESSAGE_MAP(CGameObject, CNamedItem) END_MESSAGE_MAP() -void *CGameObject::_v1 = nullptr; +CCreditText *CGameObject::_credits; + +void CGameObject::init() { + _credits = nullptr; +} + +void CGameObject::deinit() { + if (_credits) { + _credits->clear(); + delete _credits; + _credits = nullptr; + } +} CGameObject::CGameObject(): CNamedItem() { _bounds = Rect(0, 0, 15, 15); @@ -205,7 +217,7 @@ void CGameObject::draw(CScreenManager *screenManager, const Point &destPos, cons void CGameObject::draw(CScreenManager *screenManager) { if (!_visible) return; - if (_v1) { + if (_credits) { error("TODO: Block in CGameObject::draw"); } @@ -927,4 +939,11 @@ void CGameObject::setPassengerClass(int newClass) { } } +void CGameObject::createCredits() { + _credits = new CCreditText(); + CScreenManager *screenManager = getGameManager()->setScreenManager(); + _credits->load(this, screenManager, _bounds); + +} + } // End of namespace Titanic diff --git a/engines/titanic/core/game_object.h b/engines/titanic/core/game_object.h index a30c348312..44e12319e4 100644 --- a/engines/titanic/core/game_object.h +++ b/engines/titanic/core/game_object.h @@ -24,6 +24,7 @@ #define TITANIC_GAME_OBJECT_H #include "titanic/support/mouse_cursor.h" +#include "titanic/support/credit_text.h" #include "titanic/support/proximity.h" #include "titanic/support/rect.h" #include "titanic/core/movie_clip.h" @@ -47,8 +48,8 @@ class OSMovie; class CGameObject : public CNamedItem { friend class OSMovie; DECLARE_MESSAGE_MAP -public: - static void *_v1; +private: + static CCreditText *_credits; private: /** * Load a visual resource for the object @@ -356,6 +357,16 @@ public: int _field60; CursorId _cursorId; bool _visible; +public: + /** + * Initializes statics + */ + static void init(); + + /** + * Deinitializes statics + */ + static void deinit(); public: CLASSDEF CGameObject(); @@ -477,6 +488,11 @@ public: * Finds an item in various system areas */ Found find(const CString &name, CGameObject **item, int findAreas); + + /** + * Sets up credits text + */ + void createCredits(); }; } // End of namespace Titanic diff --git a/engines/titanic/module.mk b/engines/titanic/module.mk index 2879713758..dac6287c28 100644 --- a/engines/titanic/module.mk +++ b/engines/titanic/module.mk @@ -440,6 +440,7 @@ MODULE_OBJS := \ support/movie.o \ support/movie_event.o \ support/movie_range_info.o \ + support/credit_text.o \ support/proximity.o \ support/rect.o \ support/screen_manager.o \ diff --git a/engines/titanic/support/credit_text.cpp b/engines/titanic/support/credit_text.cpp new file mode 100644 index 0000000000..e70d1dcf7a --- /dev/null +++ b/engines/titanic/support/credit_text.cpp @@ -0,0 +1,63 @@ +/* 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. + * + */ + +#include "titanic/support/credit_text.h" +#include "titanic/titanic.h" + +namespace Titanic { + +CCreditText::CCreditText() : _screenManagerP(nullptr), _field14(0), + _ticks(0), _fontHeight(1), _objectP(nullptr), _field34(0), _field38(0), + _field3C(0), _field40(0), _field44(0), _field48(0), _field4C(0), + _field50(0), _field54(0), _field58(0), _field5C(0) { +} + +void CCreditText::clear() { + _list.destroyContents(); + _objectP = nullptr; +} + +void CCreditText::load(CGameObject *obj, CScreenManager *screenManager, + const Rect &rect, int v) { + _objectP = obj; + _screenManagerP = screenManager; + _field14 = v; + _ticks = g_vm->_events->getTicksCount(); + _field40 = 0; + _field44 = 0xFF; + _field48 = 0xFF; + _field4C = 0xFF; + _field50 = 0; + _field54 = 0; + _field58 = 0; + _field5C = 0; +} + +void CCreditText::setup() { + // TODO +} + +bool CCreditText::draw() { + return false; +} + +} // End of namespace Titanic diff --git a/engines/titanic/support/credit_text.h b/engines/titanic/support/credit_text.h new file mode 100644 index 0000000000..82da833bbe --- /dev/null +++ b/engines/titanic/support/credit_text.h @@ -0,0 +1,90 @@ +/* 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_CREDIT_TEXT_H +#define TITANIC_CREDIT_TEXT_H + +#include "titanic/core/list.h" + +namespace Titanic { + +class CGameObject; +class CScreenManager; + +class COverrideSubItem : public ListItem { + +}; +typedef List CCreditTextSubList; + +class CCreditTextItem : public ListItem { + +}; +typedef List CCreditTextList; + +class CCreditText { +private: + /** + * Sets up needed data + */ + void setup(); +public: + CScreenManager *_screenManagerP; + Rect _rect; + int _field14; + CCreditTextList _list; + uint _ticks; + uint _fontHeight; + CGameObject *_objectP; + int _field34; + int _field38; + int _field3C; + int _field40; + int _field44; + int _field48; + int _field4C; + int _field50; + int _field54; + int _field58; + int _field5C; +public: + CCreditText(); + + /** + * Clears the object + */ + void clear(); + + /** + * Sets the game object this override is associated with + */ + void load(CGameObject *obj, CScreenManager *screenManager, + const Rect &rect, int v = 0); + + /** + * Draw the item + */ + bool draw(); +}; + +} // End of namespace Titanic + +#endif /* TITANIC_CREDIT_TEXT_H */ diff --git a/engines/titanic/titanic.cpp b/engines/titanic/titanic.cpp index da9be20808..9d44cd6141 100644 --- a/engines/titanic/titanic.cpp +++ b/engines/titanic/titanic.cpp @@ -84,6 +84,7 @@ void TitanicEngine::initialize() { CSaveableObject::initClassList(); CEnterExitFirstClassState::init(); + CGameObject::init(); CGetLiftEye2::init(); CHose::init(); CParrotLobbyObject::init(); @@ -115,6 +116,7 @@ void TitanicEngine::deinitialize() { CSGTStateRoom::deinit(); CExitPellerator::deinit(); CEnterExitSecClassMiniLift::deinit(); + CGameObject::deinit(); CTelevision::deinit(); } -- cgit v1.2.3