diff options
Diffstat (limited to 'engines/tony/inventory.h')
-rw-r--r-- | engines/tony/inventory.h | 212 |
1 files changed, 212 insertions, 0 deletions
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 |