aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/globals.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tsage/globals.cpp')
-rw-r--r--engines/tsage/globals.cpp50
1 files changed, 35 insertions, 15 deletions
diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp
index 3914d77185..e629396501 100644
--- a/engines/tsage/globals.cpp
+++ b/engines/tsage/globals.cpp
@@ -18,13 +18,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * $URL$
- * $Id$
- *
*/
#include "tsage/globals.h"
#include "tsage/tsage.h"
+#include "tsage/blueforce_logic.h"
+#include "tsage/ringworld_demo.h"
#include "tsage/ringworld_logic.h"
namespace tSage {
@@ -44,15 +43,17 @@ static SavedObject *classFactoryProc(const Common::String &className) {
if (className == "ObjectMover3") return new ObjectMover3();
if (className == "PlayerMover") return new PlayerMover();
if (className == "SceneObjectWrapper") return new SceneObjectWrapper();
-
+ if (className == "PaletteRotation") return new PaletteRotation();
+ if (className == "PaletteFader") return new PaletteFader();
return NULL;
}
/*--------------------------------------------------------------------------*/
Globals::Globals() :
- _dialogCenter(160, 140),
- _gfxManagerInstance(_screenSurface) {
+ _dialogCenter(160, 140),
+ _gfxManagerInstance(_screenSurface),
+ _randomSource("tsage") {
reset();
_stripNum = 0;
@@ -63,6 +64,13 @@ Globals::Globals() :
_fontColors.background = 0;
_fontColors.foreground = 0;
_dialogCenter.y = 80;
+ } else if ((_vm->getGameID() == GType_Ringworld) && (_vm->getFeatures() & GF_CD)) {
+ _gfxFontNumber = 50;
+ _gfxColors.background = 53;
+ _gfxColors.foreground = 0;
+ _fontColors.background = 51;
+ _fontColors.foreground = 54;
+ warning("TODO: Check the 3 additional colors");
} else {
_gfxFontNumber = 50;
_gfxColors.background = 53;
@@ -83,16 +91,26 @@ Globals::Globals() :
_scrollFollower = NULL;
_inventory = NULL;
- if (!(_vm->getFeatures() & GF_DEMO)) {
- _inventory = new RingworldInvObjectList();
- _game = new RingworldGame();
- } else {
- _game = new RingworldDemoGame();
+ switch (_vm->getGameID()) {
+ case GType_Ringworld:
+ if (!(_vm->getFeatures() & GF_DEMO)) {
+ _inventory = new RingworldInvObjectList();
+ _game = new RingworldGame();
+ } else {
+ _game = new RingworldDemoGame();
+ }
+ break;
+
+ case GType_BlueForce:
+ _game = new BlueForceGame();
+ break;
}
}
Globals::~Globals() {
_globals = NULL;
+ delete _inventory;
+ delete _game;
}
void Globals::reset() {
@@ -100,12 +118,14 @@ void Globals::reset() {
_saver->addFactory(classFactoryProc);
}
-void Globals::synchronise(Serialiser &s) {
+void Globals::synchronize(Serializer &s) {
+ if (s.getVersion() >= 2)
+ SavedObject::synchronize(s);
assert(_gfxManagers.size() == 1);
- _sceneItems.synchronise(s);
+ _sceneItems.synchronize(s);
SYNC_POINTER(_sceneObjects);
- _sceneObjects_queue.synchronise(s);
+ _sceneObjects_queue.synchronize(s);
s.syncAsSint32LE(_gfxFontNumber);
s.syncAsSint32LE(_gfxColors.background);
s.syncAsSint32LE(_gfxColors.foreground);
@@ -113,7 +133,7 @@ void Globals::synchronise(Serialiser &s) {
s.syncAsSint32LE(_fontColors.foreground);
s.syncAsSint16LE(_dialogCenter.x); s.syncAsSint16LE(_dialogCenter.y);
- _sceneListeners.synchronise(s);
+ _sceneListeners.synchronize(s);
for (int i = 0; i < 256; ++i)
s.syncAsByte(_flags[i]);