forked from Mirrors/openclonk
Debugging: Streamlined functions
Another possible option was a parameter for the log level, but I decided against it, because differently named functions feel better than a string constant as a parameter.. Removed some annoying log outputs that I added before. Any suggestions for the function names are welcome, because I am not quite happy with the names yet. The distinction between normal output and warning is maybe not even necessary.install-platforms
parent
dddf5e223a
commit
fc4a1660da
|
@ -13,9 +13,17 @@ public func OnDefineAI(proplist def)
|
||||||
def->GetControlEffect().DebugLoggingOn = false; // Whether or not debug logging is turned on.
|
def->GetControlEffect().DebugLoggingOn = false; // Whether or not debug logging is turned on.
|
||||||
}
|
}
|
||||||
|
|
||||||
public func LogAI(effect fx, string message)
|
public func LogAI_Warning(effect fx, string message)
|
||||||
{
|
{
|
||||||
if (fx.DebugLoggingOn)
|
if (fx.DebugLoggingOn)
|
||||||
Log("[%d]AI WARNING (%v): %s", FrameCounter(), fx.Target, message);
|
Log("[%d] AI WARNING (%v): %s", FrameCounter(), fx.Target, message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Logs AI info
|
||||||
|
public func LogAI_Info(proplist fx, string message)
|
||||||
|
{
|
||||||
|
if (fx.DebugLoggingOn)
|
||||||
|
Log("[%d] AI INFO (%v): %s", FrameCounter(), fx.Target, message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,7 +112,7 @@ public func ExecuteStand(effect fx)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->LogAI(fx, Format("ExecuteStand has no idea what to do for action %v and procedure %v.", fx.Target->GetAction(), fx.Target->GetProcedure()));
|
this->~LogAI_Warning(fx, Format("ExecuteStand has no idea what to do for action %v and procedure %v.", fx.Target->GetAction(), fx.Target->GetProcedure()));
|
||||||
// Hm. What could it be? Let's just hope it resolves itself somehow...
|
// Hm. What could it be? Let's just hope it resolves itself somehow...
|
||||||
fx.Target->SetComDir(COMD_Stop);
|
fx.Target->SetComDir(COMD_Stop);
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,7 +145,6 @@ private func ExecuteCatapult(effect fx)
|
||||||
|
|
||||||
private func CheckCatapultAmmo(effect fx, object vehicle)
|
private func CheckCatapultAmmo(effect fx, object vehicle)
|
||||||
{
|
{
|
||||||
this->~DebugLogAI(fx, Format("Contents count in vehicle %d, contents count in target %d", vehicle->ContentsCount(), fx.Target->ContentsCount()));
|
|
||||||
// Must have ammo in the catapult or in the clonk (or be respawning ammo)
|
// Must have ammo in the catapult or in the clonk (or be respawning ammo)
|
||||||
return vehicle->ContentsCount() > 0 || fx.Target->ContentsCount() > 0 || fx.has_ammo_respawn;
|
return vehicle->ContentsCount() > 0 || fx.Target->ContentsCount() > 0 || fx.has_ammo_respawn;
|
||||||
}
|
}
|
||||||
|
|
|
@ -289,13 +289,6 @@ private func EditorProp_AIType(id type)
|
||||||
local Plane = 300;
|
local Plane = 300;
|
||||||
|
|
||||||
|
|
||||||
public func DebugLogAI(proplist fx_ai, string message)
|
|
||||||
{
|
|
||||||
if (fx_ai.DebugLoggingOn)
|
|
||||||
DebugLog(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*-- Callbacks --*/
|
/*-- Callbacks --*/
|
||||||
|
|
||||||
// Callback from the effect Construction()-call
|
// Callback from the effect Construction()-call
|
||||||
|
|
|
@ -79,7 +79,7 @@ public func Execute(effect fx, int time)
|
||||||
// Weapon out of ammo?
|
// Weapon out of ammo?
|
||||||
if (fx.ammo_check && !this->Call(fx.ammo_check, fx, fx.weapon))
|
if (fx.ammo_check && !this->Call(fx.ammo_check, fx, fx.weapon))
|
||||||
{
|
{
|
||||||
this->LogAI(fx, Format("Weapon %v is out of ammo, AI won't do anything.", fx.weapon));
|
this->LogAI_Warning(fx, Format("Weapon %v is out of ammo, AI won't do anything.", fx.weapon));
|
||||||
fx.weapon = nil;
|
fx.weapon = nil;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ public func Execute(effect fx, int time)
|
||||||
if (fx.target)
|
if (fx.target)
|
||||||
if ((fx.target->GetCategory() & C4D_Living && !fx.target->GetAlive()) || (!fx.ranged && fx.Target->ObjectDistance(fx.target) >= fx.max_aggro_distance))
|
if ((fx.target->GetCategory() & C4D_Living && !fx.target->GetAlive()) || (!fx.ranged && fx.Target->ObjectDistance(fx.target) >= fx.max_aggro_distance))
|
||||||
{
|
{
|
||||||
this->DebugLogAI(fx, Format("Forgetting target %v, because it is dead or out of range", fx.target));
|
this->LogAI_Info(fx, Format("Forgetting target %v, because it is dead or out of range", fx.target));
|
||||||
fx.target = nil;
|
fx.target = nil;
|
||||||
}
|
}
|
||||||
if (!fx.target)
|
if (!fx.target)
|
||||||
|
@ -95,7 +95,7 @@ public func Execute(effect fx, int time)
|
||||||
this->CancelAiming(fx);
|
this->CancelAiming(fx);
|
||||||
if (!fx.auto_search_target || !(fx.target = this->FindTarget(fx)))
|
if (!fx.auto_search_target || !(fx.target = this->FindTarget(fx)))
|
||||||
{
|
{
|
||||||
this->DebugLogAI(fx, "No target found or not looking for target - will execute idle strategy");
|
this->LogAI_Warning(fx, Format("Will call ExecuteIdle, because there is no target. Auto-searching for target %v", fx.auto_search_target));
|
||||||
return ExecuteIdle(fx);
|
return ExecuteIdle(fx);
|
||||||
}
|
}
|
||||||
// First encounter callback. might display a message.
|
// First encounter callback. might display a message.
|
||||||
|
@ -126,9 +126,9 @@ public func Execute(effect fx, int time)
|
||||||
this->ExecuteAppearance(fx);
|
this->ExecuteAppearance(fx);
|
||||||
// Attack it!
|
// Attack it!
|
||||||
if (!this->IsWeaponForTarget(fx))
|
if (!this->IsWeaponForTarget(fx))
|
||||||
this->LogAI(fx, Format("weapon of type %i is not fit to attack %v (type: %i).", fx.weapon->GetID(), fx.target, fx.target->GetID()));
|
this->LogAI_Warning(fx, Format("Weapon of type %i is not fit to attack %v (type: %i).", fx.weapon->GetID(), fx.target, fx.target->GetID()));
|
||||||
|
|
||||||
this->DebugLogAI(fx, Format("Calling strategy: %v", fx.strategy));
|
this->LogAI_Info(fx, Format("Calling strategy: %v", fx.strategy));
|
||||||
return this->Call(fx.strategy, fx);
|
return this->Call(fx.strategy, fx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ public func ExecuteArm(effect fx)
|
||||||
{
|
{
|
||||||
if (this->CheckVehicleAmmo(fx, fx.weapon))
|
if (this->CheckVehicleAmmo(fx, fx.weapon))
|
||||||
{
|
{
|
||||||
this->DebugLogAI(fx, "Vehicle ammo is ok");
|
this->LogAI_Info(fx, "Vehicle ammo is ok");
|
||||||
fx.strategy = this.ExecuteVehicle;
|
fx.strategy = this.ExecuteVehicle;
|
||||||
fx.ranged = true;
|
fx.ranged = true;
|
||||||
fx.aim_wait = 20;
|
fx.aim_wait = 20;
|
||||||
|
@ -192,7 +192,7 @@ public func ExecuteArm(effect fx)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->DebugLogAI(fx, "Vehicle ammo is not ok. Weapon is %v, vehicle is %v", fx.weapon, fx.vehicle);
|
this->LogAI_Info(fx, "Vehicle ammo is not ok. Weapon is %v, vehicle is %v", fx.weapon, fx.vehicle);
|
||||||
fx.weapon = nil;
|
fx.weapon = nil;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue