mirror of
https://github.com/devZoGok/PlanetFleet.git
synced 2026-08-26 19:43:29 +00:00
cargo ship load bar
This commit is contained in:
+29
-3
@@ -1,15 +1,29 @@
|
||||
#include "resourceRover.h"
|
||||
#include "map.h"
|
||||
#include "player.h"
|
||||
#include "activeGameState.h"
|
||||
|
||||
#include <stateManager.h>
|
||||
|
||||
namespace battleship{
|
||||
using namespace std;
|
||||
using namespace vb01;
|
||||
using namespace gameBase;
|
||||
|
||||
ResourceRover::ResourceRover(Player *player, int id, Vector3 pos, Quaternion rot) :
|
||||
Vehicle(player, id, pos, rot),
|
||||
capacity(300),
|
||||
loadRate(100) {}
|
||||
loadRate(10)
|
||||
{
|
||||
Vector2 size = Vector2(lenHpBar, 10);
|
||||
loadBackground = Unit::createBar(Vector2::VEC_ZERO, size, Vector4(0, 0, 0, 1));
|
||||
loadForeground = Unit::createBar(Vector2::VEC_ZERO, size, Vector4(0, 1, 1, 1));
|
||||
}
|
||||
|
||||
ResourceRover::~ResourceRover(){
|
||||
removeBar(loadForeground);
|
||||
removeBar(loadBackground);
|
||||
}
|
||||
|
||||
void ResourceRover::supply(Order order){
|
||||
float minDist = .6 * Map::getSingleton()->getCellSize().x;
|
||||
@@ -34,7 +48,7 @@ namespace battleship{
|
||||
load++;
|
||||
lastLoadTime = getTime();
|
||||
}
|
||||
else if(!canLoad() && nearestRefinery)
|
||||
else if(load == capacity && nearestRefinery)
|
||||
preparePathpoints(order, nearestRefinery->getPos());
|
||||
}
|
||||
else if(nearestRefinery->getPos().getDistanceFrom(pos) <= minDist){
|
||||
@@ -42,12 +56,24 @@ namespace battleship{
|
||||
load--;
|
||||
lastLoadTime = getTime();
|
||||
}
|
||||
else if(!canUnload() && nearestExtractor)
|
||||
else if(load == 0 && nearestExtractor)
|
||||
preparePathpoints(order, nearestExtractor->getPos());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ResourceRover::update(){
|
||||
Vehicle::update();
|
||||
|
||||
ActiveGameState *activeState = (ActiveGameState*)GameManager::getSingleton()->getStateManager()->getAppStateByType(AppStateType::ACTIVE_STATE);
|
||||
Player *mainPlayer = (activeState ? activeState->getPlayer() : nullptr);
|
||||
|
||||
vector<Player*> selectingPlayers = getSelectingPlayers();
|
||||
bool mainPlayerSelecting = (activeState && find(selectingPlayers.begin(), selectingPlayers.end(), mainPlayer) != selectingPlayers.end());
|
||||
|
||||
Unit::displayUnitStats(loadForeground, loadBackground, load, capacity, mainPlayer == player && mainPlayerSelecting, Vector2(0, -10));
|
||||
}
|
||||
|
||||
Unit* ResourceRover::getClosestUnit(vector<Unit*> units){
|
||||
if(units.empty()) return nullptr;
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ namespace battleship{
|
||||
class ResourceRover : public Vehicle{
|
||||
public:
|
||||
ResourceRover(Player*, int, vb01::Vector3, vb01::Quaternion);
|
||||
~ResourceRover();
|
||||
void update();
|
||||
private:
|
||||
void supply(Order);
|
||||
Unit* getClosestUnit(std::vector<Unit*>);
|
||||
@@ -18,6 +20,7 @@ namespace battleship{
|
||||
vb01::s64 lastLoadTime = 0;
|
||||
int load = 0, capacity, loadRate;
|
||||
Unit *nearestExtractor = nullptr, *nearestRefinery = nullptr;
|
||||
vb01::Node *loadBackground = nullptr, *loadForeground = nullptr;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user