diff --git a/Assets/Scripts/projectileData.lua b/Assets/Scripts/projectileData.lua new file mode 100644 index 0000000..26acd8e --- /dev/null +++ b/Assets/Scripts/projectileData.lua @@ -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 = { + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} +} diff --git a/CMakeLists.txt b/CMakeLists.txt index ab1f66b..c7e192e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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}) diff --git a/depthCharge.cpp b/depthCharge.cpp deleted file mode 100755 index 0f5d453..0000000 --- a/depthCharge.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include - -#include - -#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); - } -} diff --git a/depthCharge.h b/depthCharge.h deleted file mode 100755 index 3973491..0000000 --- a/depthCharge.h +++ /dev/null @@ -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 diff --git a/guidedMissile.cpp b/guidedMissile.cpp deleted file mode 100755 index 0b97f8a..0000000 --- a/guidedMissile.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include - -#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; - } -} diff --git a/guidedMissile.h b/guidedMissile.h deleted file mode 100755 index c334ea5..0000000 --- a/guidedMissile.h +++ /dev/null @@ -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 diff --git a/guidedMissileData.h b/guidedMissileData.h deleted file mode 100755 index bd92f53..0000000 --- a/guidedMissileData.h +++ /dev/null @@ -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 diff --git a/missile.cpp b/missile.cpp deleted file mode 100755 index bff4b28..0000000 --- a/missile.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include - -#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); - } -} diff --git a/missile.h b/missile.h deleted file mode 100755 index 6d04da4..0000000 --- a/missile.h +++ /dev/null @@ -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 diff --git a/missileData.h b/missileData.h deleted file mode 100755 index a877572..0000000 --- a/missileData.h +++ /dev/null @@ -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 - diff --git a/projectile.cpp b/projectile.cpp index fc39d61..f41bc5d 100755 --- a/projectile.cpp +++ b/projectile.cpp @@ -1,4 +1,5 @@ #include + #include #include #include @@ -6,9 +7,10 @@ #include #include +#include #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{pathBase + "defPaths.lua", pathBase + "unitData.lua", pathBase + "projectileData.lua"}); + + vector indices = vector{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 indices = vector{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(id + 1)}); + string projectileName = lm->getStringFromTable("projectileName", vector{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 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; } } diff --git a/projectile.h b/projectile.h index 14624cc..e66c7e8 100755 --- a/projectile.h +++ b/projectile.h @@ -3,15 +3,17 @@ #define PROJECTILE_H #include + #include +#include #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; }; } diff --git a/projectileData.h b/projectileData.h deleted file mode 100755 index e8f6153..0000000 --- a/projectileData.h +++ /dev/null @@ -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 diff --git a/shell.cpp b/shell.cpp deleted file mode 100755 index 103606d..0000000 --- a/shell.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include - -#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); - } -} diff --git a/shell.h b/shell.h deleted file mode 100755 index 8b605df..0000000 --- a/shell.h +++ /dev/null @@ -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 diff --git a/torpedo.cpp b/torpedo.cpp deleted file mode 100755 index 5d31a16..0000000 --- a/torpedo.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include - -#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); - } -} diff --git a/torpedo.h b/torpedo.h deleted file mode 100755 index b81f930..0000000 --- a/torpedo.h +++ /dev/null @@ -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 diff --git a/unitData.h b/unitData.h deleted file mode 100755 index 37e2d1d..0000000 --- a/unitData.h +++ /dev/null @@ -1,292 +0,0 @@ -#pragma once -#ifndef UNIT_DATA_H -#define UNIT_DATA_H - -#include - -#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 diff --git a/vesselData.h b/vesselData.h deleted file mode 100755 index 645ddea..0000000 --- a/vesselData.h +++ /dev/null @@ -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