diff options
author | Strangerke | 2014-10-13 23:16:32 +0200 |
---|---|---|
committer | Strangerke | 2014-10-13 23:17:24 +0200 |
commit | 126417ae990180a5656c2aca75b26d7e73d8603b (patch) | |
tree | 5ea436ecb71686f18b41768182d44f87ab68912d /engines/tsage/ringworld2/ringworld2_outpost.h | |
parent | 7f7e144dd2867bf87d4724f4c72c0a6ebe1b77fc (diff) | |
download | scummvm-rg350-126417ae990180a5656c2aca75b26d7e73d8603b.tar.gz scummvm-rg350-126417ae990180a5656c2aca75b26d7e73d8603b.tar.bz2 scummvm-rg350-126417ae990180a5656c2aca75b26d7e73d8603b.zip |
TSAGE: R2R - move Scene1337 to its own source file to reduce the size of ringworld2_scenes1
Diffstat (limited to 'engines/tsage/ringworld2/ringworld2_outpost.h')
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_outpost.h | 262 |
1 files changed, 262 insertions, 0 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_outpost.h b/engines/tsage/ringworld2/ringworld2_outpost.h new file mode 100644 index 0000000000..b3e663356e --- /dev/null +++ b/engines/tsage/ringworld2/ringworld2_outpost.h @@ -0,0 +1,262 @@ +/* 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. + * + */ + +#ifndef TSAGE_RINGWORLD2_OUTPOST_H +#define TSAGE_RINGWORLD2_OUTPOST_H + +#include "common/scummsys.h" +#include "tsage/converse.h" +#include "tsage/events.h" +#include "tsage/core.h" +#include "tsage/scenes.h" +#include "tsage/globals.h" +#include "tsage/sound.h" +#include "tsage/ringworld2/ringworld2_logic.h" +#include "tsage/ringworld2/ringworld2_speakers.h" + +namespace TsAGE { + +namespace Ringworld2 { + +using namespace TsAGE; + +class Scene1337 : public SceneExt { + class OptionsDialog: public GfxDialog { + private: + GfxButton _autoplay; + GfxButton _restartGame; + GfxButton _quitGame; + GfxButton _continueGame; + + OptionsDialog(); + virtual ~OptionsDialog() {} + virtual GfxButton *execute(GfxButton *defaultButton); + public: + static void show(); + }; + + class Card: public SceneHotspot { + public: + SceneObject _card; + + int _cardId; + Common::Point _stationPos; + + Card(); + void synchronize(Serializer &s); + bool isIn(Common::Point pt); + }; + + class GameBoardSide: public SceneHotspot { + public: + Card _handCard[4]; + Card _outpostStation[8]; + Card _delayCard; + Card _emptyStationPos; + + Common::Point _card1Pos; + Common::Point _card2Pos; + Common::Point _card3Pos; + Common::Point _card4Pos; + int _frameNum; + + GameBoardSide(); + void synchronize(Serializer &s); + }; + + class Action1337: public Action { + public: + void waitFrames(int32 frameCount); + }; + + class Action1: public Action1337 { + public: + void signal(); + }; + class Action2: public Action1337 { + public: + void signal(); + }; + class Action3: public Action1337 { + public: + void signal(); + }; + class Action4: public Action1337 { + public: + void signal(); + }; + class Action5: public Action1337 { + public: + void signal(); + }; + class Action6: public Action1337 { + public: + void signal(); + }; + class Action7: public Action1337 { + public: + void signal(); + }; + class Action8: public Action1337 { + public: + void signal(); + }; + class Action9: public Action1337 { + public: + void signal(); + }; + class Action10: public Action1337 { + public: + void signal(); + }; + class Action11: public Action1337 { + public: + void signal(); + }; + class Action12: public Action1337 { + public: + void signal(); + }; + class Action13: public Action1337 { + public: + void signal(); + }; +public: + Action1 _action1; + Action2 _action2; + Action3 _action3; + Action4 _action4; + Action5 _action5; + Action6 _action6; + Action7 _action7; + Action8 _action8; + Action9 _action9; + Action10 _action10; + Action11 _action11; + Action12 _action12; + Action13 _action13; + + typedef void (Scene1337::*FunctionPtrType)(); + FunctionPtrType _delayedFunction; + + bool _autoplay; + bool _shuffleEndedFl; + bool _showPlayerTurn; + bool _displayHelpFl; + bool _instructionsDisplayedFl; + + // Discarded cards are put in the available cards pile, with an higher index so there no conflict + int _currentDiscardIndex; + int _availableCardsPile[100]; + int _cardsAvailableNumb; + int _currentPlayerNumb; + int _actionPlayerIdx; + int _actionVictimIdx; + int _winnerId; + int _instructionsWaitCount; + int _cursorCurRes; + int _cursorCurStrip; + int _cursorCurFrame; + + ASound _aSound1; + ASound _aSound2; + GameBoardSide _gameBoardSide[4]; + SceneActor _helpIcon; + SceneActor _stockPile; + SceneItem _actionItem; + SceneObject _currentPlayerArrow; + + Card *_actionCard1; + Card *_actionCard2; + Card *_actionCard3; + Card _animatedCard; + Card _shuffleAnimation; + Card _discardedPlatformCard; + Card _selectedCard; + Card _discardPile; + Card _stockCard; + + SceneObject _upperDisplayCard[8]; + SceneObject _lowerDisplayCard[8]; + + Scene1337(); + virtual void synchronize(Serializer &s); + + void actionDisplay(int resNum, int lineNum, int x, int y, int keepOnScreen, int width, int textMode, int fontNum, int colFG, int colBGExt, int colFGExt); + void setAnimationInfo(Card *card); + void handleNextTurn(); + void handlePlayerTurn(); + bool isStationCard(int cardId); + bool isStopConstructionCard(int cardId); + int getStationId(int playerId, int handCardId); + int findPlatformCardInHand(int playerId); + int findMeteorCardInHand(int playerId); + int findThieftCardInHand(int playerId); + int isDelayCard(int cardId); + int getStationCardId(int cardId); + void handlePlayer01Discard(int playerId); + void playThieftCard(int playerId, Card *card, int victimId); + int getPreventionCardId(int cardId); + bool isAttackPossible(int victimId, int cardId); + int getPlayerWithOutpost(int playerId); + bool checkAntiDelayCard(int delayCardId, int cardId); + void playStationCard(Card *station, Card *platform); + void playDelayCard(Card *card, Card *dest); + void playPlatformCard(Card *card, Card *dest); + void playAntiDelayCard(Card *card, Card *dest); + Card *getStationCard(int arg1); + void playCentralOutpostCard(Card *card, int playerId); + int getRandomCardFromHand(int playerId); + void discardCard(Card *card); + void subC4CD2(); + void subC4CEC(); + void playInterceptorCard(Card *subObj1, Card *subObj2); + void displayDialog(int dialogNumb); + void subPostInit(); + void displayInstructions(); + void suggestInstructions(); + void shuffleCards(); + void dealCards(); + void showOptionsDialog(); + void handleClick(int arg1, Common::Point pt); + void handlePlayer0(); + void handlePlayer1(); + void handlePlayer2(); + void handlePlayer3(); + void handleAutoplayPlayer2(); + void updateCursorId(int arg1, bool arg2); + void setCursorData(int resNum, int rlbNum, int frameNum); + void subD18F5(); + void subD1917(); + void subD1940(bool flag); + void subD1975(int arg1, int arg2); + + virtual void postInit(SceneObjectList *OwnerList = NULL); + virtual void remove(); + virtual void process(Event &event); + virtual void dispatch(); +}; + +} // End of namespace Ringworld2 +} // End of namespace TsAGE + +#endif |