Ajout de l'impact des plantes proche pour le mutations et réparation du travel screen dans le mode infini
This commit is contained in:
@@ -143,7 +143,7 @@ func harvest():
|
|||||||
|
|
||||||
func produce_seed():
|
func produce_seed():
|
||||||
region.drop_item(
|
region.drop_item(
|
||||||
Seed.generate_from_parent(data),
|
Seed.generate_from_parent(data, data.nearby_plants),
|
||||||
global_position,
|
global_position,
|
||||||
HARVESTED_SEED_DISPLACEMENT_FACTOR,
|
HARVESTED_SEED_DISPLACEMENT_FACTOR,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -17,13 +17,17 @@ func _init(
|
|||||||
plant_mutations = _plant_mutations
|
plant_mutations = _plant_mutations
|
||||||
random_seed = randi()
|
random_seed = randi()
|
||||||
|
|
||||||
static func generate_from_parent(plant_data : PlantData) -> Seed:
|
static func generate_from_parent(plant_data : PlantData, nearby_plants : Array[PlantData] = []) -> Seed:
|
||||||
var mutations : Array[PlantMutation] = plant_data.mutations
|
var mutations : Array[PlantMutation] = plant_data.mutations
|
||||||
var mutation_probability = GameInfo.game_data.current_run.plant_info.get_mutation_probability()
|
var mutation_probability = GameInfo.game_data.current_run.plant_info.get_mutation_probability()
|
||||||
|
|
||||||
|
var nearby_mutations : Array[PlantMutation] = []
|
||||||
|
for pd in nearby_plants:
|
||||||
|
nearby_mutations.append_array(pd.mutations)
|
||||||
|
|
||||||
# Mutate for every time mutation probability exceed 1
|
# Mutate for every time mutation probability exceed 1
|
||||||
while mutation_probability > 1:
|
while mutation_probability > 1:
|
||||||
mutations = mutate_mutations(plant_data.mutations)
|
mutations = mutate_mutations(plant_data.mutations, nearby_mutations)
|
||||||
mutation_probability -= 1
|
mutation_probability -= 1
|
||||||
|
|
||||||
mutations.sort_custom(
|
mutations.sort_custom(
|
||||||
@@ -36,7 +40,7 @@ static func generate_from_parent(plant_data : PlantData) -> Seed:
|
|||||||
):
|
):
|
||||||
return Seed.new(
|
return Seed.new(
|
||||||
plant_data.plant_name,
|
plant_data.plant_name,
|
||||||
mutate_mutations(mutations)
|
mutate_mutations(mutations, nearby_mutations)
|
||||||
)
|
)
|
||||||
else :
|
else :
|
||||||
return Seed.new(
|
return Seed.new(
|
||||||
@@ -184,7 +188,7 @@ static func generate_first_mutations(rarity := 0) -> Array[PlantMutation]:
|
|||||||
|
|
||||||
return [possible_mutation]
|
return [possible_mutation]
|
||||||
|
|
||||||
static func mutate_mutations(mutations : Array[PlantMutation]) -> Array[PlantMutation]:
|
static func mutate_mutations(mutations : Array[PlantMutation], nearby_mutations : Array[PlantMutation]) -> Array[PlantMutation]:
|
||||||
|
|
||||||
var mutation_possibility : Array[MutationPossibility] = []
|
var mutation_possibility : Array[MutationPossibility] = []
|
||||||
|
|
||||||
@@ -205,18 +209,26 @@ static func mutate_mutations(mutations : Array[PlantMutation]) -> Array[PlantMut
|
|||||||
return chosen_mutation_possibility.mutate(mutations)
|
return chosen_mutation_possibility.mutate(mutations)
|
||||||
|
|
||||||
class MutationPossibility:
|
class MutationPossibility:
|
||||||
func mutate(_mutations : Array[PlantMutation])-> Array[PlantMutation]:
|
func mutate(_mutations : Array[PlantMutation], _nearby_mutations : Array[PlantMutation])-> Array[PlantMutation]:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
class AddMutation extends MutationPossibility:
|
class AddMutation extends MutationPossibility:
|
||||||
func mutate(mutations : Array[PlantMutation])-> Array[PlantMutation]:
|
func mutate(
|
||||||
|
mutations : Array[PlantMutation],
|
||||||
|
nearby_mutations : Array[PlantMutation]
|
||||||
|
)-> Array[PlantMutation]:
|
||||||
var new_mutations = mutations.duplicate_deep()
|
var new_mutations = mutations.duplicate_deep()
|
||||||
var possible_new_mutations = GameInfo.game_data.progression_data.get_available_mutations().duplicate_deep()
|
var possible_new_mutations = GameInfo.game_data.progression_data.get_available_mutations().duplicate_deep()
|
||||||
|
|
||||||
possible_new_mutations = possible_new_mutations.filter(
|
possible_new_mutations = possible_new_mutations.filter(
|
||||||
func (m : PlantMutation):
|
func (m : PlantMutation):
|
||||||
return mutations.find_custom(func(m2: PlantMutation): return m2.name == m.name) == -1
|
return mutations.find_custom(func(m2: PlantMutation): return m2.id == m.id) == -1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
for m1 in possible_new_mutations:
|
||||||
|
for m2 in nearby_mutations:
|
||||||
|
if m1.id == m2.id:
|
||||||
|
possible_new_mutations.append(m1) # Double les chances d'avoir la mutation si elle est présente dans les voisins
|
||||||
|
|
||||||
if len(possible_new_mutations):
|
if len(possible_new_mutations):
|
||||||
new_mutations.append(possible_new_mutations.pick_random())
|
new_mutations.append(possible_new_mutations.pick_random())
|
||||||
@@ -225,7 +237,8 @@ class AddMutation extends MutationPossibility:
|
|||||||
|
|
||||||
class UpgradeMutation extends MutationPossibility:
|
class UpgradeMutation extends MutationPossibility:
|
||||||
func mutate(
|
func mutate(
|
||||||
mutations : Array[PlantMutation]
|
mutations : Array[PlantMutation],
|
||||||
|
_nearby_mutations : Array[PlantMutation]
|
||||||
) -> Array[PlantMutation]:
|
) -> Array[PlantMutation]:
|
||||||
var new_mutations = mutations.duplicate_deep()
|
var new_mutations = mutations.duplicate_deep()
|
||||||
|
|
||||||
@@ -242,7 +255,10 @@ class UpgradeMutation extends MutationPossibility:
|
|||||||
return new_mutations
|
return new_mutations
|
||||||
|
|
||||||
class RemoveMutation extends MutationPossibility:
|
class RemoveMutation extends MutationPossibility:
|
||||||
func mutate(mutations : Array[PlantMutation])-> Array[PlantMutation]:
|
func mutate(
|
||||||
|
mutations : Array[PlantMutation],
|
||||||
|
_nearby_mutations : Array[PlantMutation]
|
||||||
|
)-> Array[PlantMutation]:
|
||||||
var new_mutations = mutations.duplicate_deep()
|
var new_mutations = mutations.duplicate_deep()
|
||||||
|
|
||||||
var mut_to_remove = new_mutations.pick_random()
|
var mut_to_remove = new_mutations.pick_random()
|
||||||
|
|||||||
@@ -35,14 +35,14 @@ func _ready():
|
|||||||
%EnergyInfo3d.energy = GameInfo.game_data.player_data.energy
|
%EnergyInfo3d.energy = GameInfo.game_data.player_data.energy
|
||||||
%EnergyInfo3d.max_energy = GameInfo.game_data.player_data.max_energy
|
%EnergyInfo3d.max_energy = GameInfo.game_data.player_data.max_energy
|
||||||
|
|
||||||
func update_travel_screen(with_animation = true):
|
func update_travel_screen(with_animation = true, recreate_map = false):
|
||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
var current_position = run_data.level + (0.5 if in_space else 0.)
|
var current_position = run_data.level + (0.5 if in_space else 0.)
|
||||||
|
|
||||||
%TravelScreenContent.story_step = run_data.story_step
|
%TravelScreenContent.story_step = run_data.story_step
|
||||||
%TravelScreenContent.current_position = current_position
|
%TravelScreenContent.current_position = current_position
|
||||||
|
|
||||||
%TravelScreenContent.update(with_animation)
|
%TravelScreenContent.update(with_animation, recreate_map)
|
||||||
|
|
||||||
%TopologyContent.texture.noise.seed = run_data.run_seed
|
%TopologyContent.texture.noise.seed = run_data.run_seed
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ var ship_icon : Sprite2D
|
|||||||
func update(with_animation := true, recreate_map = false):
|
func update(with_animation := true, recreate_map = false):
|
||||||
|
|
||||||
if is_node_ready() and story_step:
|
if is_node_ready() and story_step:
|
||||||
|
print(current_position)
|
||||||
if recreate_map or not ship_icon:
|
if recreate_map or not ship_icon:
|
||||||
|
|
||||||
if story_step and get_step_number() < story_step.get_region_sequence_length():
|
if story_step and get_step_number() < story_step.get_region_sequence_length():
|
||||||
|
|||||||
@@ -10,9 +10,7 @@ metadata/_custom_type_script = "uid://bdonub7t01xmi"
|
|||||||
[node name="TravelScreenContent" type="Node2D" unique_id=1386845472]
|
[node name="TravelScreenContent" type="Node2D" unique_id=1386845472]
|
||||||
position = Vector2(500, 256)
|
position = Vector2(500, 256)
|
||||||
script = ExtResource("1_u6tks")
|
script = ExtResource("1_u6tks")
|
||||||
current_position = 3.0
|
|
||||||
story_step = SubResource("Resource_iergx")
|
story_step = SubResource("Resource_iergx")
|
||||||
start = 2
|
|
||||||
|
|
||||||
[node name="Icons" type="Node2D" parent="." unique_id=1787603855]
|
[node name="Icons" type="Node2D" parent="." unique_id=1787603855]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ func update_dashboard(with_animation := true):
|
|||||||
|
|
||||||
dashboard.run_data = current_run
|
dashboard.run_data = current_run
|
||||||
dashboard.in_space = GameInfo.game_data.ship_in_space
|
dashboard.in_space = GameInfo.game_data.ship_in_space
|
||||||
dashboard.update_travel_screen(with_animation)
|
dashboard.update_travel_screen(with_animation, not with_animation)
|
||||||
|
|
||||||
var can_take_off : bool = (
|
var can_take_off : bool = (
|
||||||
not current_run.is_finished()
|
not current_run.is_finished()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ OK,Ok,Ok
|
|||||||
GARDEN,Garden,Jardin
|
GARDEN,Garden,Jardin
|
||||||
COMMA,", ",","
|
COMMA,", ",","
|
||||||
OR," or "," ou "
|
OR," or "," ou "
|
||||||
PAUSE,Pause,Pause&
|
PAUSE,Pause,Pause
|
||||||
CONTROLS,Controls,Contrôles
|
CONTROLS,Controls,Contrôles
|
||||||
RESUME_GAME,Resume,Reprendre
|
RESUME_GAME,Resume,Reprendre
|
||||||
RESTART,Restart,Recommencer
|
RESTART,Restart,Recommencer
|
||||||
|
|||||||
|
Reference in New Issue
Block a user