1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
/* 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_STAR_CAMERA_H
#define TITANIC_STAR_CAMERA_H
#include "titanic/support/simple_file.h"
#include "titanic/star_control/fmatrix.h"
#include "titanic/star_control/fpoint.h"
#include "titanic/star_control/base_stars.h"
#include "titanic/star_control/viewport.h"
#include "titanic/star_control/camera_mover.h"
#include "titanic/star_control/error_code.h"
namespace Titanic {
/**
* Implements a reference point from which the starmap can be viewed
*/
class CStarCamera {
private:
static FMatrix *_matrix1;
static FMatrix *_matrix2;
private:
int _matrixRow;
FMatrix _matrix;
CCameraMover *_mover;
CViewport _viewport;
int _field108;
private:
/**
* Set up a handler
*/
bool setupHandler(const CNavigationInfo *src);
/**
* Deletes any previous handler
*/
void deleteHandler();
/**
* Return whether the handler is locked
*/
bool isLocked() { return _mover->isLocked(); }
public:
static void init();
static void deinit();
public:
CStarCamera(const CNavigationInfo *data);
CStarCamera(CViewport *src);
virtual ~CStarCamera();
virtual void proc2(const CViewport *src);
virtual void proc3(const CNavigationInfo *src);
virtual void setPosition(const FVector &v);
virtual void proc5(const FVector &v);
virtual void proc6(int v);
virtual void proc7(int v);
virtual void proc8(int v);
virtual void proc9(int v);
virtual void proc10(int v);
virtual void proc11();
virtual void proc12(StarMode mode, double v2);
virtual void proc13(CViewport *dest);
/**
* Sets the destination to move the camera to
*/
virtual void setDestination(const FVector &v);
virtual void proc15(CErrorCode *errorCode);
virtual void proc16();
virtual void proc17();
virtual void proc18();
virtual void proc19();
virtual void proc20(double factor);
virtual void proc21(const FPose &pose);
virtual void proc22(FMatrix &m);
/**
* Get the position and direction of the camera
*/
virtual FPose getPose();
virtual FPose getRawPose();
virtual double getThreshold() const;
virtual double proc26() const;
virtual int proc27() const;
virtual FVector proc28(int index, const FVector &src);
virtual FVector proc29(int index, const FVector &src);
virtual FVector proc30(int index, const FVector &v);
virtual FVector proc31(int index, const FVector &v);
/**
* Sets the viewport position within the starfield
*/
virtual void setViewportAngle(const FPoint &angles);
virtual int getMatrixRow() const { return _matrixRow; }
virtual bool addMatrixRow(const FVector &v);
virtual bool removeMatrixRow();
virtual void proc36(double *v1, double *v2, double *v3, double *v4);
/**
* Load the data for the class from file
*/
virtual void load(SimpleFile *file, int param);
/**
* Save the data for the class to file
*/
virtual void save(SimpleFile *file, int indent);
bool is108() const { return _field108; }
void set108() { _field108 = true; }
void reset108() { _field108 = false; }
void fn1(CViewport *sub13, const FVector &v);
void fn2(FVector v1, FVector v2, FVector v3);
void fn3(CViewport *sub13, const FVector &v);
};
} // End of namespace Titanic
#endif /* TITANIC_STAR_CAMERA_H */
|