new mutations + plant part data structure simplified
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user