diff options
Diffstat (limited to 'engines/scumm/he/moonbase/ai_traveller.h')
-rw-r--r-- | engines/scumm/he/moonbase/ai_traveller.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/engines/scumm/he/moonbase/ai_traveller.h b/engines/scumm/he/moonbase/ai_traveller.h new file mode 100644 index 0000000000..7b1bad9a29 --- /dev/null +++ b/engines/scumm/he/moonbase/ai_traveller.h @@ -0,0 +1,122 @@ +/* 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 SCUMM_HE_MOONBASE_AI_TRAVELER_H +#define SCUMM_HE_MOONBASE_AI_TRAVELER_H + +#include "scumm/he/moonbase/ai_node.h" + +namespace Scumm { + +const int NUM_TO_GEN = 9; + +const int NUM_POWER_STEPS = 3; +const double SIZE_POWER_STEP = .15; +const int SIZE_ANGLE_STEP = 45; +const int VARIATION_EXTENT = 3; +const int DIRECTION_WEIGHT = 5; + +class Traveller : public IContainedObject { +private: + static int _targetPosX; + static int _targetPosY; + static int _maxDist; + + static int _numToGen; + static int _sizeAngleStep; + + int _sourceHub; + + int _posX; + int _posY; + int _angleTo; + int _powerTo; + + int _disabled; + int _waterFlag; + int _waterSourceX; + int _waterSourceY; + int _waterDestX; + int _waterDestY; + + +protected: + virtual float calcH(); + +public: + Traveller(); + Traveller(int originX, int originY); + ~Traveller() {} + + IContainedObject *duplicate() { return this; } + + static void setTargetPosX(int posX) { _targetPosX = posX; } + static void setTargetPosY(int posY) { _targetPosY = posY; } + static void setMaxDist(int maxDist) { _maxDist = maxDist; } + + void setSourceHub(int sourceHub) { _sourceHub = sourceHub; } + + void setPosX(int posX) { _posX = posX; } + void setPosY(int posY) { _posY = posY; } + void setAngleTo(int angleTo) { _angleTo = angleTo; } + void setPowerTo(int powerTo) { _powerTo = powerTo; } + + void setWaterSourceX(int waterSourceX) { _waterSourceX = waterSourceX; } + void setWaterSourceY(int waterSourceY) { _waterSourceY = waterSourceY; } + + void setWaterDestX(int waterDestX) { _waterDestX = waterDestX; } + void setWaterDestY(int waterDestY) { _waterDestY = waterDestY; } + + int getSourceHub() const { return _sourceHub; } + + int getPosX() const { return _posX; } + int getPosY() const { return _posY; } + int getAngleTo() const { return _angleTo; } + int getPowerTo() const { return _powerTo; } + + int getWaterSourceX() const { return _waterSourceX; } + int getWaterSourceY() const { return _waterSourceY; } + int getWaterDestX() const { return _waterDestX; } + int getWaterDestY() const { return _waterDestY; } + + void setDisabled() { _disabled = 1; } + void unsetDisabled() { _disabled = 0; } + int getDisabled() { return _disabled; } + + void adjustPosX(int offsetX); + void adjustPosY(int offsetY); + void adjustXY(int offsetX, int offsetY); + + void enableWaterFlag() { _waterFlag = 1; } + void disableWaterFlag() { _waterFlag = 0; } + int GetWaterFlag() const { return _waterFlag; } + + virtual int numChildrenToGen(); + virtual IContainedObject *createChildObj(int, int &); + + virtual int checkSuccess(); + virtual float calcT(); +}; + +} // End of namespace Scumm + +#endif |