new mutations + plant part data structure simplified

This commit is contained in:
Altaezio
2026-06-26 19:10:30 +02:00
parent 39630ce2ca
commit 94dc231c01
216 changed files with 4268 additions and 5183 deletions

View File

@@ -20,12 +20,11 @@ const PLACEHOLDER_GROWING_TEXTURE: Texture = preload("res://entities/plants/asse
enum OriginType {BRANCH_ORIGIN, MUTATION_ORIGIN, BASE_LEAF_ORIGIN}
# @export var parts_archetype_associations: Dictionary[PlantArchetype, PartArchetypeAssociation] TODO:: have the archetypes
@export var bases: Array[PlantPart]
@export var baby_bases: Array[PlantPart]
@export var branches: Array[PlantPart]
@export var n_branches: int = 2
@export var base_leaves: Array[PlantPart]
@export var parts_mutation_associations: Dictionary[String, PartMutationAssociation] # Array[PlantPart]
@export var all_bases: PartGroup
@export var baby_bases_start_ind: int
@export var branches: PartGroup
@export var base_leaves: PartGroup
@export var part_group: Dictionary[String, PartGroup]
@export var chance_to_have_part := 0.75;
@@ -45,6 +44,18 @@ var rng := RandomNumberGenerator.new()
var image: Image = Image.create_empty(IMAGE_WIDTH, IMAGE_HEIGHT, false, Image.FORMAT_RGBA8)
var image_center: Vector2i = Vector2(0.5, 1) * Vector2(image.get_size())
var bases: Array[PlantPart]
var baby_bases: Array[PlantPart]
func _ready() -> void:
bases.resize(baby_bases_start_ind)
baby_bases.resize(all_bases.parts.size() - baby_bases_start_ind)
for i in range(all_bases.parts.size()):
if i < baby_bases_start_ind:
bases[i] = all_bases.parts[i]
else:
baby_bases[i - baby_bases_start_ind] = all_bases.parts[i]
func random_ind(array: Array) -> int:
return rng.randi_range(0, array.size() - 1)
@@ -126,13 +137,13 @@ func build_plant_texture(plant_data: PlantData) -> Texture:
var weight_per_origin_type: Array[int] = origin_weights_base.values().duplicate()
var parts_to_place: Dictionary[OriginType, Array] # BRANCH_ORIGIN : Array[PlantPart], MUTATION_ORIGIN : Array[Array[PlantPart]], BASE_LEAF_ORIGIN : Array[PlantPart]
parts_to_place[OriginType.BRANCH_ORIGIN] = branches.duplicate()
parts_to_place[OriginType.BRANCH_ORIGIN] = branches.parts.duplicate()
parts_to_place[OriginType.MUTATION_ORIGIN] = []
parts_to_place[OriginType.BASE_LEAF_ORIGIN] = base_leaves.duplicate()
parts_to_place[OriginType.BASE_LEAF_ORIGIN] = base_leaves.parts.duplicate()
var mutation_weights: Array[int] = []
for mutation in plant_data.mutations:
if mutation.id in parts_mutation_associations:
var mutation_parts := parts_mutation_associations[mutation.id].parts
if mutation.id in part_group:
var mutation_parts := part_group[mutation.id].parts.duplicate()
parts_to_place[OriginType.MUTATION_ORIGIN].append(mutation_parts)
var mutation_weight := get_mutation_weight(mutation.level)
mutation_weights.append(mutation_weight)