1#include "Game/Camera/Camera.hpp"
2#include "Game/Camera/CameraAnim.hpp"
3#include "Game/Camera/CameraBehind.hpp"
4#include "Game/Camera/CameraBlackHole.hpp"
5#include "Game/Camera/CameraCharmedFix.hpp"
6#include "Game/Camera/CameraCharmedTripodBoss.hpp"
7#include "Game/Camera/CameraCharmedVecReg.hpp"
8#include "Game/Camera/CameraCharmedVecRegTower.hpp"
9#include "Game/Camera/CameraCubePlanet.hpp"
10#include "Game/Camera/CameraDPD.hpp"
11#include "Game/Camera/CameraDead.hpp"
12#include "Game/Camera/CameraFix.hpp"
13#include "Game/Camera/CameraFixedPoint.hpp"
14#include "Game/Camera/CameraFixedThere.hpp"
15#include "Game/Camera/CameraFollow.hpp"
16#include "Game/Camera/CameraFooFighter.hpp"
17#include "Game/Camera/CameraFooFighterPlanet.hpp"
18#include "Game/Camera/CameraFrontAndBack.hpp"
19#include "Game/Camera/CameraGround.hpp"
20#include "Game/Camera/CameraHolder.hpp"
21#include "Game/Camera/CameraInnerCylinder.hpp"
22#include "Game/Camera/CameraInwardSphere.hpp"
23#include "Game/Camera/CameraInwardTower.hpp"
24#include "Game/Camera/CameraMedianPlanet.hpp"
25#include "Game/Camera/CameraMedianTower.hpp"
26#include "Game/Camera/CameraMtxRegParallel.hpp"
27#include "Game/Camera/CameraObjParallel.hpp"
28#include "Game/Camera/CameraParallel.hpp"
29#include "Game/Camera/CameraRaceFollow.hpp"
30#include "Game/Camera/CameraRailDemo.hpp"
31#include "Game/Camera/CameraRailFollow.hpp"
32#include "Game/Camera/CameraRailWatch.hpp"
33#include "Game/Camera/CameraSlide.hpp"
34#include "Game/Camera/CameraSpiral.hpp"
35#include "Game/Camera/CameraSubjective.hpp"
36#include "Game/Camera/CameraTalk.hpp"
37#include "Game/Camera/CameraTower.hpp"
38#include "Game/Camera/CameraTowerPos.hpp"
39#include "Game/Camera/CameraTripodBoss.hpp"
40#include "Game/Camera/CameraTripodBossJoint.hpp"
41#include "Game/Camera/CameraTripodPlanet.hpp"
42#include "Game/Camera/CameraTrundle.hpp"
43#include "Game/Camera/CameraTwistedPassage.hpp"
44#include "Game/Camera/CameraWaterFollow.hpp"
45#include "Game/Camera/CameraWaterPlanet.hpp"
46#include "Game/Camera/CameraWaterPlanetBoss.hpp"
47#include "Game/Camera/CameraWonderPlanet.hpp"
52 const char *mJapaneseDescription;
53 Camera* (*mCreateFunction)(void);
59 const char *gDefaultCameraName =
"CAM_TYPE_XZ_PARA";
65 Camera *createCamera<CameraParallel>() {
70 Camera *createCamera<CameraTower>() {
75 Camera *createCamera<CameraFollow>() {
80 Camera *createCamera<CameraWonderPlanet>() {
85 Camera *createCamera<CameraFix>() {
90 Camera *createCamera<CameraFixedPoint>() {
95 Camera *createCamera<CameraBehind>() {
100 Camera *createCamera<CameraInwardTower>() {
105 Camera *createCamera<CameraFixedThere>() {
110 Camera *createCamera<CameraTripodBoss>() {
115 Camera *createCamera<CameraTowerPos>() {
120 Camera *createCamera<CameraTripodPlanet>() {
125 Camera *createCamera<CameraDead>() {
130 Camera *createCamera<CameraInwardSphere>() {
135 Camera *createCamera<CameraRailDemo>() {
140 Camera *createCamera<CameraRailFollow>() {
145 Camera *createCamera<CameraTripodBossJoint>() {
150 Camera *createCamera<CameraCharmedTripodBoss>() {
155 Camera *createCamera<CameraObjParallel>() {
160 Camera *createCamera<CameraCharmedFix>() {
165 Camera *createCamera<CameraGround>() {
170 Camera *createCamera<CameraTrundle>() {
175 Camera *createCamera<CameraCubePlanet>() {
180 Camera *createCamera<CameraInnerCylinder>() {
185 Camera *createCamera<CameraSpiral>() {
190 Camera *createCamera<CameraTalk>() {
195 Camera *createCamera<CameraMtxRegParallel>() {
200 Camera *createCamera<CameraCharmedVecReg>() {
205 Camera *createCamera<CameraMedianPlanet>() {
210 Camera *createCamera<CameraTwistedPassage>() {
215 Camera *createCamera<CameraMedianTower>() {
220 Camera *createCamera<CameraCharmedVecRegTower>() {
225 Camera *createCamera<CameraFrontAndBack>() {
230 Camera *createCamera<CameraRaceFollow>() {
235 Camera *createCamera<CameraSlide>() {
240 Camera *createCamera<CameraFooFighter>() {
245 Camera *createCamera<CameraFooFighterPlanet>() {
250 Camera *createCamera<CameraBlackHole>() {
255 Camera *createCamera<CameraAnim>() {
260 Camera *createCamera<CameraDPD>() {
265 Camera *createCamera<CameraWaterFollow>() {
270 Camera *createCamera<CameraWaterPlanet>() {
275 Camera *createCamera<CameraWaterPlanetBoss>() {
280 Camera *createCamera<CameraRailWatch>() {
285 Camera *createCamera<CameraSubjective>() {
289 #define NR_CAMERA_TYPES 45
292 {
"CAM_TYPE_XZ_PARA",
"並行", createCamera<CameraParallel>, 1 },
293 {
"CAM_TYPE_TOWER",
"塔", createCamera<CameraTower>, 1 },
294 {
"CAM_TYPE_FOLLOW",
"フォロー", createCamera<CameraFollow>, 1 },
295 {
"CAM_TYPE_WONDER_PLANET",
"プラネット", createCamera<CameraWonderPlanet>, 1 },
296 {
"CAM_TYPE_POINT_FIX",
"完全固定", createCamera<CameraFix>, 1 },
297 {
"CAM_TYPE_EYEPOS_FIX",
"定点", createCamera<CameraFixedPoint>, 1 },
298 {
"CAM_TYPE_SLIDER",
"スライダー", createCamera<CameraBehind>, 1 },
299 {
"CAM_TYPE_INWARD_TOWER",
"塔内部", createCamera<CameraInwardTower>, 1 },
300 {
"CAM_TYPE_EYEPOS_FIX_THER",
"その場定点", createCamera<CameraFixedThere>, 1 },
301 {
"CAM_TYPE_TRIPOD_BOSS",
"三脚ボス", createCamera<CameraTripodBoss>, 1 },
302 {
"CAM_TYPE_TOWER_POS",
"塔(サブターゲット付き)", createCamera<CameraTowerPos>, 1 },
303 {
"CAM_TYPE_TRIPOD_PLANET",
"三脚惑星", createCamera<CameraTripodPlanet>, 1 },
304 {
"CAM_TYPE_DEAD",
"通常死亡", createCamera<CameraDead>, 1 },
305 {
"CAM_TYPE_INWARD_SPHERE",
"球内部", createCamera<CameraInwardSphere>, 1 },
306 {
"CAM_TYPE_RAIL_DEMO",
"レールデモ", createCamera<CameraRailDemo>, 1 },
307 {
"CAM_TYPE_RAIL_FOLLOW",
"レールフォロー", createCamera<CameraRailFollow>, 1 },
308 {
"CAM_TYPE_TRIPOD_BOSS_JOINT",
"三脚ボスジョイント", createCamera<CameraTripodBossJoint>, 1 },
309 {
"CAM_TYPE_CHARMED_TRIPOD_BOSS",
"三脚ボスジョイント注視", createCamera<CameraCharmedTripodBoss>, 1 },
310 {
"CAM_TYPE_OBJ_PARALLEL",
"オブジェ並行", createCamera<CameraObjParallel>, 1 },
311 {
"CAM_TYPE_CHARMED_FIX",
"サンボ", createCamera<CameraCharmedFix>, 1 },
312 {
"CAM_TYPE_GROUND",
"地面", createCamera<CameraGround>, 1 },
313 {
"CAM_TYPE_TRUNDLE",
"トランドル", createCamera<CameraTrundle>, 1 },
314 {
"CAM_TYPE_CUBE_PLANET",
"キューブ惑星", createCamera<CameraCubePlanet>, 1 },
315 {
"CAM_TYPE_INNER_CYLINDER",
"円筒内部", createCamera<CameraInnerCylinder>, 1 },
316 {
"CAM_TYPE_SPIRAL_DEMO",
"螺旋デモ", createCamera<CameraSpiral>, 1 },
317 {
"CAM_TYPE_TALK",
"会話", createCamera<CameraTalk>, 1 },
318 {
"CAM_TYPE_MTXREG_PARALLEL",
"マトリクスレジスタ並行", createCamera<CameraMtxRegParallel>, 1 },
319 {
"CAM_TYPE_CHARMED_VECREG",
"ベクトルレジスタ注目", createCamera<CameraCharmedVecReg>, 1 },
320 {
"CAM_TYPE_MEDIAN_PLANET",
"中点注目プラネット", createCamera<CameraMedianPlanet>, 1 },
321 {
"CAM_TYPE_TWISTED_PASSAGE",
"ねじれ回廊", createCamera<CameraTwistedPassage>, 1 },
322 {
"CAM_TYPE_MEDIAN_TOWER",
"中点塔カメラ", createCamera<CameraMedianTower>, 1 },
323 {
"CAM_TYPE_CHARMED_VECREG_TOWER",
"VecReg角度補正塔カメラ", createCamera<CameraCharmedVecRegTower>, 1 },
324 {
"CAM_TYPE_FRONT_AND_BACK",
"表裏カメラ", createCamera<CameraFrontAndBack>, 1 },
325 {
"CAM_TYPE_RACE_FOLLOW",
"レース用フォロー", createCamera<CameraRaceFollow>, 1 },
326 {
"CAM_TYPE_2D_SLIDE",
"2Dスライド", createCamera<CameraSlide>, 1 },
327 {
"CAM_TYPE_FOO_FIGHTER",
"フーファイター", createCamera<CameraFooFighter>, 1 },
328 {
"CAM_TYPE_FOO_FIGHTER_PLANET",
"フーファイタープラネット", createCamera<CameraFooFighterPlanet>, 1 },
329 {
"CAM_TYPE_BLACK_HOLE",
"ブラックホール", createCamera<CameraBlackHole>, 0 },
330 {
"CAM_TYPE_ANIM",
"アニメ", createCamera<CameraAnim>, 0 },
331 {
"CAM_TYPE_DPD",
"DPD", createCamera<CameraDPD>, 1 },
332 {
"CAM_TYPE_WATER_FOLLOW",
"水中フォロー", createCamera<CameraWaterFollow>, 1 },
333 {
"CAM_TYPE_WATER_PLANET",
"水中プラネット", createCamera<CameraWaterPlanet>, 1 },
334 {
"CAM_TYPE_WATER_PLANET_BOSS",
"水中プラネットボス", createCamera<CameraWaterPlanetBoss>, 1 },
335 {
"CAM_TYPE_RAIL_WATCH",
"レール注目", createCamera<CameraRailWatch>, 1 },
336 {
"CAM_TYPE_SUBJECTIVE",
"主観", createCamera<CameraSubjective>, 1 }
340CameraHolder::CameraHolder(
const char *pName) :
NameObj(pName) {
342 mDefaultCameraIndex = getIndexOf(gDefaultCameraName);
343 mDefaultTranslator = mTranslators[mDefaultCameraIndex];
346CameraHolder::~CameraHolder() {
351 return mTranslators[index];
354s32 CameraHolder::getIndexOf(
const char *pName)
const {
355 for (s32 i = 0; i < NR_CAMERA_TYPES; i++) {
356 if (strcmp(pName, gCameraTable[i].
mName) == 0) {
364Camera *CameraHolder::getDefaultCamera() {
365 return mCameras[mDefaultCameraIndex];
368s32 CameraHolder::getIndexOfDefault()
const {
369 return mDefaultCameraIndex;
372s32 CameraHolder::getIndexOf(
Camera *pCamera)
const {
373 for (s32 i = 0; i < NR_CAMERA_TYPES; i++) {
374 if (mCameras[i] == pCamera) {
382void CameraHolder::createCameras() {
383 mCameras =
new Camera *[NR_CAMERA_TYPES];
386 for (s32 i = 0; i < NR_CAMERA_TYPES; i++) {
387 mCameras[i] = gCameraTable[i].mCreateFunction();
388 mTranslators[i] = mCameras[i]->createTranslator();
392Camera *CameraHolder::getCameraInner(
long index)
const {
393 return mCameras[index];
The most basic form of an object.
const char * mName
A string to identify the NameObj.