aboutsummaryrefslogtreecommitdiff
path: root/engines/access/amazon/amazon_logic.h
diff options
context:
space:
mode:
authorPaul Gilbert2015-05-31 14:45:10 -0400
committerPaul Gilbert2015-05-31 14:45:10 -0400
commite5296ebf8dd09f603499b1894a33865ec71bb28f (patch)
treed7de032efd54dfdb3159cbc778a0c9ce8cd8aa91 /engines/access/amazon/amazon_logic.h
parent673537bad93f0b440172a0cc263ebf19cc95ffc0 (diff)
parent141ff4d08dc24b6bb17098bd71801e2a58e6a38f (diff)
downloadscummvm-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.h253
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 */