summaryrefslogtreecommitdiff
path: root/game.gd
blob: c6285240a7e82fb21eae679ab9298f27f0633764 (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
extends Node


signal speed_changed
var speed := 1.0 :
	set(value):
		speed = value
		speed_changed.emit()

signal score_changed
var score := 0 :
	set(value):
		score = value
		score_changed.emit()

var selected_unit_type: PackedScene


func erase_map(points: PackedVector2Array, collision_container: StaticBody2D, visibility_container: Node2D):
	var collision_polygons = collision_container.get_children()
	var visibility_polygons = visibility_container.get_children()
	
	for idx in range(collision_polygons.size()):
		var collision_node: CollisionPolygon2D = collision_polygons[idx]
		var visibility_node: Polygon2D = visibility_polygons[idx]
		
		var clipped = Geometry2D.clip_polygons(collision_node.polygon, points)
		
		if clipped.size() > 0 and not Geometry2D.is_polygon_clockwise(clipped[0]):
			collision_node.polygon = clipped[0]
			visibility_node.polygon = clipped[0]
			
			if clipped.size() > 1 and not Geometry2D.is_polygon_clockwise(clipped[1]):
				var collision_polygon = CollisionPolygon2D.new()
				collision_polygon.polygon = clipped[1]
				collision_container.add_child(collision_polygon)
				
				var visibility_polygon = Polygon2D.new()
				visibility_polygon.polygon = clipped[1]
				visibility_polygon.clip_children = CanvasItem.CLIP_CHILDREN_ONLY
				visibility_polygon.add_child(visibility_node.get_node("TileMapLayer").duplicate())
				visibility_container.add_child(visibility_polygon)