aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/cstime.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mohawk/cstime.h')
-rw-r--r--engines/mohawk/cstime.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/engines/mohawk/cstime.h b/engines/mohawk/cstime.h
new file mode 100644
index 0000000000..13a8db863e
--- /dev/null
+++ b/engines/mohawk/cstime.h
@@ -0,0 +1,191 @@
+/* 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef MOHAWK_CSTIME_H
+#define MOHAWK_CSTIME_H
+
+#include "mohawk/mohawk.h"
+#include "mohawk/console.h"
+#include "mohawk/graphics.h"
+
+#include "common/random.h"
+#include "common/list.h"
+
+#include "sound/mixer.h"
+
+namespace Mohawk {
+
+class CSTimeCase;
+class CSTimeInterface;
+class CSTimeView;
+
+enum {
+ kCSTimeEventNothing = 0xffff,
+ kCSTimeEventCondition = 1,
+ kCSTimeEventCharPlayNIS = 2,
+ kCSTimeEventStartConversation = 3,
+ kCSTimeEventNewScene = 4,
+ kCSTimeEventCharStartFlapping = 5,
+ kCSTimeEventSetCaseVariable = 6,
+ kCSTimeEventSetupAmbientAnims = 7,
+ kCSTimeEventUnused8 = 8,
+ kCSTimeEventDropItemInInventory = 9,
+ kCSTimeEventRemoveItemFromInventory = 10,
+ kCSTimeEventAddNotePiece = 11,
+ kCSTimeEventDisableHotspot = 12,
+ kCSTimeEventDisableFeature = 13,
+ kCSTimeEventAddFeature = 14,
+ kCSTimeEventStartMusic = 15,
+ kCSTimeEventStopMusic = 16,
+ kCSTimeEventEnableHotspot = 17,
+ kCSTimeEventSetAsked = 18,
+ kCSTimeEventStartHelp = 19,
+ kCSTimeEventPlaySound = 20,
+ kCSTimeEventUnused21 = 21,
+ kCSTimeEventShowBigNote = 22,
+ kCSTimeEventActivateCuffs = 23,
+ kCSTimeEventSetupRestPos = 24, // TODO
+ kCSTimeEventUnknown25 = 25,
+ kCSTimeEventUnknown26 = 26,
+ kCSTimeEventRemoveChar = 27,
+ kCSTimeEventUnknown28 = 28,
+ kCSTimeEventUnknown29 = 29,
+ kCSTimeEventUnknown30 = 30,
+ kCSTimeEventUnknown31 = 31,
+ kCSTimeEventCharSomeNIS32 = 32,
+ kCSTimeEventCharResetNIS = 33,
+ kCSTimeEventUnknown34 = 34,
+ kCSTimeEventCharPauseAmbients = 35,
+ kCSTimeEventCharUnauseAmbients = 36,
+ kCSTimeEventCharDisableAmbients = 37,
+ kCSTimeEventStopAmbientAnims = 38,
+ kCSTimeEventUnknown39 = 39,
+ kCSTimeEventWait = 40,
+ kCSTimeEventSpeech = 41,
+ kCSTimeEventUnknown42 = 42,
+ kCSTimeEventUnknown43 = 43,
+ kCSTimeEventCharSetupRestPos = 44, // TODO
+ kCSTimeEventCharStopAmbients = 45,
+ kCSTimeEventCharRestartAmbients = 46,
+ kCSTimeEventStopEnvironmentSound = 47,
+ kCSTimeEventWaitForClick = 48,
+ kCSTimeEventSetMusic = 49,
+ kCSTimeEventStartEnvironmentSound = 50,
+ kCSTimeEventPreloadSound = 51,
+ kCSTimeEventPlayPreloadedSound = 52,
+ kCSTimeEventUnknown53 = 53,
+ kCSTimeEventSetEnvironmentSound = 54,
+ kCSTimeEventCharSomeNIS55 = 55,
+ kCSTimeEventUnknown56 = 56,
+ kCSTimeEventUpdateBubble = 57,
+ kCSTimeEventCharSurfAndFlap = 58,
+ kCSTimeEventInitScene = 59,
+ kCSTimeEventFadeDown = 60,
+ kCSTimeEventCharSomeNIS61 = 61,
+ kCSTimeEventCharPlaySimultaneousAnim = 62,
+ kCSTimeEventUnused63 = 63,
+ kCSTimeEventUnknown64 = 64,
+ kCSTimeEventPrepareSave = 65,
+ kCSTimeEventSave = 66,
+ kCSTimeEventQuit = 67,
+ kCSTimeEventPlayMovie = 68,
+ kCSTimeEventUnknown69 = 69, // queues Unknown48
+ kCSTimeEventUnknown70 = 70 // conv/QaR cleanup
+};
+
+struct CSTimeEvent {
+ CSTimeEvent() { }
+ CSTimeEvent(uint16 t, uint16 p1, uint16 p2) : type(t), param1(p1), param2(p2) { }
+
+ uint16 type;
+ uint16 param1;
+ uint16 param2;
+};
+
+enum CSTimeState {
+ kCSTStateStartup,
+ kCSTStateNewCase,
+ kCSTStateNewScene,
+ kCSTStateNormal
+};
+
+class MohawkEngine_CSTime : public MohawkEngine {
+protected:
+ Common::Error run();
+
+public:
+ MohawkEngine_CSTime(OSystem *syst, const MohawkGameDescription *gamedesc);
+ virtual ~MohawkEngine_CSTime();
+
+ Common::RandomSource *_rnd;
+
+ CSTimeGraphics *_gfx;
+ bool _needsUpdate;
+
+ GUI::Debugger *getDebugger() { return _console; }
+ CSTimeView *getView() { return _view; }
+ CSTimeCase *getCase() { return _case; }
+ CSTimeInterface *getInterface() { return _interface; }
+
+ void loadResourceFile(Common::String name);
+
+ void addEvent(const CSTimeEvent &event);
+ void addEventList(const Common::Array<CSTimeEvent> &list);
+ void insertEventAtFront(const CSTimeEvent &event);
+ uint16 getCurrentEventType();
+ void eventIdle();
+ void resetTimeout();
+ void mouseClicked();
+ bool NISIsRunning();
+
+ uint16 _haveInvItem[19];
+ uint16 _caseVariable[20];
+
+private:
+ CSTimeCase *_case;
+ CSTimeConsole *_console;
+ CSTimeInterface *_interface;
+ CSTimeView *_view;
+
+ CSTimeState _state;
+
+ void initCase();
+ void nextScene();
+ void update();
+
+ uint16 _nextSceneId;
+
+ bool _processingEvent;
+ bool _NISRunning;
+ uint32 _lastTimeout;
+ void reset();
+
+ Common::List<CSTimeEvent> _events;
+ void triggerEvent(CSTimeEvent &event);
+};
+
+} // End of namespace Mohawk
+
+#endif