mirror of
https://github.com/devZoGok/PlanetFleet.git
synced 2026-08-26 19:43:29 +00:00
implemented moving towards attack targets
This commit is contained in:
@@ -35,6 +35,7 @@ units = {
|
||||
health = {500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500},
|
||||
cost = {500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500},
|
||||
range = {15, 15, 14, 14, 13, 13, 12, 12, 15, 25},
|
||||
rateOfFire = {100, 100, 100, 100, 100, 100, 100},
|
||||
|
||||
unitCornerPoints = {
|
||||
{
|
||||
|
||||
+1
-2
@@ -14,9 +14,8 @@ namespace battleship{
|
||||
void build(Order);
|
||||
private:
|
||||
vb01::s64 lastIncrementTime = 0;
|
||||
int incrementRate = 50;
|
||||
|
||||
bool canIncrementStructureStatus(){return vb01::getTime() - lastIncrementTime > incrementRate;}
|
||||
bool canIncrementStructureStatus(){return vb01::getTime() - lastIncrementTime > rateOfFire;}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ namespace battleship{
|
||||
health = SOL_LUA_STATE["health"][id + 1];
|
||||
maxHealth = health;
|
||||
|
||||
rateOfFire = SOL_LUA_STATE["rateOfFire"][id + 1];
|
||||
range = SOL_LUA_STATE["range"][id + 1];
|
||||
lineOfSight = SOL_LUA_STATE["lineOfSight"][id + 1];
|
||||
unitClass = (UnitClass)SOL_LUA_STATE["unitClass"][id + 1];
|
||||
|
||||
@@ -83,8 +83,8 @@ namespace battleship{
|
||||
vb01::Vector2 screenPos;
|
||||
std::vector<Order> orders;
|
||||
vb01::Vector3 corners[8];
|
||||
int health, maxHealth, cost, id, playerId, lenHpBar = 200;
|
||||
s64 orderLineDispTime = 0;
|
||||
int health, maxHealth, cost, id, playerId, lenHpBar = 200, rateOfFire;
|
||||
s64 orderLineDispTime = 0, lastFireTime = 0;
|
||||
bool working = true;
|
||||
float lineOfSight, range;
|
||||
|
||||
|
||||
+29
-1
@@ -29,7 +29,9 @@ namespace battleship{
|
||||
void Vehicle::halt(){
|
||||
Unit::halt();
|
||||
removeAllPathpoints();
|
||||
|
||||
patrolPointId = 0;
|
||||
pursuingTarget = false;
|
||||
}
|
||||
|
||||
void Vehicle::addOrder(Order order){
|
||||
@@ -151,7 +153,9 @@ namespace battleship{
|
||||
vector<Map::Cell> &cells = map->getCells();
|
||||
|
||||
int source = map->getCellId(pos);
|
||||
int dest = map->getCellId(order.targets[0].pos);
|
||||
|
||||
Order::Target targ = order.targets[0];
|
||||
int dest = map->getCellId(targ.unit ? targ.unit->getPos() : targ.pos);
|
||||
|
||||
if(type == UnitType::UNDERWATER || type == UnitType::SEA_LEVEL || type == UnitType::LAND){
|
||||
Map::Cell::Type cellType = (type == UnitType::LAND ? Map::Cell::LAND : Map::Cell::WATER);
|
||||
@@ -187,10 +191,34 @@ namespace battleship{
|
||||
delete debugPathPointNode;
|
||||
|
||||
pathPoints.erase(pathPoints.begin() + i);
|
||||
|
||||
if(pathPoints.empty())
|
||||
pursuingTarget = false;
|
||||
}
|
||||
|
||||
void Vehicle::removeAllPathpoints(){
|
||||
while(!pathPoints.empty())
|
||||
removePathpoint();
|
||||
}
|
||||
|
||||
void Vehicle::attack(Order order){
|
||||
Order::Target target = order.targets[0];
|
||||
float distToTarg = pos.getDistanceFrom(target.unit ? target.unit->getPos() : target.pos);
|
||||
float minDist = range;
|
||||
|
||||
if(distToTarg > minDist){
|
||||
if(!pursuingTarget){
|
||||
preparePathpoints(order);
|
||||
pursuingTarget = true;
|
||||
}
|
||||
|
||||
navigate(order, .5 * Map::getSingleton()->getCellSize().x);
|
||||
}
|
||||
else{
|
||||
pursuingTarget = false;
|
||||
|
||||
if(getTime() - lastFireTime > rateOfFire)
|
||||
fire();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace battleship{
|
||||
Vehicle(Player*, int, vb01::Vector3, vb01::Quaternion);
|
||||
void move(Order);
|
||||
private:
|
||||
bool pursuingTarget = false;
|
||||
int patrolPointId = 0;
|
||||
float speed, maxTurnAngle, anglePrecision;
|
||||
vb01::Material *debugMat = nullptr;
|
||||
@@ -21,7 +22,7 @@ namespace battleship{
|
||||
inline int getNextPatrolPointId(int numPoints) {return patrolPointId == numPoints - 1 ? 0 : patrolPointId + 1;}
|
||||
void halt();
|
||||
void turn(float);
|
||||
void addOrder(Order order);
|
||||
void addOrder(Order);
|
||||
void initProperties();
|
||||
void advance(float, MoveDir = MoveDir::FORW);
|
||||
void preparePathpoints(Order);
|
||||
@@ -32,6 +33,8 @@ namespace battleship{
|
||||
|
||||
void navigate(Order, float = 0.);
|
||||
void alignToSurface();
|
||||
void attack(Order);
|
||||
void fire(){}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user