summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/System.c4g/Debug.c
blob: 31d61bf0e47dc2894bcfe758e32cdd4375625271 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#strict 2

global func VerifyHostileSortDistance(int player)
{
	var crew = GetCrew(player);
	var searchResult = crew->FindObjectsAllLayers(
		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;
}