From e0f54dc408b9f2948cb78100d324aaefd1600cd3 Mon Sep 17 00:00:00 2001 From: Jan <> Date: Wed, 9 Mar 2016 22:17:36 +0100 Subject: Add verification functions for debugging Add VerifyHostileSortDistance(int player) and VerifyHostilityAllVsAll() --- TemplePushing.c4s/System.c4g/Debug.c | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 TemplePushing.c4s/System.c4g/Debug.c (limited to 'TemplePushing.c4s/System.c4g') diff --git a/TemplePushing.c4s/System.c4g/Debug.c b/TemplePushing.c4s/System.c4g/Debug.c new file mode 100644 index 0000000..f0cd420 --- /dev/null +++ b/TemplePushing.c4s/System.c4g/Debug.c @@ -0,0 +1,53 @@ +#strict 2 + +global func VerifyHostileSortDistance(int player) +{ + var crew = GetCrew(player); + var searchResult = crew->FindObjects( + Find_OCF(OCF_CrewMember | OCF_Alive), + Find_Hostile(player), + Sort_Distance(crew->GetX(), crew->GetY())); + + var isOrdered = true; + var namesMsg = "[", distancesMsg = "["; + var prevObj, prevDistance; + for (var obj in searchResult) + { + // Update messages + var prefix; if (prevObj) prefix = ", "; else prefix = ""; + namesMsg = Format("%s%s%s", namesMsg, prefix, GetPlayerName(obj->GetOwner())); + var distance = crew->ObjectDistance(obj); + distancesMsg = Format("%s%s%d", distancesMsg, prefix, distance); + + // Check if searchResult is in wrong order + if (prevObj && distance < prevDistance) isOrdered = false; + + // Use current object and distance as previous values for next object + prevObj = obj; + prevDistance = distance; + } + namesMsg = Format("%s]", namesMsg); + distancesMsg = Format("%s]", distancesMsg); + Log("%s -> %s", namesMsg, distancesMsg); + + return isOrdered; +} + +global func VerifyHostilityAllVsAll() +{ + var verified = true; + for (var i = 0; i < GetPlayerCount(); ++i) + { + for (var j = 0; j < GetPlayerCount(); ++j) + { + if (i == j) continue; + var plrA = GetPlayerByIndex(i), plrB = GetPlayerByIndex(j); + if (!Hostile(plrA, plrB, true)) + { + verified = false; + Log("VerifyHostilityAllVsAll: %s is not hostile to %s", GetPlayerName(plrA), GetPlayerName(plrB)); + } + } + } + return verified; +} -- cgit v1.2.3-54-g00ecf