unit frames placed at coresponding point on the map when rotating before move orders

This commit is contained in:
devZoGok
2025-02-07 21:26:28 +02:00
parent 94a200b16d
commit b5891b28f5
3 changed files with 14 additions and 11 deletions
+9 -6
View File
@@ -162,13 +162,15 @@ namespace battleship{
GameObjectFrameController *fc = GameObjectFrameController::getSingleton();
if(!selectingDestOrient && orderMouseClicked && !selectedUnits.empty() && getTime() - lastOrderMouseClicked > 100){
selectingDestOrient = true;
if(targets.empty()) castRayToTerrain();
for(int i = 0; i < selectedUnits.size(); i++){
fc->addGameObjectFrame(GameObjectFrame(selectedUnits[i]->getId(), GameObject::Type::UNIT));
fc->placeGameObjectFrame(fc->getNumGameObjectFrames() - 1, targets[0].pos, selectedUnits[i]->getWidth(), selectedUnits[i]->getLength());
}
fc->setPlacingFrames(true);
fc->setRotatingFrames(true);
for(Unit *unit : selectedUnits)
fc->addGameObjectFrame(GameObjectFrame(unit->getId(), GameObject::Type::UNIT));
selectingDestOrient = true;
}
else if(selectingDestOrient && !orderMouseClicked){
selectingDestOrient = false;
@@ -597,7 +599,8 @@ namespace battleship{
issueOrder(Order::TYPE::BUILD, targets, shiftPressed);
}
else if(!canSelect){
castRayToTerrain();
if(targets.empty()) castRayToTerrain();
issueOrder(Order::TYPE::MOVE, targets, shiftPressed);
}
}
+4 -4
View File
@@ -52,6 +52,7 @@ namespace battleship{
}
}
//TODO specify what to snap the frame to
void GameObjectFrameController::snapToObj(GameObjectFrame &s, GameObject::Type type, int unitId, float maxDist){
if(s.getType() == GameObject::Type::UNIT && s.getId() == unitId){
s.status = GameObjectFrame::NOT_PLACEABLE;
@@ -101,9 +102,7 @@ namespace battleship{
}
GameObjectFrame &s = gameObjectFrames[id];
if(!rotatingStructure)
s.placeAt(newPos);
s.placeAt(newPos);
s.status = (unevenness < maxUnevenness ? GameObjectFrame::PLACEABLE : GameObjectFrame::NOT_PLACEABLE);
snapToObj(s, GameObject::Type::UNIT, 20, 3);
@@ -138,7 +137,8 @@ namespace battleship{
newPos = paintSelectRowStart + dir * hypothenuse * i;
}
placeGameObjectFrame(i, newPos, width, length);
if(!rotatingStructure) placeGameObjectFrame(i, newPos, width, length);
}
}
+1 -1
View File
@@ -21,6 +21,7 @@ namespace battleship{
void removeGameObjectFrame(int);
void removeGameObjectFrames();
void rotateGameObjectFrames(float);
void placeGameObjectFrame(int, vb01::Vector3, float, float);
inline int getNumGameObjectFrames(){return gameObjectFrames.size();}
inline void addGameObjectFrame(GameObjectFrame u){gameObjectFrames.push_back(u);}
inline GameObjectFrame& getGameObjectFrame(int i){return gameObjectFrames[i];}
@@ -34,7 +35,6 @@ namespace battleship{
private:
GameObjectFrameController(){}
void paintSelect(vb01::Vector3, float, float);
void placeGameObjectFrame(int, vb01::Vector3, float, float);
void snapToObj(GameObjectFrame&, GameObject::Type, int, float);
std::vector<GameObjectFrame> gameObjectFrames;