mirror of
https://github.com/devZoGok/PlanetFleet.git
synced 2026-08-26 19:43:29 +00:00
unit frames placed at coresponding point on the map when rotating before move orders
This commit is contained in:
+9
-6
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user