Fix line build that was broken by r9749.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@9754 4a71c877-e1ca-e34f-864e-861f7616d084master
parent
896c74aeba
commit
8bd0a98a5c
14
src/droid.c
14
src/droid.c
|
@ -119,6 +119,7 @@ void droidUpdateRecoil( DROID *psDroid );
|
|||
|
||||
static void cancelBuild(DROID *psDroid)
|
||||
{
|
||||
objTrace(psDroid->id, "Droid build order cancelled");
|
||||
psDroid->action = DACTION_NONE;
|
||||
psDroid->order = DORDER_NONE;
|
||||
setDroidTarget(psDroid, NULL);
|
||||
|
@ -1089,8 +1090,17 @@ BOOL droidUpdateBuild(DROID *psDroid)
|
|||
{
|
||||
// Update the interface
|
||||
intBuildFinished(psDroid);
|
||||
|
||||
cancelBuild(psDroid);
|
||||
if ((map_coord(psDroid->orderX) == map_coord(psDroid->orderX2) && map_coord(psDroid->orderY) == map_coord(psDroid->orderY2))
|
||||
|| psDroid->order != DORDER_LINEBUILD)
|
||||
{
|
||||
cancelBuild(psDroid);
|
||||
}
|
||||
else
|
||||
{
|
||||
psDroid->action = DACTION_NONE; // make us continue line build
|
||||
setDroidTarget(psDroid, NULL);
|
||||
setDroidActionTarget(psDroid, NULL, 0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -1709,6 +1709,7 @@ void orderDroidBase(DROID *psDroid, DROID_ORDER_DATA *psOrder)
|
|||
psDroid->psTarStats = psOrder->psStats;
|
||||
ASSERT((!psDroid->psTarStats || ((STRUCTURE_STATS *)psDroid->psTarStats)->type != REF_DEMOLISH), "Cannot build demolition");
|
||||
actionDroidLoc(psDroid, DACTION_BUILD, psOrder->x,psOrder->y);
|
||||
objTrace(psDroid->id, "Starting new construction effort of %s", psOrder->psStats->pName);
|
||||
break;
|
||||
case DORDER_BUILDMODULE:
|
||||
//build a module onto the structure
|
||||
|
@ -1724,6 +1725,7 @@ void orderDroidBase(DROID *psDroid, DROID_ORDER_DATA *psOrder)
|
|||
ASSERT(psDroid->psTarStats != NULL, "orderUnitBase: should have found a module stats");
|
||||
ASSERT((!psDroid->psTarStats || ((STRUCTURE_STATS *)psDroid->psTarStats)->type != REF_DEMOLISH), "Cannot build demolition");
|
||||
actionDroidLoc(psDroid, DACTION_BUILD, psOrder->psObj->pos.x,psOrder->psObj->pos.y);
|
||||
objTrace(psDroid->id, "Starting new upgrade of %s", psOrder->psStats->pName);
|
||||
break;
|
||||
case DORDER_LINEBUILD:
|
||||
// build a line of structures
|
||||
|
@ -1742,6 +1744,7 @@ void orderDroidBase(DROID *psDroid, DROID_ORDER_DATA *psOrder)
|
|||
psDroid->psTarStats = psOrder->psStats;
|
||||
ASSERT((!psDroid->psTarStats || ((STRUCTURE_STATS *)psDroid->psTarStats)->type != REF_DEMOLISH), "Cannot build demolition");
|
||||
actionDroidLoc(psDroid, DACTION_BUILD, psOrder->x,psOrder->y);
|
||||
objTrace(psDroid->id, "Starting new line construction of %s", psOrder->psStats->pName);
|
||||
break;
|
||||
case DORDER_HELPBUILD:
|
||||
// help to build a structure that is starting to be built
|
||||
|
@ -1756,6 +1759,7 @@ void orderDroidBase(DROID *psDroid, DROID_ORDER_DATA *psOrder)
|
|||
psDroid->psTarStats = (BASE_STATS *)((STRUCTURE *)psOrder->psObj)->pStructureType;
|
||||
ASSERT((!psDroid->psTarStats || ((STRUCTURE_STATS *)psDroid->psTarStats)->type != REF_DEMOLISH), "Cannot build demolition");
|
||||
actionDroidLoc(psDroid, DACTION_BUILD, psDroid->orderX, psDroid->orderY);
|
||||
objTrace(psDroid->id, "Helping construction of %s", psOrder->psStats->pName);
|
||||
break;
|
||||
case DORDER_DEMOLISH:
|
||||
if (!(psDroid->droidType == DROID_CONSTRUCT || psDroid->droidType == DROID_CYBORG_CONSTRUCT))
|
||||
|
|
|
@ -240,14 +240,11 @@ BOOL scrIdleGroup(void)
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
ASSERT( psGroup != NULL,
|
||||
"scrIdleGroup: invalid group pointer" );
|
||||
ASSERT_OR_RETURN(false, psGroup, "Invalid group pointer");
|
||||
|
||||
for(psDroid = psGroup->psList;psDroid; psDroid = psDroid->psGrpNext)
|
||||
{
|
||||
if( psDroid->order == DORDER_NONE
|
||||
|| (psDroid->order == DORDER_GUARD && psDroid->psTarget == NULL))
|
||||
if (psDroid->order == DORDER_NONE || (psDroid->order == DORDER_GUARD && psDroid->psTarget == NULL))
|
||||
{
|
||||
count++;
|
||||
}
|
||||
|
|
|
@ -1206,9 +1206,12 @@ void structureBuild(STRUCTURE *psStruct, DROID *psDroid, int buildPoints)
|
|||
for (psIter = apsDroidLists[psDroid->player]; psIter; psIter = psIter->psNext)
|
||||
{
|
||||
if ((psIter->order == DORDER_BUILD || psIter->order == DORDER_HELPBUILD || psIter->order == DORDER_LINEBUILD)
|
||||
&& psIter->psTarget == (BASE_OBJECT *)psStruct)
|
||||
&& psIter->psTarget == (BASE_OBJECT *)psStruct
|
||||
&& (psIter->order != DORDER_LINEBUILD || (map_coord(psIter->orderX) == map_coord(psIter->orderX2)
|
||||
&& map_coord(psIter->orderY) == map_coord(psIter->orderY2))))
|
||||
{
|
||||
objTrace(psIter->id, "Construction complete");
|
||||
objTrace(psIter->id, "Construction order %s complete (%d, %d -> %d, %d)", getDroidOrderName(psDroid->order),
|
||||
(int)psIter->orderX, (int)psIter->orderY, (int)psIter->orderX2, (int)psIter->orderY2);
|
||||
psIter->action = DACTION_NONE;
|
||||
psIter->order = DORDER_NONE;
|
||||
setDroidTarget(psIter, NULL);
|
||||
|
|
Loading…
Reference in New Issue