54 lines
1.3 KiB
GDScript
54 lines
1.3 KiB
GDScript
class_name Map
|
|
|
|
extends Node2D
|
|
|
|
const OUT_OF_BOUND_DIST = 2000
|
|
|
|
signal win_game
|
|
|
|
@export var n_animals_to_liberate := 3
|
|
|
|
func _ready():
|
|
var map_size = GameTerrain.TERRAIN_SIZE * GameTerrain.MAP_RATIO
|
|
|
|
for polygon in [$Ground, $Fertility]:
|
|
polygon.set_polygon(PackedVector2Array([
|
|
Vector2(0,0),
|
|
Vector2(map_size.x, 0),
|
|
Vector2(map_size.x, map_size.y),
|
|
Vector2(0, map_size.y),
|
|
]))
|
|
polygon.material.set_shader_parameter("data_texture", GameTerrain.texture)
|
|
polygon.material.set_shader_parameter(
|
|
"data_texture_size",
|
|
GameTerrain.TERRAIN_SIZE * GameTerrain.MAP_RATIO
|
|
)
|
|
|
|
$OutOfBound.set_polygon(PackedVector2Array([
|
|
Vector2(-OUT_OF_BOUND_DIST,-OUT_OF_BOUND_DIST),
|
|
Vector2(map_size.x + OUT_OF_BOUND_DIST, -OUT_OF_BOUND_DIST),
|
|
Vector2(map_size.x + OUT_OF_BOUND_DIST, map_size.y + OUT_OF_BOUND_DIST),
|
|
Vector2(-OUT_OF_BOUND_DIST, map_size.y + OUT_OF_BOUND_DIST),
|
|
]))
|
|
|
|
func _on_gui_scanner_selected(type : Scanners.Type):
|
|
$Scanners.select_scanner(type)
|
|
|
|
|
|
func _on_animal_liberated() -> void:
|
|
n_animals_to_liberate -= 1
|
|
if n_animals_to_liberate == 0:
|
|
emit_signal("win_game")
|
|
|
|
|
|
func _on_animal_2_liberated() -> void:
|
|
n_animals_to_liberate -= 1
|
|
if n_animals_to_liberate == 0:
|
|
emit_signal("win_game")
|
|
|
|
|
|
func _on_animal_3_liberated() -> void:
|
|
n_animals_to_liberate -= 1
|
|
if n_animals_to_liberate == 0:
|
|
emit_signal("win_game")
|