refactored Projectile class

removed unused projectile classes and files
This commit is contained in:
devZoGok
2022-10-31 12:25:29 +02:00
parent 8c80aedb20
commit dbf751cf89
19 changed files with 334 additions and 1384 deletions
+242
View File
@@ -0,0 +1,242 @@
numberOfTypesOfWeapons = 2
g = 2.2
speed = {
{
{10,10,10,10,10,10,10,10,10,10,10}
},
{
{10,10,10,10,10,10,10,10,10,10,10}
},
{
{10, 10, 10, 10}
},
{
{10, 10, 10, 10}
},
{
{5,5}
},
{
{7,7,7,7,7}
},
{},
{},
{.05},
{
{.1, .1},
{.1, .1}
}
}
length = {
{
{1,1,1,1,1,1,1,1,1,1,1,1,1}
},
{
{1,1,1,1,1,1,1,1,1,1,1,1,1}
},
{
{1,1,1,1}
},
{
{1,1,1,1}
},
{
{1,1}
},
{
{1,1,1,1,1}
},
{},
{},
{
{.5}
},
{
{1,1},
{1,1}
},
{}
}
scale = {
{
{1, 1, 1, .5, .5, .5, .5, .5, .5, .5, .5, .5, .5}
},
{
{1, 1, 1, .23, .23, .23, .23, .23, .23, .23, .23, .23, .23}
},
{
{.45, .45, .45, .45}
},
{
{.5, .5, .5, .5}
},
{
{.95, .95}
},
{
{.6, .6, .6, .6, .6}
}
}
pos = {
{
{
{x = 0, y = 0, z = 1.05},
{x = 0, y = 0, z = 1.05},
{x = 0, y = 0, z = 1.05},
{x = 0, y = 0, z = 1.5},
{x = 0, y = 0, z = 2.5},
{x = 0, y = 0, z = 2.5},
{x = 0, y = 0, z = 2.5},
{x = 0, y = 0, z = 2.5},
{x = 0, y = 0, z = 2.5},
{x = 0, y = 0, z = 2.5},
{x = 0, y = 0, z = 2.5},
{x = 0, y = 0, z = 2.5},
{x = 0, y = 0, z = 2.5}
}
},
{
{
{x = 0, y = 0, z = 0.79254},
{x = 0, y = 0, z = 0.79254},
{x = 0, y = 0, z = 0.79254},
{x = 0, y = 0, z = 0.17723},
{x = 0, y = 0, z = 0.17723},
{x = 0, y = 0, z = 0.17723},
{x = 0, y = 0, z = 0.17723},
{x = 0, y = 0, z = 0.17723},
{x = 0, y = 0, z = 0.17723},
{x = 0, y = 0, z = 0.17723},
{x = 0, y = 0, z = 0.17723},
{x = 0, y = 0, z = 0.17723},
{x = 0, y = 0, z = 0.17723}
}
},
{
{
{x = 0, y = 0, z = -0.36178},
{x = 0, y = 0, z = -0.36178},
{x = 0, y = 0, z = -0.36178},
{x = 0, y = 0, z = -0.36178}
},
{x = 0, y = -3, z = 0}
},
{
{
{x = 0, y = 0, z = -0.30074},
{x = 0, y = 0, z = -0.30074},
{x = 0, y = 0, z = -0.30074},
{x = 0, y = 0, z = -0.30074}
},
{x = 0, y = -2, z = 0}
},
{
{
{x = 0, y = 0, z = -0.62118},
{x = 0, y = 0, z = -0.62118}
},
{
{x = 0.24482, y = 1.14985, z = 1.32775},
{x = 0.24482, y = 1.14985, z = 1.62698},
{x = 0.24482, y = 1.14985, z = 1.88017},
{x = -0.24482, y = 1.14985, z = 1.32775},
{x = -0.24482, y = 1.14985, z = 1.62698},
{x = -0.24482, y = 1.14985, z = 1.88017}
}
},
{
{
{x = 0, y = 0, z = -0.59117},
{x = 0, y = 0, z = -0.59117},
{x = 0, y = 0, z = -0.59117},
{x = 0, y = 0, z = -0.59117},
{x = 0, y = 0, z = -0.59117}
},
{{x = 0.17192, y = 0.57858, z = 0.64471}, {x = -0.17192, y = 0.57858, z = 0.64471}}
},
{},
{},
{
{x = 0, y =-.3, z =-1.5}
},
{
{
{x = -.25, y =0, z =0},
{x = .25, y =0, z =0}
},
{
{x = -.25, y =0, z =0},
{x = .25, y =0, z =0}
}
},
{}
}
damage = {
{
{50, 50, 50, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}
},
{
{50, 50, 50, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}
},
{
{50,50,50,50},
{50}
},
{
{50,50,50,50},
{50}
},
{
{10,10},
{}
},
{
{10,10,10,10,10},
{}
},
{},
{},
{
{}
},
{
{50,50},
{50,50}
},
{}
}
projectileName = {
{"shell"},
{"shell"},
{"shell"},
{"shell"},
{"shell","guidedMissile"},
{"shell","guidedMissile"},
{""},
{""},
{"torpedo"},
{"missile","missile"},
}
meshPath = {
{PATH .. "Models/Shell/shell.x"},
{PATH .. "Models/Shell/shell.x"},
{PATH .. "Models/Shell/shell.x", PATH .. "Models/Depth charge/depthCharge.x"},
{PATH .. "Models/Shell/shell.x", PATH .. "Models/Depth charge/depthCharge.x"},
{PATH .. "Models/Shell/shell.x", PATH .. "Models/Guided missile/guidedMissile.x"},
{PATH .. "Models/Shell/shell.x", PATH .. "Models/Guided missile/guidedMissile.x"},
{},
{},
{PATH .. "Models/Torpedo/torpedo.x"},
{PATH .. "Models/Jets/aam.x", PATH .. "Models/Jets/awm.x"}
}
diffuseMapTextPath = {
{},
{},
{},
{},
{},
{},
{},
{},
{}
}
+1 -1
View File
@@ -11,7 +11,7 @@ set(STATES activeGameState.cpp inGameAppState.cpp guiAppState.cpp)
set(UTIL util.cpp binds.h)
set(GUI tooltip.cpp optionsButton.cpp exitButton.cpp consoleCommand.cpp)
set(CORE gameManager.cpp defConfigs.cpp)
set(PROJECTILES projectile.cpp guidedMissile.cpp depthCharge.cpp missile.cpp shell.cpp torpedo.cpp)
set(PROJECTILES projectile.cpp)
set(FX explosion.cpp)
set(CONTENT player.cpp unit.cpp pathfinder.cpp map.cpp ${PROJECTILES} ${FX})
set(GAME_SRC ${STATES} ${GUI} ${CORE} ${CONTENT} ${UTIL})
-50
View File
@@ -1,50 +0,0 @@
#include <model.h>
#include <stateManager.h>
#include "depthCharge.h"
#include "inGameAppState.h"
#include "util.h"
using namespace vb01;
namespace battleship{
DepthCharge::DepthCharge(Unit *unit, Vector3 pos, Vector3 dir, Vector3 left, Vector3 up, int id, int weaponTypeId, int weaponId) :
Projectile(unit, nullptr, pos, dir, left, up, id, weaponTypeId, weaponId) {
speed = 0;
initTime = getTime();
}
void DepthCharge::update(){
//x=x0+vX+a*t*t/2
//y=y0+vY-g*t*t/2
float t = float(getTime() - initTime) / 1000;
pos = initPos + dirVec * speed + Vector3(0, speed * t - .5 * g * t * t, 0);
node->setPosition(pos);
checkForCollision();
}
void DepthCharge::checkForCollision() {
InGameAppState *inGameState = ((InGameAppState*)GameManager::getSingleton()->getStateManager()->getAppStateByType((int)AppStateType::IN_GAME_STATE));
Node *collNode = nullptr;
bool detonated = false;
if(pos.y < -10)
detonated = true;
if(!detonated)
for(Player *p : inGameState->getPlayers())
for(Unit *u : p->getUnits()){
if(u == unit) continue;
Vector3 p0 = u->getCorner(0);
Vector3 p1 = u->getCorner(1);
Vector3 p3 = u->getCorner(3);
Vector3 p4 = u->getCorner(4);
}
if(detonated)
explode(collNode);
}
void DepthCharge::explode(Node *collNode) {
Projectile::explode(collNode);
}
}
-19
View File
@@ -1,19 +0,0 @@
#pragma once
#ifndef DEPTH_CHARGE_H
#define DEPTH_CHARGE_H
#include "projectile.h"
namespace battleship{
class DepthCharge : public Projectile {
public:
DepthCharge(Unit*, vb01::Vector3, vb01::Vector3, vb01::Vector3, vb01::Vector3, int, int, int);
void update();
private:
s64 initTime;
void explode(vb01::Node*);
void checkForCollision();
};
}
#endif
-51
View File
@@ -1,51 +0,0 @@
#include <model.h>
#include "guidedMissile.h"
#include "unit.h"
#include "guidedMissileData.h"
#include "util.h"
using namespace vb01;
using namespace std;
namespace battleship{
GuidedMissile::GuidedMissile(Unit *unit, Vector3 pos, Vector3 target, Vector3 dirVec, Vector3 leftVec, Vector3 upVec, int id, int weaponTypeId, int weaponId) :
Projectile(unit, nullptr, pos, dirVec, leftVec, upVec, id, weaponTypeId, weaponId) {
speed = .05;
for (int i = 0; i < 180; i++)
arcLength += speed * cos(turnAngle * i);
this->target = target;
Vector3 targVec = Vector3(target.x - initPos.x, 0, target.z - initPos.z);
b = targVec.getLength() / 2;
x = -b;
dirVec = Vector3(0,1,0);
upVec = -targVec.norm();
leftVec = Quaternion(PI / 2, dirVec) * dirVec;
rayLength = 3;
damage = 100;
}
void GuidedMissile::update() {
Projectile::update();
updateVecs();
node->setPosition(pos);
checkForCollision();
}
void GuidedMissile::updateVecs() {
if(x < b){
Vector3 targVec = Vector3(target.x - initPos.x, 0, target.z - initPos.z);
pos = pos + targVec.norm() * speed;
x += speed;
pos.y = sqrt(1. - x * x / (b * b)) * a;
float tanAngle = atan(-a*x/(b*b*sqrt(1.-x*x/(b*b))));
Quaternion rotQuat = Quaternion(tanAngle, leftVec);
Vector3 dirProj = (dirVec == Vector3::VEC_J ? upVec : Vector3(dirVec.x, 0, dirVec.z).norm());
orientProjectile(rotQuat * targVec);
}
else
pos.y -= speed;
}
}
-21
View File
@@ -1,21 +0,0 @@
#pragma once
#ifndef GUIDED_MISSILE_H
#define GUIDED_MISSILE_H
#include "projectile.h"
namespace battleship{
class GuidedMissile : public Projectile {
public:
GuidedMissile(Unit*, vb01::Vector3, vb01::Vector3, vb01::Vector3, vb01::Vector3, vb01::Vector3, int, int, int);
~GuidedMissile(){}
void update();
private:
void updateVecs();
bool firstPhase = true;
float a = 4,b,x,turnAngle = 1,arcLength = 0.,maxHeight = 5;
vb01::Vector3 target;
};
}
#endif
-27
View File
@@ -1,27 +0,0 @@
#pragma once
#ifndef GUIDED_MISSILE_DATA_H
#define GUIDED_MISSILE_DATA_H
#include "projectileData.h"
namespace battleship{
namespace projectileData {
const vb01::Vector3 guidedMissilePos[unitData::numberOfUnits][6]{
{},
{},
{},
{},
{
vb01::Vector3(0.24482, 1.14985, 1.32775),
vb01::Vector3(0.24482, 1.14985, 1.62698),
vb01::Vector3(0.24482, 1.14985, 1.88017),
vb01::Vector3(-0.24482, 1.14985, 1.32775),
vb01::Vector3(-0.24482, 1.14985, 1.62698),
vb01::Vector3(-0.24482, 1.14985, 1.88017)
},
{vb01::Vector3(0.17192, 0.57858, 0.64471), vb01::Vector3(-0.17192, 0.57858, 0.64471)}
};
}
}
#endif
-31
View File
@@ -1,31 +0,0 @@
#include <util.h>
#include <model.h>
#include "missile.h"
using namespace vb01;
namespace battleship{
Missile::Missile(Unit *unit, Node *node, Vector3 target, Vector3 pos, Vector3 dir, Vector3 left, Vector3 up, int id, int weaponTypeId, int weaponId) :
Projectile(unit, node, pos, dir, left, up, id, weaponTypeId, weaponId) {
this->target = target;
this->type = (MissileType)weaponId;
this->initTime = getTime();
}
void Missile::update() {
Projectile::update();
pos = pos + dirVec * speed;
node->setPosition(pos);
float angle = dirVec.getAngleBetween(target - pos);
Vector3 axis = dirVec.cross(target - pos).norm();
if(rotationSpeed / 180 * PI < angle){
Quaternion rotQuat = Quaternion(rotationSpeed / 180 * PI, axis);
orientProjectile(rotQuat * dirVec);
}
if(!exploded && getTime() - initTime > selfDistructTime)
Projectile::explode(nullptr);
}
}
-24
View File
@@ -1,24 +0,0 @@
#pragma once
#ifndef MISSILE_H
#define MISSILE_H
#include "projectile.h"
namespace battleship{
enum MissileType {AAM, AWM};
class Missile : public Projectile {
public:
Missile(Unit*, vb01::Node*, vb01::Vector3, vb01::Vector3, vb01::Vector3, vb01::Vector3, vb01::Vector3, int, int, int);
~Missile(){}
void update();
private:
s64 initTime;
int selfDistructTime = 10000;
vb01::Vector3 target;
float rotationSpeed = 5;
MissileType type;
};
}
#endif
-24
View File
@@ -1,24 +0,0 @@
#pragma once
#ifndef MISSILEDATA_H
#define MISSILEDATA_H
#include "unitData.h"
#include "projectileData.h"
namespace battleship{
namespace projectileData{
const int selfDestructTime[unitData::numberOfUnits][13]{
{},
{},
{},
{},
{},
{},
{},
{10000,10000}
};
}
}
#endif
+75 -58
View File
@@ -1,4 +1,5 @@
#include <algorithm>
#include <node.h>
#include <model.h>
#include <material.h>
@@ -6,9 +7,10 @@
#include <ray.h>
#include <stateManager.h>
#include <luaManager.h>
#include "projectile.h"
#include "projectileData.h"
#include "defConfigs.h"
#include "inGameAppState.h"
#include "unit.h"
#include "util.h"
@@ -18,56 +20,80 @@ using namespace std;
using namespace vb01;
namespace battleship{
using namespace configData;
using namespace configData;
using namespace gameBase;
Projectile::Projectile(Unit *unit, Node *node, Vector3 pos, Vector3 dir, Vector3 left, Vector3 up, int id, int weaponTypeId, int weaponId) {
this->unit=unit;
this->id=id;
this->weaponTypeId=weaponTypeId;
this->unit = unit;
this->id = id;
this->weaponTypeId = weaponTypeId;
this->pos = pos;
initPos = pos;
dirVec = dir;
leftVec = left;
upVec = up;
this->rayLength=projectileData::length[id][weaponTypeId][weaponId];
GameManager *gm = GameManager::getSingleton();
if(!node){
this->node = new Model((projectileData::meshPath[id][weaponTypeId]));
Material *mat = new Material(Root::getSingleton()->getLibPath() + "texture");
mat->addBoolUniform("lightingEnabled", false);
string f[]{projectileData::diffuseMapTextPath[id][weaponTypeId]};
Texture *diffuseTexture = new Texture(f, 1, false);
mat->addTexUniform("textures[0]", diffuseTexture, true);
this->node->setMaterial(mat);
}
this->node->setPosition(pos);
this->pos = pos;
this->damage=projectileData::damage[id][weaponTypeId][weaponId];
initPos = pos;
speed = projectileData::speed[id][weaponTypeId][weaponId];
float angle = dirVec.getAngleBetween(Vector3(0, 0, -1));
angle = Quaternion(angle, upVec) * Vector3(0, 0, -1) == dirVec ? angle : -angle;
string p1 = gm->getPath() + "Sounds/" + unitData::name[id] + "s/" + projectileData::name[id][weaponTypeId] + ".ogg";
string p2 = gm->getPath() + "Sounds/Explosions/explosion03" + to_string(rand() % 4) + ".ogg";
this->shotSfxBuffer = new sf::SoundBuffer();
this->explosionSfxBuffer=new sf::SoundBuffer();
if(shotSfxBuffer->loadFromFile(p1.c_str())){
shotSfx=new sf::Sound(*shotSfxBuffer);
shotSfx->play();
}
if(explosionSfxBuffer->loadFromFile(p2.c_str()))
explosionSfx=new sf::Sound(*explosionSfxBuffer);
initProperties(weaponId);
initModel(node);
initSound();
}
Projectile::~Projectile(){
}
void Projectile::initProperties(int weaponId){
LuaManager *lm = LuaManager::getSingleton();
string pathBase = GameManager::getSingleton()->getPath() + "Scripts/";
lm->buildScript(vector<string>{pathBase + "defPaths.lua", pathBase + "unitData.lua", pathBase + "projectileData.lua"});
vector<Index> indices = vector<Index>{Index(id + 1), Index(weaponTypeId + 1), Index(weaponId + 1)};
rayLength = lm->getFloatFromTable("rayLength", indices);
damage = lm->getIntFromTable("damage", indices);
speed = lm->getFloatFromTable("speed", indices);
}
void Projectile::initModel(Node *node){
if(!node){
LuaManager *lm = LuaManager::getSingleton();
vector<Index> indices = vector<Index>{Index(id + 1), Index(weaponTypeId + 1)};
string meshPath = lm->getStringFromTable("meshPath", indices);
this->node = new Model(meshPath);
Material *mat = new Material(Root::getSingleton()->getLibPath() + "texture");
mat->addBoolUniform("lightingEnabled", false);
string diffTexPath = lm->getStringFromTable("diffuseMapTextPath", indices);
string f[]{diffTexPath};
Texture *diffuseTexture = new Texture(f, 1, false);
mat->addTexUniform("textures[0]", diffuseTexture, true);
this->node->setMaterial(mat);
}
this->node->setPosition(pos);
}
void Projectile::initSound(){
GameManager *gm = GameManager::getSingleton();
LuaManager *lm = LuaManager::getSingleton();
string unitName = lm->getStringFromTable("name", vector<Index>{Index(id + 1)});
string projectileName = lm->getStringFromTable("projectileName", vector<Index>{Index(id + 1), Index(weaponTypeId + 1)});
string p1 = gm->getPath() + "Sounds/" + unitName + "s/" + projectileName + ".ogg";
string p2 = gm->getPath() + "Sounds/Explosions/explosion03" + to_string(rand() % 4) + ".ogg";
shotSfxBuffer = new sf::SoundBuffer();
explosionSfxBuffer = new sf::SoundBuffer();
if(shotSfxBuffer->loadFromFile(p1.c_str())){
shotSfx = new sf::Sound(*shotSfxBuffer);
shotSfx->play();
}
if(explosionSfxBuffer->loadFromFile(p2.c_str()))
explosionSfx = new sf::Sound(*explosionSfxBuffer);
}
void Projectile::update() {
if(unit->isDebuggable())
@@ -81,7 +107,7 @@ namespace battleship{
void Projectile::explode(Node *collNode) {
exploded = true;
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
vector<Player*> players = ((InGameAppState*) stateManager->getAppStateByType((int)AppStateType::IN_GAME_STATE))->getPlayers();
for (Player *p : players) {
@@ -90,30 +116,21 @@ namespace battleship{
u->takeDamage(damage);
}
InGameAppState *inGameState=((InGameAppState*)stateManager->getAppStateByType((int)AppStateType::IN_GAME_STATE));
InGameAppState *inGameState = ((InGameAppState*)stateManager->getAppStateByType((int)AppStateType::IN_GAME_STATE));
if(id == 8)
detonateTorpedo(inGameState,pos);
else if(weaponTypeId==1&&(id==2||id==3))
detonateDepthCharge(inGameState,pos);
detonateTorpedo(inGameState, pos);
else if(weaponTypeId == 1 && (id == 2 || id == 3))
detonateDepthCharge(inGameState, pos);
else
detonate(inGameState,pos,-dirVec);
detonate(inGameState, pos, -dirVec);
}
void Projectile::debug(){
}
void Projectile::orientProjectile(Vector3 orientVec){
Vector3 orientVecProj = Vector3(orientVec.x, 0, orientVec.z).norm();
float projAngle = orientVec.getAngleBetween(orientVecProj);
float rotAngle = Vector3(0,0,-1).getAngleBetween(orientVecProj);
rotAngle *= (orientVec.x<0?1:-1)/PI*180;
projAngle*=(orientVec.y>0?1:-1)/PI*180;
dirVec = orientVecProj;
upVec = Vector3(0,1,0);
leftVec = Quaternion(-PI/2, upVec) * dirVec;
Quaternion rotQuat=Quaternion(projAngle/180*PI,leftVec);
dirVec=rotQuat*dirVec;
upVec=rotQuat*upVec;
void Projectile::orientProjectile(Quaternion rot){
node->setOrientation(rot);
this->rot = rot;
}
}
+16 -10
View File
@@ -3,15 +3,17 @@
#define PROJECTILE_H
#include <SFML/Audio.hpp>
#include <vector.h>
#include <quaternion.h>
#include "gameManager.h"
#include "util.h"
namespace vb01{
class Node;
class Model;
class Mesh;
class Node;
class Model;
class Mesh;
}
namespace battleship {
@@ -23,23 +25,27 @@ namespace battleship {
virtual ~Projectile();
virtual void update();
virtual void debug();
void orientProjectile(vb01::Vector3);
void orientProjectile(vb01::Quaternion);
inline bool isExploded() {return exploded;}
inline Unit* getUnit(){return unit;}
private:
void initProperties(int);
void initModel(vb01::Node*);
void initSound();
protected:
virtual void checkForCollision();
void explode(vb01::Node*);
vb01::Model *node=nullptr;
vb01::Model *node = nullptr;
bool exploded = false;
const float g = 2.2;
float speed, angle, rayLength, scale;
int damage,id,weaponTypeId;
float speed, rayLength, scale;
int damage, id, weaponTypeId;
vb01::Vector3 initPos, pos, dirVec, leftVec, upVec;
vb01::Quaternion rot;
s64 lastUpdateTime = 0;
Unit *unit;
Unit *unit = nullptr;
sf::SoundBuffer *shotSfxBuffer, *explosionSfxBuffer;
sf::Sound *shotSfx=nullptr, *explosionSfx=nullptr;
sf::Sound *shotSfx = nullptr, *explosionSfx = nullptr;
};
}
-257
View File
@@ -1,257 +0,0 @@
#pragma once
#ifndef PROJECTILE_DATA_H
#define PROJECTILE_DATA_H
#include "unitData.h"
/*
0:戦艦
1:駆逐艦
2:巡洋艦
3:航空母艦
4:潜水艦
5: 戦闘機
6:巡航ミサイル
*/
namespace battleship{
namespace projectileData {
using namespace configData;
const int numberOfTypesOfWeapons = 2;
const float speed[unitData::numberOfUnits][numberOfTypesOfWeapons][13]{
{
{10,10,10,10,10,10,10,10,10,10,10}
},
{
{10,10,10,10,10,10,10,10,10,10,10}
},
{
{10, 10, 10, 10}
},
{
{10, 10, 10, 10}
},
{
{5,5}
},
{
{7,7,7,7,7},
{}
},
{},
{},
{.05},
{
{.1, .1},
{.1, .1}
}
};
const float length[unitData::numberOfUnits][numberOfTypesOfWeapons][13]{
{
{1,1,1,1,1,1,1,1,1,1,1,1,1}
},
{
{1,1,1,1,1,1,1,1,1,1,1,1,1}
},
{
{1,1,1,1}
},
{
{1,1,1,1}
},
{
{1,1}
},
{
{1,1,1,1,1}
},
{},
{},
{
{.5}
},
{
{1,1},
{1,1}
},
{}
};
const float scale[unitData::numberOfUnits][numberOfTypesOfWeapons][13]{
{
{1, 1, 1, .5, .5, .5, .5, .5, .5, .5, .5, .5, .5}
},
{
{1, 1, 1, .23, .23, .23, .23, .23, .23, .23, .23, .23, .23}
},
{
{.45, .45, .45, .45}
},
{
{.5, .5, .5, .5}
},
{
{.95, .95}
},
{
{.6, .6, .6, .6, .6}
}
};
const vb01::Vector3 pos[unitData::numberOfUnits][numberOfTypesOfWeapons][13]{
{
{
vb01::Vector3(0, 0, 1.05),
vb01::Vector3(0, 0, 1.05),
vb01::Vector3(0, 0, 1.05),
vb01::Vector3(0, 0, 1.5),
vb01::Vector3(0, 0, 2.5),
vb01::Vector3(0, 0, 2.5),
vb01::Vector3(0, 0, 2.5),
vb01::Vector3(0, 0, 2.5),
vb01::Vector3(0, 0, 2.5),
vb01::Vector3(0, 0, 2.5),
vb01::Vector3(0, 0, 2.5),
vb01::Vector3(0, 0, 2.5),
vb01::Vector3(0, 0, 2.5)
}
},
{
{
vb01::Vector3(0, 0, 0.79254),
vb01::Vector3(0, 0, 0.79254),
vb01::Vector3(0, 0, 0.79254),
vb01::Vector3(0, 0, 0.17723),
vb01::Vector3(0, 0, 0.17723),
vb01::Vector3(0, 0, 0.17723),
vb01::Vector3(0, 0, 0.17723),
vb01::Vector3(0, 0, 0.17723),
vb01::Vector3(0, 0, 0.17723),
vb01::Vector3(0, 0, 0.17723),
vb01::Vector3(0, 0, 0.17723),
vb01::Vector3(0, 0, 0.17723),
vb01::Vector3(0, 0, 0.17723)
}
},
{
{
vb01::Vector3(0, 0, -0.36178),
vb01::Vector3(0, 0, -0.36178),
vb01::Vector3(0, 0, -0.36178),
vb01::Vector3(0, 0, -0.36178)
},
{vb01::Vector3(0, -3, 0)}
},
{
{
vb01::Vector3(0, 0, -0.30074),
vb01::Vector3(0, 0, -0.30074),
vb01::Vector3(0, 0, -0.30074),
vb01::Vector3(0, 0, -0.30074)
},
{vb01::Vector3(0, -2, 0)}
},
{
{vb01::Vector3(0, 0, -0.62118), vb01::Vector3(0, 0, -0.62118)},
{
vb01::Vector3(0.24482, 1.14985, 1.32775),
vb01::Vector3(0.24482, 1.14985, 1.62698),
vb01::Vector3(0.24482, 1.14985, 1.88017),
vb01::Vector3(-0.24482, 1.14985, 1.32775),
vb01::Vector3(-0.24482, 1.14985, 1.62698),
vb01::Vector3(-0.24482, 1.14985, 1.88017)
}
},
{
{
vb01::Vector3(0, 0, -0.59117),
vb01::Vector3(0, 0, -0.59117),
vb01::Vector3(0, 0, -0.59117),
vb01::Vector3(0, 0, -0.59117),
vb01::Vector3(0, 0, -0.59117)
},
{vb01::Vector3(0.17192, 0.57858, 0.64471), vb01::Vector3(-0.17192, 0.57858, 0.64471)}
},
{},
{},
{
{vb01::Vector3(0,-.3,-1.5)}
},
{
{vb01::Vector3(-.25,0,0),vb01::Vector3(.25,0,0)},
{vb01::Vector3(-.25,0,0),vb01::Vector3(.25,0,0)}
},
{}
};
const int damage[unitData::numberOfUnits][numberOfTypesOfWeapons][13]{
{
{50, 50, 50, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}
},
{
{50, 50, 50, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}
},
{
{50,50,50,50},
{50}
},
{
{50,50,50,50},
{50}
},
{
{10,10},
{}
},
{
{10,10,10,10,10},
{}
},
{},
{},
{
{}
},
{
{50,50},
{50,50}
},
{}
};
const std::string name[unitData::numberOfUnits][numberOfTypesOfWeapons]{
{"shell"},
{"shell"},
{"shell"},
{"shell"},
{"shell","guidedMissile"},
{"shell","guidedMissile"},
{""},
{""},
{"torpedo"},
{"missile","missile"},
};
const std::string meshPath[unitData::numberOfUnits][numberOfTypesOfWeapons]{
{GameManager::getSingleton()->getPath() + "Models/Shell/shell.x"},
{GameManager::getSingleton()->getPath() + "Models/Shell/shell.x"},
{GameManager::getSingleton()->getPath() + "Models/Shell/shell.x", GameManager::getSingleton()->getPath() + "Models/Depth charge/depthCharge.x"},
{GameManager::getSingleton()->getPath() + "Models/Shell/shell.x", GameManager::getSingleton()->getPath() + "Models/Depth charge/depthCharge.x"},
{GameManager::getSingleton()->getPath() + "Models/Shell/shell.x", GameManager::getSingleton()->getPath() + "Models/Guided missile/guidedMissile.x"},
{GameManager::getSingleton()->getPath() + "Models/Shell/shell.x", GameManager::getSingleton()->getPath() + "Models/Guided missile/guidedMissile.x"},
{},
{},
{GameManager::getSingleton()->getPath() + "Models/Torpedo/torpedo.x"},
{GameManager::getSingleton()->getPath() + "Models/Jets/aam.x", GameManager::getSingleton()->getPath() + "Models/Jets/awm.x"},
};
const std::string diffuseMapTextPath[unitData::numberOfUnits][numberOfTypesOfWeapons]{
{},
{},
{},
{},
{},
{},
{},
{},
{}
};
}
}
#endif
-38
View File
@@ -1,38 +0,0 @@
#include <model.h>
#include "shell.h"
#include "defConfigs.h"
#include "projectileData.h"
#include "util.h"
#include "unit.h"
using namespace vb01;
namespace battleship{
Shell::Shell(Unit *unit, Vector3 pos, Vector3 dir, Vector3 left, Vector3 up, int id, int weaponTypeId, int weaponId) : Projectile(unit, nullptr, pos, dir, left, up, id, weaponTypeId, weaponId) {
this->speed = projectileData::speed[id][weaponTypeId][weaponId];
node->setScale(Vector3(1, 1, 1) * projectileData::scale[id][weaponTypeId][weaponId]);
initTime = getTime();
}
void Shell::update() {
//x=v*cos(a)*t
//y=v*sin(a)*t+0.5(g*t^2)
Projectile::update();
Vector3 straightVec = Vector3(dirVec.x, 0, dirVec.z).norm();
double time = double(getTime() - initTime) / 1000,
offsetX = speed * cos(angle) * time,
offsetY = speed * sin(angle) * time - .5 * (g * time * time);
pos = initPos + straightVec * offsetX + Vector3(0, offsetY, 0);
node->setPosition(pos);
updateVecs(straightVec, time);
checkForCollision();
}
void Shell::updateVecs(Vector3 straightVec, float time) {
// f'(t)=dy/dx=(v*sin(a)+g*t)/(v*cos(a))
float tanAngle = -atan((speed * sin(angle) + g * time) / (speed * cos(angle)));
Quaternion rotQuat = Quaternion(tanAngle, leftVec);
dirVec = rotQuat*straightVec, upVec = rotQuat * Vector3(0, 1, 0);
}
}
-20
View File
@@ -1,20 +0,0 @@
#pragma once
#ifndef SHELL_H
#define SHELL_H
#include "gameManager.h"
#include "projectile.h"
namespace battleship {
class Shell : public Projectile {
public:
Shell(Unit*, vb01::Vector3, vb01::Vector3, vb01::Vector3, vb01::Vector3, int, int, int);
~Shell(){}
virtual void update();
protected:
s64 initTime;
virtual void updateVecs(vb01::Vector3, float);
};
}
#endif
-16
View File
@@ -1,16 +0,0 @@
#include <model.h>
#include "torpedo.h"
using namespace vb01;
namespace battleship{
Torpedo::Torpedo(Unit *unit, Vector3 pos, Vector3 dir, Vector3 left, Vector3 up, int id, int weaponTypeId, int weaponId) :
Projectile(unit, nullptr, pos, dir, left, up, id,weaponTypeId,weaponId) {this->damage = 50;}
void Torpedo::update() {
Projectile::update();
pos = pos + dirVec * speed;
node->setPosition(pos);
}
}
-16
View File
@@ -1,16 +0,0 @@
#pragma once
#ifndef TORPEDO_H
#define TORPEDO_H
#include "projectile.h"
namespace battleship{
class Torpedo : public Projectile {
public:
Torpedo(Unit*, vb01::Vector3, vb01::Vector3, vb01::Vector3, vb01::Vector3, int, int, int);
~Torpedo(){}
void update();
};
}
#endif
-292
View File
@@ -1,292 +0,0 @@
#pragma once
#ifndef UNIT_DATA_H
#define UNIT_DATA_H
#include <vector.h>
#include "defConfigs.h"
/*
0:戦艦
1:駆逐艦
2:巡洋艦
3:航空母艦
4:潜水艦
5: 戦闘機
*/
namespace battleship {
namespace unitData {
using namespace configData;
const int numberOfUnits = 11;
enum class UNIT_TYPE {VESSEL, DESTROYER, CRUISER, AIRCRAFT_CARRIER, SUBMARINE, MISSILE_JET, DEMO_JET};
const UNIT_TYPE unitType[numberOfUnits]{
UNIT_TYPE::VESSEL, UNIT_TYPE::VESSEL,
UNIT_TYPE::DESTROYER, UNIT_TYPE::DESTROYER,
UNIT_TYPE::CRUISER, UNIT_TYPE::CRUISER,
UNIT_TYPE::AIRCRAFT_CARRIER, UNIT_TYPE::AIRCRAFT_CARRIER,
UNIT_TYPE::SUBMARINE,
UNIT_TYPE::MISSILE_JET, UNIT_TYPE::DEMO_JET
};
const int health[numberOfUnits]{500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500};
const float speed[numberOfUnits]{.025, .025, .05, .05, .1, .1, .1, .1, .1, .1, .15};
const float destinationOffset[numberOfUnits]{.75, .75, 1, 1, .1, .1, .1, .1, .1, .5, .5};
const float anglePrecision[numberOfUnits]{.1, .1, .1, .1, .1, .1, .1, .1, .1, 3,3};
const int cost[numberOfUnits]{500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500};
const float maxTurnAngle[numberOfUnits]{1, 1, .5, .5, 1, 1, .5, .5, 1, 2, 2};
const float range[numberOfUnits]{15, 15, 14, 14, 13, 13, 12, 12,15,25};
const vb01::Vector3 unitCornerPoints[numberOfUnits][8]{
{
vb01::Vector3(.9, -1, -6),
vb01::Vector3(-.9, -1, -6),
vb01::Vector3(-.9, -1, 5.8),
vb01::Vector3(.9, -1, 5.8),
vb01::Vector3(.9, 3.5, -6),
vb01::Vector3(-.9, 3.5, -6),
vb01::Vector3(-.9, 3.5, 5.8),
vb01::Vector3(.9, 3.5, 5.8)
},
{
vb01::Vector3(.5, -.5, -7.05),
vb01::Vector3(-.5, -.5, -7.05),
vb01::Vector3(-.5, -.5, 6.4),
vb01::Vector3(.5, -.5, 6.4),
vb01::Vector3(.5, 3, -7.05),
vb01::Vector3(-.5, 3, -7.05),
vb01::Vector3(-.5, 3, 6.4),
vb01::Vector3(.5, 3, 6.4)
},
{
vb01::Vector3(.5, -.5, -3.4),
vb01::Vector3(-.5, -.5, -3.4),
vb01::Vector3(-.5, -.5, 3.4),
vb01::Vector3(.5, -.4, 3.4),
vb01::Vector3(.5, 2.1, -3.4),
vb01::Vector3(-.5, 2, -3.4),
vb01::Vector3(-.5, 2, 3.4),
vb01::Vector3(.5, 2, 3.4)
},
{
vb01::Vector3(.5, -.25, -4.8),
vb01::Vector3(-.5, -.25, -4.8),
vb01::Vector3(-.5, -.25, 4.7),
vb01::Vector3(.5, -.25, 4.7),
vb01::Vector3(.5, .8, -4.8),
vb01::Vector3(-.5, .8, -4.8),
vb01::Vector3(-.5, .8, 4.7),
vb01::Vector3(.5, .8, 4.7)
},
{
vb01::Vector3(.7, -.3, -4),
vb01::Vector3(-.7, -.3, -4),
vb01::Vector3(-.7, -.3, 3.4),
vb01::Vector3(.7, -.3, 3.4),
vb01::Vector3(.7, 2.9, -4),
vb01::Vector3(-.7, 2.9, -4),
vb01::Vector3(-.7, 2.9, 3.4),
vb01::Vector3(.7, 2.9, 3.4)
},
{
vb01::Vector3(.5, -.5, -6.1),
vb01::Vector3(-.5, -.5, -6.1),
vb01::Vector3(-.5, -.5, 5.2),
vb01::Vector3(.5, -.5, 5.2),
vb01::Vector3(.5, 2.2, -6.1),
vb01::Vector3(-.5, 2.2, -6.1),
vb01::Vector3(-.5, 2.2, 5.2),
vb01::Vector3(.5, 2.2, 5.2)
},
{
vb01::Vector3(2, -.5, -10),
vb01::Vector3(-2, -.5, -10),
vb01::Vector3(-2, -.5, 9),
vb01::Vector3(2, -.5, 9),
vb01::Vector3(2, 5.5, -10),
vb01::Vector3(-2, 5.5, -10),
vb01::Vector3(-2, 5.5, 9),
vb01::Vector3(2, 5.5, 9)
},
{
vb01::Vector3(2, -1, -10),
vb01::Vector3(-2, -1, -10),
vb01::Vector3(-2, -1, 9),
vb01::Vector3(2, -1, 9),
vb01::Vector3(2, 4.5, -10),
vb01::Vector3(-2, 4.5, -10),
vb01::Vector3(-2, 4.5, 9),
vb01::Vector3(2, 4.5, 9)
},
{
vb01::Vector3(.25, -.5, -2),
vb01::Vector3(-.25, -.5, -2),
vb01::Vector3(-.25, -.5, 3),
vb01::Vector3(.25, -.5, 3),
vb01::Vector3(.25, .7, -2),
vb01::Vector3(-.25, .7, -2),
vb01::Vector3(-.25, .7, 3),
vb01::Vector3(.25, .7, 3)
},
{
vb01::Vector3(.6,-.1,-1.3),
vb01::Vector3(-.6,-.1,-1.3),
vb01::Vector3(-.6,-.1,.8),
vb01::Vector3(.6,-.1,.8),
vb01::Vector3(.6,.3,-1.3),
vb01::Vector3(-.6,.3,-1.3),
vb01::Vector3(-.6,.3,.8),
vb01::Vector3(.6,.3,.8)
},
{
vb01::Vector3(.5,-.1,-1.3),
vb01::Vector3(-.5,-.1,-1.3),
vb01::Vector3(-.5,-.1,.7),
vb01::Vector3(.5,-.1,.7),
vb01::Vector3(.5,.15,-1.3),
vb01::Vector3(-.5,.15,-1.3),
vb01::Vector3(-.5,.15,.7),
vb01::Vector3(.5,.15,.7)
}
};
const vb01::Vector3 unitCuboidDimensions[numberOfUnits][8]{
{
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1)
},
{
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1)
},
{
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1)
},
{
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1)
},
{
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1)
},
{
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1)
},
{
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1)
},
{
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1),
vb01::Vector3(1, 1, 1)
},
{
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1)
},
{
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1)
},
{
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1),
vb01::Vector3(.1, .1, .1)
}
};
const float unitAxisLength[numberOfUnits]{8, 8,6,6,5, 5,8, 8, 7,2,2};
const float lineOfSight[numberOfUnits]{5, 8, 4, 4, 3, 3, 6, 6, 3, 3, 8};
const std::string name[numberOfUnits]{
"Battleship", "Battleship",
"Destroyer", "Destroyer",
"Cruiser", "Cruiser",
"Aircraft carrier", "Aircraft carrier",
"Submarine",
"Jet", "Jet"
};
const std::string meshPath[numberOfUnits]{
"battleship00.vb", "battleship01.vb",
"destroyer00.vb", "destroyer01.vb",
"cruiser00.vb", "cruiser01.vb",
"aircraftCarrier00.vb", "aircraftCarrier01.vb",
"submarine.vb",
"jet00.x", "jet01.x"
};
const std::string basePath[numberOfUnits]{
GameManager::getSingleton()->getPath() + "Models/Battleships/", GameManager::getSingleton()->getPath() + "Models/Battleships/",
GameManager::getSingleton()->getPath() + "Models/Destroyers/", GameManager::getSingleton()->getPath() + "Models/Destroyers/",
GameManager::getSingleton()->getPath() + "Models/Cruisers/", GameManager::getSingleton()->getPath() + "Models/Cruisers/",
GameManager::getSingleton()->getPath() + "Models/Aircraft carriers/", GameManager::getSingleton()->getPath() + "Models/Aircraft carriers/",
GameManager::getSingleton()->getPath() + "Models/Submarines/",
GameManager::getSingleton()->getPath() + "Models/Jets/", GameManager::getSingleton()->getPath() + "Models/Jets/"};
}
}
#endif
-429
View File
@@ -1,429 +0,0 @@
#pragma once
#ifndef VESSEL_DATA_H
#define VESSEL_DATA_H
#include "unitData.h"
/*
0:戦艦
1:駆逐艦
2:巡洋艦
3:航空母艦
4:潜水艦
5: 戦闘機
6:巡航ミサイル
*/
namespace battleship{
namespace unitData {
enum InitDir{FORWARD,BACKWARD,LEFT,RIGHT};
const int numberOfTurrets[numberOfUnits]{13, 13, 4, 4, 2, 5};
const int maxNumTurrets=13;
const InitDir initDirs[numberOfUnits][maxNumTurrets]{
{FORWARD,FORWARD,BACKWARD,LEFT,LEFT,LEFT,LEFT,LEFT,RIGHT,RIGHT,RIGHT,RIGHT,RIGHT},
{FORWARD,FORWARD,BACKWARD,LEFT,LEFT,LEFT,LEFT,LEFT,RIGHT,RIGHT,RIGHT,RIGHT,RIGHT},
{FORWARD,FORWARD,BACKWARD,BACKWARD},
{FORWARD,FORWARD,BACKWARD,BACKWARD},
{FORWARD,BACKWARD},
{FORWARD,FORWARD,FORWARD,BACKWARD,BACKWARD},
};
const std::string turretNames[numberOfUnits][maxNumTurrets]{
{
"bigTurret00",
"bigTurret00",
"bigTurret00",
"smallTurret00",
"smallTurret00",
"smallTurret00",
"smallTurret00",
"smallTurret00",
"smallTurret00",
"smallTurret00",
"smallTurret00",
"smallTurret00",
"smallTurret00"
},
{
"bigTurret01",
"bigTurret01",
"bigTurret01",
"smallTurret01",
"smallTurret01",
"smallTurret01",
"smallTurret01",
"smallTurret01",
"smallTurret01",
"smallTurret01",
"smallTurret01",
"smallTurret01",
"smallTurret01"
},
{"turret00", "turret00", "turret00", "turret00"},
{"turret01", "turret01", "turret01", "turret01"},
{"turret00", "turret00"},
{"turret01", "turret01", "turret01", "turret01", "turret01"}
};
const vb01::Vector3 turretPos[numberOfUnits][maxNumTurrets]{
{
vb01::Vector3(0, .77703, -3.24292),
vb01::Vector3(0, 0.96741, -1.67253),
vb01::Vector3(0, 0.77703, 3.29185),
vb01::Vector3(0.90322, 0.78121, -0.17934),
vb01::Vector3(0.90322, 0.78121, 0.42676),
vb01::Vector3(0.90322, 0.78121, 1.03286),
vb01::Vector3(0.90322, 0.78121, 1.63896),
vb01::Vector3(0.90322, 0.78121, 2.24506),
vb01::Vector3(-0.90322, 0.78121, -0.17934),
vb01::Vector3(-0.90322, 0.78121, 0.42676),
vb01::Vector3(-0.90322, 0.78121, 1.03286),
vb01::Vector3(-0.90322, 0.78121, 1.63896),
vb01::Vector3(-0.90322, 0.78121, 2.24506)
},
{
vb01::Vector3(0, 0.70974, -2.73371),
vb01::Vector3(0, 0.915258, -1.62768),
vb01::Vector3(0, 0.70974, 3.33251),
vb01::Vector3(0.58824, 0.76908, 0.30145),
vb01::Vector3(0.58824, 0.98059, 0.58992),
vb01::Vector3(0.58824, 0.76908, 0.8634),
vb01::Vector3(0.58824, 0.98059, 1.13294),
vb01::Vector3(0.58824, 0.76908, 1.40591),
vb01::Vector3(-0.58824, 0.76908, 0.30145),
vb01::Vector3(-0.58824, 0.98059, 0.58992),
vb01::Vector3(-0.58824, 0.76908, 0.8634),
vb01::Vector3(-0.58824, 0.98059, 1.13294),
vb01::Vector3(-0.58824, 0.76908, 1.40591)
},
{
vb01::Vector3(0, 0.04967, -2.08348),
vb01::Vector3(0, 0.25291, -1.26886),
vb01::Vector3(0, 0.25291, 1.61533),
vb01::Vector3(0, 0.04967, 2.42996)
},
{
vb01::Vector3(0, 0.53012, -2.92538),
vb01::Vector3(0, 0.707, -2.45061),
vb01::Vector3(0, 0.55879, 2.16916),
vb01::Vector3(0, 0.3808, 2.72071)
},
{
vb01::Vector3(0, 0.73788, -2.79825),
vb01::Vector3(0, 0.73788, 2.79825)
},
{
vb01::Vector3(0, 0.52632, -3.64706),
vb01::Vector3(0, 0.71625, -2.81714),
vb01::Vector3(0, 0.86667, -1.92772),
vb01::Vector3(0, 0.7724, 2.53618),
vb01::Vector3(0, 0.52632, 3.41345)
}
};
const float turretAngleOffset[numberOfUnits][maxNumTurrets]{
{0, 0, 180, -90, -90, -90, -90, -90, 90, 90, 90, 90, 90},
{0, 0, 180, -90, -90, -90, -90, -90, 90, 90, 90, 90, 90},
{0, 0, 180, 180},
{0, 0, 180, 180},
{0, 180},
{0, 0, 0, 180, 180}
};
const float turretMaxAngle[numberOfUnits][maxNumTurrets]{
{135, 135, 135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45},
{135, 135, 135, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45},
{135, 135, 135, 135},
{135, 135, 135, 135},
{135, 135},
{135, 135, 135, 135, 135}
};
const float turretRotationSpeed[numberOfUnits][maxNumTurrets]{
{1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{2, 2, 2, 2},
{2, 2, 2, 2},
{2, 2},
{2, 2, 2, 2, 2}
};
const int turretDamage[numberOfUnits][maxNumTurrets]{
{200, 200, 200, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50},
{200, 200, 200, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50},
{100, 100, 100, 100},
{100, 100, 100, 100},
{90, 90},
{90, 90, 90, 90, 90}
};
const int turretRateOfFire[numberOfUnits][maxNumTurrets]{
{1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000},
{1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000},
{800, 800, 800, 800},
{800, 800, 800, 800},
{500,500},
{700,700,700,700,700}
};
const float turretAxisLength[numberOfUnits][maxNumTurrets]{
{5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
{5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
{3, 3, 3, 3},
{3, 3, 3, 3},
{3, 3},
{3, 3, 3, 3, 3},
};
const int numberOfMantlets[numberOfUnits][maxNumTurrets]{
{3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
{3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
{2, 2, 2, 2},
{2, 2, 2, 2},
{1, 1},
{3, 3, 3, 3, 3}
};
const std::string mantletNames[numberOfUnits][maxNumTurrets]{
{
"bigMantlet00",
"bigMantlet00",
"bigMantlet00",
"smallMantlet00",
"smallMantlet00",
"smallMantlet00",
"smallMantlet00",
"smallMantlet00",
"smallMantlet00",
"smallMantlet00",
"smallMantlet00",
"smallMantlet00",
"smallMantlet00"
},
{
"bigMantlet01",
"bigMantlet01",
"bigMantlet01",
"smallMantlet01",
"smallMantlet01",
"smallMantlet01",
"smallMantlet01",
"smallMantlet01",
"smallMantlet01",
"smallMantlet01",
"smallMantlet01",
"smallMantlet01",
"smallMantlet01"
},
{"mantlet00", "mantlet00", "mantlet00", "mantlet00"},
{"mantlet01", "mantlet01", "mantlet01", "mantlet01"},
{"mantlet00", "mantlet00"},
{"mantlet01", "mantlet01", "mantlet01", "mantlet01", "mantlet01"}
};
const vb01::Vector3 mantletPos[numberOfUnits][maxNumTurrets]{
{
vb01::Vector3(0, 0.19722f, -0.38441f),
vb01::Vector3(0, 0.183f, -0.38876f),
vb01::Vector3(0, 0.183f, -0.38876f),
vb01::Vector3(0, 0.06484f, -0.08587f),
vb01::Vector3(0, 0.06484f, -0.08587f),
vb01::Vector3(0, 0.06484f, -0.08587f),
vb01::Vector3(0, 0.06484f, -0.08587f),
vb01::Vector3(0, 0.06484f, -0.08587f),
vb01::Vector3(0, 0.06484f, -0.08587f),
vb01::Vector3(0, 0.06484f, -0.08587f),
vb01::Vector3(0, 0.06484f, -0.08587f),
vb01::Vector3(0, 0.06484f, -0.08587f),
vb01::Vector3(0, 0.06484f, -0.08587f)
},
{
vb01::Vector3(0, 0.111116, -0.335219),
vb01::Vector3(0, 0.111116, -0.335219),
vb01::Vector3(0, 0.111116, -0.335219),
vb01::Vector3(0, 0.025217, -0.071749),
vb01::Vector3(0, 0.025217, -0.071749),
vb01::Vector3(0, 0.025217, -0.071749),
vb01::Vector3(0, 0.025217, -0.071749),
vb01::Vector3(0, 0.025217, -0.071749),
vb01::Vector3(0, 0.025217, -0.071749),
vb01::Vector3(0, 0.025217, -0.071749),
vb01::Vector3(0, 0.025217, -0.071749),
vb01::Vector3(0, 0.025217, -0.071749),
vb01::Vector3(0, 0.025217, -0.071749)
},
{
vb01::Vector3(0, 0.22782f, -0.12394f),
vb01::Vector3(0, 0.22782f, -0.12394f),
vb01::Vector3(0, 0.22782f, -0.12394f),
vb01::Vector3(0, 0.22782f, -0.12394f)
},
{
vb01::Vector3(0, 0.14613, -0.0217),
vb01::Vector3(0, 0.14613, -0.0217),
vb01::Vector3(0, 0.14613, -0.0217),
vb01::Vector3(0, 0.14613, -0.0217)
},
{
vb01::Vector3(0, 0.2842f, -0.1274f),
vb01::Vector3(0, 0.2842f, -0.1274f)
},
{
vb01::Vector3(0, 0.09455, -0.19379),
vb01::Vector3(0, 0.09455, -0.19379),
vb01::Vector3(0, 0.09455, -0.19379),
vb01::Vector3(0, 0.09455, -0.19379),
vb01::Vector3(0, 0.09455, -0.19379)
}
};
const float mantletPosSideOffset[numberOfUnits][maxNumTurrets]{
{
0.23346f,
0.23346f,
0.23346f,
0.04725f,
0.04725f,
0.04725f,
0.04725f,
0.04725f,
0.04725f,
0.04725f,
0.04725f,
0.04725f,
0.04725f
},
{
0.176833,
0.176833,
0.176833,
0.030001,
0.030001,
0.030001,
0.030001,
0.030001,
0.030001,
0.030001,
0.030001,
0.030001,
0.030001
},
{
0.07673f,
0.07673f,
0.07673f,
0.07673f
},
{
0.08095,
0.08095,
0.08095,
0.08095
},
{0, 0},
{0.11829, 0.11829, 0.11829, 0.11829, 0.11829}
};
const float mantletMaxAngle[numberOfUnits][maxNumTurrets]{
{45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45},
{45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45},
{40, 40, 40, 40},
{40, 40, 40, 40},
{40, 40},
{40, 40, 40, 40, 40}
};
const vb01::Vector3 barrelPos[numberOfUnits][maxNumTurrets]{
{
vb01::Vector3(0, 0, -0.16689f),
vb01::Vector3(0, 0, -0.16689f),
vb01::Vector3(0, 0, -0.16689f),
vb01::Vector3(0, 0, -0.1021f),
vb01::Vector3(0, 0, -0.1021f),
vb01::Vector3(0, 0, -0.1021f),
vb01::Vector3(0, 0, -0.1021f),
vb01::Vector3(0, 0, -0.1021f),
vb01::Vector3(0, 0, -0.1021f),
vb01::Vector3(0, 0, -0.1021f),
vb01::Vector3(0, 0, -0.1021f),
vb01::Vector3(0, 0, -0.1021f),
vb01::Vector3(0, 0, -0.1021f)},
{
vb01::Vector3(0, 0, -0.246837),
vb01::Vector3(0, 0, -0.246837),
vb01::Vector3(0, 0, -0.246837),
vb01::Vector3(0, 0, -0.054993),
vb01::Vector3(0, 0, -0.054993),
vb01::Vector3(0, 0, -0.054993),
vb01::Vector3(0, 0, -0.054993),
vb01::Vector3(0, 0, -0.054993),
vb01::Vector3(0, 0, -0.054993),
vb01::Vector3(0, 0, -0.054993),
vb01::Vector3(0, 0, -0.054993),
vb01::Vector3(0, 0, -0.054993),
vb01::Vector3(0, 0, -0.054993)
},
{
vb01::Vector3(0, 0, -0.12806f),
vb01::Vector3(0, 0, -0.12806f),
vb01::Vector3(0, 0, -0.12806f),
vb01::Vector3(0, 0, -0.12806f)},
{
vb01::Vector3(0, 0, -0.11048),
vb01::Vector3(0, 0, -0.11048),
vb01::Vector3(0, 0, -0.11048),
vb01::Vector3(0, 0, -0.11048)
},
{
vb01::Vector3(0, 0, -0.23015f),
vb01::Vector3(0, 0, -0.23015f)
},
{
vb01::Vector3(0, 0, -0.14595),
vb01::Vector3(0, 0, -0.14595),
vb01::Vector3(0, 0, -0.14595),
vb01::Vector3(0, 0, -0.14595),
vb01::Vector3(0, 0, -0.14595)
}
};
const std::string barrelNames[numberOfUnits][maxNumTurrets]{
{
"bigBarrel00",
"bigBarrel00",
"bigBarrel00",
"smallBarrel00",
"smallBarrel00",
"smallBarrel00",
"smallBarrel00",
"smallBarrel00",
"smallBarrel00",
"smallBarrel00",
"smallBarrel00",
"smallBarrel00",
"smallBarrel00"
},
{
"bigBarrel01",
"bigBarrel01",
"bigBarrel01",
"smallBarrel01",
"smallBarrel01",
"smallBarrel01",
"smallBarrel01",
"smallBarrel01",
"smallBarrel01",
"smallBarrel01",
"smallBarrel01",
"smallBarrel01",
"smallBarrel01"
},
{"barrel00", "barrel00", "barrel00", "barrel00"},
{"barrel01", "barrel01", "barrel01", "barrel01"},
{"barrel00", "barrel00"},
{"barrel01", "barrel01", "barrel01", "barrel01", "barrel01"}
};
const vb01::Vector3 guidedMissilePos[numberOfUnits][6]{
{},
{},
{},
{},
{
vb01::Vector3(0.24482, 1.14985, 1.32775),
vb01::Vector3(0.24482, 1.14985, 1.62698),
vb01::Vector3(0.24482, 1.14985, 1.88017),
vb01::Vector3(-0.24482, 1.14985, 1.32775),
vb01::Vector3(-0.24482, 1.14985, 1.62698),
vb01::Vector3(-0.24482, 1.14985, 1.88017)
},
{vb01::Vector3(0.17192, 0.57858, 0.64471), vb01::Vector3(-0.17192, 0.57858, 0.64471)}
};
}
}
#endif