aboutsummaryrefslogtreecommitdiff
path: root/engines/tony
diff options
context:
space:
mode:
authorPaul Gilbert2012-04-30 09:27:12 +1000
committerPaul Gilbert2012-04-30 09:27:12 +1000
commitb0eef829728183b7ea170b30a33eca091bcc4574 (patch)
tree77ca85abb4c08a94dbadad68f0a79cf1cb7af60f /engines/tony
parent118f5ca0102144b5c282f012def6c96c69052bc1 (diff)
downloadscummvm-rg350-b0eef829728183b7ea170b30a33eca091bcc4574.tar.gz
scummvm-rg350-b0eef829728183b7ea170b30a33eca091bcc4574.tar.bz2
scummvm-rg350-b0eef829728183b7ea170b30a33eca091bcc4574.zip
TONY: Added include files for graphics engine and all dependent classes
Diffstat (limited to 'engines/tony')
-rw-r--r--engines/tony/adv.h70
-rw-r--r--engines/tony/font.h399
-rw-r--r--engines/tony/game.cpp54
-rw-r--r--engines/tony/game.h285
-rw-r--r--engines/tony/gfxcore.cpp54
-rw-r--r--engines/tony/gfxcore.h547
-rw-r--r--engines/tony/gfxengine.cpp53
-rw-r--r--engines/tony/gfxengine.h167
-rw-r--r--engines/tony/input.cpp54
-rw-r--r--engines/tony/input.h116
-rw-r--r--engines/tony/inventory.h212
-rw-r--r--engines/tony/loc.cpp8
-rw-r--r--engines/tony/loc.h488
-rw-r--r--engines/tony/module.mk5
-rw-r--r--engines/tony/mpal/memory.h4
-rw-r--r--engines/tony/mpal/stubs.h4
-rw-r--r--engines/tony/resid.h76
-rw-r--r--engines/tony/sound.cpp54
-rw-r--r--engines/tony/sound.h254
-rw-r--r--engines/tony/tony.cpp3
-rw-r--r--engines/tony/tony.h2
-rw-r--r--engines/tony/tonychar.h448
-rw-r--r--engines/tony/utils.cpp10
-rw-r--r--engines/tony/utils.h10
24 files changed, 3354 insertions, 23 deletions
diff --git a/engines/tony/adv.h b/engines/tony/adv.h
new file mode 100644
index 0000000000..b29e4eb0cd
--- /dev/null
+++ b/engines/tony/adv.h
@@ -0,0 +1,70 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: ADV.CPP.............. *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#ifndef TONY_ADV_H
+#define TONY_ADV_H
+
+namespace Tony {
+
+// Tony's actions
+enum RMTonyAction {
+ TA_GOTO = 0,
+ TA_TAKE,
+ TA_USE,
+ TA_EXAMINE,
+ TA_TALK,
+ TA_PALESATI,
+
+ TA_COMBINE = 10,
+ TA_RECEIVECOMBINE,
+ TA_COMBINEGIVE,
+ TA_RECEIVECOMBINEGIVE
+};
+
+} // End of namespace Tony
+
+#endif
diff --git a/engines/tony/font.h b/engines/tony/font.h
new file mode 100644
index 0000000000..348e7618ea
--- /dev/null
+++ b/engines/tony/font.h
@@ -0,0 +1,399 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: Font.CPP............. *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#ifndef TONY_FONT_H
+#define TONY_FONT_H
+
+#include "common/system.h"
+#include "tony/gfxcore.h"
+#include "tony/resid.h"
+
+namespace Tony {
+
+class RMInventory;
+
+/**
+ * Gestisce un font, in cui ha varie surface per ogni lettera
+ */
+class RMFont : public RMGfxTaskSetPrior {
+protected:
+ int nLetters;
+ RMGfxSourceBuffer8RLEByte *m_letter;
+public:
+ int m_fontDimx,m_fontDimy;
+
+private:
+ int m_dimx,m_dimy;
+
+ class RMFontPrimitive : public RMGfxPrimitive {
+ public:
+ RMFontPrimitive() : RMGfxPrimitive() {}
+ RMFontPrimitive(RMGfxTask *task) : RMGfxPrimitive(task) {}
+
+ virtual RMGfxPrimitive* Duplicate() { return new RMFontPrimitive(*this); }
+
+ int m_nChar;
+ };
+
+protected:
+ // Caricamento del font
+ void Load(uint32 resID, int nChars, int dimx, int dimy, uint32 palResID = RES_F_PAL);
+ void Load(const byte *buf, int nChars, int dimx, int dimy, uint32 palResID = RES_F_PAL);
+
+ // Scaricamente del font (anche da distruttore)
+ void Unload(void);
+
+protected:
+ // Conversione (da overloadare)
+ virtual int ConvertToLetter(int nChar) = 0;
+
+ // Lunghezza dei caratteri (da overloadare)
+ virtual int LetterLength(int nChar, int nNext=0) = 0;
+
+public:
+ virtual int LetterHeight(void) = 0;
+
+public:
+ RMFont();
+ virtual ~RMFont();
+
+ // Inizializzazione e chiusura
+ virtual void Init(void) = 0;
+ virtual void Close(void);
+
+ // Funzione del task da overloadare
+ void Draw(RMGfxTargetBuffer &bigBug, RMGfxPrimitive *prim);
+
+ // Crea una primitiva per una lettera
+ RMGfxPrimitive *MakeLetterPrimitive(byte bChar, int& nLength);
+
+ // Lunghezza in pixel di una stringa con il font corrente
+ int StringLen(RMString text);
+ int StringLen(char bChar, char bNext=0);
+};
+
+
+class RMFontColor : public virtual RMFont {
+private:
+ byte m_r,m_g,m_b;
+
+public:
+ RMFontColor();
+ virtual ~RMFontColor();
+ virtual void SetBaseColor(byte r, byte g, byte b);
+};
+
+
+class RMFontWithTables : public virtual RMFont {
+protected:
+ int cTable[256];
+ int lTable[256];
+ int lDefault;
+ int hDefault;
+ signed char l2Table[256][256];
+
+protected:
+ // Overload dei metodi
+ int ConvertToLetter(int nChar) { return cTable[nChar]; }
+ int LetterLength(int nChar, int nNext=0) { return (nChar!=-1 ? lTable[nChar]+l2Table[nChar][nNext] : lDefault); }
+
+public:
+ int LetterHeight() { return hDefault; }
+ virtual ~RMFontWithTables() {}
+};
+
+
+class RMFontParla : public RMFontColor, public RMFontWithTables {
+public:
+ void Init(void);
+ virtual ~RMFontParla() {}
+};
+
+class RMFontObj : public RMFontColor, public RMFontWithTables {
+private:
+ void SetBothCase(int nChar, int nNext, signed char spiazz);
+
+public:
+ void Init(void);
+ virtual ~RMFontObj() {}
+};
+
+class RMFontMacc : public RMFontColor, public RMFontWithTables {
+public:
+ void Init(void);
+ virtual ~RMFontMacc() {}
+};
+
+class RMFontCredits : public RMFontColor, public RMFontWithTables {
+public:
+ void Init(void);
+ virtual ~RMFontCredits() {}
+ virtual void SetBaseColor(byte r, byte g, byte b) {}
+};
+
+/**
+ * Gestisce una scritta su schermo, con tutte le possibilita' di formattazione disponibile
+ */
+class RMText : public RMGfxWoodyBuffer {
+private:
+ static RMFontColor *m_fonts[4];
+ static RMGfxClearTask m_clear;
+ static OSystem::MutexRef m_cs;
+ int maxLineLength;
+
+public:
+ enum HORALIGN {
+ HLEFT,
+ HLEFTPAR,
+ HCENTER,
+ HRIGHT
+ };
+
+ enum VERALIGN {
+ VTOP,
+ VCENTER,
+ VBOTTOM
+ };
+
+private:
+ HORALIGN aHorType;
+ VERALIGN aVerType;
+ byte m_r,m_g,m_b;
+
+protected:
+ virtual void ClipOnScreen(RMGfxPrimitive* prim);
+
+public:
+ RMText();
+ virtual ~RMText();
+
+ // Setta il tipo di allineamento
+ void SetAlignType(HORALIGN aHor, VERALIGN aVer) { aHorType=aHor; aVerType=aVer; }
+
+ // Setta la lunghezza massima di una linea in pixel (utilizzato per formattare il testo)
+ void SetMaxLineLength(int max);
+
+ // Scrive un testo
+ void WriteText(RMString text, int font, int *time = NULL);
+ void WriteText(RMString text, RMFontColor* font, int *time = NULL);
+
+ // Overloading della funzione ereditata da RMGfxTask per decidere
+ // quando eliminare un oggetto dalla OTLIST
+ virtual bool RemoveThis(void);
+
+ // Overloading del Draw per centrare la scritta, se necessario
+ virtual void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+
+ // Setta il colore di base
+ void SetColor(byte r, byte g, byte b) { m_r=r; m_g=g; m_b=b; }
+};
+
+/**
+ * Gestisce il testo di un dialogo
+ */
+class RMTextDialog : public RMText
+{
+ protected:
+ int m_startTime;
+ int m_time;
+ bool m_bSkipStatus;
+ RMPoint dst;
+ HANDLE hEndDisplay;
+ bool m_bShowed;
+ bool m_bForceTime;
+ bool m_bForceNoTime;
+ HANDLE hCustomSkip;
+ HANDLE hCustomSkip2;
+ RMInput* m_input;
+ bool m_bAlwaysDisplay;
+ bool m_bNoTab;
+
+ public:
+ RMTextDialog();
+ virtual ~RMTextDialog();
+
+ // Scrive un testo
+ void WriteText(RMString text, int font, int *time=NULL);
+ void WriteText(RMString text, RMFontColor* font, int *time=NULL);
+
+ // Overloading della funzione ereditata da RMGfxTask per decidere
+ // quando eliminare un oggetto dalla OTLIST
+ virtual bool RemoveThis(void);
+
+ // Overloading della funzione di deregistrazione, utilizzata per capire
+ // quando ci leviamo di torno
+ virtual void Unregister(void);
+
+ // Overloading del Draw per centrare la scritta, se necessario
+ virtual void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+
+ // Setta la posizione
+ void SetPosition(RMPoint pt) { dst=pt; }
+
+ // Aspetta che venga finita la visualizzazione
+ void WaitForEndDisplay(void);
+ void SetCustomSkipHandle(HANDLE hCustomSkip);
+ void SetCustomSkipHandle2(HANDLE hCustomSkip);
+ void SetSkipStatus(bool bEnabled);
+ void SetForcedTime(uint32 dwTime);
+ void SetNoTab(void);
+ void ForceTime(void);
+ void ForceNoTime(void);
+ void SetAlwaysDisplay(void);
+
+ // Setta il dispositivo di input, per permettere skip da mouse
+ void SetInput(RMInput* input);
+
+ void Show(void);
+ void Hide(void);
+};
+
+class RMTextDialogScrolling : public RMTextDialog {
+protected:
+ RMLocation* curLoc;
+ RMPoint startScroll;
+
+ virtual void ClipOnScreen(RMGfxPrimitive* prim);
+
+public:
+ RMTextDialogScrolling();
+ RMTextDialogScrolling(RMLocation* loc);
+ virtual ~RMTextDialogScrolling();
+
+ virtual void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+};
+
+
+/****************************************************************************\
+* class RMTextItemName
+* --------------------
+* Description: Gestisce il nome dell'oggetto selezionato su schermo
+\****************************************************************************/
+
+class RMTextItemName : protected RMText {
+protected:
+ RMPoint m_mpos;
+ RMPoint m_curscroll;
+ RMItem* m_item;
+ RMString m_itemName;
+
+public:
+ RMTextItemName();
+ virtual ~RMTextItemName();
+
+ void SetMouseCoord(RMPoint m) { m_mpos=m; }
+
+ void DoFrame(RMGfxTargetBuffer &bigBuf, RMLocation &loc, RMPointer &ptr, RMInventory &inv);
+ virtual void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+
+ RMPoint GetHotspot() { if (m_item==NULL) return m_mpos+m_curscroll; else return m_item->Hotspot(); }
+ RMItem* GetSelectedItem() { return m_item; }
+ bool IsItemSelected() { return m_item!=NULL; }
+ bool IsNormalItemSelected() { return m_item!=NULL && m_itemName.Length()>0; }
+
+ virtual bool RemoveThis() { return true; }
+};
+
+
+/**
+ * Gestisce la schermata di scelta delle voci di un dialogo
+ */
+class RMDialogChoice : public RMGfxWoodyBuffer {
+private:
+ int m_curSelection;
+ int m_numChoices;
+ RMText* m_drawedStrings;
+ RMPoint *m_ptDrawStrings;
+ int m_curAdded;
+ bool m_bShow;
+ RMGfxSourceBuffer8 DlgText;
+ RMGfxSourceBuffer8 DlgTextLine;
+ RMPoint m_ptDrawPos;
+ HANDLE hUnreg;
+ bool bRemoveFromOT;
+
+protected:
+ void Prepare(void);
+ void SetSelected(int pos);
+
+public:
+ bool RemoveThis(void);
+ void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+ void Unregister(void);
+
+public:
+ // Inizializzazione
+ RMDialogChoice();
+ virtual ~RMDialogChoice();
+
+ // Inizializzazione e chiusura
+ void Init(void);
+ void Close(void);
+
+ // Setta il numero delle frasi possibili, che dovranno essere poi aggiunte
+ // con AddChoice()
+ void SetNumChoices(int num);
+
+ // Aggiunge una stringa con la scelta
+ void AddChoice(RMString string);
+
+ // Mostra e nasconde la scelta, con eventuali animazioni
+ // NOTA: Se non viene passato parametro alla Show(), è obbligo del
+ // chiamante assicurarsi che la classe venga inserita alla OTlist
+ void Show(RMGfxTargetBuffer* bigBuf = NULL);
+ void Hide(void);
+
+ // Polling di aggiornamento
+ void DoFrame(RMPoint ptMousePos);
+
+ // Ritorna la voce attualmente selezionata, o -1 se nessuna è selezionata
+ int GetSelection(void);
+};
+
+} // End of namespace Tony
+
+#endif
diff --git a/engines/tony/game.cpp b/engines/tony/game.cpp
new file mode 100644
index 0000000000..48827cbc2a
--- /dev/null
+++ b/engines/tony/game.cpp
@@ -0,0 +1,54 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: Loc.CPP.............. *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#include "tony/game.h"
+
+namespace Tony {
+
+
+
+} // End of namespace Tony
diff --git a/engines/tony/game.h b/engines/tony/game.h
new file mode 100644
index 0000000000..28f9489267
--- /dev/null
+++ b/engines/tony/game.h
@@ -0,0 +1,285 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: Game.CPP............. *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#ifndef TONY_GAME_H
+#define TONY_GAME_H
+
+#include "tony/adv.h"
+#include "tony/gfxcore.h"
+#include "tony/input.h"
+#include "tony/loc.h"
+#include "tony/utils.h"
+
+namespace Tony {
+
+class RMPointer : public RMGfxTask {
+private:
+ RMGfxSourceBuffer8 *m_pointer[16];
+ RMPoint m_hotspot[16];
+ RMPoint m_pos;
+
+ RMItem *m_specialPointer[16];
+
+ int m_nCurPointer;
+ int m_nCurSpecialPointer;
+
+ RMGfxSourceBuffer8 *m_nCurCustomPointer;
+
+public:
+ enum POINTER {
+ PTR_NONE = 0,
+ PTR_FRECCIASU,
+ PTR_FRECCIAGIU,
+ PTR_FRECCIASINISTRA,
+ PTR_FRECCIADESTRA,
+ PTR_FRECCIAMAPPA,
+ PTR_CUSTOM
+ };
+
+public:
+ // Constructor & destructor
+ RMPointer();
+ virtual ~RMPointer();
+
+ // Initialisation
+ void Init(void);
+
+ // Deinitialisation
+ void Close(void);
+
+ // Process a frame
+ void DoFrame(RMGfxTargetBuffer *bigBuf);
+
+ // Overloading of priorities
+ int Priority();
+
+ // Overloading draw method
+ void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+
+ // Sets the current co-ordinates
+ void SetCoord(RMPoint pt) { m_pos = pt; }
+
+ // Overloading of the method to see if rising from the list
+ bool RemoveThis();
+
+ // Sets a new action as current
+ void SetAction(RMTonyAction action) { m_nCurPointer = action; }
+
+ // Sets a new pointer
+ void SetSpecialPointer(POINTER ptr) {
+ m_nCurSpecialPointer=ptr;
+ if (m_nCurSpecialPointer && m_nCurSpecialPointer != PTR_CUSTOM) m_specialPointer[ptr-1]->SetPattern(1);
+ }
+ POINTER GetSpecialPointer(void) { return (POINTER)m_nCurSpecialPointer; }
+
+ // Set the new custom pointer
+ void SetCustomPointer(RMGfxSourceBuffer8 *ptr) { m_nCurCustomPointer = ptr; }
+
+ // Return the current action to be applied according to the pointer
+ int CurAction(void);
+};
+
+class RMOptionButton: public RMGfxTaskSetPrior {
+public:
+ RMRect m_rect;
+ RMGfxSourceBuffer16 *m_buf;
+ bool m_bActive;
+ bool m_bHasGfx;
+ bool m_bDoubleState;
+
+public:
+ RMOptionButton(uint32 dwRes, RMPoint pt, bool bDoubleState = false);
+ RMOptionButton(RMRect pt);
+ virtual ~RMOptionButton();
+
+ bool DoFrame(RMPoint mousePos, bool bLeftClick, bool bRightClick);
+ void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+ void AddToList(RMGfxTargetBuffer &bigBuf);
+ bool IsActive() { return m_bActive; }
+ void SetActiveState(bool bState) { m_bActive=bState; }
+};
+
+class RMOptionSlide : public RMGfxTaskSetPrior {
+private:
+ RMOptionButton* m_PushLeft;
+ RMOptionButton* m_PushRight;
+ RMGfxSourceBuffer16* m_SliderCenter;
+ RMGfxSourceBuffer16* m_SliderLeft;
+ RMGfxSourceBuffer16* m_SliderRight;
+ RMGfxSourceBuffer16* m_SliderSingle;
+ int m_nSlideSize;
+ RMPoint m_pos;
+ int m_nValue;
+ int m_nMax;
+ int m_nStep;
+
+public:
+ RMOptionSlide(RMPoint pt, int m_nRange=100, int m_nStartValue=0, int slideSize=300);
+ virtual ~RMOptionSlide();
+
+ bool DoFrame(RMPoint mousePos, bool bLeftClick, bool bRightClick);
+ void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+ void AddToList(RMGfxTargetBuffer& bigBuf);
+
+ int GetValue() { return m_nValue; }
+};
+
+class RMOptionScreen : public RMGfxWoodyBuffer {
+private:
+ RMGfxSourceBuffer16 *m_menu;
+ RMGfxSourceBuffer16 *m_QuitConfirm;
+ RMGfxSourceBuffer16 *m_HideLoadSave;
+ RMOptionButton *m_ButtonQuitYes;
+ RMOptionButton *m_ButtonQuitNo;
+ RMOptionButton *m_ButtonExit;
+ RMOptionButton *m_ButtonQuit;
+ RMOptionButton *m_ButtonLoad;
+ RMOptionButton *m_ButtonSave;
+ RMOptionButton *m_ButtonGameMenu;
+ RMOptionButton *m_ButtonGfxMenu;
+ RMOptionButton *m_ButtonSoundMenu;
+ RMGfxSourceBuffer8 *m_SaveEasy;
+ RMGfxSourceBuffer8 *m_SaveHard;
+ RMGfxSourceBuffer16 *m_curThumb[6];
+ RMString m_curThumbName[6];
+ byte m_curThumbDiff[6];
+ RMOptionButton *m_ButtonSave_States[6];
+ RMOptionButton *m_ButtonSave_ArrowLeft;
+ RMOptionButton *m_ButtonSave_ArrowRight;
+ RMOptionButton *m_ButtonGfx_Tips;
+
+ RMOptionButton *m_ButtonSound_DubbingOn;
+ RMOptionButton *m_ButtonSound_MusicOn;
+ RMOptionButton *m_ButtonSound_SFXOn;
+
+ RMOptionSlide *m_SlideTonySpeed;
+ RMOptionSlide *m_SlideTextSpeed;
+
+
+ int m_statePos;
+ bool m_bEditSaveName;
+ int m_nEditPos;
+ char m_EditName[256];
+
+ union {
+ RMOptionButton *m_ButtonGame_Lock;
+ RMOptionButton *m_ButtonGfx_Anni30;
+ RMOptionSlide *m_SliderSound_Music;
+ };
+ union {
+ RMOptionButton *m_ButtonGame_TimerizedText;
+ RMOptionButton *m_ButtonGfx_AntiAlias;
+ RMOptionSlide *m_SliderSound_SFX;
+ };
+ union {
+ RMOptionButton *m_ButtonGame_Scrolling;
+ RMOptionButton *m_ButtonGfx_Sottotitoli;
+ RMOptionSlide *m_SliderSound_Dubbing;
+ };
+ union {
+ RMOptionButton *m_ButtonGame_InterUp;
+ RMOptionButton *m_ButtonGfx_Trans;
+ };
+
+ int m_FadeStep;
+ bool m_bExit;
+ bool m_bQuitConfirm;
+ int m_FadeY;
+ int m_FadeTime;
+ bool m_bLoadMenuOnly;
+ bool m_bNoLoadSave;
+ bool m_bAlterGfx;
+
+ enum STATE {
+ MENUGAME,
+ MENUGFX,
+ MENUSOUND,
+ MENULOAD,
+ MENUSAVE
+ };
+
+ STATE m_nState;
+ STATE m_nLastState;
+
+public:
+ RMOptionScreen();
+ virtual ~RMOptionScreen();
+
+ bool Init(RMGfxTargetBuffer& bigBuf);
+ bool InitLoadMenuOnly(RMGfxTargetBuffer &bigBuf, bool bAlternateGfx = false);
+ bool InitSaveMenuOnly(RMGfxTargetBuffer &bigBuf, bool bAlternateGfx = false);
+ bool InitNoLoadSave(RMGfxTargetBuffer &bigBuf);
+ void ReInit(RMGfxTargetBuffer &bigBuf);
+ bool Close();
+ bool IsClosing();
+
+ // Metodi in overloading da RMGfxTask
+ int Priority();
+ void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+ bool RemoveThis();
+
+ // Polling per l'option screen
+ void DoFrame(RMInput *m_input);
+
+protected:
+
+ // Inizializza tutto per il nuovo stato
+ void InitState(void);
+ void CloseState(void);
+ void ChangeState(STATE newState);
+
+ // Ridisegna tutto il menu delle opzioni
+ void RefreshAll(void);
+ void RefreshThumbnails(void);
+
+ // Carica lo screenshot per il salvataggio
+ bool LoadThumbnailFromSaveState(int numState, byte *lpDestBuf, RMString &name, byte &diff);
+};
+
+} // End of namespace Tony
+
+#endif
diff --git a/engines/tony/gfxcore.cpp b/engines/tony/gfxcore.cpp
new file mode 100644
index 0000000000..731521832f
--- /dev/null
+++ b/engines/tony/gfxcore.cpp
@@ -0,0 +1,54 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: GfxCore.CPP.......... *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#include "tony/gfxEngine.h"
+
+namespace Tony {
+
+
+
+} // End of namespace Tony
diff --git a/engines/tony/gfxcore.h b/engines/tony/gfxcore.h
new file mode 100644
index 0000000000..313e471cdf
--- /dev/null
+++ b/engines/tony/gfxcore.h
@@ -0,0 +1,547 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: GfxCore.CPP.......... *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#ifndef TONY_GFXCORE_H
+#define TONY_GFXCORE_H
+
+#include "common/system.h"
+#include "tony/utils.h"
+
+namespace Tony {
+
+/****************************************************************************\
+* Prototipi di classi
+\****************************************************************************/
+
+// Nome della classe Albero genealogico Astratto?
+class RMGfxTask; // Si
+class RMGfxTaskSetPrior; // Task Si
+class RMGfxBuffer; //
+class RMGfxSourceBuffer; // TaskP+[Buffer] Si
+class RMGfxTargetBuffer; // [Buffer]
+class RMGfxSourceBufferPal; // Source Si
+class RMGfxSourceBuffer4; // SourcePal
+class RMGfxSourceBuffer8; // SourcePal
+class RMGfxSourceBuffer16; // Source
+class RMGfxWoodyBuffer; // Source16+Target
+class RMGfxClearTask; // Task
+
+
+/**
+ * Graphics buffer
+ */
+class RMGfxBuffer {
+protected:
+ int m_dimx, m_dimy;
+ byte *m_buf;
+ byte *m_origBuf;
+ bool m_bUseDDraw;
+
+public:
+ RMGfxBuffer();
+ RMGfxBuffer(int dimx, int dimy, int nBpp, bool bUseDDraw = false);
+ virtual ~RMGfxBuffer();
+
+ // Attributes
+ int Dimx() { return m_dimx; }
+ int Dimy() { return m_dimy; }
+
+ // Creation
+ virtual void Create(int dimx, int dimy, int nBpp, bool bUseDDraw = false);
+ virtual void Destroy(void);
+
+ // Buffer access
+ void Lock(void);
+ void Unlock(void);
+
+ // These are valid only if the buffer is locked
+ operator byte *();
+ operator void *();
+
+ // Getting the offset for a given Y position
+ void OffsetY(int nLines, int nBpp);
+};
+
+/**
+ * Graphics primitive
+ */
+class RMGfxPrimitive {
+public:
+ RMGfxTask *m_task;
+
+protected:
+ RMRect m_src;
+ RMRect m_dst;
+
+bool m_bStretch;
+ byte m_bFlag;
+
+public:
+ RMGfxPrimitive() { m_bFlag = 0; m_task = NULL; m_src.SetEmpty(); m_dst.SetEmpty(); }
+
+ RMGfxPrimitive(RMGfxTask *task) {
+ m_task = task; m_bFlag = 0;
+ }
+
+ RMGfxPrimitive(RMGfxTask *task, RMRect &src, RMRect &dst) {
+ m_task = task; m_src = src; m_dst = dst; m_bFlag = 0;
+ m_bStretch = (src.Width() != dst.Width() || src.Height() != dst.Height());
+ }
+
+ RMGfxPrimitive(RMGfxTask *task, RMPoint &src, RMRect &dst) {
+ m_task = task; m_src.TopLeft() = src; m_dst = dst; m_bFlag = 0;
+ }
+
+ RMGfxPrimitive(RMGfxTask *task, RMPoint &src, RMPoint &dst) {
+ m_task = task; m_src.TopLeft() = src; m_dst.TopLeft() = dst; m_bFlag = 0;
+ }
+
+ RMGfxPrimitive(RMGfxTask *task, RMRect &src, RMPoint &dst) {
+ m_task = task; m_src = src; m_dst.TopLeft() = dst; m_bFlag = 0;
+ }
+
+ RMGfxPrimitive(RMGfxTask *task, RMRect &dst) {
+ m_task = task; m_dst = dst; m_src.SetEmpty(); m_bFlag = 0;
+ }
+
+ RMGfxPrimitive(RMGfxTask *task, RMPoint &dst) {
+ m_task = task; m_dst.TopLeft() = dst; m_src.SetEmpty(); m_bFlag = 0;
+ }
+
+ void SetFlag(byte bFlag) { m_bFlag=bFlag; }
+ void SetTask(RMGfxTask *task) { m_task = task; }
+ void SetSrc(RMRect &src) { m_src = src; }
+ void SetSrc(RMPoint &src) { m_src.TopLeft() = src; }
+ void SetDst(RMRect &dst) { m_dst = dst; }
+ void SetDst(RMPoint &dst) { m_dst.TopLeft() = dst; }
+ void SetStrecth(bool bStretch) { m_bStretch = bStretch; }
+
+ bool HaveDst() { return !m_dst.IsEmpty(); }
+ RMRect &Dst() { return m_dst; }
+
+ bool HaveSrc() { return !m_src.IsEmpty(); }
+ RMRect &Src() { return m_src; }
+
+ // Flags
+ bool IsFlipped() { return m_bFlag&1; }
+
+ // Duplicate
+ virtual RMGfxPrimitive* Duplicate() { return new RMGfxPrimitive(*this); }
+};
+
+
+/**
+ * Graphic drawing task
+ */
+class RMGfxTask {
+protected:
+ int m_nPrior;
+ int m_nInList;
+
+public:
+ // Costruttore standard
+ RMGfxTask();
+
+ virtual int Priority();
+ virtual void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) = 0;
+ virtual bool RemoveThis();
+
+ // Registration
+ virtual void Register(void) { m_nInList++; }
+ virtual void Unregister(void) { m_nInList--; assert(m_nInList>=0); }
+};
+
+
+/**
+ * Graphic drawing with priority
+ */
+class RMGfxTaskSetPrior : public RMGfxTask {
+public:
+ void SetPriority(int nPrior);
+};
+
+
+/**
+ * Task that cleans the destination buffer
+ */
+class RMGfxClearTask : public RMGfxTask {
+public:
+ int Priority();
+ void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+ bool RemoveThis();
+};
+
+
+/**
+ * Task that draws a coloured box
+ */
+class RMGfxBox : public RMGfxTaskSetPrior {
+protected:
+ uint16 wFillColor;
+
+public:
+ void SetColor(byte r, byte g, byte b);
+ void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+ bool RemoveThis();
+};
+
+
+/**
+ * Buffer source for the design, which is a task. This is an abstract base.
+ */
+class RMGfxSourceBuffer : public virtual RMGfxBuffer, public RMGfxTaskSetPrior {
+public:
+ // Carica i dati della surface a basso livello
+ virtual int Init(uint32 resID, int dimx, int dimy, bool bLoadPalette = false);
+ virtual int Init(byte *buf, int dimx, int dimy, bool bLoadPalette = false);
+ virtual void Init(RMDataStream &ds, int dimx, int dimy, bool bLoadPalette = false);
+
+ virtual ~RMGfxSourceBuffer();
+
+protected:
+ virtual void PrepareImage(void);
+ bool Clip2D(int &x1, int &y1, int &u, int &v, int &width, int &height, bool bUseSrc, RMGfxTargetBuffer *buf);
+ void OffsetY(int nLines) { RMGfxBuffer::OffsetY(nLines,Bpp()); }
+
+public:
+ virtual int Bpp() = 0;
+};
+
+
+/**
+ * 16-bit colour source
+ */
+class RMGfxSourceBuffer16 : public RMGfxSourceBuffer {
+protected:
+ virtual void PrepareImage(void);
+ bool m_bTrasp0;
+
+public:
+ RMGfxSourceBuffer16(bool bUseTrasp = false);
+ RMGfxSourceBuffer16(int dimx, int dimy, bool bUseDDraw = false);
+ virtual ~RMGfxSourceBuffer16();
+
+ // Inizializzazione
+ void Create(int dimx, int dimy, bool bUseDDraw = false);
+
+ int Bpp();
+ virtual void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+};
+
+
+/**
+ * Buffer source with palette
+ */
+class RMGfxSourceBufferPal : public RMGfxSourceBuffer {
+protected:
+ // The size of the palette is (1<<Bpp())*4
+ byte m_pal[256 * 3];
+ uint16 m_palFinal[256];
+
+ // Post process to prepare the palette for drawing
+ virtual void PreparePalette(void);
+
+public:
+ virtual ~RMGfxSourceBufferPal();
+
+ virtual int Init(byte *buf, int dimx, int dimy, bool bLoadPalette = false);
+ virtual void Init(RMDataStream& ds, int dimx, int dimy, bool bLoadPalette = false);
+
+ int LoadPaletteWA(uint32 resID, bool bSwapped = false);
+ int LoadPaletteWA(byte *buf, bool bSwapped = false);
+ int LoadPalette(uint32 resID);
+ int LoadPalette(byte *buf);
+};
+
+
+/**
+ * Buffer source with a 256 colour palette
+ */
+class RMGfxSourceBuffer8 : public RMGfxSourceBufferPal {
+protected:
+ bool m_bTrasp0;
+
+public:
+ RMGfxSourceBuffer8(bool bTrasp0 = true);
+ RMGfxSourceBuffer8(int dimx, int dimy, bool bUseDDraw = false);
+ virtual ~RMGfxSourceBuffer8();
+
+ // Inizializzazione
+ void Create(int dimx, int dimy, bool bUseDDraw = false);
+
+ int Bpp();
+ virtual void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive *prim);
+};
+
+
+/**
+ * Buffer source with a 256 colour palette, and alpha blending
+ */
+class RMGfxSourceBuffer8AB : public RMGfxSourceBuffer8 {
+protected:
+ int CalcTrasp(int f, int b);
+
+public:
+ virtual ~RMGfxSourceBuffer8AB();
+ virtual void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+};
+
+
+/**
+ * Buffer source with a 256 colour palette, RLE compressed
+ */
+
+class RMGfxSourceBuffer8RLE : public virtual RMGfxSourceBuffer8 {
+protected:
+ int alphaBlendColor;
+ int alphaR, alphaB, alphaG;
+ bool bNeedRLECompress;
+
+protected:
+ static byte MegaRLEBuf[];
+
+ virtual void RLEWriteTrasp(byte *&cur, int rep) = 0;
+ virtual void RLEWriteData(byte *&cur, int rep, byte *src) = 0;
+ virtual void RLEWriteEOL(byte *&cur) = 0;
+ virtual void RLEWriteAlphaBlend(byte *&cur, int rep) = 0;
+ virtual void RLEDecompressLine(uint16 *dst, byte *src, int nStartSkip, int nLength) = 0;
+ virtual void RLEDecompressLineFlipped(uint16 *dst, byte *src, int nStartSkip, int nLength) = 0;
+
+ // Perform image compression in RLE
+ void CompressRLE(void);
+
+protected:
+ // Overriding initialization methods
+ virtual void PrepareImage(void);
+ virtual void PreparePalette(void);
+
+public:
+ RMGfxSourceBuffer8RLE();
+ virtual ~RMGfxSourceBuffer8RLE();
+
+ // Overload of the initialization method
+ virtual void Init(RMDataStream& ds, int dimx, int dimy, bool bLoadPalette = false);
+ virtual int Init(byte *buf, int dimx, int dimy, bool bLoadPalette = false);
+
+ // Draw image with RLE decompression
+ void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+
+ // Sets the color that will be alpha blended
+ void SetAlphaBlendColor(int color);
+
+ // Warn if the data is already compressed
+ void SetAlreadyCompressed(void);
+};
+
+class RMGfxSourceBuffer8RLEByte : public RMGfxSourceBuffer8RLE {
+protected:
+ void RLEWriteTrasp(byte * &cur, int rep);
+ void RLEWriteAlphaBlend(byte * &cur, int rep);
+ void RLEWriteData(byte * &cur, int rep, byte *src);
+ void RLEWriteEOL(byte * &cur);
+ void RLEDecompressLine(uint16 *dst, byte *src, int nStartSkip, int nLength);
+ void RLEDecompressLineFlipped(uint16 *dst, byte *src, int nStartSkip, int nLength);
+
+public:
+ virtual ~RMGfxSourceBuffer8RLEByte();
+};
+
+class RMGfxSourceBuffer8RLEWord : public RMGfxSourceBuffer8RLE {
+protected:
+ void RLEWriteTrasp(byte * &cur, int rep);
+ void RLEWriteAlphaBlend(byte * &cur, int rep);
+ void RLEWriteData(byte * &cur, int rep, byte *src);
+ void RLEWriteEOL(byte * &cur);
+ virtual void RLEDecompressLine(uint16 *dst, byte *src, int nStartSkip, int nLength);
+ virtual void RLEDecompressLineFlipped(uint16 *dst, byte *src, int nStartSkip, int nLength);
+
+public:
+ virtual ~RMGfxSourceBuffer8RLEWord();
+};
+
+class RMGfxSourceBuffer8RLEWordAB : public RMGfxSourceBuffer8RLEWord {
+protected:
+ virtual void RLEDecompressLine(uint16 *dst, byte *src, int nStartSkip, int nLength);
+
+public:
+ virtual ~RMGfxSourceBuffer8RLEWordAB();
+};
+
+
+/**
+ * Buffer source with a 256 color palette, with anti-aliasing
+ */
+class RMGfxSourceBuffer8AA : public virtual RMGfxSourceBuffer8 {
+protected:
+ static byte MegaAABuf[];
+ static byte MegaAABuf2[];
+ byte *m_aabuf;
+
+ // Calcola il buffer per l'antialiasing
+ void CalculateAA(void);
+
+ // Disegna l'AA
+ void DrawAA(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+
+protected:
+ void PrepareImage(void);
+
+public:
+ RMGfxSourceBuffer8AA();
+ virtual ~RMGfxSourceBuffer8AA();
+
+ // Draw con antialiasing
+ void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+};
+
+
+class RMGfxSourceBuffer8RLEByteAA : public RMGfxSourceBuffer8RLEByte, public RMGfxSourceBuffer8AA {
+protected:
+ void PrepareImage(void);
+
+public:
+ void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+
+ // Overloaded initialisation methods
+ virtual void Init(RMDataStream& ds, int dimx, int dimy, bool bLoadPalette = false);
+ virtual int Init(byte *buf, int dimx, int dimy, bool bLoadPalette = false);
+
+ virtual ~RMGfxSourceBuffer8RLEByteAA();
+};
+
+class RMGfxSourceBuffer8RLEWordAA : public RMGfxSourceBuffer8RLEWord, public RMGfxSourceBuffer8AA {
+protected:
+ void PrepareImage(void);
+
+public:
+ void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+
+ // Overloaded initialisation method
+ virtual void Init(RMDataStream& ds, int dimx, int dimy, bool bLoadPalette = false);
+ virtual int Init(byte *buf, int dimx, int dimy, bool bLoadPalette = false);
+
+ virtual ~RMGfxSourceBuffer8RLEWordAA();
+};
+
+
+/**
+ * Source buffer with 16 colours
+ */
+class RMGfxSourceBuffer4 : public RMGfxSourceBufferPal {
+public:
+ RMGfxSourceBuffer4();
+ RMGfxSourceBuffer4(int dimx, int dimy, bool bUseDDraw = false);
+
+ // Initialisation
+ void Create(int dimx, int dimy, bool bUseDDraw = false);
+
+ int Bpp();
+ virtual void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+};
+
+
+/**
+ * Destination buffer which manages it's own internal list of tasks
+ */
+class RMGfxTargetBuffer : public virtual RMGfxBuffer {
+private:
+static RMGfxClearTask taskClear;
+
+ struct OTList {
+ RMGfxPrimitive* prim;
+ OTList* next;
+
+ OTList();
+ OTList(RMGfxPrimitive* pr) { prim=pr; }
+ };
+
+private:
+ OSystem::MutexRef csModifyingOT;
+
+protected:
+ OTList *otlist;
+ int m_otSize;
+
+public:
+ RMGfxTargetBuffer();
+ virtual ~RMGfxTargetBuffer();
+
+ // management of the OT list
+ void ClearOT(void);
+ void DrawOT(void);
+ void AddPrim(RMGfxPrimitive *prim); // The pointer must be delted
+
+ // Adds a task to clear the screen
+ void AddClearTask(void);
+
+ operator byte *() { return m_buf; }
+ operator void *() { return (void *)m_buf; }
+ operator uint16 *() {
+ // FIXME: This may not be endian safe
+ return (uint16 *)m_buf;
+ }
+
+ // Offseting buffer
+ void OffsetY(int nLines) { RMGfxBuffer::OffsetY(nLines, 16); }
+};
+
+
+/**
+ * Ring buffer, which is both source and by destination
+ */
+class RMGfxWoodyBuffer: public RMGfxSourceBuffer16, public RMGfxTargetBuffer {
+public:
+ RMGfxWoodyBuffer();
+ RMGfxWoodyBuffer(int dimx, int dimy, bool bUseDDraw = false);
+ virtual ~RMGfxWoodyBuffer();
+
+ virtual void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+};
+
+} // End of namespace Tony
+
+#endif
diff --git a/engines/tony/gfxengine.cpp b/engines/tony/gfxengine.cpp
new file mode 100644
index 0000000000..02ee7c8e8e
--- /dev/null
+++ b/engines/tony/gfxengine.cpp
@@ -0,0 +1,53 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: GfxEngine.CPP........ *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#include "tony/gfxEngine.h"
+
+namespace Tony {
+
+
+} // End of namespace Tony
diff --git a/engines/tony/gfxengine.h b/engines/tony/gfxengine.h
new file mode 100644
index 0000000000..317056315e
--- /dev/null
+++ b/engines/tony/gfxengine.h
@@ -0,0 +1,167 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: GfxEngine.CPP........ *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#ifndef TONY_GFXENGINE_H
+#define TONY_GFXENGINE_H
+
+#include "common/scummsys.h"
+#include "common/system.h"
+#include "common/rect.h"
+#include "tony/mpal/memory.h"
+#include "tony/game.h"
+#include "tony/gfxcore.h"
+#include "tony/input.h"
+#include "tony/inventory.h"
+#include "tony/tonychar.h"
+#include "tony/utils.h"
+
+namespace Tony {
+
+class RMGfxEngine {
+private:
+ RMGfxTargetBuffer m_bigBuf;
+ RMInput m_input;
+ RMPointer m_point;
+ RMLocation m_loc;
+ RMOptionScreen m_opt;
+ RMTony m_tony;
+ RMInventory m_inv;
+ RMInterface m_inter;
+ RMTextItemName m_itemName;
+
+ bool m_bOption;
+ bool m_bLocationLoaded;
+
+ bool m_bInput;
+ bool m_bAlwaysDrawMouse;
+
+ int m_nCurLoc;
+ RMTonyAction m_curAction;
+ int m_curActionObj;
+ OSystem::MutexRef csMainLoop;
+
+ int m_nWipeType;
+ HANDLE m_hWipeEvent;
+ int m_nWipeStep;
+
+ bool m_bMustEnterMenu;
+protected:
+ static void ItemIrq(uint32 dwItem, int nPattern, int nStatus);
+ void InitForNewLocation(int nLoc, RMPoint ptTonyStart, RMPoint start);
+public:
+ bool m_bWiping;
+ Common::Rect m_rcWipeEllipse;
+ bool m_bGUIOption;
+ bool m_bGUIInterface;
+ bool m_bGUIInventory;
+public:
+ RMGfxEngine();
+ virtual ~RMGfxEngine();
+
+ // Draw the next frame
+ void DoFrame(bool bDrawLocation);
+
+ // Initialises the graphics engine
+ void Init();
+
+ // Closes the graphics engine
+ void Close(void);
+
+ // Warns when changing
+ void SwitchFullscreen(bool bFull);
+
+ // Warn that we are guided by the GDI
+ void GDIControl(bool bCon);
+
+ // Warns when entering or exits the options menu
+ void OpenOptionScreen(int type);
+
+ // Enables or disables mouse input
+ void EnableInput(void);
+ void DisableInput(void);
+
+ // Enables and disables mouse draw
+ void EnableMouse(void);
+ void DisableMouse(void);
+
+ operator byte *() { return (byte *)m_bigBuf; }
+
+ // Link to the custom function list
+ void InitCustomDll(void);
+
+ // Link to graphic task
+ void LinkGraphicTask(RMGfxTask *task) { m_bigBuf.AddPrim(new RMGfxPrimitive(task)); };
+
+ // Manage a location
+ HANDLE LoadLocation(int nLoc, RMPoint ptTonyStart, RMPoint start);
+ HANDLE UnloadLocation(bool bDoOnExit=true);
+
+ // Freeze and unfreeze
+ void Freeze(void);
+ void Unfreeze(void);
+
+ // State management
+ void SaveState(char *fn, byte *curThumb, char *name, bool bFastCompress = false);
+ void LoadState(char *fn);
+
+ // Selects a location
+ void SelectLocation(RMPoint ptTonyStart=RMPoint(-1,-1), RMPoint start=RMPoint(-1,-1));
+
+ // Pauses sound
+ void PauseSound(bool bPause);
+
+ // Wipe
+ void InitWipe(int type);
+ void CloseWipe(void);
+ void WaitWipeEnd(void);
+
+ void SetPalesati(bool bpal) { m_inter.SetPalesati(bpal); }
+};
+
+} // End of namespace Tony
+
+#endif
diff --git a/engines/tony/input.cpp b/engines/tony/input.cpp
new file mode 100644
index 0000000000..367317bd88
--- /dev/null
+++ b/engines/tony/input.cpp
@@ -0,0 +1,54 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: Input.CPP............ *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#include "tony/gfxEngine.h"
+
+namespace Tony {
+
+
+
+} // End of namespace Tony
diff --git a/engines/tony/input.h b/engines/tony/input.h
new file mode 100644
index 0000000000..6ea56024a9
--- /dev/null
+++ b/engines/tony/input.h
@@ -0,0 +1,116 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: Input.CPP............ *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#ifndef TONY_INPUT_H
+#define TONY_INPUT_H
+
+#include "tony/utils.h"
+
+namespace Tony {
+
+class RMInput {
+private:
+// LPDIRECTINPUT m_DI;
+// LPDIRECTINPUTDEVICE m_DIDKeyboard, m_DIDMouse;
+
+// DIMOUSESTATE m_mState;
+ int m_mX, m_mY;
+ bool m_bClampMouse;
+
+ bool m_bLeftClickMouse, m_bLeftReleaseMouse, m_bRightClickMouse, m_bRightReleaseMouse;
+
+private:
+ // Inizializza DirectInput
+ void DIInit(uint32 hInst);
+
+ // Deinizializza DirectInput
+ void DIClose(void);
+
+public:
+ RMInput();
+ ~RMInput();
+
+ // Class initialisation
+ void Init(uint32 hInst);
+
+ // Closes the class
+ void Close(void);
+
+ // Polling (must be performed once per frame)
+ void Poll(void);
+
+ // Aquire the DirectInput device
+ bool Acquire(void);
+
+ // Deacquires the device
+ void Unacquire(void);
+
+ // Reading of the mouse
+ RMPoint MousePos() { return RMPoint(m_mX, m_mY); }
+
+ // Current status of the mouse buttons
+ bool MouseLeft();
+ bool MouseRight();
+
+ // Events of mouse clicks
+ bool MouseLeftClicked() { return m_bLeftClickMouse; }
+ bool MouseRightClicked() { return m_bRightClickMouse; }
+ bool MouseBothClicked() { return m_bLeftClickMouse&&m_bRightClickMouse; }
+ bool MouseLeftReleased() { return m_bLeftReleaseMouse; }
+ bool MouseRightReleased() { return m_bRightReleaseMouse; }
+ bool MouseBothReleased() { return m_bLeftReleaseMouse&&m_bRightReleaseMouse; }
+
+ // Warns when changing from full screen to windowed
+ void SwitchFullscreen(bool bFull);
+
+ // Warns when we are in the GDI loop
+ void GDIControl(bool bCon);
+};
+
+} // End of namespace Tony
+
+#endif
diff --git a/engines/tony/inventory.h b/engines/tony/inventory.h
new file mode 100644
index 0000000000..5ec67f6228
--- /dev/null
+++ b/engines/tony/inventory.h
@@ -0,0 +1,212 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: Inventory.CPP........ *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#ifndef TONY_INVENTORY_H
+#define TONY_INVENTORY_H
+
+#include "common/scummsys.h"
+#include "common/system.h"
+#include "tony/font.h"
+#include "tony/gfxcore.h"
+#include "tony/loc.h"
+
+namespace Tony {
+
+struct RMInventoryItem {
+ RMItem icon;
+ RMGfxSourceBuffer8RLEByteAA *pointer;
+ int status;
+};
+
+class RMInventory : public RMGfxWoodyBuffer {
+private:
+ enum STATE {
+ CLOSED,
+ OPENING,
+ OPENED,
+ CLOSING,
+ SELECTING
+ };
+
+protected:
+ int m_nItems;
+ RMInventoryItem *m_items;
+
+ int m_inv[256];
+ int m_nInv;
+ int m_curPutY;
+ int m_curPutTime;
+
+ int m_curPos;
+ STATE m_state;
+ bool m_bHasFocus;
+ int m_nSelectObj;
+ int m_nCombine;
+ bool m_bCombining;
+
+ bool m_bBlinkingRight, m_bBlinkingLeft;
+
+ int miniAction;
+ RMItem miniInterface;
+ RMText m_hints[3];
+
+ OSystem::MutexRef m_csModifyInterface;
+
+protected:
+ // Prepara l'immagine dell'inventario. Va richiamato ogni volta
+ // che l'inventario cambia
+ void Prepare(void);
+
+ // Controlla se la posizione Y del mouse è corretta, anche in base
+ // alla posizione dell'inventario su schermo
+ bool CheckPointInside(RMPoint &pt);
+
+public:
+ RMInventory();
+ virtual ~RMInventory();
+
+ // Prepara un frame
+ void DoFrame(RMGfxTargetBuffer& bigBuf, RMPointer &ptr, RMPoint mpos, bool bCanOpen);
+
+ // Inizializzazione e chiusura
+ void Init(void);
+ void Close(void);
+ void Reset(void);
+
+ // Overload per la rimozione da otlist
+ bool RemoveThis(void);
+
+ // Overload per il disegno (per la posizione x&y e l'interfaccina)
+ void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+
+ // Metodo per determinare se l'inventario sta comandando gli input
+ bool HaveFocus(RMPoint mpos);
+
+ // Metodo per determinare se la mini interfaccia è attiva
+ bool MiniActive(void);
+
+ // Gestisce il click sinistro del mouse (solo quando c'ha focus)
+ bool LeftClick(RMPoint mpos, int &nCombineObj);
+
+ // Gestisce il tasto destro del mouse (solo quando c'ha focus)
+ void RightClick(RMPoint mpos);
+ bool RightRelease(RMPoint mpos, RMTonyAction& curAction);
+
+ // Avverte che è finito il combine
+ void EndCombine(void);
+
+public:
+ // Aggiunta di un oggetto all'inventario
+ void AddItem(int code);
+ RMInventory& operator+=(RMItem *item) { AddItem(item->MpalCode()); return *this; }
+ RMInventory& operator+=(RMItem &item) { AddItem(item.MpalCode()); return *this; }
+ RMInventory& operator+=(int code) { AddItem(code); return *this; }
+
+ // Rimozione di oggetto
+ void RemoveItem(int code);
+
+ // Siamo sopra un oggetto?
+ RMItem* WhichItemIsIn(RMPoint mpt);
+ bool ItemInFocus(RMPoint mpt);
+
+ // Cambia l'icona di un oggetto
+ void ChangeItemStatus(uint32 dwCode, uint32 dwStatus);
+
+ // Salvataggio
+ int GetSaveStateSize(void);
+ void SaveState(byte *state);
+ int LoadState(byte *state);
+};
+
+
+class RMInterface : public RMGfxSourceBuffer8RLEByte {
+private:
+ bool m_bActive;
+ RMPoint m_mpos;
+ RMPoint m_openPos;
+ RMPoint m_openStart;
+ RMText m_hints[5];
+ RMGfxSourceBuffer8RLEByte m_hotzone[5];
+ RMRect m_hotbbox[5];
+ bool m_bPalesati;
+ int m_lastHotZone;
+
+protected:
+ // Dice su quale zona calda si trova il punto
+ int OnWhichBox(RMPoint pt);
+
+public:
+ virtual ~RMInterface();
+
+ // Il solito DoFrame (polling del motore grafico)
+ void DoFrame(RMGfxTargetBuffer& bigBuf, RMPoint mousepos);
+
+ // TRUE se è attiva (non si può selezionare oggetti)
+ bool Active();
+
+ // Inizializzazione
+ void Init(void);
+ void Close(void);
+
+ // Resetta l'interfaccia
+ void Reset(void);
+
+ // Avverte dei click e rilasci del mouse
+ void Clicked(RMPoint mousepos);
+ bool Released(RMPoint mousepos, RMTonyAction &action);
+
+ // Attiva o disattiva il quinto verbo
+ void SetPalesati(bool bOn);
+ bool GetPalesati(void);
+
+ // Overloading del Draw per il posizionamente
+ virtual void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+};
+
+} // End of namespace Tony
+
+#endif
diff --git a/engines/tony/loc.cpp b/engines/tony/loc.cpp
index a40248f57d..83c48bb938 100644
--- a/engines/tony/loc.cpp
+++ b/engines/tony/loc.cpp
@@ -32,10 +32,10 @@
* *$. '$$$$$$$$$ 4$P 4 *
* J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
* z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
- * z$" "" #$F^ "" '$c Desc: Classi di gestione *
- * z$$beu .ue=" $ "=e.. .zed$$c dei dati di una loca- *
- * "#$e z$*" . `. ^*Nc e$"" zione................ *
- * "$$". .r" ^4. .^$$" ..................... *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
* ^.@*"6L=\ebu^+C$"*b." *
* "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
* ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
diff --git a/engines/tony/loc.h b/engines/tony/loc.h
index e09a7389d9..1cae9edb1e 100644
--- a/engines/tony/loc.h
+++ b/engines/tony/loc.h
@@ -32,10 +32,10 @@
* *$. '$$$$$$$$$ 4$P 4 *
* J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
* z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
- * z$" "" #$F^ "" '$c Desc: Classi di gestione *
- * z$$beu .ue=" $ "=e.. .zed$$c dei dati di una loca- *
- * "#$e z$*" . `. ^*Nc e$"" zione................ *
- * "$$". .r" ^4. .^$$" ..................... *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
* ^.@*"6L=\ebu^+C$"*b." *
* "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
* ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
@@ -49,10 +49,269 @@
#define TONY_LOC_H
#include "common/scummsys.h"
-#include "utils.h"
+#include "common/system.h"
+#include "tony/mpal/stubs.h"
+#include "tony/sound.h"
+#include "tony/utils.h"
namespace Tony {
+/****************************************************************************\
+* Various defines
+\****************************************************************************/
+
+/**
+ * Valid colour modes
+ */
+typedef enum {
+ CM_256,
+ CM_65K
+} RMColorMode;
+
+
+/****************************************************************************\
+* Class declarations
+\****************************************************************************/
+
+/**
+ * Generic palette
+ */
+class RMPalette {
+public:
+ byte m_data[1024];
+
+public:
+ friend RMDataStream &operator>>(RMDataStream &ds, RMPalette &pal);
+};
+
+
+/**
+ * Sound effect of an object
+ */
+class RMSfx {
+public:
+ RMString m_name;
+ FPSFX *m_fx;
+ bool m_bPlayingLoop;
+
+public:
+ RMSfx();
+ virtual ~RMSfx();
+
+ friend RMDataStream& operator>>(RMDataStream &ds, RMSfx &sfx);
+
+ void Play(bool bLoop = false);
+ void SetVolume(int vol);
+ void Pause(bool bPause);
+ void Stop(void);
+
+ void ReadFromStream(RMDataStream& ds, bool bLOX = false);
+};
+
+
+/**
+ * Object pattern
+ */
+class RMPattern {
+public:
+ // Type of slot
+ enum RMSlotType {
+ DUMMY1 = 0,
+ DUMMY2,
+ SPRITE,
+ SOUND,
+ COMMAND,
+ SPECIAL
+ };
+
+ // Class slot
+ class RMSlot {
+ private:
+ RMPoint m_pos; // Child co-ordinates
+
+ public:
+ RMSlotType m_type;
+ int m_data;
+ byte m_flag;
+
+ public:
+ friend RMDataStream& operator>>(RMDataStream& ds, RMSlot& slot);
+
+ RMPoint Pos() { return m_pos; }
+
+ void ReadFromStream(RMDataStream& ds, bool bLOX = false);
+ };
+
+public:
+ RMString m_name;
+
+private:
+ int m_speed;
+ RMPoint m_pos; // Coordinate babbo
+ RMPoint m_curPos; // Coordinate babbo+figlio
+ int m_bLoop;
+ int m_nSlots;
+ int m_nCurSlot;
+ int m_nCurSprite;
+
+ RMSlot *m_slots;
+
+ uint32 m_nStartTime;
+
+public:
+ RMPattern();
+ virtual ~RMPattern();
+
+ friend RMDataStream& operator>>(RMDataStream& ds, RMPattern& pat);
+
+ // A warning that the pattern now and the current
+ int Init(RMSfx* sfx, bool bPlayP0=false, byte* bFlag=NULL);
+
+ // Update the pattern, checking to see if it's time to change slot and executing
+ // any associated commands
+ int Update(HANDLE hEndPattern, byte& bFlag, RMSfx* sfx);
+
+ // Stop a sound effect
+ void StopSfx(RMSfx *sfx);
+
+ // Reads the position of the pattern
+ RMPoint Pos() { return m_curPos; }
+
+ void ReadFromStream(RMDataStream& ds, bool bLOX = false);
+
+private:
+ void UpdateCoord(void);
+};
+
+
+/**
+ * Sprite (frame) animation of an item
+ */
+class RMSprite : public RMGfxTask {
+public:
+ RMString m_name;
+ RMRect m_rcBox;
+
+protected:
+ RMGfxSourceBuffer* m_buf;
+
+public:
+ RMSprite();
+ virtual ~RMSprite();
+
+ void Init(RMGfxSourceBuffer* buf);
+ friend RMDataStream& operator>>(RMDataStream& ds, RMSprite& sprite);
+ void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+ void SetPalette(byte *lpBuf);
+ void GetSizeFromStream(RMDataStream& ds, int* dimx, int* dimy);
+ void LOXGetSizeFromStream(RMDataStream& ds, int* dimx, int* dimy);
+
+ void ReadFromStream(RMDataStream& ds, bool bLOX = false);
+};
+
+
+/**
+ * Data on an item
+ */
+class RMItem : public RMGfxTask {
+public:
+ RMString m_name;
+
+protected:
+ int m_z;
+ RMPoint m_pos; // Coordinate nonno
+ RMColorMode m_cm;
+ RMPoint m_curScroll;
+
+ byte m_FX;
+ byte m_FXparm;
+
+ virtual int GetCurPattern() { return m_nCurPattern; }
+
+private:
+ int m_nCurPattern;
+ int m_mpalCode;
+ RMPoint m_hot;
+ RMRect m_rcBox;
+ int m_nSprites,m_nSfx,m_nPatterns;
+ byte m_bPal;
+ RMPalette m_pal;
+
+ RMSprite *m_sprites;
+ RMSfx *m_sfx;
+ RMPattern *m_patterns;
+
+ byte m_bCurFlag;
+ int m_nCurSprite;
+ bool m_bIsActive;
+ HANDLE m_hEndPattern;
+ bool m_bInitCurPattern;
+
+public:
+ RMPoint CalculatePos(void);
+
+public:
+ RMItem();
+ virtual ~RMItem();
+
+ friend RMDataStream& operator>>(RMDataStream &ds, RMItem &item);
+
+ // Processa l'oggetto per fare andare avanti eventuale animazioni. Ritorna TRUE se dovrà
+ // essere ridisegnato il prossimo frame
+ bool DoFrame(RMGfxTargetBuffer *bigBuf, bool bAddToList = true);
+
+ // Setta la posizione corrente di scrolling
+ void SetScrollPosition(RMPoint scroll);
+
+ // Overloading della funzione per la rimozione da ot list
+ virtual bool RemoveThis();
+
+ // Overloading del draw
+ virtual void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+
+ // Overloading della priorità: è la Z
+ virtual int Priority() { return m_z; }
+
+ // Numero di pattern
+ int NumPattern() { return m_nPatterns; }
+
+ // Setta un nuovo pattern di animazione, cambiando bruscamente da quello corrente
+ virtual void SetPattern(int nPattern, bool bPlayP0 = false);
+
+ // Setta un nuovo status.
+ void SetStatus(int nStatus);
+
+ bool IsIn(RMPoint pt, int* size=NULL);
+ RMPoint Hotspot() { return m_hot; }
+ bool GetName(RMString& name);
+ int MpalCode() { return m_mpalCode; }
+
+ // Scarica l'item
+ void Unload(void);
+
+ // Aspetta la fine del pattern in play
+ void WaitForEndPattern(HANDLE hCustomSkip = INVALID_HANDLE_VALUE);
+
+ // Setta un nuovo hotspot per l'oggetto
+ void ChangeHotspot(RMPoint pt);
+
+ void SetInitCurPattern(bool status) { m_bInitCurPattern=status; }
+
+ void PlaySfx(int nSfx);
+
+void ReadFromStream(RMDataStream& ds, bool bLOX=false);
+
+ void PauseSound(bool bPause);
+
+protected:
+ // Crea una primitiva che ha come task l'item stesso
+ virtual RMGfxPrimitive *NewItemPrimitive();
+
+ // Alloca la memoria per gli sprites
+ virtual RMGfxSourceBuffer* NewItemSpriteBuffer(int dimx, int dimy, bool bPreRLE);
+};
+
+
#define MAXBOXES 50 // Non si puo' cambiare, comanda cosi' il boxed
#define MAXHOTSPOT 20 // Idem
@@ -122,6 +381,225 @@ public:
void LoadState(byte *buf);
};
+class RMCharacter : protected RMItem {
+public:
+ enum PATTERNS {
+ PAT_STANDUP = 1,
+ PAT_STANDDOWN,
+ PAT_STANDLEFT,
+ PAT_STANDRIGHT,
+ PAT_WALKUP,
+ PAT_WALKDOWN,
+ PAT_WALKLEFT,
+ PAT_WALKRIGHT
+ };
+
+private:
+ enum STATUS {
+ STAND,
+ WALK
+ };
+
+ signed short walkcount;
+ int dx, dy, olddx, olddy;
+ float fx, fy, slope;
+ RMPoint linestart, lineend, pathend;
+ signed char walkspeed, walkstatus;
+ char minpath;
+ short nextbox;
+ short path[MAXBOXES];
+ short pathlenght, pathcount;
+ int curbox;
+
+ STATUS status;
+ int curSpeed;
+ bool bEndOfPath;
+ HANDLE hEndOfPath;
+ OSystem::MutexRef csMove;
+ int curLocation;
+ bool bRemoveFromOT;
+ bool bMovingWithoutMinpath;
+ RMGameBoxes *theBoxes;
+
+ RMPoint m_fixedScroll;
+
+private:
+ int InWhichBox(RMPoint pt);
+
+ short FindPath(short source, short destination);
+ RMPoint Searching(char UP, char DOWN, char RIGHT, char LEFT, RMPoint punto);
+ RMPoint NearestPoint(RMPoint punto);
+
+ void GoTo(RMPoint destcoord, bool bReversed=false);
+ short ScanLine(RMPoint punto);
+ RMPoint InvScanLine(RMPoint punto);
+ RMPoint NearestHotSpot(int sourcebox, int destbox);
+
+ void NewBoxEntered(int nBox);
+
+protected:
+ bool bMoving;
+ bool bDrawNow;
+ bool bNeedToStop;
+// virtual RMGfxPrimitive* NewItemPrimitive();
+
+public:
+ RMCharacter();
+ virtual ~RMCharacter();
+
+ void LinkToBoxes(RMGameBoxes* theBoxes);
+
+ virtual bool RemoveThis(void);
+
+ // Aggiorna la posizione del personaggio
+ void DoFrame(RMGfxTargetBuffer* bigBuf, int loc);
+
+ // Overloading del Draw
+ void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+
+ // TRUE se si è appena fermato
+ bool EndOfPath() { return bEndOfPath; }
+
+ // Cambia il pattern del personaggio per fermarlo
+ virtual void Stop(void);
+
+ // Controlla se il personaggio si sta muovendo
+ bool IsMoving() { return bMoving; }
+
+ // Muove il personaggio a una certa posizione
+ bool Move(RMPoint pt);
+
+ // Posiziona il personaggio a una certa posizione SENZA farlo muovere
+ void SetPosition(RMPoint pt, int newloc=-1);
+
+ // Aspetta la fine del movimento
+ void WaitForEndMovement(void) { if (bMoving) WaitForSingleObject(hEndOfPath, INFINITE); }
+
+ void SetFixedScroll(RMPoint fix) { m_fixedScroll = fix; }
+ void SetSpeed(int speed) { curSpeed=speed; }
+};
+
+
+class RMWipe : public RMGfxTask {
+private:
+ bool m_bFading;
+ bool m_bEndFade;
+ bool m_bUnregister;
+ HANDLE m_hUnregistered;
+ int m_nFadeStep;
+ HANDLE m_hEndOfFade;
+ bool m_bMustRegister;
+
+ RMItem m_wip0r;
+
+public:
+ RMWipe();
+ virtual ~RMWipe();
+
+ void DoFrame(RMGfxTargetBuffer& bigBuf);
+ void Draw(RMGfxTargetBuffer& bigBuf, RMGfxPrimitive* prim);
+
+ void InitFade(int type);
+ void CloseFade(void);
+ void WaitForFadeEnd(void);
+
+ virtual void Unregister(void);
+ virtual bool RemoveThis(void);
+ virtual int Priority(void);
+};
+
+
+/**
+ * Location
+ */
+class RMLocation : public RMGfxTaskSetPrior {
+public:
+ RMString m_name; // Nome
+
+ private:
+ RMColorMode m_cmode; // Color mode
+ RMGfxSourceBuffer* m_buf; // Immagine della locazione
+
+ int m_nItems; // Numero oggetti
+RMItem* m_items; // Oggetti
+
+ RMPoint m_curScroll; // Posizione corrente di scroll
+ RMPoint m_fixedScroll;
+
+public:
+ // @@@@@@@@@@@@@@@@@@@@@@@
+ RMPoint TEMPTonyStart;
+ RMPoint TEMPGetTonyStart() { return TEMPTonyStart; }
+
+ int TEMPNumLoc;
+ int TEMPGetNumLoc() { return TEMPNumLoc; }
+
+public:
+ RMLocation();
+ virtual ~RMLocation();
+
+ // Caricamento da disco
+ bool Load(char *lpszFileName);
+ bool Load(HANDLE hFile);
+ bool Load(byte *buf);
+ bool Load(RMDataStream &ds);
+ bool LoadLOX(RMDataStream &ds);
+
+ // Scaricamento
+ void Unload(void);
+
+ // Overloading del Draw
+ void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+
+ // Prepara un frame disegnando la locazione e tutti i suoi item
+ void DoFrame(RMGfxTargetBuffer *bigBuf);
+
+ // Si fa dare il numero dell'item
+ RMItem* WhichItemIsIn(RMPoint pt);
+
+ // Si fa dare un elemento dal suo codice MPAL
+ RMItem* GetItemFromCode(uint32 dwCode);
+
+ // Setta la posizione corrente di scrolling
+ void SetScrollPosition(RMPoint &scroll);
+
+ // Setta un offset aggiuntivo di scrolling da aggiungere sempre
+ void SetFixedScroll(RMPoint &scroll);
+
+ // Aggiorna le coordinate di scrolling in modo da visualizzare sempre il punto fornito
+ void UpdateScrolling(RMPoint ptShowThis);
+
+ // Legge la posizione di scrolling corrente
+ RMPoint ScrollPosition() { return m_curScroll; }
+
+ // Pausa sonoro
+ void PauseSound(bool bPause);
+};
+
+
+/**
+ * MPAL message, composed of more ASCIIZ
+ */
+class RMMessage {
+private:
+ char *lpMessage;
+ char *lpPeriods[256];
+ int nPeriods;
+
+private:
+ void ParseMessage(void);
+
+public:
+ RMMessage(uint32 dwId);
+ virtual ~RMMessage();
+
+ bool IsValid() { return lpMessage != NULL; }
+ int NumPeriods() { return nPeriods; }
+ char *Period(int num) { return lpPeriods[num]; }
+ char *operator[](int num) { return lpPeriods[num]; }
+};
+
+
} // End of namespace Tony
#endif /* TONY_H */
diff --git a/engines/tony/module.mk b/engines/tony/module.mk
index 6aeb0a1583..cbc07d27b7 100644
--- a/engines/tony/module.mk
+++ b/engines/tony/module.mk
@@ -2,7 +2,12 @@ MODULE := engines/tony
MODULE_OBJS := \
detection.o \
+ game.o \
+ gfxcore.o \
+ gfxengine.o \
+ input.o \
loc.o \
+ sound.o \
tony.o \
utils.o \
mpal/expr.o \
diff --git a/engines/tony/mpal/memory.h b/engines/tony/mpal/memory.h
index dde2e8908c..fde0d33b3e 100644
--- a/engines/tony/mpal/memory.h
+++ b/engines/tony/mpal/memory.h
@@ -75,6 +75,10 @@ public:
#define GlobalUnlock(handle) {}
#define GlobalSize(handle) (_vm->_memoryManager.getItem(handle).Size())
+#define GMEM_FIXED 1
+#define GMEM_MOVEABLE 2
+#define GMEM_ZEROINIT 4
+
} // end of namespace MPAL
} // end of namespace Tony
diff --git a/engines/tony/mpal/stubs.h b/engines/tony/mpal/stubs.h
index be856790bc..a8d3253ddb 100644
--- a/engines/tony/mpal/stubs.h
+++ b/engines/tony/mpal/stubs.h
@@ -47,10 +47,6 @@ typedef uint32 (*LPTHREAD_START_ROUTINE)(void *lpThreadParameter);
* Defines
\****************************************************************************/
-#define GMEM_FIXED 1
-#define GMEM_MOVEABLE 2
-#define GMEM_ZEROINIT 4
-
#define MB_OK 1
#define PASCAL
diff --git a/engines/tony/resid.h b/engines/tony/resid.h
new file mode 100644
index 0000000000..01ed9b9bd2
--- /dev/null
+++ b/engines/tony/resid.h
@@ -0,0 +1,76 @@
+/* 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.
+ *
+ */
+/*
+ * ResID.H - Include per le risorse MPAL
+ *
+ * Coded by Giovanni Bajo - Nayma/Prograph
+ *
+ * (C) 1997-98, Nayma Software
+ * (C) 1998, Prograph Research srl
+ *
+ */
+
+/*
+ Da 10500 in poi ci sono gli .OGG per l'inventario e i ritagli
+*/
+#ifndef TONY_RESID_H
+#define TONY_RESID_H
+
+
+#define RES_I_INTERFACE 10300
+#define RES_I_INTERPAL 10301
+#define RES_I_INTERPPAL 10302
+#define RES_I_INTERP1 10303
+#define RES_I_INTERP2 10304
+#define RES_I_INTERP3 10305
+#define RES_I_INTERP4 10306
+#define RES_I_INTERP5 10307
+
+#define RES_I_DLGTEXT 10350
+#define RES_I_DLGTEXTLINE 10351
+#define RES_I_DLGTEXTPAL 10352
+
+#define RES_I_MINIINTER 10360
+
+#define RES_P_PAL 10410
+#define RES_P_GO 10400
+#define RES_P_TAKE 10401
+#define RES_P_USE 10402
+#define RES_P_EXAM 10403
+#define RES_P_TALK 10404
+
+#define RES_P_PAP1 10420
+#define RES_P_PAP2 10421
+#define RES_P_PAP3 10422
+#define RES_P_PAP4 10423
+#define RES_P_FRMAP 10424
+
+#define RES_F_PAL 10700
+#define RES_F_PARL 10701
+#define RES_F_OBJ 10702
+#define RES_F_MACC 10703
+#define RES_F_CREDITS 10704
+#define RES_F_CPAL 10705
+
+#define RES_W_CERCHIO 10800
+
+#endif
diff --git a/engines/tony/sound.cpp b/engines/tony/sound.cpp
new file mode 100644
index 0000000000..5d940b3145
--- /dev/null
+++ b/engines/tony/sound.cpp
@@ -0,0 +1,54 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: Sound.CPP............ *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#include "tony/game.h"
+
+namespace Tony {
+
+
+
+} // End of namespace Tony
diff --git a/engines/tony/sound.h b/engines/tony/sound.h
new file mode 100644
index 0000000000..75a70553ef
--- /dev/null
+++ b/engines/tony/sound.h
@@ -0,0 +1,254 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: Sound.CPP............ *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#ifndef TONY_SOUND_H
+#define TONY_SOUND_H
+
+#include "tony/gfxcore.h"
+#include "tony/loc.h"
+#include "tony/utils.h"
+
+namespace Tony {
+
+class FPSFX;
+
+enum CODECS {
+ FPCODEC_RAW,
+ FPCODEC_ADPCM,
+ FPCODEC_WAV
+};
+
+class FPSFX {
+
+/****************************************************************************\
+* Attributi
+\****************************************************************************/
+
+private:
+/*
+ HWND hwnd;
+ LPDIRECTSOUND lpDS;
+ LPDIRECTSOUNDBUFFER lpDSBuffer; // Buffer DirectSound
+*/
+ bool bSoundSupported; // TRUE se il suono e' attivo
+ bool bFileLoaded; // TRUE se e' stato aperto un file
+ bool bLoop; // TRUE se bisogna loopare l'effetto sonoro
+ bool bPaused;
+ int lastVolume;
+
+ bool bStereo; // TRUE se è stereo
+ bool b16bit; // TRUE se è 16 bit
+ uint32 dwFreq; // Frequenza originale di campionamento
+
+// CODEC* lpCodec; // CODEC da utilizzare.
+ bool bIsPlaying; // TRUE se si sta playando l'effetto sonoro
+
+ bool bIsVoice;
+
+// LPDIRECTSOUNDNOTIFY lpDSNotify; // Notify degli hotspot nel buffer
+// DSBPOSITIONNOTIFY dspnHot[2];
+
+public:
+// HANDLE hEndOfBuffer;
+
+private:
+
+
+/****************************************************************************\
+* Metodi
+\****************************************************************************/
+
+public:
+
+/****************************************************************************\
+*
+* Function: FPSFX(LPDIRECTSOUND lpDS, bool bSoundOn);
+*
+* Description: Costruttore di default. *NON* bisogna dichiarare direttamente
+* un oggetto, ma crearlo piuttosto tramite FPSOUND::CreateSfx()
+*
+\****************************************************************************/
+
+ FPSFX(void * /*LPDIRECTSOUND */lpDS, uint32 /*HWND*/ hwnd, bool bSoundOn);
+
+
+/****************************************************************************\
+*
+* Function: ~FPSFX();
+*
+* Description: Distruttore di default. Si preoccupa anche di fermare il sound
+* effect eventualmente in esecuzione, e disallocare la memoria
+* da esso occupata.
+*
+\****************************************************************************/
+
+ ~FPSFX();
+
+
+/****************************************************************************\
+*
+* Function: Release();
+*
+* Description: Rilascia la memoria dell'oggetto. Deve essere richiamata quando
+* l'oggetto non serve piu' e **SOLO SE** l'oggetto e' stato
+* creato con la FPSOUND::CreateStream().
+*
+* Note: Eventuali puntatori all'oggetto non sono piu' validi dopo
+* questa chiamata.
+*
+\****************************************************************************/
+
+ void Release();
+
+
+/****************************************************************************\
+*
+* Function: bool LoadFile(char *lpszFileName, uint32 dwCodec=FPCODEC_RAW);
+*
+* Description: Apre un file di effetto sonoro e lo carica.
+*
+* Input: char *lpszFile Nome del file di sfx da aprire
+* uint32 dwCodec CODEC da utilizzare per decomprimere
+* i campioni sonori
+*
+* Return: TRUE se tutto OK, FALSE in caso di errore
+*
+\****************************************************************************/
+
+ bool LoadFile(char *lpszFileName, uint32 dwCodec = FPCODEC_RAW);
+ bool LoadFile(byte *lpBuf, uint32 dwCodec);
+ bool LoadVoiceFromVDB(HANDLE hvdb);
+
+
+/****************************************************************************\
+*
+* Function: bool Play();
+*
+* Description: Suona lo sfx caricato.
+*
+* Return: TRUE se tutto OK, FALSE in caso di errore.
+*
+\****************************************************************************/
+
+ bool Play();
+
+
+/****************************************************************************\
+*
+* Function: bool Stop();
+*
+* Description: Ferma il play dello sfx.
+*
+* Return: TRUE se tutto OK, FALSE in caso di errore.
+*
+\****************************************************************************/
+
+ bool Stop();
+
+
+/****************************************************************************\
+*
+* Function: void Pause(bool bPause);
+*
+* Description: Pause dell'effetto sonoro
+*
+\****************************************************************************/
+
+ void Pause(bool bPause);
+
+
+/****************************************************************************\
+*
+* Function: bool SetLoop(bool bLoop);
+*
+* Description: Attiva o disattiva il loop dello sfx.
+*
+* Input: bool bLoop TRUE per attivare il loop, FALSE per
+* disattivarlo
+*
+* Note: Il loop deve essere attivato PRIMA di eseguire il play
+* dello sfx. Qualsiasi modifica effettuata durante il play
+* non avra' effetto fino a che lo sfx non viene fermato,
+* e poi rimesso in play.
+*
+\****************************************************************************/
+
+ void SetLoop(bool bLoop);
+
+
+
+/****************************************************************************\
+*
+* Function: void SetVolume(int dwVolume);
+*
+* Description: Cambia il volume dello sfx
+*
+* Input: int dwVolume Volume da settare (0-63)
+*
+\****************************************************************************/
+
+ void SetVolume(int dwVolume);
+
+
+
+/****************************************************************************\
+*
+* Function: void GetVolume(int * lpdwVolume);
+*
+* Description: Chiede il volume dello sfx
+*
+* Input: int * lpdwVolume Variabile in cui verra' inserito
+* il volume corrente
+*
+\****************************************************************************/
+
+ void GetVolume(int * lpdwVolume);
+};
+
+} // End of namespace Tony
+
+#endif
diff --git a/engines/tony/tony.cpp b/engines/tony/tony.cpp
index d5a5e467df..a370c8efaf 100644
--- a/engines/tony/tony.cpp
+++ b/engines/tony/tony.cpp
@@ -85,6 +85,9 @@ Common::ErrorCode TonyEngine::Init() {
// Initialise the boxes
_theBoxes.Init();
+ // Link to the custom graphics engine
+
+
return Common::kNoError;
}
diff --git a/engines/tony/tony.h b/engines/tony/tony.h
index 384b7a1f4c..a372260c34 100644
--- a/engines/tony/tony.h
+++ b/engines/tony/tony.h
@@ -33,6 +33,7 @@
#include "tony/mpal/mpal.h"
#include "tony/mpal/memory.h"
+#include "tony/gfxEngine.h"
#include "tony/loc.h"
#include "tony/utils.h"
@@ -91,6 +92,7 @@ public:
Common::Array<VoiceHeader> _voices;
// Bounding box list manager
RMGameBoxes _theBoxes;
+ RMGfxEngine _theEngine;
public:
TonyEngine(OSystem *syst, const TonyGameDescription *gameDesc);
virtual ~TonyEngine();
diff --git a/engines/tony/tonychar.h b/engines/tony/tonychar.h
new file mode 100644
index 0000000000..9d3c0202d0
--- /dev/null
+++ b/engines/tony/tonychar.h
@@ -0,0 +1,448 @@
+/* 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.
+ *
+ */
+/**************************************************************************
+ * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * Nayma Software srl *
+ * e -= We create much MORE than ALL =- *
+ * u- z$$$c '. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ *
+ * .d" d$$$$$b "b. *
+ * .z$* d$$$$$$$L ^*$c. *
+ * #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
+ * ^*$b 4$$$$$$$$$F .d$*" *
+ * ^$$. 4$$$$$$$$$F .$P" Module: TonyChar.CPP......... *
+ * *$. '$$$$$$$$$ 4$P 4 *
+ * J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
+ * z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
+ * ^.@*"6L=\ebu^+C$"*b." *
+ * "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
+ * ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
+ * " [ ] EIFFEL [ ] GCC/GXX/DJGPP *
+ * *
+ * This source code is Copyright (C) Nayma Software. ALL RIGHTS RESERVED *
+ * *
+ **************************************************************************/
+
+#ifndef TONY_TONYCHAR_H
+#define TONY_TONYCHAR_H
+
+#include "tony/mpal/stubs.h"
+
+namespace Tony {
+
+class RMTony : public RMCharacter {
+private:
+ enum DIRECTION {
+ UP, DOWN, LEFT, RIGHT
+ };
+
+public:
+ enum TALKTYPE {
+ TALK_NORMAL,
+ TALK_FIANCHI,
+ TALK_CANTA,
+ TALK_RIDE,
+ TALK_SIINDICA,
+ TALK_SPAVENTATO,
+ TALK_SPAVENTATO2,
+ TALK_CONBICCHIERE,
+ TALK_CONMARTELLO,
+ TALK_CONVERME,
+ TALK_CONCORDA,
+ TALK_CONCONIGLIO,
+ TALK_CONRICETTA,
+ TALK_CONCARTE,
+ TALK_CONPUPAZZO,
+ TALK_CONPUPAZZOSTATIC,
+ TALK_CONCONIGLIOSTATIC,
+ TALK_CONRICETTASTATIC,
+ TALK_CONCARTESTATIC,
+ TALK_CONTACCUINOSTATIC,
+ TALK_CONMEGAFONOSTATIC,
+ TALK_CONBARBASTATIC,
+ TALK_RIDE2,
+ TALK_SCHIFATO,
+ TALK_NAAH,
+ TALK_MACBETH1,
+ TALK_MACBETH2,
+ TALK_MACBETH3,
+ TALK_MACBETH4,
+ TALK_MACBETH5,
+ TALK_MACBETH6,
+ TALK_MACBETH7,
+ TALK_MACBETH8,
+ TALK_MACBETH9,
+ TALK_SPAVENTATOSTATIC,
+ TALK_CONSEGRETARIA
+ };
+
+private:
+ bool m_bShow;
+ bool m_bShowOmbra;
+ bool m_bCorpoDavanti;
+ RMGfxSourceBuffer8AB m_ombra;
+ bool m_bActionPending;
+ RMItem *m_ActionItem;
+ int m_Action;
+ int m_ActionParm;
+ static bool m_bAction;
+
+ bool m_bPastorella;
+
+ bool m_bIsStaticTalk;
+ bool m_bIsTalking;
+ int m_nPatB4Talking;
+ TALKTYPE m_nTalkType;
+ DIRECTION m_TalkDirection;
+ RMPoint m_nBodyOffset;
+
+ int m_nTimeLastStep;
+
+ RMItem m_body;
+ HANDLE hActionThread;
+
+protected:
+ // Overload dell'allocazione degli sprites per cambiare il tipo
+ virtual RMGfxSourceBuffer* NewItemSpriteBuffer(int dimx, int dimy, bool bPreRLE);
+
+ // Thread che aspetta la fine di un azione
+ static uint32 WaitEndOfAction(HANDLE hThread);
+
+public: // per farlo rialzare, altrimenti private
+ enum PATTERNS {
+ PAT_TAKEUP_UP1 = 9,
+ PAT_TAKEUP_UP2,
+ PAT_TAKEUP_MID1,
+ PAT_TAKEUP_MID2,
+ PAT_TAKEUP_DOWN1,
+ PAT_TAKEUP_DOWN2,
+
+ PAT_TAKELEFT_UP1,
+ PAT_TAKELEFT_UP2,
+ PAT_TAKELEFT_MID1,
+ PAT_TAKELEFT_MID2,
+ PAT_TAKELEFT_DOWN1,
+ PAT_TAKELEFT_DOWN2,
+
+ PAT_TAKERIGHT_UP1,
+ PAT_TAKERIGHT_UP2,
+ PAT_TAKERIGHT_MID1,
+ PAT_TAKERIGHT_MID2,
+ PAT_TAKERIGHT_DOWN1,
+ PAT_TAKERIGHT_DOWN2,
+
+ PAT_SIRIALZALEFT,
+ PAT_PERTERRALEFT,
+ PAT_SIRIALZARIGHT,
+ PAT_PERTERRARIGHT,
+
+ // Pastorella!
+ PAT_PAST_WALKUP,
+ PAT_PAST_WALKDOWN,
+ PAT_PAST_WALKLEFT,
+ PAT_PAST_WALKRIGHT,
+
+ PAT_PAST_STANDUP,
+ PAT_PAST_STANDDOWN,
+ PAT_PAST_STANDLEFT,
+ PAT_PAST_STANDRIGHT,
+
+ // Parlata
+ PAT_TALK_UP,
+ PAT_TALK_DOWN,
+ PAT_TALK_LEFT,
+ PAT_TALK_RIGHT,
+
+ // Testa statica
+ PAT_TESTA_UP,
+ PAT_TESTA_DOWN,
+ PAT_TESTA_LEFT,
+ PAT_TESTA_RIGHT,
+
+ // Risata
+ PAT_RIDELEFT_START,
+ PAT_RIDELEFT_LOOP,
+ PAT_RIDELEFT_END,
+ PAT_RIDERIGHT_START,
+ PAT_RIDERIGHT_LOOP,
+ PAT_RIDERIGHT_END,
+
+ // Parlata da pastorella
+ PAT_PAST_TALKUP,
+ PAT_PAST_TALKDOWN,
+ PAT_PAST_TALKLEFT,
+ PAT_PAST_TALKRIGHT,
+
+ // Spavento
+ PAT_SPAVENTOLEFT_START,
+ PAT_SPAVENTOLEFT_LOOP,
+ PAT_SPAVENTOLEFT_END,
+ PAT_SPAVENTORIGHT_START,
+ PAT_SPAVENTORIGHT_LOOP,
+ PAT_SPAVENTORIGHT_END,
+ PAT_SPAVENTODOWN_START,
+ PAT_SPAVENTODOWN_LOOP,
+ PAT_SPAVENTODOWN_END,
+
+ // Con oggetti: corpo completo
+ PAT_CONBICCHIERE,
+ PAT_CONCORDA,
+ PAT_CONVERME,
+ PAT_CONMARTELLO,
+
+ // Suona il fischietto
+ PAT_FISCHIETTORIGHT,
+
+ // Testa con barba
+ PAT_TALKBARBA_LEFT,
+ PAT_TALKBARBA_RIGHT,
+
+ // Sniff
+ PAT_SNIFFA_LEFT,
+ PAT_SNIFFA_RIGHT,
+
+ // Schifato
+ PAT_SCHIFATOLEFT_START,
+ PAT_SCHIFATOLEFT_LOOP,
+ PAT_SCHIFATOLEFT_END,
+ PAT_SCHIFATORIGHT_START,
+ PAT_SCHIFATORIGHT_LOOP,
+ PAT_SCHIFATORIGHT_END,
+ PAT_NAAHLEFT_START,
+ PAT_NAAHLEFT_LOOP,
+ PAT_NAAHLEFT_END,
+ PAT_NAAHRIGHT_START,
+ PAT_NAAHRIGHT_LOOP,
+ PAT_NAAHRIGHT_END,
+
+ // Stand spaventato
+ PAT_SPAVENTOLEFT_STAND,
+ PAT_SPAVENTORIGHT_STAND,
+ PAT_SPAVENTODOWN_STAND,
+
+ PAT_PUTLEFT_UP1,
+ PAT_PUTLEFT_UP2,
+ PAT_PUTRIGHT_UP1,
+ PAT_PUTRIGHT_UP2,
+ PAT_PUTLEFT_MID1,
+ PAT_PUTLEFT_MID2,
+ PAT_PUTRIGHT_MID1,
+ PAT_PUTRIGHT_MID2,
+ PAT_PUTLEFT_DOWN1,
+ PAT_PUTLEFT_DOWN2,
+ PAT_PUTRIGHT_DOWN1,
+ PAT_PUTRIGHT_DOWN2,
+ PAT_PUTUP_UP1,
+ PAT_PUTUP_UP2,
+ PAT_PUTUP_MID1,
+ PAT_PUTUP_MID2,
+ PAT_PUTUP_DOWN1,
+ PAT_PUTUP_DOWN2,
+
+ PAT_CONSEGRETARIA
+ };
+
+ enum BODYPATTERNS {
+ BPAT_STANDUP = 1,
+ BPAT_STANDDOWN,
+ BPAT_STANDLEFT,
+ BPAT_STANDRIGHT,
+
+ BPAT_MARTELLO,
+ BPAT_PUPAZZO,
+ BPAT_VERME,
+ BPAT_BICCHIERE,
+
+ BPAT_CANTALEFT_START,
+ BPAT_CANTALEFT_LOOP,
+ BPAT_CANTALEFT_END,
+
+ BPAT_FIANCHILEFT_START,
+ BPAT_FIANCHILEFT_LOOP,
+ BPAT_FIANCHILEFT_END,
+ BPAT_FIANCHIRIGHT_START,
+ BPAT_FIANCHIRIGHT_LOOP,
+ BPAT_FIANCHIRIGHT_END,
+ BPAT_FIANCHIUP_START,
+ BPAT_FIANCHIUP_LOOP,
+ BPAT_FIANCHIUP_END,
+ BPAT_FIANCHIDOWN_START,
+ BPAT_FIANCHIDOWN_LOOP,
+ BPAT_FIANCHIDOWN_END,
+
+ BPAT_RIDELEFT,
+ BPAT_RIDERIGHT,
+
+ BPAT_SIINDICALEFT,
+ BPAT_SIINDICARIGHT,
+
+ BPAT_SPAVENTODOWN_START,
+ BPAT_SPAVENTODOWN_LOOP,
+ BPAT_SPAVENTODOWN_END,
+ BPAT_SPAVENTOLEFT_START,
+ BPAT_SPAVENTOLEFT_LOOP,
+ BPAT_SPAVENTOLEFT_END,
+ BPAT_SPAVENTORIGHT_START,
+ BPAT_SPAVENTORIGHT_LOOP,
+ BPAT_SPAVENTORIGHT_END,
+ BPAT_SPAVENTOUP_START,
+ BPAT_SPAVENTOUP_LOOP,
+ BPAT_SPAVENTOUP_END,
+
+ BPAT_CORDA,
+
+ BPAT_CONCONIGLIOLEFT_START,
+ BPAT_CONCONIGLIOLEFT_LOOP,
+ BPAT_CONCONIGLIOLEFT_END,
+ BPAT_CONCONIGLIORIGHT_START,
+ BPAT_CONCONIGLIORIGHT_LOOP,
+ BPAT_CONCONIGLIORIGHT_END,
+
+ BPAT_CONRICETTALEFT_START,
+ BPAT_CONRICETTALEFT_LOOP,
+ BPAT_CONRICETTALEFT_END,
+ BPAT_CONRICETTARIGHT_START,
+ BPAT_CONRICETTARIGHT_LOOP,
+ BPAT_CONRICETTARIGHT_END,
+
+ BPAT_CONCARTELEFT_START,
+ BPAT_CONCARTELEFT_LOOP,
+ BPAT_CONCARTELEFT_END,
+ BPAT_CONCARTERIGHT_START,
+ BPAT_CONCARTERIGHT_LOOP,
+ BPAT_CONCARTERIGHT_END,
+
+ BPAT_CONPUPAZZOLEFT_START,
+ BPAT_CONPUPAZZOLEFT_LOOP,
+ BPAT_CONPUPAZZOLEFT_END,
+ BPAT_CONPUPAZZORIGHT_START,
+ BPAT_CONPUPAZZORIGHT_LOOP,
+ BPAT_CONPUPAZZORIGHT_END,
+
+ BPAT_CONTACCUINOLEFT_START,
+ BPAT_CONTACCUINOLEFT_LOOP,
+ BPAT_CONTACCUINOLEFT_END,
+ BPAT_CONTACCUINORIGHT_START,
+ BPAT_CONTACCUINORIGHT_LOOP,
+ BPAT_CONTACCUINORIGHT_END,
+
+ BPAT_CONMEGAFONOLEFT_START,
+ BPAT_CONMEGAFONOLEFT_LOOP,
+ BPAT_CONMEGAFONOLEFT_END,
+ BPAT_CONMEGAFONORIGHT_START,
+ BPAT_CONMEGAFONORIGHT_LOOP,
+ BPAT_CONMEGAFONORIGHT_END,
+
+ BPAT_CONBARBALEFT_START,
+ BPAT_CONBARBALEFT_END,
+ BPAT_CONBARBARIGHT_START,
+ BPAT_CONBARBARIGHT_END,
+ BPAT_CONBARBALEFT_STATIC,
+ BPAT_CONBARBARIGHT_STATIC,
+
+ BPAT_MACBETH1,
+ BPAT_MACBETH2,
+ BPAT_MACBETH3,
+ BPAT_MACBETH4,
+ BPAT_MACBETH5,
+ BPAT_MACBETH6,
+ BPAT_MACBETH7,
+ BPAT_MACBETH8,
+ BPAT_MACBETH9,
+
+ BPAT_CONSEGRETARIA
+ };
+
+public:
+ // Inizializza Tony
+ void Init(void);
+
+ // Libera tutta la memoria
+ void Close(void);
+
+ // Fa un frame di Tony, aggiornando il movimento, etc
+ void DoFrame(RMGfxTargetBuffer *bigBuf, int curLoc);
+
+ // Metodi di Draw, che controlla la variabile di show
+ void Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim);
+
+ // Mostra o nascondi
+ void Show(void);
+ void Hide(bool bShowOmbra = false);
+
+ // Si muove e fa un azione, se necessario
+ void MoveAndDoAction(RMPoint dst, RMItem *item, int nAction, int nActionParm = 0);
+
+ // Ferma Tony (dalla parte giusta rispetto a un eventuale oggetto)
+ virtual void Stop(void);
+ void StopNoAction(void);
+
+ // Setta un pattern
+ void SetPattern(int npatt, bool bPlayP0 = false);
+
+ // Legge il pattern corrente
+ int GetCurPattern();
+
+ // Attende la fine di un pattern
+ void WaitForEndPattern(HANDLE hCustomSkip = INVALID_HANDLE_VALUE) { RMCharacter::WaitForEndPattern(hCustomSkip);}
+
+ // Controlla se si trova in azione
+ bool InAction() { return (m_bActionPending&&m_Action != 0) | m_bAction; }
+
+ // Controlla se c'è da aggiornare il movimento di scrolling
+ bool MustUpdateScrolling() { return ((!InAction()) || (IsMoving())); }
+
+ // Prende la posizione di Tony
+ RMPoint Position() { return m_pos; }
+
+ // Setta la posizione di scrolling
+ void SetScrollPosition(RMPoint pt) { RMCharacter::SetScrollPosition(pt); }
+
+ // Setta l'animazione di Take
+ void Take(int nWhere, int nPart);
+ void Put(int nWhere, int nPart);
+
+ // Start e End Talk
+ void StartTalk(TALKTYPE nTalkType);
+ void EndTalk(void);
+
+ // Start e End Static
+ void StartStatic(TALKTYPE nTalkType);
+ void EndStatic(TALKTYPE nTalkType);
+
+ // Tony si traveste!
+ void SetPastorella(bool bIsPast) { m_bPastorella=bIsPast; }
+ int GetPastorella(void) { return m_bPastorella; }
+
+ // Esegue una azione
+ void ExecuteAction(int nAction, int nActionItem, int nParm);
+
+ void PlaySfx(int nSfx) { RMItem::PlaySfx(nSfx); }
+};
+
+
+} // End of namespace Tony
+
+#endif
diff --git a/engines/tony/utils.cpp b/engines/tony/utils.cpp
index 76d168e27a..48dcb9392a 100644
--- a/engines/tony/utils.cpp
+++ b/engines/tony/utils.cpp
@@ -28,14 +28,14 @@
* .z$* d$$$$$$$L ^*$c. *
* #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
* ^*$b 4$$$$$$$$$F .d$*" *
- * ^$$. 4$$$$$$$$$F .$P" Module: Loc.CPP.............. *
+ * ^$$. 4$$$$$$$$$F .$P" Module: Utils.CPP............ *
* *$. '$$$$$$$$$ 4$P 4 *
* J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
* z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
- * z$" "" #$F^ "" '$c Desc: Classi di gestione *
- * z$$beu .ue=" $ "=e.. .zed$$c dei dati di una loca- *
- * "#$e z$*" . `. ^*Nc e$"" zione................ *
- * "$$". .r" ^4. .^$$" ..................... *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
* ^.@*"6L=\ebu^+C$"*b." *
* "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
* ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *
diff --git a/engines/tony/utils.h b/engines/tony/utils.h
index bec42b343b..54e4cd0eae 100644
--- a/engines/tony/utils.h
+++ b/engines/tony/utils.h
@@ -28,14 +28,14 @@
* .z$* d$$$$$$$L ^*$c. *
* #$$$. $$$$$$$$$ .$$$" Project: Roasted Moths........ *
* ^*$b 4$$$$$$$$$F .d$*" *
- * ^$$. 4$$$$$$$$$F .$P" Module: Loc.CPP.............. *
+ * ^$$. 4$$$$$$$$$F .$P" Module: Utils.CPP............ *
* *$. '$$$$$$$$$ 4$P 4 *
* J *$ "$$$$$$$" $P r Author: Giovanni Bajo........ *
* z$ '$$$P*4c.*$$$*.z@*R$$$ $. *
- * z$" "" #$F^ "" '$c Desc: Classi di gestione *
- * z$$beu .ue=" $ "=e.. .zed$$c dei dati di una loca- *
- * "#$e z$*" . `. ^*Nc e$"" zione................ *
- * "$$". .r" ^4. .^$$" ..................... *
+ * z$" "" #$F^ "" '$c *
+ * z$$beu .ue=" $ "=e.. .zed$$c *
+ * "#$e z$*" . `. ^*Nc e$"" *
+ * "$$". .r" ^4. .^$$" *
* ^.@*"6L=\ebu^+C$"*b." *
* "**$. "c 4$$$ J" J$P*" OS: [ ] DOS [X] WIN95 [ ] PORT *
* ^"--.^ 9$" .--"" COMP: [ ] WATCOM [X] VISUAL C++ *