73 lines
2.4 KiB
GDScript
73 lines
2.4 KiB
GDScript
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)
|
|
print(plant.data.plant_name)
|
|
%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
|