Unit reference counting debuging made optional.
This commit is contained in:
parent
21ca74a4ec
commit
e0c1cd311d
2 changed files with 33 additions and 1 deletions
src/action
|
@ -10,7 +10,7 @@
|
|||
//
|
||||
/**@name action_attack.c - The attack action. */
|
||||
//
|
||||
// (c) Copyright 1998-2000 by Lutz Sammer
|
||||
// (c) Copyright 1998-2001 by Lutz Sammer
|
||||
//
|
||||
// $Id$
|
||||
|
||||
|
@ -130,14 +130,18 @@ local void MoveToTarget(Unit* unit)
|
|||
// FIXME: Should be done by Action Move???????
|
||||
if( goal->Destroyed ) {
|
||||
DebugLevel0Fn("destroyed unit\n");
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !goal->Refs );
|
||||
#endif
|
||||
if( !--goal->Refs ) {
|
||||
ReleaseUnit(goal);
|
||||
}
|
||||
unit->Command.Data.Move.Goal=goal=NoUnitP;
|
||||
} else if( !goal->HP || goal->Command.Action==UnitActionDie ) {
|
||||
--goal->Refs;
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !goal->Refs );
|
||||
#endif
|
||||
unit->Command.Data.Move.Goal=goal=NoUnitP;
|
||||
}
|
||||
}
|
||||
|
@ -174,7 +178,9 @@ local void MoveToTarget(Unit* unit)
|
|||
temp=AttackUnitsInReactRange(unit);
|
||||
if( temp && temp->Type->Priority>goal->Type->Priority ) {
|
||||
goal->Refs--;
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !goal->Refs );
|
||||
#endif
|
||||
temp->Refs++;
|
||||
if( unit->SavedCommand.Action==UnitActionStill ) {
|
||||
// Save current command to come back.
|
||||
|
@ -253,7 +259,9 @@ local void AttackTarget(Unit* unit)
|
|||
if( goal ) {
|
||||
if( goal->Destroyed ) {
|
||||
DebugLevel0Fn("destroyed unit\n");
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !goal->Refs );
|
||||
#endif
|
||||
if( !--goal->Refs ) {
|
||||
ReleaseUnit(goal);
|
||||
}
|
||||
|
@ -261,7 +269,9 @@ local void AttackTarget(Unit* unit)
|
|||
} else if( !goal->HP || goal->Command.Action==UnitActionDie ) {
|
||||
// FIXME: goal->Removed???
|
||||
--goal->Refs;
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !goal->Refs );
|
||||
#endif
|
||||
unit->Command.Data.Move.Goal=goal=NoUnitP;
|
||||
}
|
||||
}
|
||||
|
@ -301,7 +311,9 @@ local void AttackTarget(Unit* unit)
|
|||
temp=AttackUnitsInReactRange(unit);
|
||||
if( temp && temp->Type->Priority>goal->Type->Priority ) {
|
||||
goal->Refs--;
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !goal->Refs );
|
||||
#endif
|
||||
temp->Refs++;
|
||||
if( unit->SavedCommand.Action==UnitActionStill ) {
|
||||
// Save current command to come back.
|
||||
|
|
|
@ -72,7 +72,9 @@ local int WaitForTransporter(Unit* unit)
|
|||
}
|
||||
if( trans->Destroyed ) {
|
||||
DebugLevel0Fn("Destroyed unit\n");
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !trans->Refs );
|
||||
#endif
|
||||
if( !--trans->Refs ) {
|
||||
ReleaseUnit(trans);
|
||||
}
|
||||
|
@ -80,9 +82,13 @@ local int WaitForTransporter(Unit* unit)
|
|||
return 0;
|
||||
} else if( trans->Removed ||
|
||||
!trans->HP || trans->Command.Action==UnitActionDie ) {
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !trans->Refs );
|
||||
#endif
|
||||
--trans->Refs;
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !trans->Refs );
|
||||
#endif
|
||||
unit->Command.Data.Move.Goal=trans=NoUnitP;
|
||||
return 0;
|
||||
}
|
||||
|
@ -114,7 +120,9 @@ local void EnterTransporter(Unit* unit)
|
|||
transporter=unit->Command.Data.Move.Goal;
|
||||
if( transporter->Destroyed ) {
|
||||
DebugLevel0Fn("Destroyed unit\n");
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !transporter->Refs );
|
||||
#endif
|
||||
if( !--transporter->Refs ) {
|
||||
ReleaseUnit(transporter);
|
||||
}
|
||||
|
@ -122,15 +130,23 @@ local void EnterTransporter(Unit* unit)
|
|||
return;
|
||||
} else if( transporter->Removed ||
|
||||
!transporter->HP || transporter->Command.Action==UnitActionDie ) {
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !transporter->Refs );
|
||||
#endif
|
||||
--transporter->Refs;
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !transporter->Refs );
|
||||
#endif
|
||||
unit->Command.Data.Move.Goal=NoUnitP;
|
||||
return;
|
||||
}
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !transporter->Refs );
|
||||
#endif
|
||||
--transporter->Refs;
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck( !transporter->Refs );
|
||||
#endif
|
||||
unit->Command.Data.Move.Goal=NoUnitP;
|
||||
|
||||
//
|
||||
|
@ -194,9 +210,13 @@ global void HandleActionBoard(Unit* unit)
|
|||
unit->Command.Action=UnitActionStill;
|
||||
if( unit->Command.Data.Move.Goal ) {
|
||||
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck(!unit->Command.Data.Move.Goal->Refs);
|
||||
#endif
|
||||
--unit->Command.Data.Move.Goal->Refs;
|
||||
#ifdef REFS_DEBUG
|
||||
DebugCheck(!unit->Command.Data.Move.Goal->Refs);
|
||||
#endif
|
||||
unit->Command.Data.Move.Goal=NoUnitP;
|
||||
}
|
||||
unit->SubAction=0;
|
||||
|
|
Loading…
Add table
Reference in a new issue