From a28847c901305a23ae399194f020974674535ce2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Bergstr=C3=B6m?= <david.bergstrom@liu.se> Date: Thu, 15 Aug 2019 16:18:57 +0200 Subject: [PATCH] Warn instead of crash whenever (0,0) is sent --- src/BuildingPlacer.cpp | 1 + src/Unit.cpp | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/BuildingPlacer.cpp b/src/BuildingPlacer.cpp index f5394da16..4b048ed71 100644 --- a/src/BuildingPlacer.cpp +++ b/src/BuildingPlacer.cpp @@ -121,6 +121,7 @@ CCTilePosition BuildingPlacer::getBuildLocationNear(const CCTilePosition & p, co //double ms = t.getElapsedTimeInMilliSec(); //printf("Building Placer Failure: %s - Took %lf ms\n", b.type.getName().c_str(), ms); + std::cout << "Warning! Could not find valid placement for " << t.getName() << " near (" << p.x << ", " << p.y << "). Returning (0, 0) instead."; return CCTilePosition(0, 0); } diff --git a/src/Unit.cpp b/src/Unit.cpp index 0380eb7cb..0bb94a978 100644 --- a/src/Unit.cpp +++ b/src/Unit.cpp @@ -269,13 +269,15 @@ void Unit::repair(const Unit & target) const void Unit::build(const UnitType & buildingType, CCTilePosition pos) const { - BOT_ASSERT(m_bot->Map().isConnected(getTilePosition(), pos), "Error: Build Position is not connected to worker"); BOT_ASSERT(isValid(), "Unit is not valid"); -#ifdef SC2API - m_bot->Actions()->UnitCommand(m_unit, m_bot->Data(buildingType).buildAbility, Util::GetPosition(pos)); -#else - m_unit->build(buildingType.getAPIUnitType(), pos); -#endif + if (m_bot->Map().isConnected(getTilePosition(), pos)) + { + m_bot->Actions()->UnitCommand(m_unit, m_bot->Data(buildingType).buildAbility, Util::GetPosition(pos)); + } + else + { + printf("Warning! Cannot build at location (%d, %d) and therefore ignoring command.", pos.x, pos.y); + } } void Unit::buildTarget(const UnitType & buildingType, const Unit & target) const -- GitLab