From 940b3c1553d520177e665b9b918931a23a24067f Mon Sep 17 00:00:00 2001 From: Zacharie Guet Date: Fri, 12 Jun 2026 16:42:00 +0200 Subject: [PATCH] =?UTF-8?q?Dev=20D=C3=A9mo=201.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * les plantes se placent désormais sur une grille * ajouts de curseurs relatifs à l'item * ajout de settings sur la sensibilité à la souris * ajout d'un défi en fin de run --- common/game_data/scripts/run/run_data.gd | 4 + common/game_data/scripts/settings_data.gd | 6 +- common/game_data/scripts/story/story_step.gd | 5 +- common/vfx/circle/scripts/circle.gd | 39 ++++++++-- entities/plants/plant_sprite.tscn | 1 + .../plants/scripts/plant_influence_zone.gd | 36 ++++----- entities/plants/scripts/plant_sprite.gd | 4 +- entities/player/inventory/scripts/item.gd | 7 ++ .../inventory/scripts/items/detector.gd | 3 + .../player/inventory/scripts/items/fork.gd | 6 ++ .../player/inventory/scripts/items/pickaxe.gd | 3 + .../player/inventory/scripts/items/seed.gd | 15 ++-- .../inventory/scripts/items/ship_portal.gd | 3 + entities/player/scripts/player.gd | 52 ++++++++++--- entities/player_3d/scripts/player_3d.gd | 5 +- gui/menu/settings/scripts/settings.gd | 4 + gui/menu/settings/settings.tscn | 19 ++++- gui/pointer/assets/cursors/pointer-action.svg | 65 ++++++++++++++++ .../assets/cursors/pointer-action.svg.import | 43 +++++++++++ gui/pointer/assets/cursors/pointer-dig.svg | 68 +++++++++++++++++ .../assets/cursors/pointer-dig.svg.import | 43 +++++++++++ gui/pointer/assets/cursors/pointer-fork.svg | 74 +++++++++++++++++++ .../assets/cursors/pointer-fork.svg.import | 43 +++++++++++ gui/pointer/assets/cursors/pointer-seed.svg | 70 ++++++++++++++++++ .../assets/cursors/pointer-seed.svg.import | 43 +++++++++++ gui/pointer/assets/cursors/pointer-ship.svg | 66 +++++++++++++++++ .../assets/cursors/pointer-ship.svg.import | 43 +++++++++++ gui/pointer/assets/cursors/pointer-signal.svg | 63 ++++++++++++++++ .../assets/cursors/pointer-signal.svg.import | 43 +++++++++++ gui/pointer/assets/cursors/pointer.svg | 18 ++--- gui/pointer/pointer.tscn | 4 +- gui/pointer/scripts/pointer.gd | 25 ++++--- .../scripts/travel_screen_content.gd | 4 + stages/terrain/region/region.tscn | 9 ++- stages/terrain/region/scripts/plant_grid.gd | 73 ++++++++++++++++++ .../terrain/region/scripts/plant_grid.gd.uid | 1 + stages/terrain/region/scripts/region.gd | 11 ++- .../region/scripts/region_parameter.gd | 4 +- stages/title_screen/title_screen.tscn | 1 - translation/game/gui.csv | 3 +- 40 files changed, 953 insertions(+), 76 deletions(-) create mode 100644 gui/pointer/assets/cursors/pointer-action.svg create mode 100644 gui/pointer/assets/cursors/pointer-action.svg.import create mode 100644 gui/pointer/assets/cursors/pointer-dig.svg create mode 100644 gui/pointer/assets/cursors/pointer-dig.svg.import create mode 100644 gui/pointer/assets/cursors/pointer-fork.svg create mode 100644 gui/pointer/assets/cursors/pointer-fork.svg.import create mode 100644 gui/pointer/assets/cursors/pointer-seed.svg create mode 100644 gui/pointer/assets/cursors/pointer-seed.svg.import create mode 100644 gui/pointer/assets/cursors/pointer-ship.svg create mode 100644 gui/pointer/assets/cursors/pointer-ship.svg.import create mode 100644 gui/pointer/assets/cursors/pointer-signal.svg create mode 100644 gui/pointer/assets/cursors/pointer-signal.svg.import create mode 100644 stages/terrain/region/scripts/plant_grid.gd create mode 100644 stages/terrain/region/scripts/plant_grid.gd.uid diff --git a/common/game_data/scripts/run/run_data.gd b/common/game_data/scripts/run/run_data.gd index 7f74a24..dbe6124 100644 --- a/common/game_data/scripts/run/run_data.gd +++ b/common/game_data/scripts/run/run_data.gd @@ -64,6 +64,10 @@ func generate_next_run_point(last_modifiers : Array[String] = []) -> RunPoint: challenge_modifiers.pick_random(), benefic_modifiers.pick_random() ] as Array[RegionModifier] + elif story_step.is_run_point_dangerous(next_level): + region_parameter.modifiers = [ + challenge_modifiers.pick_random() + ] as Array[RegionModifier] else: region_parameter.modifiers = [ normal_modifiers.pick_random() diff --git a/common/game_data/scripts/settings_data.gd b/common/game_data/scripts/settings_data.gd index 92ddc0c..34491ff 100644 --- a/common/game_data/scripts/settings_data.gd +++ b/common/game_data/scripts/settings_data.gd @@ -58,8 +58,6 @@ const AVAILABLE_LANGUAGES_LABEL = [ @export var action_remapped : Array[String] = [] @export var input_remapped : Array[InputEvent] = [] -@export var auto_pickup := true - @export var fov := 75. : set(v): fov = v @@ -68,6 +66,10 @@ const AVAILABLE_LANGUAGES_LABEL = [ #region ------------------ Game ------------------ +@export var auto_pickup := true + +@export var mouse_sensivity := 0.2 + const MAX_ZOOM = 2. const MIN_ZOOM = 0.5 diff --git a/common/game_data/scripts/story/story_step.gd b/common/game_data/scripts/story/story_step.gd index bd4f5b0..1ba2913 100644 --- a/common/game_data/scripts/story/story_step.gd +++ b/common/game_data/scripts/story/story_step.gd @@ -37,7 +37,7 @@ func get_cave_occurence(_level : int) -> int: return 3 func get_challenge_chance(_level : int) -> float: - return 0.3 + return 0.15 func get_run_point_number(level : int) -> int: if is_run_finished(level): @@ -47,6 +47,9 @@ func get_run_point_number(level : int) -> int: func get_charge_number(_level : int) -> int: return 10 +func is_run_point_dangerous(level : int) -> bool: + return level == get_region_sequence_length() - 2 + func get_objective_for_region(level : int) -> int: match level: 1: return 10 diff --git a/common/vfx/circle/scripts/circle.gd b/common/vfx/circle/scripts/circle.gd index 73012d2..d67f96c 100644 --- a/common/vfx/circle/scripts/circle.gd +++ b/common/vfx/circle/scripts/circle.gd @@ -1,11 +1,40 @@ extends Sprite2D class_name Circle -@export var radius : int = 0 -@export var color : Color = Color.WHITE -@export var opacity : float = 1.0 -@export var fill : bool = true -@export var width : int = -1 +@export var radius : int = 0 : + set(v): + radius = v + queue_redraw() +@export var color : Color = Color.WHITE : + set(v): + color = v + queue_redraw() +@export var opacity : float = 1.0 : + set(v): + opacity = v + queue_redraw() +@export var fill : bool = true : + set(v): + fill = v + queue_redraw() +@export var width : int = -1 : + set(v): + width = v + queue_redraw() + + +func _init( + _radius = 0, + _color = Color.WHITE, + _opacity = 1.0, + _fill = true, + _width = -1, +): + radius = _radius + color = _color + opacity = _opacity + fill = _fill + width = _width func _draw(): draw_circle( diff --git a/entities/plants/plant_sprite.tscn b/entities/plants/plant_sprite.tscn index dc19eb3..6c2b9d5 100644 --- a/entities/plants/plant_sprite.tscn +++ b/entities/plants/plant_sprite.tscn @@ -186,6 +186,7 @@ texture = ExtResource("3_rbgiq") [node name="LifeTimeSprite" type="Sprite2D" parent="." unique_id=799762981] unique_name_in_owner = true +visible = false scale = Vector2(0.26000002, 0.26000005) texture = SubResource("ViewportTexture_rbgiq") diff --git a/entities/plants/scripts/plant_influence_zone.gd b/entities/plants/scripts/plant_influence_zone.gd index a9959c5..cb3ea4a 100644 --- a/entities/plants/scripts/plant_influence_zone.gd +++ b/entities/plants/scripts/plant_influence_zone.gd @@ -5,26 +5,26 @@ var radius : int var sprite : Circle var collision_shape : CollisionShape2D var show_influence : bool = false : - set(v): - show_influence = v - if sprite: - sprite.visible = v + set(v): + show_influence = v + if sprite: + sprite.visible = v func _init(_radius = 100): - radius = _radius + radius = _radius func _ready(): - sprite = Circle.new() - # sprite.z_index = 100 - sprite.radius = radius - sprite.fill = false - sprite.width = 1 - sprite.opacity = 0.5 - sprite.visible = show_influence - add_child(sprite) + sprite = Circle.new() + # sprite.z_index = 100 + sprite.radius = radius + sprite.fill = false + sprite.width = 1 + sprite.opacity = 0.5 + sprite.visible = show_influence + add_child(sprite) - collision_shape = CollisionShape2D.new() - var circle_shape : CircleShape2D = CircleShape2D.new() - circle_shape.radius = radius - collision_shape.shape = circle_shape - add_child(collision_shape) \ No newline at end of file + collision_shape = CollisionShape2D.new() + var circle_shape : CircleShape2D = CircleShape2D.new() + circle_shape.radius = radius + collision_shape.shape = circle_shape + add_child(collision_shape) \ No newline at end of file diff --git a/entities/plants/scripts/plant_sprite.gd b/entities/plants/scripts/plant_sprite.gd index 83e8bb1..3bb63fe 100644 --- a/entities/plants/scripts/plant_sprite.gd +++ b/entities/plants/scripts/plant_sprite.gd @@ -56,8 +56,8 @@ func start_harvest_animation(): func set_display_lifetime_sprite(d := display_lifetime_sprite): display_lifetime_sprite = d - if is_node_ready(): - %LifeTimeSprite.visible = d + # if is_node_ready(): + # %LifeTimeSprite.visible = d func set_sprite_modulate(c := sprite_modulate): sprite_modulate = c diff --git a/entities/player/inventory/scripts/item.gd b/entities/player/inventory/scripts/item.gd index 7b44170..df50b5a 100644 --- a/entities/player/inventory/scripts/item.gd +++ b/entities/player/inventory/scripts/item.gd @@ -14,6 +14,7 @@ enum ItemType {TOOL_ITEM, CONSUMABLE_ITEM} @export var type: ItemType : get = get_item_type @export var description: String : get = get_description var icon: Texture2D : get = get_icon +var pointer: Texture2D : get = get_pointer @export var usage_zone_radius: int = 5 : get = get_usage_zone_radius @export var energy_usage : int = 1 : get = get_energy_used @@ -29,6 +30,9 @@ func get_description() -> String: func get_icon() -> Texture2D: return icon +func get_pointer() -> Texture2D: + return null + func get_energy_used() -> int: return energy_usage @@ -50,6 +54,9 @@ func get_usage_object_affected(_i : Area2D) -> bool: func is_one_time_use(): return false +func snap_usage_to_grid(): + return false + func can_use(_player : Player, _zone: Player.ActionZone) -> bool: return false diff --git a/entities/player/inventory/scripts/items/detector.gd b/entities/player/inventory/scripts/items/detector.gd index a3793c7..aa78605 100644 --- a/entities/player/inventory/scripts/items/detector.gd +++ b/entities/player/inventory/scripts/items/detector.gd @@ -13,6 +13,9 @@ func get_description() -> String: func get_icon() -> Texture2D: return preload("res://common/icons/broadcast.svg") +func get_pointer() -> Texture2D: + return preload("res://gui/pointer/assets/cursors/pointer-signal.svg") + func get_energy_used() -> int: return 0 diff --git a/entities/player/inventory/scripts/items/fork.gd b/entities/player/inventory/scripts/items/fork.gd index 217c197..591a96b 100644 --- a/entities/player/inventory/scripts/items/fork.gd +++ b/entities/player/inventory/scripts/items/fork.gd @@ -12,9 +12,15 @@ func get_description() -> String: func get_icon() -> Texture2D: return preload("res://common/icons/fork.svg") +func get_pointer() -> Texture2D: + return preload("res://gui/pointer/assets/cursors/pointer-fork.svg") + func get_item_type() -> ItemType: return Item.ItemType.TOOL_ITEM +func snap_usage_to_grid(): + return true + func get_energy_used() -> int: return 1 diff --git a/entities/player/inventory/scripts/items/pickaxe.gd b/entities/player/inventory/scripts/items/pickaxe.gd index ba5f777..c954b2d 100644 --- a/entities/player/inventory/scripts/items/pickaxe.gd +++ b/entities/player/inventory/scripts/items/pickaxe.gd @@ -12,6 +12,9 @@ func get_description() -> String: func get_icon() -> Texture2D: return preload("res://common/icons/pick.svg") +func get_pointer() -> Texture2D: + return preload("res://gui/pointer/assets/cursors/pointer-dig.svg") + func get_energy_used() -> int: return 1 diff --git a/entities/player/inventory/scripts/items/seed.gd b/entities/player/inventory/scripts/items/seed.gd index 8ed7b0a..9f9cdf2 100644 --- a/entities/player/inventory/scripts/items/seed.gd +++ b/entities/player/inventory/scripts/items/seed.gd @@ -65,15 +65,21 @@ func get_icon() -> Texture2D: stored_icon = PlantTextureBuilder.build_seed_texture(plant_name.hash()) return stored_icon +func get_pointer() -> Texture2D: + return preload("res://gui/pointer/assets/cursors/pointer-seed.svg") + func get_energy_used() -> int: return 1 func get_usage_zone_radius() -> int: - return 50 + return 10 func get_usage_object_affected(i : Area2D) -> bool: return i is PlantSprite +func snap_usage_to_grid(): + return true + func use_text() -> String: return tr("PLANT_%s") % plant_name @@ -88,13 +94,12 @@ func can_use(player : Player, zone : Player.ActionZone) -> bool: var is_there_a_plant_here = false for area in zone.get_affected_areas(): - if area is PlantSprite: + if area is PlantSprite or area is TruckRecharge: is_there_a_plant_here = true - var plant_tiles = Math.get_tiles_in_circle( + var plant_tiles = [Math.get_tile_from_pos( zone.get_global_position(), - 20 - ) + )] as Array[Vector2i] return ( not is_there_a_plant_here diff --git a/entities/player/inventory/scripts/items/ship_portal.gd b/entities/player/inventory/scripts/items/ship_portal.gd index 4329214..d8795a4 100644 --- a/entities/player/inventory/scripts/items/ship_portal.gd +++ b/entities/player/inventory/scripts/items/ship_portal.gd @@ -13,6 +13,9 @@ func get_description() -> String: func get_icon() -> Texture2D: return preload("res://common/icons/rocket.svg") +func get_pointer() -> Texture2D: + return preload("res://gui/pointer/assets/cursors/pointer-ship.svg") + func get_energy_used() -> int: return 0 diff --git a/entities/player/scripts/player.gd b/entities/player/scripts/player.gd index 74f4726..e14b6a0 100644 --- a/entities/player/scripts/player.gd +++ b/entities/player/scripts/player.gd @@ -12,8 +12,7 @@ signal player_updated(player: Player) signal upgraded var terrain : Terrain -var region : Region : - get(): return terrain if terrain is Region else null +@export var region : Region var data : PlayerData var last_action_area_movement_timer : float = 100. @@ -91,11 +90,16 @@ func _process(delta): instruction.do(self) instruction = null + if instruction and instruction.need_movement: if input_direction.length() != 0: instruction = null input_direction = calculate_direction_instruction_direction() + if instruction == null and action_zone: + action_zone.destroy() + action_zone = null + velocity = input_direction * SPEED turn_animate(input_direction) @@ -286,8 +290,8 @@ func recharge(amount : int = data.max_energy): func full_recharge(): data.energy = max(data.energy, data.max_energy) -func generate_action_zone(item : Item) -> ActionZone: - var zone = ActionZone.new(item) +func generate_action_zone(item : Item, preview = true) -> ActionZone: + var zone = ActionZone.new(item, region.plant_grid, preview) if not get_parent().is_node_ready(): await get_parent().ready @@ -303,12 +307,12 @@ func setup_preview_zone(item : Item): preview_zone = null if item: - preview_zone = await generate_action_zone(item) + preview_zone = await generate_action_zone(item, true) func setup_action_zone(zone_position : Vector2, item: Item) -> ActionZone: if action_zone: action_zone.destroy() - action_zone = await generate_action_zone(item) + action_zone = await generate_action_zone(item, false) action_zone.move_to_position(zone_position) last_action_area_movement_timer = 0. return action_zone @@ -316,6 +320,7 @@ func setup_action_zone(zone_position : Vector2, item: Item) -> ActionZone: func move_preview_zone(zone_position : Vector2): if preview_zone: preview_zone.move_to_position(zone_position) + preview_zone.update_preview(self) class Instruction: @@ -414,12 +419,21 @@ class InteractableInstruction extends Instruction: interactable.interact(player) class ActionZone: + const ZONE_ACTIVATED_COLOR = Color("#96B3DB") + const ZONE_DEACTIVATED_COLOR = Color("#FF006E") + const ZONE_OPACITY = 0.6 + var item : Item = null var area : Area2D = Area2D.new() var affected_areas : Array[Area2D]= [] + var plant_grid : PlantGrid + var circle : Circle + var preview: bool - func _init(_i : Item): + func _init(_i : Item, _grid : PlantGrid, _preview = false): item = _i + plant_grid = _grid + preview = _preview if item and item.get_usage_zone_radius() > 0: area = Area2D.new() var collision_shape = CollisionShape2D.new() @@ -429,11 +443,25 @@ class ActionZone: collision_shape.shape = circle_shape area.add_child(collision_shape) + circle = Circle.new( + item.get_usage_zone_radius(), + ) + circle.fill = preview + circle.modulate.a = ZONE_OPACITY + area.add_child(circle) + circle.z_index = 100 + func clear_preview_on_affected_area(): for a in affected_areas: if a: a.affect_preview(false) + func update_preview(player : Player): + update_preview_on_affected_area() + if circle: + circle.color = ZONE_ACTIVATED_COLOR if item.can_use(player, self) else ZONE_DEACTIVATED_COLOR + + func update_preview_on_affected_area(): var detected_areas = get_affected_areas() clear_preview_on_affected_area() @@ -457,9 +485,13 @@ class ActionZone: return Vector2.ZERO if area == null else area.global_position func move_to_position(pos : Vector2): - if area: - update_preview_on_affected_area() - area.global_position = pos + if area and plant_grid: + if item and item.snap_usage_to_grid(): + area.global_position = plant_grid.get_point_for_tile( + Math.get_tile_from_pos(pos) + ) + else: + area.global_position = pos func get_tiles() -> Array[Vector2i]: return Math.get_tiles_in_circle( diff --git a/entities/player_3d/scripts/player_3d.gd b/entities/player_3d/scripts/player_3d.gd index 967eea3..8289ee3 100644 --- a/entities/player_3d/scripts/player_3d.gd +++ b/entities/player_3d/scripts/player_3d.gd @@ -39,10 +39,11 @@ func _ready(): ) func _input(event): + var sensivity = GameInfo.settings_data.mouse_sensivity / 100 if controlling_player: if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED: - rotate_y(-event.relative.x * MOUSE_SENSIVITY) - %Camera3D.rotate_x(-event.relative.y * MOUSE_SENSIVITY) + rotate_y(-event.relative.x * sensivity) + %Camera3D.rotate_x(-event.relative.y * sensivity) %Camera3D.rotation.x = clampf($Camera3D.rotation.x, -deg_to_rad(70), deg_to_rad(70)) query_mouse = true if event.is_action_pressed("action") and action_hovered and action_hovered.interactable: diff --git a/gui/menu/settings/scripts/settings.gd b/gui/menu/settings/scripts/settings.gd index 36501e4..a767eab 100644 --- a/gui/menu/settings/scripts/settings.gd +++ b/gui/menu/settings/scripts/settings.gd @@ -48,6 +48,7 @@ func setup_video(): func setup_controls(): %AutoPickupCheckBox.button_pressed = settings.auto_pickup %FovSlider.value = settings.fov + %SensibilitySlider.value = settings.mouse_sensivity func _on_language_option_button_item_selected(index: int): settings.language = SettingsData.AVAILABLE_LANGUAGES[index] @@ -77,3 +78,6 @@ func _on_auto_pickup_check_box_toggled(toggled_on: bool): func _on_fov_slider_value_changed(value): if is_node_ready(): settings.fov = value + +func _on_sensibility_slider_value_changed(value: float): + settings.mouse_sensivity = value diff --git a/gui/menu/settings/settings.tscn b/gui/menu/settings/settings.tscn index 40733c5..6ff22dc 100644 --- a/gui/menu/settings/settings.tscn +++ b/gui/menu/settings/settings.tscn @@ -23,7 +23,7 @@ script = ExtResource("1_7t8mv") [node name="SettingsWindow" parent="." unique_id=798514856 instance=ExtResource("1_gkn1k")] unique_name_in_owner = true process_mode = 3 -custom_minimum_size = Vector2(700, 600) +custom_minimum_size = Vector2(900, 634.155) layout_mode = 1 offset_left = -349.99994 offset_right = 350.00055 @@ -155,6 +155,22 @@ title = "GAME" layout_mode = 2 columns = 2 +[node name="SensibilitySliderText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/GameSettings" unique_id=1624022562 instance=ExtResource("4_rbiwc")] +layout_mode = 2 +size_flags_horizontal = 3 +text = "MOUSE_SENSIVITY" + +[node name="SensibilitySlider" type="HSlider" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/GameSettings" unique_id=1287461408] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource("2_7t8mv") +min_value = 0.01 +max_value = 0.5 +step = 0.01 +value = 0.2 + [node name="AutoPickupText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/GameSettings" unique_id=1206884739 instance=ExtResource("4_rbiwc")] layout_mode = 2 text = "AUTO_PICKUP" @@ -187,6 +203,7 @@ bus = &"Sfx" [connection signal="value_changed" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders/SFXSlider" to="." method="_on_sfx_slider_value_changed"] [connection signal="toggled" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/VideoSettings/FullScreenCheckBox" to="." method="_on_full_screen_check_box_toggled"] [connection signal="value_changed" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/VideoSettings/FovSlider" to="." method="_on_fov_slider_value_changed"] +[connection signal="value_changed" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/GameSettings/SensibilitySlider" to="." method="_on_sensibility_slider_value_changed"] [connection signal="toggled" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/GameSettings/AutoPickupCheckBox" to="." method="_on_auto_pickup_check_box_toggled"] [editable path="SettingsWindow"] diff --git a/gui/pointer/assets/cursors/pointer-action.svg b/gui/pointer/assets/cursors/pointer-action.svg new file mode 100644 index 0000000..41d8500 --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-action.svg @@ -0,0 +1,65 @@ + + diff --git a/gui/pointer/assets/cursors/pointer-action.svg.import b/gui/pointer/assets/cursors/pointer-action.svg.import new file mode 100644 index 0000000..76fe4ca --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-action.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cl3wt3tbjiep0" +path="res://.godot/imported/pointer-action.svg-7d0a608f5d92b361c052c9c646842598.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/pointer/assets/cursors/pointer-action.svg" +dest_files=["res://.godot/imported/pointer-action.svg-7d0a608f5d92b361c052c9c646842598.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/gui/pointer/assets/cursors/pointer-dig.svg b/gui/pointer/assets/cursors/pointer-dig.svg new file mode 100644 index 0000000..fc1de1a --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-dig.svg @@ -0,0 +1,68 @@ + + diff --git a/gui/pointer/assets/cursors/pointer-dig.svg.import b/gui/pointer/assets/cursors/pointer-dig.svg.import new file mode 100644 index 0000000..fbdea32 --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-dig.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bh4m4fbaxl6t4" +path="res://.godot/imported/pointer-dig.svg-ad7b43afdaf2efe42f9726c76536bc0e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/pointer/assets/cursors/pointer-dig.svg" +dest_files=["res://.godot/imported/pointer-dig.svg-ad7b43afdaf2efe42f9726c76536bc0e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/gui/pointer/assets/cursors/pointer-fork.svg b/gui/pointer/assets/cursors/pointer-fork.svg new file mode 100644 index 0000000..713bd11 --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-fork.svg @@ -0,0 +1,74 @@ + + diff --git a/gui/pointer/assets/cursors/pointer-fork.svg.import b/gui/pointer/assets/cursors/pointer-fork.svg.import new file mode 100644 index 0000000..819115c --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-fork.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1xvmctdfkyua" +path="res://.godot/imported/pointer-fork.svg-7da3179fd298523652e878610e95a15b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/pointer/assets/cursors/pointer-fork.svg" +dest_files=["res://.godot/imported/pointer-fork.svg-7da3179fd298523652e878610e95a15b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/gui/pointer/assets/cursors/pointer-seed.svg b/gui/pointer/assets/cursors/pointer-seed.svg new file mode 100644 index 0000000..88f3f22 --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-seed.svg @@ -0,0 +1,70 @@ + + diff --git a/gui/pointer/assets/cursors/pointer-seed.svg.import b/gui/pointer/assets/cursors/pointer-seed.svg.import new file mode 100644 index 0000000..14dc322 --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-seed.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7ph01vdeeoql" +path="res://.godot/imported/pointer-seed.svg-5fd492bb617059b1e1c19cc9d7b92b0c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/pointer/assets/cursors/pointer-seed.svg" +dest_files=["res://.godot/imported/pointer-seed.svg-5fd492bb617059b1e1c19cc9d7b92b0c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/gui/pointer/assets/cursors/pointer-ship.svg b/gui/pointer/assets/cursors/pointer-ship.svg new file mode 100644 index 0000000..2a92f2f --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-ship.svg @@ -0,0 +1,66 @@ + + diff --git a/gui/pointer/assets/cursors/pointer-ship.svg.import b/gui/pointer/assets/cursors/pointer-ship.svg.import new file mode 100644 index 0000000..aa25275 --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-ship.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rupmj6lgmxn7" +path="res://.godot/imported/pointer-ship.svg-3f864fc9504ac00ce18636a8c6203910.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/pointer/assets/cursors/pointer-ship.svg" +dest_files=["res://.godot/imported/pointer-ship.svg-3f864fc9504ac00ce18636a8c6203910.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/gui/pointer/assets/cursors/pointer-signal.svg b/gui/pointer/assets/cursors/pointer-signal.svg new file mode 100644 index 0000000..154cc8d --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-signal.svg @@ -0,0 +1,63 @@ + + diff --git a/gui/pointer/assets/cursors/pointer-signal.svg.import b/gui/pointer/assets/cursors/pointer-signal.svg.import new file mode 100644 index 0000000..4e48255 --- /dev/null +++ b/gui/pointer/assets/cursors/pointer-signal.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://sq5of6kpjrxj" +path="res://.godot/imported/pointer-signal.svg-f760203858e8cefeb5c8506af6f58026.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/pointer/assets/cursors/pointer-signal.svg" +dest_files=["res://.godot/imported/pointer-signal.svg-f760203858e8cefeb5c8506af6f58026.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/gui/pointer/assets/cursors/pointer.svg b/gui/pointer/assets/cursors/pointer.svg index e91a777..8f989d0 100644 --- a/gui/pointer/assets/cursors/pointer.svg +++ b/gui/pointer/assets/cursors/pointer.svg @@ -1,8 +1,8 @@ diff --git a/gui/pointer/pointer.tscn b/gui/pointer/pointer.tscn index 81cdc2b..de0fbb4 100644 --- a/gui/pointer/pointer.tscn +++ b/gui/pointer/pointer.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://vhumsfntpqcl" path="res://gui/pointer/scripts/pointer.gd" id="1_1pe2k"] [ext_resource type="Texture2D" uid="uid://bspffyprdywgc" path="res://gui/pointer/assets/cursors/pointer.svg" id="2_q4bvb"] [ext_resource type="AudioStream" uid="uid://bym03qp4n6vep" path="res://gui/pointer/assets/sounds/click.wav" id="3_kj0cm"] -[ext_resource type="Texture2D" uid="uid://b3vg3tipd4boh" path="res://common/icons/hand-finger.svg" id="3_mw4ws"] +[ext_resource type="Texture2D" uid="uid://cl3wt3tbjiep0" path="res://gui/pointer/assets/cursors/pointer-action.svg" id="3_mw4ws"] [ext_resource type="AudioStream" uid="uid://bhsew2amu3ydx" path="res://gui/pointer/assets/sounds/action_press_time.wav" id="3_tof6i"] [ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="4_b4uwv"] [ext_resource type="AudioStream" uid="uid://cs4y6sinpth8e" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_1.wav" id="4_mw4ws"] @@ -74,7 +74,7 @@ metadata/_custom_type_script = "uid://dj2pv1hiwjfv0" process_mode = 3 script = ExtResource("1_1pe2k") default_cursor = ExtResource("2_q4bvb") -hover_cursor = ExtResource("3_mw4ws") +action_cursor = ExtResource("3_mw4ws") [node name="InspectorCanvasLayer" type="CanvasLayer" parent="." unique_id=561032710] layer = 128 diff --git a/gui/pointer/scripts/pointer.gd b/gui/pointer/scripts/pointer.gd index 6d98f92..1589bf9 100644 --- a/gui/pointer/scripts/pointer.gd +++ b/gui/pointer/scripts/pointer.gd @@ -13,7 +13,7 @@ const CARD_UP_PADDING = 50 const PRESS_TIME_DRAG := 0.15 @export var default_cursor: Texture2D -@export var hover_cursor: Texture2D +@export var action_cursor: Texture2D var all_inspected: Array[Node] var inspected: Node = null @@ -54,7 +54,6 @@ func get_current_inspected() -> Node: func _ready(): Input.set_custom_mouse_cursor(default_cursor) - Input.set_custom_mouse_cursor(hover_cursor, Input.CURSOR_POINTING_HAND) %Action.visible = false func _process(delta): @@ -66,18 +65,26 @@ func _process(delta): %Inspector.position = get_viewport().get_mouse_position() - if not action_disabled and not dragging_inspected and current_selected_item and SceneManager.actual_scene.scene_id == "REGION": - %ActionZone.radius = current_selected_item.usage_zone_radius * GameInfo.settings_data.zoom - %ActionZone.color = ZONE_ACTIVATED_COLOR if can_use_item else ZONE_DEACTIVATED_COLOR - else: - %ActionZone.radius = 0 + # if not action_disabled and not dragging_inspected and current_selected_item and SceneManager.actual_scene.scene_id == "REGION": + # %ActionZone.radius = current_selected_item.usage_zone_radius * GameInfo.settings_data.zoom + # %ActionZone.color = ZONE_ACTIVATED_COLOR if can_use_item else ZONE_DEACTIVATED_COLOR + # else: + # %ActionZone.radius = 0 - %ActionZone.queue_redraw() + # %ActionZone.queue_redraw() update_card() update_inspector(get_current_inspected()) + var cursor := default_cursor + if not Pause.pause and player and not action_disabled: + if can_interact: + cursor = action_cursor + elif current_selected_item and current_selected_item.get_pointer(): + cursor = current_selected_item.get_pointer() + Input.set_custom_mouse_cursor(cursor) + if player and dragging_inspected: inspected.global_position = player.get_global_mouse_position() @@ -226,7 +233,7 @@ func update_card(): %CardVisualiser.show() -func update_inspector(current_inspected: Node): +func update_inspector(current_inspected): if current_inspected: if inspected != current_inspected: if inspected and inspected.has_method("inspect"): diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd index a6df7ed..477bc93 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd @@ -6,6 +6,7 @@ const SHIP_ICON = preload("res://common/icons/rocket.svg") const START_ICON = preload("res://common/icons/device-floppy.svg") const REGION_ICON = preload("res://common/icons/globe.svg") const DESTINATION_ICON = preload("res://common/icons/flag-2.svg") +const DANGER_ICON = preload("res://common/icons/alert-triangle.svg") const PREVIOUS_COLOR = Color("2364AAAA") const CURRENT_COLOR = Color("e29f32") @@ -54,6 +55,9 @@ func update(with_animation := true): for m_i in range(len(modifiers)): spawn_icon(modifiers[m_i].get_icon(), Vector2(i,-m_i - 1),color, 0.7) + if story_step.is_run_point_dangerous(i): + spawn_icon(DANGER_ICON, Vector2(i,-len(modifiers) - 1),color, 0.7) + spawn_icon(icon, Vector2(i,0),color) ship_icon = spawn_icon(SHIP_ICON, Vector2(current_position, 1), CURRENT_COLOR, 1) diff --git a/stages/terrain/region/region.tscn b/stages/terrain/region/region.tscn index 21614e0..ecdf8f7 100644 --- a/stages/terrain/region/region.tscn +++ b/stages/terrain/region/region.tscn @@ -21,9 +21,9 @@ [sub_resource type="Resource" id="Resource_r4e5h"] script = ExtResource("3_r4e5h") rain_value = 0.42404523 -cloud_value = 0.20464431 -wind_direction = Vector2(0.4359836, 0.8999546) -wind_force = 0.9393943 +cloud_value = 0.4445428 +wind_direction = Vector2(-0.63176113, -0.7751632) +wind_force = 0.92673165 fog_value = 0.5362279 ambiance_name = "ExteriorWindy" type = 3 @@ -190,7 +190,8 @@ layer = 3 [node name="Entities" type="Node2D" parent="." unique_id=2132324579] y_sort_enabled = true -[node name="Player" parent="Entities" unique_id=75851644 instance=ExtResource("5_ovqi1")] +[node name="Player" parent="Entities" unique_id=75851644 node_paths=PackedStringArray("region") instance=ExtResource("5_ovqi1")] +region = NodePath("../..") [node name="RechargeStation" parent="Entities" unique_id=2068738444 instance=ExtResource("7_6d8m3")] unique_name_in_owner = true diff --git a/stages/terrain/region/scripts/plant_grid.gd b/stages/terrain/region/scripts/plant_grid.gd new file mode 100644 index 0000000..0da97b0 --- /dev/null +++ b/stages/terrain/region/scripts/plant_grid.gd @@ -0,0 +1,73 @@ +extends Sprite2D +class_name PlantGrid + +const GRID_SHIFT : int = roundi(Region.TILE_SIZE / 2.) +const GRID_SIZE : int = Region.TILE_SIZE +const POINT_RADIUS : int = 5 +const POINT_COLOR : Color = Color.WHITE +const POINT_RANDOM_SHIFT = roundi(Region.TILE_SIZE / 2.) + +const REFRESH_TIME : float = 2. + +var refresh_timer : float = 0. + +var region : Region +var noise : Noise + +func _init( + _region : Region +): + region = _region + noise = FastNoiseLite.new() + noise.seed = region.data.region_seed + noise.noise_type = noise.TYPE_VALUE + + +func _process(delta): + refresh_timer += delta + if refresh_timer > REFRESH_TIME: + refresh_timer = 0 + queue_redraw() + var current_item = GameInfo.game_data.player_data.inventory.get_item() + var target_opacity = (1.) if current_item and current_item.snap_usage_to_grid() else 0. + + modulate.a = lerp( + modulate.a, + target_opacity, + 0.1) + +func _draw(): + for p in get_grid_point(): + draw_point(p) + + +func get_grid_point() -> Array[Vector2]: + var grid_points : Array[Vector2] = [] + + for x in range(-Region.CHUNK_TILE_SIZE, Region.CHUNK_TILE_SIZE * 2): + for y in range(-Region.CHUNK_TILE_SIZE, Region.CHUNK_TILE_SIZE * 2): + if ( + region.is_coords_decontaminated([Vector2(x,y)]) + and not region.is_coords_rocky([Vector2(x,y)]) + ): + grid_points.append( + get_point_for_tile(Vector2(x,y)) + ) + return grid_points + +func get_point_for_tile(tile_pos: Vector2): + return get_world_pos_for_tile(tile_pos) + get_random_shift(tile_pos) + +func get_world_pos_for_tile(tile_pos: Vector2): + return tile_pos*GRID_SIZE + Vector2.ONE * GRID_SHIFT + +func get_random_shift(pos: Vector2): + return Vector2.RIGHT.rotated(noise.get_noise_2d(pos.x*100,pos.y*100) * 2*PI) * POINT_RANDOM_SHIFT * noise.get_noise_2d(pos.x*50,pos.y*50) + + +func draw_point(pos: Vector2): + draw_circle( + pos, + POINT_RADIUS, + POINT_COLOR + ) diff --git a/stages/terrain/region/scripts/plant_grid.gd.uid b/stages/terrain/region/scripts/plant_grid.gd.uid new file mode 100644 index 0000000..39d736b --- /dev/null +++ b/stages/terrain/region/scripts/plant_grid.gd.uid @@ -0,0 +1 @@ +uid://c8l37exf4csv7 diff --git a/stages/terrain/region/scripts/region.gd b/stages/terrain/region/scripts/region.gd index 303b796..4420b96 100644 --- a/stages/terrain/region/scripts/region.gd +++ b/stages/terrain/region/scripts/region.gd @@ -45,6 +45,7 @@ var data_last_updated = 0. @onready var recharge_station : TruckRecharge = %RechargeStation @onready var camera : RegionCamera = %Camera +var plant_grid : PlantGrid # Cheat Code # func _input(_e): @@ -99,7 +100,9 @@ func _ready(): GameInfo.game_data.player_data.inventory.add_item(Pickaxe.new()) GameInfo.game_data.player_data.inventory.add_item(Fork.new()) GameInfo.game_data.player_data.inventory.add_item(ShipPortal.new()) - + + plant_grid = PlantGrid.new(self) + add_child(plant_grid) data.succeded.connect(finishing_region_animation) @@ -310,6 +313,8 @@ func is_coords_decontaminated(tiles_coords : Array[Vector2i]): var local_coord := TilesDiffData.get_local_coord(coord, chunk.chunk_coord) if not chunk.decontamination_layer.is_decontamined(local_coord): return false + else: + return false return true func is_coords_rocky(tiles_coords : Array[Vector2i]): @@ -317,7 +322,9 @@ func is_coords_rocky(tiles_coords : Array[Vector2i]): var chunk : Chunk = get_chunk_for_coord(coord) if chunk: var local_coord := TilesDiffData.get_local_coord(coord, chunk.chunk_coord) - if chunk.rock_layer.get_tile_type(local_coord) == RockLayer.TileType.ROCK: + if ( + chunk.rock_layer.get_tile_type(local_coord) == RockLayer.TileType.ROCK + or chunk.rock_layer.get_tile_type(local_coord) == RockLayer.TileType.CRISTAL): return true return false diff --git a/stages/terrain/region/scripts/region_parameter.gd b/stages/terrain/region/scripts/region_parameter.gd index ec40000..023ecf4 100644 --- a/stages/terrain/region/scripts/region_parameter.gd +++ b/stages/terrain/region/scripts/region_parameter.gd @@ -2,8 +2,8 @@ extends Resource class_name RegionParameter const DEFAULT_ROCK_THRESHOLD = 0.3 -const DEFAULT_DECONTAMINATION_THRESHOLD = 0.35 -const DEFAULT_CRISTAL_THRESHOLD = 0.1 +const DEFAULT_DECONTAMINATION_THRESHOLD = 0.1 +const DEFAULT_CRISTAL_THRESHOLD = 0.3 const DEFAULT_CHARGE = 10 const DEFAULT_TALION_CELL_CHANCE : Array[int] = [0,0,0,1,1] const DEFAULT_ENERGY_CELL_CHANCE : Array[int] = [1,2,2,2,3] diff --git a/stages/title_screen/title_screen.tscn b/stages/title_screen/title_screen.tscn index 99668a4..b0511f5 100644 --- a/stages/title_screen/title_screen.tscn +++ b/stages/title_screen/title_screen.tscn @@ -452,7 +452,6 @@ size = Vector2i(1980, 1080) [node name="Planet3d" parent="SubViewport" unique_id=926789923 instance=ExtResource("5_7a1qq")] unique_name_in_owner = true -details = 20 noise = SubResource("FastNoiseLite_lwj2x") [node name="Camera3D" type="Camera3D" parent="SubViewport" unique_id=806252928] diff --git a/translation/game/gui.csv b/translation/game/gui.csv index 90500e6..2085fe8 100644 --- a/translation/game/gui.csv +++ b/translation/game/gui.csv @@ -188,6 +188,7 @@ VIDEO,Video,Vidéo FULLSCREEN,Fullscreen,Plein écran FOV,Fov,Fov GAME,Game,Jeu +MOUSE_SENSIVITY,Mouse Sensivity in 3D scenes,Sensibilité de la souris dans les scènes en 3D AUTO_PICKUP,Auto pickup seeds,Récolte automatique des graines CONTROLS,Controls,Contrôles MOVE_RIGHT,Move right,Déplacement à droite @@ -314,7 +315,7 @@ TOXIC_MODIFIER_DESC_TEXT,Reduce all plant lifetime by 1,Réduit la durée de vie SANDY,Sandy,Sableux SANDY_MODIFIER_DESC_TEXT,Reduce plants influence radius,Réduit le rayon d'influence des plantes RADIOACTIVE,Radioactive,Radioactif -RADIOACTIVE_MODIFIER_DESC_TEXT,Reduce the plant's base plant point by 1,Réduit les points de plantes de base des plantes de 1 +RADIOACTIVE_MODIFIER_DESC_TEXT,Reduce the plant's base plant pPoint by 1,Réduit les points de plantes de base des plantes de 1 CONTAMINATED,Contaminated,Contaminée CONTAMINATED_MODIFIER_DESC_TEXT,Decrease all plants seeds production by one,Diminue la production de graine de 1 MAGNETIC,Magnetic,Magnétique