diff options
Diffstat (limited to 'engines/titanic/star_control/camera_mover.h')
-rw-r--r-- | engines/titanic/star_control/camera_mover.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/engines/titanic/star_control/camera_mover.h b/engines/titanic/star_control/camera_mover.h new file mode 100644 index 0000000000..bd1f6b1d83 --- /dev/null +++ b/engines/titanic/star_control/camera_mover.h @@ -0,0 +1,102 @@ +/* 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 TITANIC_CAMERA_MOVER_H +#define TITANIC_CAMERA_MOVER_H + +#include "titanic/support/simple_file.h" +#include "titanic/star_control/base_stars.h" +#include "titanic/star_control/error_code.h" +#include "titanic/star_control/fmatrix.h" + +namespace Titanic { + +struct CNavigationInfo { + double _size; + double _field4; + double _field8; + double _fieldC; + double _field10; + double _field14; + double _field18; + double _field1C; +}; + +class CCameraMover : public CNavigationInfo { +public: + int _lockCounter; + CStarVector *_starVector; +public: + CCameraMover(const CNavigationInfo *src); + virtual ~CCameraMover(); + + virtual void copyFrom(const CNavigationInfo *src); + virtual void copyTo(CNavigationInfo *dest); + virtual void proc4(); + virtual void proc5(); + virtual void proc6(); + virtual void proc7(); + virtual void proc8(FVector &v1, FVector &v2, FMatrix &m1, FMatrix &m2) {} + + /** + * Start a movement to a given specified destination + */ + virtual void moveTo(const FVector &srcV, const FVector &destV, const FMatrix &srcM) {} + + virtual void proc10(const FVector &v1, const FVector &v2, const FVector &v3, const FMatrix &m) {} + virtual void proc11(CErrorCode &errorCode, FVector &v, FMatrix &m); + virtual void setVector(CStarVector *sv); + + /** + * Clear the class + */ + virtual void clear(); + + /** + * Load the class + */ + virtual void load(SimpleFile *file, int val = 0); + + /** + * Save the class + */ + virtual void save(SimpleFile *file, int indent); + + /** + * Increment tthe lock counter + */ + void incLockCount(); + + /** + * Decrement the lock counter + */ + void decLockCount(); + + /** + * Returns true if the lock counter is non-zero + */ + bool isLocked() const { return _lockCounter > 0; } +}; + +} // End of namespace Titanic + +#endif /* TITANIC_CAMERA_MOVER_H */ |