diff options
author | Paul Gilbert | 2015-05-31 14:45:10 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-05-31 14:45:10 -0400 |
commit | e5296ebf8dd09f603499b1894a33865ec71bb28f (patch) | |
tree | d7de032efd54dfdb3159cbc778a0c9ce8cd8aa91 /engines/access/amazon/amazon_logic.h | |
parent | 673537bad93f0b440172a0cc263ebf19cc95ffc0 (diff) | |
parent | 141ff4d08dc24b6bb17098bd71801e2a58e6a38f (diff) | |
download | scummvm-rg350-e5296ebf8dd09f603499b1894a33865ec71bb28f.tar.gz scummvm-rg350-e5296ebf8dd09f603499b1894a33865ec71bb28f.tar.bz2 scummvm-rg350-e5296ebf8dd09f603499b1894a33865ec71bb28f.zip |
Merge branch 'master' into phantom
Diffstat (limited to 'engines/access/amazon/amazon_logic.h')
-rw-r--r-- | engines/access/amazon/amazon_logic.h | 253 |
1 files changed, 253 insertions, 0 deletions
diff --git a/engines/access/amazon/amazon_logic.h b/engines/access/amazon/amazon_logic.h new file mode 100644 index 0000000000..0d962483e6 --- /dev/null +++ b/engines/access/amazon/amazon_logic.h @@ -0,0 +1,253 @@ +/* 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 ACCESS_AMAZON_LOGIC_H +#define ACCESS_AMAZON_LOGIC_H + +#include "common/scummsys.h" +#include "access/scripts.h" +#include "access/asurface.h" + +namespace Access { + +namespace Amazon { + +class AmazonEngine; + +#define PAN_SIZE 32 + +class AmazonManager { +protected: + AmazonEngine *_vm; +public: + AmazonManager(AmazonEngine *vm) : _vm(vm) {} +}; + +class PannedScene : public AmazonManager { + struct PanEntry { + SpriteResource *_pObject; + int _pImgNum; + int _pObjX; + int _pObjY; + int _pObjZ; + int _pObjXl; + int _pObjYl; + }; +protected: + int _xCount; + int _xTrack; + int _yTrack; + int _zTrack; + int _xCam; + int _yCam; + int _zCam; + int _pNumObj; + + PanEntry _pan[PAN_SIZE]; +public: + PannedScene(AmazonEngine *vm); + + void pan(); +}; + +class CampScene : public PannedScene { +protected: + bool _skipStart; +public: + CampScene(AmazonEngine *vm); + + void mWhileDoOpen(); +}; + +class Opening : public CampScene { +private: + int _pCount; + + void doTitle(); + void doCredit(); + void doCreditDemo(); + void scrollTitle(); + void doTent(); +public: + Opening(AmazonEngine *vm); + + void doIntroduction(); +}; + +class Plane : public PannedScene { +public: + int _pCount; + Common::Point _position; + int _planeCount; + int _propCount; + + void doFlyCell(); + void doFallCell(); + void scrollFly(); + void scrollFall(); + void mWhileFly(); + void mWhileFall(); +public: + Plane(AmazonEngine *vm); +}; + +#define JUNGLE_SIZE 3 +class Jungle : public CampScene { +private: + void initJWalk2(); + void jungleMove(); + void scrollJWalk(); + + int _jCnt[JUNGLE_SIZE]; + int _jungleX[JUNGLE_SIZE]; +public: + Jungle(AmazonEngine *vm); + + void mWhileJWalk(); + void mWhileJWalk2(); +}; + +class Guard : public PannedScene { +private: + int _guardCel; + Common::Point _position; + int _gCode1; + int _gCode2; + Common::Point _topLeft; + Common::Point _bottomRight; + int _xMid, _yMid; + + void chkVLine(); + void chkHLine(); + void setVerticalCode(); + void setHorizontalCode(); + void guardSee(); + void setGuardFrame(); +public: + Guard(AmazonEngine *vm); + + void doGuard(); + + void setPosition(const Common::Point &pt); +}; + +class Cast : public PannedScene { +public: + Cast(AmazonEngine *vm); + + void doCast(int param1); +}; + +class River : public PannedScene { +private: + bool _chickenOutFl; + const byte *_mapPtr; + int _canoeVXPos; + int _canoeMoveCount; + int _canoeFrame; + RiverStruct *_topList; + RiverStruct *_botList; + int _canoeDir; + bool _saveRiver; + bool _deathFlag; + int _deathCount; + int _deathType; + int _maxHits; + + // Saved fields + int _canoeLane; + int _canoeYPos; + int _hitCount; + int _riverIndex; + int _hitSafe; + int _rScrollRow; + int _rScrollCol; + int _rScrollX; + int _rScrollY; + int _mapOffset; + int _screenVertX; + int _oldScrollCol; + + void initRiver(); + void resetPositions(); + void checkRiverPan(); + bool riverJumpTest(); + void riverSound(); + void moveCanoe(); + void moveCanoe2(); + void updateObstacles(); + void riverSetPhysX(); + bool checkRiverCollide(); + void plotRiver(); + void scrollRiver(); + void scrollRiver1(); + void setRiverPan(); +public: + River(AmazonEngine *vm); + + void doRiver(); + void mWhileDownRiver(); + + void synchronize(Common::Serializer &s); +}; + +enum AntDirection { ANT_RIGHT = 0, ANT_LEFT = 1 }; + +class Ant : public AmazonManager { +private: + AntDirection _antDirection; + AntDirection _pitDirection; + int _antCel; + int _torchCel; + int _pitCel; + int _stabCel; + Common::Point _antPos; + bool _antDieFl; + bool _antEatFl; + bool _stabFl; + Common::Point _pitPos; + + void plotTorchSpear(int indx, const int *&buf); + void plotPit(int indx, const int *&buf); + int antHandleRight(int indx, const int *&buf); + int antHandleLeft(int indx, const int *&buf); + int antHandleStab(int indx, const int *&buf); +public: + Ant(AmazonEngine *vm); + + void doAnt(); + + void synchronize(Common::Serializer &s); +}; + +class InactivePlayer : public ImageEntry { +public: + SpriteResource *_altSpritesPtr; + + InactivePlayer() { _altSpritesPtr = nullptr; } +}; + +} // End of namespace Amazon + +} // End of namespace Access + +#endif /* ACCESS_AMAZON_LOGIC_H */ |