mirror of
https://github.com/devZoGok/PlanetFleet.git
synced 2026-08-26 19:43:29 +00:00
crash fixes
This commit is contained in:
+10
-6
@@ -183,7 +183,7 @@ namespace battleship{
|
||||
int unloadFlag = (int)shiftPressed;
|
||||
|
||||
if(!forceCursorState){
|
||||
if(gameObjUnit && gameObjTransport){
|
||||
if(gameObjUnit && ownGameObj && gameObjTransport){
|
||||
orderPossible = (ownGameObj && canGarrison);
|
||||
cursorState = CursorState::GARRISON;
|
||||
}
|
||||
@@ -289,6 +289,8 @@ namespace battleship{
|
||||
guiManager->getText("wealth")->setText(to_wstring(mainPlayer->getResource(ResourceType::WEALTH)));
|
||||
guiManager->getText("research")->setText(to_wstring(mainPlayer->getResource(ResourceType::RESEARCH)));
|
||||
|
||||
updateGameObjHoveredOn();
|
||||
|
||||
updateCursor();
|
||||
Vector2 cursorPos = getCursorPos();
|
||||
|
||||
@@ -301,15 +303,13 @@ namespace battleship{
|
||||
|
||||
dragboxNode->setVisible(isSelectionBox);
|
||||
|
||||
updateGameObjHoveredOn();
|
||||
|
||||
vector<Unit*> selectedUnits = mainPlayer->getSelectedUnits();
|
||||
GameObjectFrameController *fc = GameObjectFrameController::getSingleton();
|
||||
|
||||
if(!selectingDestOrient && orderMouseClicked && !selectedUnits.empty() && getTime() - lastOrderMouseClicked > 100){
|
||||
if(targets.empty()) castRayToTerrain();
|
||||
|
||||
if(!buildableStructSelected)
|
||||
if(!(buildableStructSelected || targets.empty()))
|
||||
for(int i = 0; i < selectedUnits.size(); i++)
|
||||
fc->addGameObjectFrame(GameObjectFrame(selectedUnits[i]->getId(), GameObject::Type::UNIT, mainPlayer, selectedUnits[i], targets[0].pos));
|
||||
|
||||
@@ -362,6 +362,9 @@ namespace battleship{
|
||||
gameObjs.push_back((GameObject*)u);
|
||||
}
|
||||
|
||||
if(gameObjHoveredOn && find(gameObjs.begin(), gameObjs.end(), gameObjHoveredOn) == gameObjs.end())
|
||||
gameObjHoveredOn = nullptr;
|
||||
|
||||
for(GameObject *gameObj : gameObjs)
|
||||
if(isGameObjSelectable(gameObj, false)){
|
||||
gameObjHoveredOn = gameObj;
|
||||
@@ -524,9 +527,10 @@ namespace battleship{
|
||||
void ActiveGameState::issueOrder(Order::TYPE type, vector<Order::Target> targets, bool addOrder) {
|
||||
depth = 1;
|
||||
Vector3 destDir = Vector3::VEC_ZERO;
|
||||
GameObjectFrameController *frameCtrl = GameObjectFrameController::getSingleton();
|
||||
|
||||
if(selectingDestOrient){
|
||||
GameObjectFrame &objFrame = GameObjectFrameController::getSingleton()->getGameObjectFrame(0);
|
||||
if(selectingDestOrient && frameCtrl->getNumGameObjectFrames() > 0){
|
||||
GameObjectFrame &objFrame = frameCtrl->getGameObjectFrame(0);
|
||||
destDir = objFrame.getDirVec();
|
||||
targets[0].pos = objFrame.getPos();
|
||||
}
|
||||
|
||||
@@ -111,12 +111,18 @@ namespace battleship{
|
||||
}
|
||||
|
||||
void Player::issueOrder(Order::TYPE type, Vector3 destDir, vector<Order::Target> targets, bool append){
|
||||
if(type != Order::TYPE::EJECT && targets.empty()) return;
|
||||
|
||||
vector<Unit*> selectedUnits = getSelectedUnits();
|
||||
Vector3 mapSize = Map::getSingleton()->getMapSize();
|
||||
|
||||
for (Unit *u : selectedUnits) {
|
||||
bool targetingSelf = false, structBuilt = true;
|
||||
|
||||
for(Order::Target &targ : targets){
|
||||
targ.pos.x = clamp(targ.pos.x, -.5f * mapSize.x, .5f * mapSize.x);
|
||||
targ.pos.z = clamp(targ.pos.z, -.5f * mapSize.z, .5f * mapSize.z);
|
||||
|
||||
if(targ.unit && targ.unit == u){
|
||||
targetingSelf = true;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user