diff options
author | Paul Gilbert | 2012-04-30 09:27:12 +1000 |
---|---|---|
committer | Paul Gilbert | 2012-04-30 09:27:12 +1000 |
commit | b0eef829728183b7ea170b30a33eca091bcc4574 (patch) | |
tree | 77ca85abb4c08a94dbadad68f0a79cf1cb7af60f /engines/tony/tonychar.h | |
parent | 118f5ca0102144b5c282f012def6c96c69052bc1 (diff) | |
download | scummvm-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.h | 448 |
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 |