summaryrefslogtreecommitdiff
path: root/game.gd
diff options
context:
space:
mode:
Diffstat (limited to 'game.gd')
-rw-r--r--game.gd40
1 files changed, 40 insertions, 0 deletions
diff --git a/game.gd b/game.gd
new file mode 100644
index 0000000..4e6074f
--- /dev/null
+++ b/game.gd
@@ -0,0 +1,40 @@
+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()
+
+
+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)