From c8bd14d6feeca72fc96b895c9382ebc16a1caf55 Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Wed, 2 Oct 2024 19:23:19 +0200 Subject: initial commit --- game.gd | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 game.gd (limited to 'game.gd') 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) -- cgit v1.2.3