ajouts d'objectifs sur la carte, déplacements des icônes et divers changements

This commit is contained in:
2025-09-13 12:48:52 +02:00
parent e56ec31069
commit 85cd832864
81 changed files with 983 additions and 307 deletions

View File

@@ -1,5 +1,11 @@
extends Resource
class_name GameData
@export var currentTerrainData : TerrainData
@export var current_terrain_data : TerrainData
@export var unlocked_plant_types_path : Array[PlantType] = [
preload("res://entities/plants/resources/plant_types/champ.tres"),
preload("res://entities/plants/resources/plant_types/chardi.tres"),
preload("res://entities/plants/resources/plant_types/maias.tres"),
preload("res://entities/plants/resources/plant_types/pili.tres"),
]

View File

@@ -1,24 +1,31 @@
extends Resource
class_name TerrainData
const TERRAIN_IMAGE_GAME_FACTOR = 40
const DEFAULT_CONTAMINATION_CENTRAL_ZONE_MAX_SIZE = 300
const DEFAULT_CONTAMINATION_CENTRAL_ZONE_MIN_SIZE = 50
const TERRAIN_IMAGE_GAME_FACTOR = 40.
const DEFAULT_CONTAMINATION_CENTRAL_ZONE_MAX_SIZE = 400.
const DEFAULT_CONTAMINATION_CENTRAL_ZONE_MIN_SIZE = 100.
const DEFAULT_TERRAIN_SIZE = Vector2(2000,2000)
@export var terrainSize : Vector2 = Vector2(1000,1000)
@export var terrain_size : Vector2
func _init(size : Vector2 = DEFAULT_TERRAIN_SIZE):
terrain_size = size
generate_default_contamination()
#region ------------------ Contamination ------------------
@export var contamination : Image = null
func generate_default_contamination(
central_zone_max_size : int = DEFAULT_CONTAMINATION_CENTRAL_ZONE_MAX_SIZE,
central_zone_min_size : int = DEFAULT_CONTAMINATION_CENTRAL_ZONE_MIN_SIZE,
central_zone_max_size : float = DEFAULT_CONTAMINATION_CENTRAL_ZONE_MAX_SIZE,
central_zone_min_size : float = DEFAULT_CONTAMINATION_CENTRAL_ZONE_MIN_SIZE,
):
var noise: Noise = FastNoiseLite.new()
noise.seed = randi()
noise.noise_type = FastNoiseLite.TYPE_CELLULAR
noise.frequency = 0.005 * TERRAIN_IMAGE_GAME_FACTOR
var imageSize = terrainSize / TERRAIN_IMAGE_GAME_FACTOR;
var imageSize = terrain_size / TERRAIN_IMAGE_GAME_FACTOR;
var noise_image = noise.get_image(
imageSize.x,
@@ -68,19 +75,42 @@ func is_in_image(pixel_point : Vector2, image : Image):
and pixel_point.y < image.get_height())
func get_contamination(point : Vector2) -> float:
var pixel_point : Vector2 = get_pixel_point(point)
var pixel_point : Vector2i = get_pixel_point(point)
if (is_in_image(pixel_point, contamination)):
return contamination.get_pixel(
int(round(pixel_point.x)),
int(round(pixel_point.y))
pixel_point.x,
pixel_point.y
).r
return 0
func get_decontamination_coverage() -> float:
return ImageTools.get_color_coverage(contamination)
func get_pixel_point(point : Vector2) -> Vector2:
return (
func get_decontamination_surface() -> float:
return ImageTools.get_color_pixel_count(contamination)/TERRAIN_IMAGE_GAME_FACTOR * 10
func get_pixel_point(point : Vector2) -> Vector2i:
return Vector2i(
Vector2(point) / float(TERRAIN_IMAGE_GAME_FACTOR)
- Vector2.ONE / 2
)
#endregion
#region ------------------ Objectives ------------------
func generate_objective_rewards(level = 1, amount = 1) -> Array[ObjectiveReward]:
var possible_objective_rewards_path : Array[ObjectiveReward] = [
IncreaseDayLimitReward.new(randi_range(level + 1, level + 3)),
LootItemReward.new(load("res://common/inventory/resources/items/compost.tres")),
UpgradePlayerMaxEnergyReward.new(),
]
var objectives_reward : Array[ObjectiveReward] = []
var i = 0
while i < amount and len(possible_objective_rewards_path) > 0:
var r = possible_objective_rewards_path.pick_random()
possible_objective_rewards_path.erase(r)
objectives_reward.append(r)
i += 1
return objectives_reward