File: Script.c

package info (click to toggle)
openclonk 8.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 169,500 kB
  • sloc: cpp: 180,478; ansic: 108,988; xml: 31,371; python: 1,223; php: 767; makefile: 139; sh: 101; javascript: 34
file content (32 lines) | stat: -rw-r--r-- 798 bytes parent folder | download | duplicates (5)
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
/**
	Cover Library
	Simple library for objects that provide (visible) cover from other players.
	Object will be invisible to players that have their (crew) cursor inside cover_area (Rectangle).
	
	@author Win, Clonkonaut
*/

local cover_area;

private func Initialize()
{
	AddTimer("CheckCoverage", 1);
	this.Visibility = [VIS_Select];
	_inherited(...);
}

private func CheckCoverage()
{
	if (!cover_area) return;

	for (var i = 0; i < GetPlayerCount(); i++)
	{
		// Visible to all players
		this.Visibility[GetPlayerByIndex(i) + 1] = true;
		var cursor = GetCursor(GetPlayerByIndex(i));
		if (cursor)
			if (cover_area->IsPointContained(cursor->GetX()-GetX(), cursor->GetY()-GetY()))
				// Except when the cursor is inside the cover area
				this.Visibility[GetPlayerByIndex(i) + 1] = false;
	}
}