diff --git a/engineer.cpp b/engineer.cpp index 3d1efd5..98d60c7 100644 --- a/engineer.cpp +++ b/engineer.cpp @@ -9,7 +9,7 @@ namespace battleship{ using namespace vb01; using namespace gameBase; - Engineer::Engineer(Player *player, int id, Vector3 pos, Quaternion rot) : Vehicle(player, id, pos, rot){} + Engineer::Engineer(Player *player, int id, Vector3 pos, Quaternion rot, Unit::State state) : Vehicle(player, id, pos, rot, state){} void Engineer::build(Order order){ if(pathPoints.empty()){ diff --git a/engineer.h b/engineer.h index 54c48ea..b0082e3 100644 --- a/engineer.h +++ b/engineer.h @@ -10,7 +10,7 @@ namespace battleship{ class Engineer : public Vehicle{ public: - Engineer(Player*, int, vb01::Vector3, vb01::Quaternion); + Engineer(Player*, int, vb01::Vector3, vb01::Quaternion, Unit::State); void build(Order); private: vb01::s64 lastIncrementTime = 0; diff --git a/extractor.cpp b/extractor.cpp index fb5b8c4..19c5692 100644 --- a/extractor.cpp +++ b/extractor.cpp @@ -11,7 +11,7 @@ namespace battleship{ using namespace vb01; using namespace gameBase; - Extractor::Extractor(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, ResourceDeposit *rd) : Structure(player, id, pos, rot, buildStatus){ + Extractor::Extractor(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, ResourceDeposit *rd, Unit::State state) : Structure(player, id, pos, rot, buildStatus, state){ if(!rd){ vector deposits; diff --git a/extractor.h b/extractor.h index 120e331..a070765 100644 --- a/extractor.h +++ b/extractor.h @@ -10,7 +10,7 @@ namespace battleship{ class Extractor : public Structure{ public: - Extractor(Player*, int, vb01::Vector3, vb01::Quaternion, int, ResourceDeposit *rd = nullptr); + Extractor(Player*, int, vb01::Vector3, vb01::Quaternion, int, ResourceDeposit *rd = nullptr, Unit::State = Unit::State::STAND_GROUND); ~Extractor(); void update(); void draw(); diff --git a/factory.cpp b/factory.cpp index bbb4d75..dfe72c1 100644 --- a/factory.cpp +++ b/factory.cpp @@ -13,7 +13,7 @@ namespace battleship{ using namespace std; using namespace gameBase; - Factory::Factory(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus) : Structure(player, id, pos, rot, buildStatus){} + Factory::Factory(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, Unit::State state) : Structure(player, id, pos, rot, buildStatus, state){} void Factory::update(){ Structure::update(); diff --git a/factory.h b/factory.h index 042fd2d..851ae22 100644 --- a/factory.h +++ b/factory.h @@ -15,7 +15,7 @@ namespace battleship{ class Factory : public Structure{ public: - Factory(Player*, int, vb01::Vector3, vb01::Quaternion, int = 0); + Factory(Player*, int, vb01::Vector3, vb01::Quaternion, int = 0, Unit::State = Unit::State::STAND_GROUND); ~Factory(){} void update(); int getNumQueueUnitsById(int); diff --git a/gameObject.cpp b/gameObject.cpp index b557994..d7b6962 100644 --- a/gameObject.cpp +++ b/gameObject.cpp @@ -19,6 +19,8 @@ namespace battleship{ using namespace gameBase; using namespace configData; + GameObject::GameObject(Type t, int i, Player *pl, vb01::Vector3 vec, vb01::Quaternion quat) : type(t), id(i), player(pl), pos(vec), rot(quat){} + void GameObject::reinit(){ placeAt(pos); orientAt(rot); diff --git a/gameObject.h b/gameObject.h index 28b8ab0..03da68b 100644 --- a/gameObject.h +++ b/gameObject.h @@ -18,7 +18,7 @@ namespace battleship{ public: enum class Type{UNIT, PROJECTILE, RESOURCE_DEPOSIT}; - GameObject(Type t, int i, Player *pl, vb01::Vector3 vec, vb01::Quaternion quat) : type(t), id(i), player(pl), pos(vec), rot(quat){} + GameObject(Type, int, Player*, vb01::Vector3, vb01::Quaternion); ~GameObject(){} virtual void reinit(); virtual void update(); diff --git a/gameObjectFactory.cpp b/gameObjectFactory.cpp index e1dbf7b..83fbc5f 100644 --- a/gameObjectFactory.cpp +++ b/gameObjectFactory.cpp @@ -27,21 +27,21 @@ namespace battleship{ case UnitClass::FORT: case UnitClass::LAND_FACTORY: case UnitClass::NAVAL_FACTORY: - return new Factory(player, id, pos, rot, buildStatus); + return new Factory(player, id, pos, rot, buildStatus, Unit::State::STAND_GROUND); case UnitClass::POINT_DEFENSE: - return new PointDefense(player, id, pos, rot, buildStatus); + return new PointDefense(player, id, pos, rot, buildStatus, Unit::State::STAND_GROUND); case UnitClass::EXTRACTOR: return new Extractor(player, id, pos, rot, buildStatus); case UnitClass::MARKET: case UnitClass::LAB: case UnitClass::REFINERY: - return new Structure(player, id, pos, rot, buildStatus); + return new Structure(player, id, pos, rot, buildStatus, Unit::State::STAND_GROUND); case UnitClass::ENGINEER: - return new Engineer(player, id, pos, rot); + return new Engineer(player, id, pos, rot, Unit::State::STAND_GROUND); case UnitClass::RESOURCE_ROVER: - return new ResourceRover(player, id, pos, rot); + return new ResourceRover(player, id, pos, rot, Unit::State::STAND_GROUND); default: - return new Vehicle(player, id, pos, rot); + return new Vehicle(player, id, pos, rot, Unit::State::STAND_GROUND); } } diff --git a/pointDefense.cpp b/pointDefense.cpp index 8c05e3d..42da4ff 100644 --- a/pointDefense.cpp +++ b/pointDefense.cpp @@ -3,7 +3,7 @@ namespace battleship{ using namespace vb01; - PointDefense::PointDefense(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus) : Structure(player, id, pos, rot, buildStatus){ + PointDefense::PointDefense(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, Unit::State state) : Structure(player, id, pos, rot, buildStatus, state){ turretDir = dirVec; } diff --git a/pointDefense.h b/pointDefense.h index b02a176..3004f58 100644 --- a/pointDefense.h +++ b/pointDefense.h @@ -6,7 +6,7 @@ namespace battleship{ class PointDefense : public Structure{ public: - PointDefense(Player*, int, vb01::Vector3, vb01::Quaternion, int); + PointDefense(Player*, int, vb01::Vector3, vb01::Quaternion, int, Unit::State); private: vb01::Vector3 turretDir; diff --git a/resourceRover.cpp b/resourceRover.cpp index 696a66f..d507268 100644 --- a/resourceRover.cpp +++ b/resourceRover.cpp @@ -13,7 +13,7 @@ namespace battleship{ using namespace vb01; using namespace gameBase; - ResourceRover::ResourceRover(Player *player, int id, Vector3 pos, Quaternion rot) : Vehicle(player, id, pos, rot) { + ResourceRover::ResourceRover(Player *player, int id, Vector3 pos, Quaternion rot, Unit::State state) : Vehicle(player, id, pos, rot, state) { sol::table unitTable = generateView()["units"][id + 1]; capacity = unitTable["capacity"]; loadSpeed = unitTable["loadSpeed"]; diff --git a/resourceRover.h b/resourceRover.h index 5e06627..b8d4cee 100644 --- a/resourceRover.h +++ b/resourceRover.h @@ -11,7 +11,7 @@ namespace battleship{ class ResourceRover : public Vehicle{ public: - ResourceRover(Player*, int, vb01::Vector3, vb01::Quaternion); + ResourceRover(Player*, int, vb01::Vector3, vb01::Quaternion, Unit::State = Unit::State::STAND_GROUND); ~ResourceRover(); void update(); private: diff --git a/structure.cpp b/structure.cpp index 9070efd..52b5cd2 100644 --- a/structure.cpp +++ b/structure.cpp @@ -10,7 +10,7 @@ using namespace vb01; using namespace std; namespace battleship{ - Structure::Structure(Player *player, int id, Vector3 pos, Quaternion rot, int bldSt) : buildStatus(bldSt), Unit(player, id, pos, rot){ + Structure::Structure(Player *player, int id, Vector3 pos, Quaternion rot, int bldSt, Unit::State state) : Unit(player, id, pos, rot, state), buildStatus(bldSt){ Vector2 size = Vector2(lenHpBar, 10); buildStatusBackground = Unit::createBar(Vector2::VEC_ZERO, size, Vector4(0, 0, 0, 1)); buildStatusForeground = Unit::createBar(Vector2::VEC_ZERO, size, Vector4(0, 0, 1, 1)); diff --git a/structure.h b/structure.h index 1a2eea7..10bd58a 100644 --- a/structure.h +++ b/structure.h @@ -10,7 +10,7 @@ namespace vb01{ namespace battleship{ class Structure : public Unit{ public: - Structure(Player*, int, vb01::Vector3, vb01::Quaternion, int = 0); + Structure(Player*, int, vb01::Vector3, vb01::Quaternion, int = 0, Unit::State = Unit::State::STAND_GROUND); ~Structure(); virtual void update(); inline int getBuildStatus(){return buildStatus;} diff --git a/unit.cpp b/unit.cpp index 1d117fd..a7a2f63 100755 --- a/unit.cpp +++ b/unit.cpp @@ -95,9 +95,7 @@ namespace battleship{ lastFireTime = getTime(); } - Unit::Unit(Player *player, int id, Vector3 pos, Quaternion rot) : GameObject(GameObject::Type::UNIT, id, player, pos, rot){ - this->id = id; - this->player = player; + Unit::Unit(Player *player, int id, Vector3 pos, Quaternion rot, State st) : GameObject(GameObject::Type::UNIT, id, player, pos, rot), state(st){ selectable = true; initProperties(); diff --git a/unit.h b/unit.h index 54e6f08..1f6c007 100755 --- a/unit.h +++ b/unit.h @@ -119,7 +119,7 @@ namespace battleship{ enum class Armor {CAST, COMBINED, MECHANIC, SHELL, STEEL}; enum class State {CHASE, STAND_GROUND, HOLD_FIRE}; - Unit(Player*, int, vb01::Vector3, vb01::Quaternion); + Unit(Player*, int, vb01::Vector3, vb01::Quaternion, State = State::STAND_GROUND); virtual ~Unit(); virtual void update(); virtual void halt(); @@ -165,7 +165,7 @@ namespace battleship{ UnitClass unitClass; UnitType type; std::vector orders; - int health, maxHealth, id, playerId, lenHpBar = 200; + int health, maxHealth, playerId, lenHpBar = 200; s64 orderLineDispTime = 0, lastFireTime = 0; float lineOfSight; std::vector garrisonSlots; diff --git a/vehicle.cpp b/vehicle.cpp index b13b66d..e95470f 100644 --- a/vehicle.cpp +++ b/vehicle.cpp @@ -17,7 +17,7 @@ using namespace vb01; using namespace std; namespace battleship{ - Vehicle::Vehicle(Player *player, int id, Vector3 pos, Quaternion rot) : Unit(player, id, pos, rot){ + Vehicle::Vehicle(Player *player, int id, Vector3 pos, Quaternion rot, Unit::State state) : Unit(player, id, pos, rot, state){ initProperties(); debugMat = new Material(Root::getSingleton()->getLibPath() + "texture"); diff --git a/vehicle.h b/vehicle.h index 241c58c..15a34ec 100644 --- a/vehicle.h +++ b/vehicle.h @@ -10,7 +10,7 @@ namespace vb01{ namespace battleship{ class Vehicle : public Unit{ public: - Vehicle(Player*, int, vb01::Vector3, vb01::Quaternion); + Vehicle(Player*, int, vb01::Vector3, vb01::Quaternion, Unit::State); ~Vehicle(); virtual void update(); void move(Order);