diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-10-02 19:23:19 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-10-02 19:23:19 +0200 |
commit | c8bd14d6feeca72fc96b895c9382ebc16a1caf55 (patch) | |
tree | 8423bdead9ce57d3dd62759cf362073ac5955eb3 /game.gd |
initial commit
Diffstat (limited to 'game.gd')
-rw-r--r-- | game.gd | 40 |
1 files changed, 40 insertions, 0 deletions
@@ -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) |