extends Node @export var n_plants_to_generate: int = 1 @export var n_plants_per_row: int = 0 @export var n_mutation_per_plant: int @export var space_between_plants: float @export var randomize_pos: bool @export var random_pos_offset: float func _ready(): %ZoomLevel.value = %Camera2D.zoom.x %NPlants.value = n_plants_to_generate %NMutationsPerPlant.value = n_mutation_per_plant %RandomizePos.button_pressed = randomize_pos %RandomizeOffset.value = random_pos_offset generate_plants(); func _input(_event) -> void: var input_dir = Input.get_vector("move_left", "move_right", "move_up", "move_down") %Camera2D.position += 1 / %Camera2D.zoom.x * 10 * input_dir func generate_plants(): for child in %Plants.get_children(): child.free() for i in n_plants_to_generate: print("Generate plant") var plant_pos_x = (i % n_plants_per_row) * space_between_plants @warning_ignore("integer_division") var plant_pos_y = (i / n_plants_per_row) * space_between_plants var plant_position := Vector2(plant_pos_x, plant_pos_y) if randomize_pos: plant_position += randf_range(0, random_pos_offset) * Vector2.ONE.rotated(randf_range(0, 2 * PI)) var plant_data: PlantData = PlantData.new(plant_position) plant_data.day = plant_data.get_growing_time() for j in n_mutation_per_plant: plant_data.mutations.append(plant_data.archetype.available_mutations.pick_random()) var plant: Plant = Plant.new(plant_data) %Plants.add_child(plant) plant.set_owner(self ) plant.global_position = plant_position func _on_generate_plants_pressed() -> void: generate_plants() func _on_zoom_level_value_changed(value: float) -> void: %Camera2D.zoom = Vector2.ONE * value func _on_reset_zoom_pressed() -> void: %Camera2D.zoom = Vector2.ONE %ZoomLevel.value = 1 func _on_n_plants_value_changed(value: float) -> void: n_plants_to_generate = int(value) func _on_n_plants_per_row_value_changed(value: float) -> void: n_plants_per_row = int(value) func _on_n_mutations_per_plant_value_changed(value: float) -> void: n_mutation_per_plant = int(value) func _on_randomize_pos_toggled(toggled_on: bool) -> void: randomize_pos = toggled_on func _on_randomize_offset_value_changed(value: float) -> void: random_pos_offset = value