cargo ship load bar

This commit is contained in:
devZoGok
2024-01-24 14:54:34 +02:00
parent 0876382850
commit 0dea291482
2 changed files with 32 additions and 3 deletions
+29 -3
View File
@@ -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;
+3
View File
@@ -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;
};
}