aboutsummaryrefslogtreecommitdiff
path: root/engines/tony/tonychar.h
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/tonychar.h
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/tonychar.h')
-rw-r--r--engines/tony/tonychar.h448
1 files changed, 448 insertions, 0 deletions
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