diff --git a/core/ai/agents/base/ai_base.gd b/core/ai/agents/base/ai_base.gd index 96dcc0d..5f4270a 100644 --- a/core/ai/agents/base/ai_base.gd +++ b/core/ai/agents/base/ai_base.gd @@ -2,6 +2,7 @@ extends CharacterBody3D class_name AIBase +@export_group("Movement") @export var speed: float = 4.0 var _enable_state_machine: bool = true @export var enable_state_machine: bool: @@ -11,11 +12,17 @@ var _enable_state_machine: bool = true get: return _enable_state_machine - @onready var patrol_radius_shape: CollisionShape3D = $%PatrolRadiusShape @onready var nav_agent: NavigationAgent3D = $%NavigationAgent3D @onready var state_machine: StateMachine = $%StateMachine +@export_group("Entities") +enum EntityType { HUMANOID, ANIMAL } +@export var entity_type: EntityType = EntityType.HUMANOID +@export var entity_name: String = "" +@export var allowed_biomes: Array[String] = [] +@export_range(0.0, 100.0, 0.1) var spawn_uniqueness: float = 1.0 + func _ready() -> void: randomize() diff --git a/core/ai/agents/base/ai_base.tscn b/core/ai/agents/base/ai_base.tscn index 2143094..44e4e51 100644 --- a/core/ai/agents/base/ai_base.tscn +++ b/core/ai/agents/base/ai_base.tscn @@ -14,6 +14,7 @@ radius = 20.0 [node name="AiBase" type="CharacterBody3D" unique_id=1228675528] script = ExtResource("1_4d1nn") +entity_name = "Humanoid" [node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=214482161] mesh = SubResource("CapsuleMesh_mh3lg") diff --git a/core/audio/settings/audio_option.tscn b/core/audio/settings/audio_option.tscn deleted file mode 100644 index c339962..0000000 --- a/core/audio/settings/audio_option.tscn +++ /dev/null @@ -1,14 +0,0 @@ -[gd_scene format=3 uid="uid://cescrovsjlwke"] - -[ext_resource type="Script" uid="uid://bnh1y560h55vc" path="res://core/audio/settings/audio_option.gd" id="1_orafl"] - -[node name="AudioOption" type="VBoxContainer" unique_id=1509773712] -custom_minimum_size = Vector2(300, 0) -script = ExtResource("1_orafl") - -[node name="Label" type="Label" parent="." unique_id=781845786] -layout_mode = 2 -text = "Master Volume" - -[node name="HSlider" type="HSlider" parent="." unique_id=1286896253] -layout_mode = 2 diff --git a/core/audio/settings/settings_menu.tscn b/core/audio/settings/settings_menu.tscn deleted file mode 100644 index 8143580..0000000 --- a/core/audio/settings/settings_menu.tscn +++ /dev/null @@ -1,74 +0,0 @@ -[gd_scene format=3 uid="uid://caqf471x0kttc"] - -[ext_resource type="Script" uid="uid://cvr25q1blyxg" path="res://core/audio/settings/settings_menu.gd" id="1_4lekq"] -[ext_resource type="PackedScene" uid="uid://cescrovsjlwke" path="res://core/audio/settings/audio_option.tscn" id="1_hwcco"] - -[node name="SettingsMenu" type="Control" unique_id=1639777294] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_4lekq") - -[node name="PanelContainer" type="PanelContainer" parent="." unique_id=315821242] -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -79.5 -offset_top = -110.0 -offset_right = 79.5 -offset_bottom = 110.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer" unique_id=648635784] -layout_mode = 2 -size_flags_vertical = 0 -theme_override_constants/margin_left = 12 -theme_override_constants/margin_top = 12 -theme_override_constants/margin_right = 12 -theme_override_constants/margin_bottom = 12 - -[node name="AudioOptionsContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer" unique_id=824023653] -unique_name_in_owner = true -layout_mode = 2 -theme_override_constants/separation = 12 - -[node name="MasterVolume_AudioOption" parent="PanelContainer/MarginContainer/AudioOptionsContainer" unique_id=1509773712 instance=ExtResource("1_hwcco")] -layout_mode = 2 - -[node name="HSeparator" type="HSeparator" parent="PanelContainer/MarginContainer/AudioOptionsContainer" unique_id=1053430754] -layout_mode = 2 - -[node name="MusicVolume_AudioOption" parent="PanelContainer/MarginContainer/AudioOptionsContainer" unique_id=690924616 instance=ExtResource("1_hwcco")] -layout_mode = 2 -bus_name = &"Music" -label_text = "Music Volume" - -[node name="HSeparator2" type="HSeparator" parent="PanelContainer/MarginContainer/AudioOptionsContainer" unique_id=453716295] -layout_mode = 2 - -[node name="SFXVolume_AudioOption" parent="PanelContainer/MarginContainer/AudioOptionsContainer" unique_id=2096291127 instance=ExtResource("1_hwcco")] -layout_mode = 2 -bus_name = &"SFX" -label_text = "SFX Volume" - -[node name="HSeparator3" type="HSeparator" parent="PanelContainer/MarginContainer/AudioOptionsContainer" unique_id=498553283] -layout_mode = 2 - -[node name="ResetToDefault_Button" type="Button" parent="PanelContainer/MarginContainer/AudioOptionsContainer" unique_id=720420423] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 0 -text = "Reset To Default" - -[node name="Close_Button" type="Button" parent="PanelContainer/MarginContainer/AudioOptionsContainer" unique_id=1137906684] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 0 -text = "Close" diff --git a/core/biome_generator/biome_generator.gd b/core/biome_generator/biome_generator.gd index e2d73f8..c37bbdf 100644 --- a/core/biome_generator/biome_generator.gd +++ b/core/biome_generator/biome_generator.gd @@ -1,15 +1,29 @@ extends Node3D +#constants about biome, pieces and entity spawn const CHUNK_TYPE_BIOME: int = 0 const CHUNK_TYPE_STRAIGHT_TRACK: int = 1 const CHUNK_TYPE_CURVED_TRACK: int = 2 +const ENTITY_TYPE_HUMANOID: int = 0 +const ENTITY_TYPE_ANIMAL: int = 1 +const ENTITY_SPAWN_ANY: int = 0 +const ENTITY_SPAWN_HUMANOID_ONLY: int = 1 +const ENTITY_SPAWN_ANIMAL_ONLY: int = 2 -const CHUNK_GENERATION_STEPS_PER_FRAME: int = 2 -const CHUNK_CLEANUP_STEPS_PER_FRAME: int = 4 -const LAMPPOST_WIRE_STEPS_PER_FRAME: int = 1 +const CHUNK_GENERATION_FRAME_BUDGET_USEC: int = 2000 #2 ms/frame to generate chunks +const CHUNK_CLEANUP_FRAME_BUDGET_USEC: int = 1000 #1 ms/frame per cleanup +const LAMPPOST_WIRE_FRAME_BUDGET_USEC: int = 1000 #1 ms/frame per i fili dei lampioni +#(about 4 ms o work for frame) +#Se compaiono chunk troppo lentamente davanti al treno: +#aumentare generazione a 3000 o 4000 +#Se ci sono micro-scatti: +#abbassare generazione a 1000 o 1500 +#Se i fili appaiono in ritardo: +#aumentare wire a 1500 o 2000 +#Se il cleanup causa scatti: +#abbassare cleanup a 500 const MAX_CHUNK_UNIQUENESS: int = 5 -const RAILWAY_SCENE_DIRECTORY: String = "res://tgcc/chunk/railway/scene" const RIVER_SIDE_ORDER: Array[String] = ["north", "est", "south", "west"] const RIVER_DIRECTIONS: Dictionary = { "north": Vector2(0.0, -1.0), @@ -26,10 +40,16 @@ const RIVER_NEIGHBOUR_OFFSETS: Dictionary = { @export_group("Rails") @export var rail_path: Path3D #rail path +@export var railway_pool: Resource @export_group("Biomes") @export var biome_list: Array[Biome] #list of scenes for the biome +@export_group("Entities") +@export var entity_pool: Resource +@export_range(0.0, 1.0, 0.01) var entity_spawn_probability: float = 0.6 +@export_range(0, 20, 1) var max_entities_per_chunk: int = 3 + @export_group("Grid and Area") @export var chunk_size: float = 20.0 #size of a cell; default 20 (global position is defined dividing x and z for this value) @export var eye_line: int = 3 #cells to be considerated around the train (e.g. 3 => a square of cells from -3 to 3 around train cell) @@ -46,9 +66,14 @@ var noise_generator: FastNoiseLite var altitude_generator: FastNoiseLite var wire_connections: Dictionary = {} var chunk_candidate_cache: Dictionary = {} #node cache (metadata) +var prop_candidate_cache: Dictionary = {} +var entity_candidate_cache: Dictionary = {} var pending_generation_cells: Array[Vector2i] = [] var pending_cleanup_cells: Array[Vector2i] = [] var pending_wire_cells: Array[Vector2i] = [] +var pending_generation_cursor: int = 0 +var pending_cleanup_cursor: int = 0 +var pending_wire_cursor: int = 0 var pending_wire_lookup: Dictionary = {} var rail_chunk_catalogue: Dictionary = {} #rails chunk list @@ -73,6 +98,7 @@ func _ready() -> void: #fill cache with available chunk _warm_chunk_candidate_cache() + _warm_entity_candidate_cache() _warm_rail_chunk_catalogue() #set unique pieces _update_set_pieces() @@ -89,7 +115,7 @@ func _update_set_pieces() -> void: var local_biome = "" if manual_biome != null: - local_biome = manual_biome.nome + local_biome = manual_biome.name else: var grid_x = roundi(sp.global_position.x / chunk_size) var grid_z = roundi(sp.global_position.z / chunk_size) @@ -107,6 +133,7 @@ func _update_set_pieces() -> void: func _destroy_and_regenrate_world() -> void: _warm_chunk_candidate_cache() + _warm_entity_candidate_cache() _clear_pending_world_work() #Turn off old temples @@ -115,7 +142,7 @@ func _destroy_and_regenrate_world() -> void: #Destroy all models for pos in board.keys(): var cella = board[pos] - if cella["type"] != "obstacle": + if not _is_persistent_obstacle(cella): if cella.has("node") and is_instance_valid(cella["node"]): cella["node"].queue_free() @@ -131,7 +158,7 @@ func _destroy_and_regenrate_world() -> void: _refresh_world(current_pos) func _process(_delta: float) -> void: - #based on constant values the queue are evalutated by frame and not all together + #based on time budgets the queues are evaluated by frame and not all together _drain_cleanup_queue() _drain_generation_queue() _drain_wire_queue() @@ -166,6 +193,24 @@ func collect_all_propinfo(root: Node, list: Array[Node]) -> void: for child in root.get_children(): collect_all_propinfo(child, list) +func collect_all_entityinfo(root: Node, list: Array[Node]) -> void: + if root == null: return + + if "entity_type" in root: + list.append(root) + + for child in root.get_children(): + collect_all_entityinfo(child, list) + +func collect_all_entity_spawn_points(root: Node, list: Array[Node]) -> void: + if root == null: return + + if "allowed_type" in root or root.is_in_group("entity_spawn_point"): + list.append(root) + + for child in root.get_children(): + collect_all_entity_spawn_points(child, list) + func _warm_chunk_candidate_cache() -> void: var unique_scenes: Dictionary = {} @@ -186,27 +231,30 @@ func _warm_chunk_candidate_cache() -> void: for scene in unique_scenes.values(): _get_chunk_scene_metadata(scene) -func _warm_rail_chunk_catalogue() -> void: - rail_chunk_catalogue.clear() - - var directory := DirAccess.open(RAILWAY_SCENE_DIRECTORY) - if directory == null: +func _warm_entity_candidate_cache() -> void: + entity_candidate_cache.clear() + if entity_pool == null or not "available_entities" in entity_pool: return - directory.list_dir_begin() - var file_name := directory.get_next() - while file_name != "": - if not directory.current_is_dir() and file_name.ends_with(".tscn"): - var scene_path := "%s/%s" % [RAILWAY_SCENE_DIRECTORY, file_name] - var scene := load(scene_path) as PackedScene - if scene != null: - var chunk_type = _get_chunk_type_from_scene(scene) - if chunk_type == CHUNK_TYPE_STRAIGHT_TRACK or chunk_type == CHUNK_TYPE_CURVED_TRACK: - if not rail_chunk_catalogue.has(chunk_type): - rail_chunk_catalogue[chunk_type] = [] - rail_chunk_catalogue[chunk_type].append(scene) - file_name = directory.get_next() - directory.list_dir_end() + for scene in entity_pool.available_entities: + if scene == null: + continue + _get_entity_scene_metadata(scene) + +func _warm_rail_chunk_catalogue() -> void: + rail_chunk_catalogue.clear() + if railway_pool == null or not "available_railways" in railway_pool: + return + + for scene in railway_pool.available_railways: + if scene == null: + continue + + var chunk_type = _get_chunk_type_from_scene(scene) + if chunk_type == CHUNK_TYPE_STRAIGHT_TRACK or chunk_type == CHUNK_TYPE_CURVED_TRACK: + if not rail_chunk_catalogue.has(chunk_type): + rail_chunk_catalogue[chunk_type] = [] + rail_chunk_catalogue[chunk_type].append(scene) func _get_chunk_scene_cache_key(scene: PackedScene) -> String: if scene == null: @@ -282,6 +330,9 @@ func _clear_pending_world_work() -> void: pending_generation_cells.clear() pending_cleanup_cells.clear() pending_wire_cells.clear() + pending_generation_cursor = 0 + pending_cleanup_cursor = 0 + pending_wire_cursor = 0 pending_wire_lookup.clear() func _collect_replaceable_rail_chunks(root: Node, result: Array[Node3D]) -> void: @@ -290,7 +341,7 @@ func _collect_replaceable_rail_chunks(root: Node, result: Array[Node3D]) -> void if root is Node3D: var node_3d := root as Node3D - if node_3d.scene_file_path.begins_with(RAILWAY_SCENE_DIRECTORY): + if _is_railway_scene_registered(node_3d.scene_file_path): var info_list: Array[Node] = [] collect_all_chunkinfo(node_3d, info_list) var info_node = info_list[0] if info_list.size() > 0 else null @@ -303,6 +354,17 @@ func _collect_replaceable_rail_chunks(root: Node, result: Array[Node3D]) -> void for child in root.get_children(): _collect_replaceable_rail_chunks(child, result) +func _is_railway_scene_registered(scene_path: String) -> bool: + if scene_path == "": + return false + + for candidates in rail_chunk_catalogue.values(): + for candidate in candidates: + var scene := candidate as PackedScene + if scene != null and scene.resource_path == scene_path: + return true + return false + func _pick_replacement_rail_scene(chunk_type: int, current_scene_path: String) -> PackedScene: var candidates: Array = rail_chunk_catalogue.get(chunk_type, []) if candidates.is_empty(): @@ -349,6 +411,8 @@ func _replace_rail_chunk_instance(chunk_root: Node3D) -> bool: chunk_root.queue_free() return true +#rebuild the scene catalogue from railway_pool, +#than serach on the current scene which chunks can be changed and for each one chose a new scene (the same kind) func _refresh_rail_chunks() -> void: print("update rail chunks") _warm_rail_chunk_catalogue() @@ -376,8 +440,12 @@ func _refresh_world(center: Vector2i) -> void: _rebuild_generation_queue(center) _rebuild_cleanup_queue(center) +#check cells around the train by rings: +#first the center, then borders with distance = 1, the distance = 2 and so to eye_line. +#Use maxi(abs(x), abs(z)) to know the border of the ring. Cells closest to the train have more priority func _rebuild_generation_queue(center: Vector2i) -> void: pending_generation_cells.clear() + pending_generation_cursor = 0 for radius in range(eye_line + 1): for x in range(-radius, radius + 1): @@ -390,13 +458,17 @@ func _rebuild_generation_queue(center: Vector2i) -> void: continue pending_generation_cells.append(grid_pos) +#For each cells add to cleanup queue the cells too far +#Use eye_line plus a margin value to hide chunks not instantly when go out of the eye line +#Persistent obstacle cells are not deleted (rails or set_pieces) func _rebuild_cleanup_queue(center: Vector2i) -> void: pending_cleanup_cells.clear() + pending_cleanup_cursor = 0 var safe_margin = 2 for grid_pos in board.keys(): var cell = board[grid_pos] - if cell["type"] == "obstacle": + if _is_persistent_obstacle(cell): continue var dist_x = abs(grid_pos.x - center.x) @@ -404,10 +476,16 @@ func _rebuild_cleanup_queue(center: Vector2i) -> void: if dist_x > eye_line + safe_margin or dist_z > eye_line + safe_margin: pending_cleanup_cells.append(grid_pos) +#Check if a queue can continue to work based on time budget setted +func _queue_has_frame_budget(start_usec: int, budget_usec: int, processed: int) -> bool: + return processed == 0 or Time.get_ticks_usec() - start_usec < budget_usec + func _drain_generation_queue() -> void: - var processed = 0 - while processed < CHUNK_GENERATION_STEPS_PER_FRAME and not pending_generation_cells.is_empty(): - var grid_pos = pending_generation_cells.pop_front() + var processed: int = 0 + var start_usec: int = Time.get_ticks_usec() + while pending_generation_cursor < pending_generation_cells.size() and _queue_has_frame_budget(start_usec, CHUNK_GENERATION_FRAME_BUDGET_USEC, processed): + var grid_pos: Vector2i = pending_generation_cells[pending_generation_cursor] + pending_generation_cursor += 1 if board.has(grid_pos): continue @@ -416,15 +494,21 @@ func _drain_generation_queue() -> void: _add_compatible_biome(grid_pos) processed += 1 + if pending_generation_cursor >= pending_generation_cells.size(): + pending_generation_cells.clear() + pending_generation_cursor = 0 + func _drain_cleanup_queue() -> void: - var processed = 0 - while processed < CHUNK_CLEANUP_STEPS_PER_FRAME and not pending_cleanup_cells.is_empty(): - var grid_pos = pending_cleanup_cells.pop_front() + var processed: int = 0 + var start_usec: int = Time.get_ticks_usec() + while pending_cleanup_cursor < pending_cleanup_cells.size() and _queue_has_frame_budget(start_usec, CHUNK_CLEANUP_FRAME_BUDGET_USEC, processed): + var grid_pos: Vector2i = pending_cleanup_cells[pending_cleanup_cursor] + pending_cleanup_cursor += 1 if not board.has(grid_pos): continue var cell = board[grid_pos] - if cell["type"] == "obstacle": + if _is_persistent_obstacle(cell): continue if cell.has("node") and is_instance_valid(cell["node"]): @@ -432,6 +516,10 @@ func _drain_cleanup_queue() -> void: board.erase(grid_pos) processed += 1 + if pending_cleanup_cursor >= pending_cleanup_cells.size(): + pending_cleanup_cells.clear() + pending_cleanup_cursor = 0 + func _queue_lamppost_wire_connection(grid_pos: Vector2i) -> void: if pending_wire_lookup.has(grid_pos): return @@ -439,9 +527,11 @@ func _queue_lamppost_wire_connection(grid_pos: Vector2i) -> void: pending_wire_cells.append(grid_pos) func _drain_wire_queue() -> void: - var processed = 0 - while processed < LAMPPOST_WIRE_STEPS_PER_FRAME and not pending_wire_cells.is_empty(): - var grid_pos = pending_wire_cells.pop_front() + var processed: int = 0 + var start_usec: int = Time.get_ticks_usec() + while pending_wire_cursor < pending_wire_cells.size() and _queue_has_frame_budget(start_usec, LAMPPOST_WIRE_FRAME_BUDGET_USEC, processed): + var grid_pos: Vector2i = pending_wire_cells[pending_wire_cursor] + pending_wire_cursor += 1 pending_wire_lookup.erase(grid_pos) if not board.has(grid_pos): @@ -452,6 +542,10 @@ func _drain_wire_queue() -> void: _connect_lamppost_wires(grid_pos) processed += 1 + if pending_wire_cursor >= pending_wire_cells.size(): + pending_wire_cells.clear() + pending_wire_cursor = 0 + func _generate_pieces_around_train(center: Vector2i) -> void: for x in range(-eye_line, eye_line + 1): for z in range(-eye_line, eye_line + 1): @@ -462,6 +556,8 @@ func _generate_pieces_around_train(center: Vector2i) -> void: if not ce_obstacle: _add_compatible_biome(grid_pos) +#Decice which catalogue of chunks use for a cell. If manual_biome is set use always it +#Otherwise read noise_generator.get_noise_2d to give an index for biome_list func _choose_catalogue_by_cell(grid_pos: Vector2i) -> Array[PackedScene]: if manual_biome != null: return manual_biome.available_chunks @@ -471,6 +567,13 @@ func _choose_catalogue_by_cell(grid_pos: Vector2i) -> Array[PackedScene]: var indice = clamp(int(normalized_value * biome_list.size()), 0, biome_list.size() - 1) return biome_list[indice].available_chunks +func _choose_biome_name_by_cell(grid_pos: Vector2i) -> String: + if manual_biome != null: + return manual_biome.name + + var value = noise_generator.get_noise_2d(grid_pos.x, grid_pos.y) + return _get_procedural_biome_name(value) + func _get_procedural_biome_name(value: float) -> String: if manual_biome != null: return manual_biome.name @@ -484,6 +587,14 @@ func _get_chunk_uniqueness_from_info(info_node: Node) -> int: return clampi(info_node.uniqueness, 0, MAX_CHUNK_UNIQUENESS) return 0 +func _get_prop_uniqueness_from_info(info_node: Node) -> int: + if info_node != null and "uniqueness" in info_node: + return clampi(info_node.uniqueness, 0, MAX_CHUNK_UNIQUENESS) + return -1 + +func _is_persistent_obstacle(cell: Dictionary) -> bool: + return cell.get("type", "") == "obstacle" and cell.get("persistent", true) + func _has_nearby_unique_chunk(grid_pos: Vector2i, uniqueness: int) -> bool: if uniqueness <= 0: return false @@ -527,6 +638,96 @@ func _pick_backup_scene(zone_catalogue: Array[PackedScene], grid_pos: Vector2i) return scene return zone_catalogue[0] +func _get_prop_scene_cache_key(scene: PackedScene) -> String: + if scene == null: + return "" + if scene.resource_path != "": + return scene.resource_path + return "prop_scene_%s" % scene.get_instance_id() + +func _get_entity_scene_cache_key(scene: PackedScene) -> String: + if scene == null: + return "" + if scene.resource_path != "": + return scene.resource_path + return "entity_scene_%s" % scene.get_instance_id() + +func _get_entity_scene_metadata(scene: PackedScene) -> Dictionary: + if scene == null: + return {} + + var key = _get_entity_scene_cache_key(scene) + if entity_candidate_cache.has(key): + return entity_candidate_cache[key] + + var preview_entity = scene.instantiate() + var entity_info_list: Array[Node] = [] + collect_all_entityinfo(preview_entity, entity_info_list) + var info_node = entity_info_list[0] if entity_info_list.size() > 0 else null + + if info_node == null: + preview_entity.queue_free() + entity_candidate_cache[key] = {} + return {} + + var metadata = { + "type": info_node.entity_type, + "name": info_node.entity_name if "entity_name" in info_node else "", + "allowed_biomes": info_node.allowed_biomes.duplicate() if "allowed_biomes" in info_node else [], + "weight": maxf(info_node.spawn_uniqueness if "spawn_uniqueness" in info_node else 1.0, 0.0001) + } + preview_entity.queue_free() + entity_candidate_cache[key] = metadata + return metadata + +func _get_prop_scene_uniqueness(scene: PackedScene) -> int: + if scene == null: + return -1 + + var key = _get_prop_scene_cache_key(scene) + if prop_candidate_cache.has(key): + return prop_candidate_cache[key] + + var preview_prop = scene.instantiate() + var uniqueness = _get_prop_uniqueness_from_info(preview_prop) + if uniqueness == -1: + var prop_info_list: Array[Node] = [] + collect_all_propinfo(preview_prop, prop_info_list) + if not prop_info_list.is_empty(): + uniqueness = _get_prop_uniqueness_from_info(prop_info_list[0]) + preview_prop.queue_free() + + prop_candidate_cache[key] = uniqueness + return uniqueness + +func _get_marker_prop_uniqueness(marker: Node) -> int: + var uniqueness = _get_prop_uniqueness_from_info(marker) + if uniqueness == -1: + return 0 + return uniqueness + +func _pick_weighted_prop_scene(marker: Node) -> PackedScene: + var candidates = [] + var fallback_uniqueness = _get_marker_prop_uniqueness(marker) + + for prop_scene in marker.available_props: + if prop_scene == null: + continue + + var uniqueness = _get_prop_scene_uniqueness(prop_scene) + if uniqueness == -1: + uniqueness = fallback_uniqueness + + candidates.append({ + "scene": prop_scene, + "weight": _get_uniqueness_pick_weight(uniqueness), + "uniqueness": uniqueness + }) + + if candidates.is_empty(): + return null + return _pick_weighted_candidate(candidates).scene + func _spawn_props_for_chunk(root: Node) -> void: var prop_markers: Array[Node] = [] collect_all_propinfo(root, prop_markers) @@ -538,7 +739,7 @@ func _spawn_prop_for_marker(marker: Node) -> void: if marker.available_props.is_empty(): return - var prop_scene = marker.available_props.pick_random() + var prop_scene = _pick_weighted_prop_scene(marker) if prop_scene == null: return @@ -551,6 +752,92 @@ func _spawn_prop_for_marker(marker: Node) -> void: marker.add_child(prop_node) prop_node.transform = Transform3D.IDENTITY +func _spawn_entities_for_chunk(root: Node, biome_name: String) -> void: + if entity_pool == null or not "available_entities" in entity_pool: + return + if entity_pool.available_entities.is_empty(): + return + if entity_spawn_probability <= 0.0 or max_entities_per_chunk <= 0: + return + if entity_candidate_cache.is_empty(): + _warm_entity_candidate_cache() + + var spawn_points: Array[Node] = [] + collect_all_entity_spawn_points(root, spawn_points) + if spawn_points.is_empty(): + return + + spawn_points.shuffle() + var spawned_count: int = 0 + for spawn_point in spawn_points: + if spawned_count >= max_entities_per_chunk: + break + + var point_node = spawn_point as Node3D + if point_node == null: + continue + + var spawn_chance = entity_spawn_probability + if "spawn_chance" in spawn_point: + spawn_chance *= spawn_point.spawn_chance + if randf() > spawn_chance: + continue + + var entity_scene = _pick_compatible_entity(biome_name, _get_spawn_point_type_filter(spawn_point)) + if entity_scene == null: + continue + + var entity_instance = entity_scene.instantiate() + var entity_node = entity_instance as Node3D + if entity_node == null: + entity_instance.queue_free() + continue + + root.add_child(entity_node) + entity_node.global_transform = point_node.global_transform + if "random_y_rotation" in spawn_point and spawn_point.random_y_rotation: + entity_node.rotate_y(randf() * TAU) + spawned_count += 1 + +func _get_spawn_point_type_filter(spawn_point: Node) -> int: + if "allowed_type" in spawn_point: + match spawn_point.allowed_type: + ENTITY_SPAWN_HUMANOID_ONLY: + return ENTITY_TYPE_HUMANOID + ENTITY_SPAWN_ANIMAL_ONLY: + return ENTITY_TYPE_ANIMAL + return -1 + +func _pick_compatible_entity(biome_name: String, type_filter: int) -> PackedScene: + if entity_pool == null or not "available_entities" in entity_pool: + return null + + var candidates = [] + for entity_scene in entity_pool.available_entities: + if entity_scene == null: + continue + + var metadata = _get_entity_scene_metadata(entity_scene) + if metadata.is_empty(): + continue + if type_filter != -1 and int(metadata["type"]) != type_filter: + continue + + var allowed_biomes: Array = metadata.get("allowed_biomes", []) + if not allowed_biomes.is_empty() and not allowed_biomes.has(biome_name): + continue + + candidates.append({ + "scene": entity_scene, + "weight": float(metadata.get("weight", 1.0)) + }) + + if candidates.is_empty(): + return null + return _pick_weighted_candidate(candidates).scene + +#Using a vertical raycast from the top to the bottom at the center of the cell +#If there is a collision search for a new chunk node func _register_cell_with_ray(grid_pos: Vector2i) -> bool: if board.has(grid_pos): return true @@ -623,7 +910,8 @@ func _register_cell_with_ray(grid_pos: Vector2i) -> bool: "node": root_chunk, "info": right_info_node, "have_lamppost": have_lamppost, - "uniqueness": uniqueness + "uniqueness": uniqueness, + "persistent": true } if have_lamppost: @@ -632,6 +920,11 @@ func _register_cell_with_ray(grid_pos: Vector2i) -> bool: return true return false +#For the cell to fill check the contrains for the four neighbors: +#If the neighbor at north have and exit on south then new chunk should have exit to north (the same for east and ovest) +#Contrains: 1 -> connection is mandatory; 0 -> no connection; -1 -> no contrain because there is no neighbor or it already exits +#When generator know the contrains take all chunks and try all different rotations +#A candidate is valid only if all contrains are correct func _add_compatible_biome(grid_pos: Vector2i) -> void: var req_conn_north = _needed_connection(grid_pos + Vector2i(0, -1), "south") var req_conn_est = _needed_connection(grid_pos + Vector2i(1, 0), "west") @@ -651,6 +944,7 @@ func _add_compatible_biome(grid_pos: Vector2i) -> void: var height_target = clamp(roundi((height_noise + 1.0) / 2.0), 0, 1) var zone_catalogue = _choose_catalogue_by_cell(grid_pos) + var biome_name = _choose_biome_name_by_cell(grid_pos) var valid_candidates = [] for scene in zone_catalogue: @@ -719,6 +1013,7 @@ func _add_compatible_biome(grid_pos: Vector2i) -> void: new_chunk.rotation.y = choise.rotation * (-PI / 2.0) add_child(new_chunk) _spawn_props_for_chunk(new_chunk) + _spawn_entities_for_chunk(new_chunk, biome_name) var info_new = _get_cached_chunk_info(new_chunk, choise.scene) @@ -730,7 +1025,7 @@ func _add_compatible_biome(grid_pos: Vector2i) -> void: _apply_river_flow_direction(new_chunk, river_flow_direction) board[grid_pos] = { - "type": "bioma", + "type": "biome", "exit": choise.data["connections"], "river_exit": choise.data["river_connections"], "river_flow_direction": river_flow_direction, @@ -750,6 +1045,7 @@ func _add_compatible_biome(grid_pos: Vector2i) -> void: backup.position = Vector3(grid_pos.x * chunk_size, 0, grid_pos.y * chunk_size) add_child(backup) _spawn_props_for_chunk(backup) + _spawn_entities_for_chunk(backup, biome_name) var info_backup = _get_cached_chunk_info(backup, backup_scene) var backup_uniqueness = _get_chunk_uniqueness_from_info(info_backup) @@ -772,6 +1068,8 @@ func _add_compatible_biome(grid_pos: Vector2i) -> void: "uniqueness": backup_uniqueness } +#Check if a neighbors have a river direction: if yes try to continue it, +#otherwise create a direction based on connections func _calculate_river_flow_direction(grid_pos: Vector2i, river_connections: Dictionary) -> Vector2: var connected_sides: Array[String] = [] for side in RIVER_SIDE_ORDER: @@ -957,37 +1255,6 @@ func _connect_lamppost_wires(new_board_pos: Vector2i) -> void: p_sx_your_best = closest_sx[i_t] p_dx_your_best = closest_dx[i_t] - if best_closest_to_root == null: - for x in range(-ray_research, ray_research + 1): - for z in range(-ray_research, ray_research + 1): - if x == 0 and z == 0: continue - - var closest_pos = new_board_pos + Vector2i(x, z) - if board.has(closest_pos) and board[closest_pos].get("have_lamppost", false): - var closest_root = board[closest_pos]["node"] - var closest_info = board[closest_pos]["info"] - - if not is_instance_valid(closest_root) or closest_root == new_root or closest_info == null: continue - - if closest_info is Node3D: closest_info.force_update_transform() - var closest_sx = _get_lampposts(closest_info, "sx") - var closest_dx = _get_lampposts(closest_info, "dx") - if closest_sx.is_empty() or closest_dx.is_empty(): continue - - for i_m in range(new_sx.size()): - for i_t in range(closest_sx.size()): - var c_mio = (new_sx[i_m].global_position + new_dx[i_m].global_position) / 2.0 - var c_tuo = (closest_sx[i_t].global_position + closest_dx[i_t].global_position) / 2.0 - var dist = c_mio.distance_to(c_tuo) - - if dist < best_distance: - best_distance = dist - best_closest_to_root = closest_root - p_sx_my_best = new_sx[i_m] - p_dx_my_best = new_dx[i_m] - p_sx_your_best = closest_sx[i_t] - p_dx_your_best = closest_dx[i_t] - var max_dist = chunk_size * lamppost_dist_factor if best_closest_to_root != null and best_distance < max_dist: @@ -1006,7 +1273,7 @@ func _connect_lamppost_wires(new_board_pos: Vector2i) -> void: if not wire_connections.has(closest_id): wire_connections[closest_id] = 0 wire_connections[closest_id] += 1 -#draw lamppost +#draw lamppost wires func _draw_parable(p1: Vector3, p2: Vector3, parent: Node3D) -> void: var segments = 15 var lowering = 1.5 diff --git a/core/biome_generator/biome_generator.tscn b/core/biome_generator/biome_generator.tscn index 267bbf9..ce5aa73 100644 --- a/core/biome_generator/biome_generator.tscn +++ b/core/biome_generator/biome_generator.tscn @@ -2,7 +2,9 @@ [ext_resource type="Script" uid="uid://ct2k25kslaxe5" path="res://core/biome_generator/biome_generator.gd" id="1_c7ilo"] [ext_resource type="Material" uid="uid://b8p1sjxisi522" path="res://core/biome_generator/wires.tres" id="2_w42pm"] +[ext_resource type="Resource" path="res://core/biome_generator/railway_pool.tres" id="3_railway_pool"] [node name="biome_generator" type="Node3D" unique_id=1861369341] script = ExtResource("1_c7ilo") +railway_pool = ExtResource("3_railway_pool") lamppost_wire_material = ExtResource("2_w42pm") diff --git a/core/biome_generator/entities_pool.tres b/core/biome_generator/entities_pool.tres new file mode 100644 index 0000000..c3c54ea --- /dev/null +++ b/core/biome_generator/entities_pool.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="EntityPool" format=3 uid="uid://cmd6s6thq4f7r"] + +[ext_resource type="PackedScene" uid="uid://clx701xdwelgx" path="res://core/ai/agents/base/ai_base.tscn" id="1_0kfj8"] +[ext_resource type="Script" uid="uid://53ryr0fsqiq7" path="res://core/biome_generator/entity_pool.gd" id="1_vccp2"] + +[resource] +script = ExtResource("1_vccp2") +name = "Entity Pool" +available_entities = Array[PackedScene]([ExtResource("1_0kfj8")]) diff --git a/core/biome_generator/entity_pool.gd b/core/biome_generator/entity_pool.gd new file mode 100644 index 0000000..48b8d0c --- /dev/null +++ b/core/biome_generator/entity_pool.gd @@ -0,0 +1,5 @@ +extends Resource +class_name EntityPool + +@export var name: String = "New Entity Pool" +@export var available_entities: Array[PackedScene] = [] diff --git a/core/biome_generator/entity_pool.gd.uid b/core/biome_generator/entity_pool.gd.uid new file mode 100644 index 0000000..9e5b666 --- /dev/null +++ b/core/biome_generator/entity_pool.gd.uid @@ -0,0 +1 @@ +uid://53ryr0fsqiq7 diff --git a/core/biome_generator/entity_spawn_point.gd b/core/biome_generator/entity_spawn_point.gd new file mode 100644 index 0000000..d771a88 --- /dev/null +++ b/core/biome_generator/entity_spawn_point.gd @@ -0,0 +1,8 @@ +extends Marker3D +class_name EntitySpawnPoint + +enum AllowedType { ANY, HUMANOID_ONLY, ANIMAL_ONLY } + +@export var allowed_type: AllowedType = AllowedType.ANY +@export_range(0.0, 1.0, 0.01) var spawn_chance: float = 1.0 +@export var random_y_rotation: bool = true diff --git a/core/biome_generator/entity_spawn_point.gd.uid b/core/biome_generator/entity_spawn_point.gd.uid new file mode 100644 index 0000000..c323fdf --- /dev/null +++ b/core/biome_generator/entity_spawn_point.gd.uid @@ -0,0 +1 @@ +uid://c5ercbqy7srx3 diff --git a/core/biome_generator/prop_info.gd b/core/biome_generator/prop_info.gd index a6d033a..72e2962 100644 --- a/core/biome_generator/prop_info.gd +++ b/core/biome_generator/prop_info.gd @@ -2,3 +2,4 @@ extends Marker3D class_name PropInfo @export var available_props: Array[PackedScene] +@export_range(0, 5, 1) var uniqueness: int = 0 #0=common; 5=unique diff --git a/core/biome_generator/railway_pool.gd b/core/biome_generator/railway_pool.gd new file mode 100644 index 0000000..75ab6dd --- /dev/null +++ b/core/biome_generator/railway_pool.gd @@ -0,0 +1,5 @@ +extends Resource +class_name RailwayPool + +@export var name: String = "New Railway Pool" +@export var available_railways: Array[PackedScene] = [] diff --git a/core/biome_generator/railway_pool.gd.uid b/core/biome_generator/railway_pool.gd.uid new file mode 100644 index 0000000..e542040 --- /dev/null +++ b/core/biome_generator/railway_pool.gd.uid @@ -0,0 +1 @@ +uid://c374rv220mvh1 diff --git a/core/biome_generator/railway_pool.tres b/core/biome_generator/railway_pool.tres new file mode 100644 index 0000000..965e1e1 --- /dev/null +++ b/core/biome_generator/railway_pool.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="RailwayPool" format=3 uid="uid://nrm040srfjwo"] + +[ext_resource type="PackedScene" uid="uid://cl2ast2tk7ifw" path="res://tgcc/chunk/railway/scene/chunk_railway_curve.tscn" id="1_86h1y"] +[ext_resource type="PackedScene" uid="uid://85l80b6jcdhr" path="res://tgcc/chunk/railway/scene/chunk_railway_curve_2.tscn" id="2_r0882"] +[ext_resource type="PackedScene" uid="uid://cewdxvcpqb53f" path="res://tgcc/chunk/railway/scene/chunk_railway_station_doubleside.tscn" id="3_3auto"] +[ext_resource type="PackedScene" uid="uid://d3pcshw2bioic" path="res://tgcc/chunk/railway/scene/chunk_railway_station_oneside.tscn" id="4_i1umq"] +[ext_resource type="PackedScene" uid="uid://bqxpqhla2kogq" path="res://tgcc/chunk/railway/scene/chunk_railway_straight.tscn" id="5_x44at"] +[ext_resource type="PackedScene" uid="uid://c3ub6rj0tlt6q" path="res://tgcc/chunk/railway/scene/chunk_railway_straight_2.tscn" id="6_vrrkw"] +[ext_resource type="PackedScene" uid="uid://cqevecsd1cm1v" path="res://tgcc/chunk/railway/scene/chunk_railway_straight_3.tscn" id="7_l17bw"] +[ext_resource type="PackedScene" uid="uid://f53hfrjaxkwa" path="res://tgcc/chunk/railway/scene/chunk_railway_straight_bridge.tscn" id="8_qcl5o"] +[ext_resource type="Script" uid="uid://c374rv220mvh1" path="res://core/biome_generator/railway_pool.gd" id="9_8tdc7"] + +[resource] +script = ExtResource("9_8tdc7") +name = "Railway Pool" +available_railways = Array[PackedScene]([ExtResource("1_86h1y"), ExtResource("2_r0882"), ExtResource("3_3auto"), ExtResource("4_i1umq"), ExtResource("5_x44at"), ExtResource("6_vrrkw"), ExtResource("7_l17bw"), ExtResource("8_qcl5o")]) diff --git a/core/game_menu/arrow_button.gd b/core/game_menu/arrow_button.gd new file mode 100644 index 0000000..ee19c1f --- /dev/null +++ b/core/game_menu/arrow_button.gd @@ -0,0 +1,29 @@ +@tool +extends Control + +class_name ArrowButton + +signal on_pressed + +@export var image: Texture: + set(value): + image = value + if is_inside_tree() and has_node("%Texture"): + $%Texture.texture = image + +@export var flip_h: bool = false: + set(value): + flip_h = value + if is_inside_tree() and has_node("%Texture"): + if $%Texture != null: + $%Texture.flip_h = flip_h + +func _ready(): + if image != null and has_node("%Texture"): + $%Texture.texture = image + $%Texture.flip_h = flip_h + + +func _on_gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + on_pressed.emit() diff --git a/core/game_menu/arrow_button.gd.uid b/core/game_menu/arrow_button.gd.uid new file mode 100644 index 0000000..4d6b684 --- /dev/null +++ b/core/game_menu/arrow_button.gd.uid @@ -0,0 +1 @@ +uid://3uxuhvua1036 diff --git a/core/game_menu/arrow_button.tscn b/core/game_menu/arrow_button.tscn new file mode 100644 index 0000000..cb46358 --- /dev/null +++ b/core/game_menu/arrow_button.tscn @@ -0,0 +1,38 @@ +[gd_scene format=3 uid="uid://dm3skv22c60tm"] + +[ext_resource type="Texture2D" uid="uid://cm7fok7lhrano" path="res://core/game_menu/assets/page_1/freccetta.png" id="1_vbu0v"] +[ext_resource type="Script" uid="uid://3uxuhvua1036" path="res://core/game_menu/arrow_button.gd" id="2_xq7pl"] +[ext_resource type="PackedScene" uid="uid://dxun0jk5t0n6" path="res://core/game_menu/hoover_tween.tscn" id="3_hu4cn"] + +[node name="ArrowButton" type="Control" unique_id=1696751730] +custom_minimum_size = Vector2(101, 124) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset = Vector2(0.5, 0.5) +script = ExtResource("2_xq7pl") +image = ExtResource("1_vbu0v") + +[node name="Texture" type="TextureRect" parent="." unique_id=91599097] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.47369793 +anchor_top = 0.4425926 +anchor_right = 0.5263021 +anchor_bottom = 0.5574074 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 2 +texture = ExtResource("1_vbu0v") +metadata/_edit_use_anchors_ = true + +[node name="HooverTween" parent="." unique_id=2115829120 node_paths=PackedStringArray("detector_node", "visual_node") instance=ExtResource("3_hu4cn")] +detector_node = NodePath("..") +visual_node = NodePath("../Texture") + +[connection signal="gui_input" from="." to="." method="_on_gui_input"] diff --git a/core/game_menu/assets/page_1/chooseyourbiome_text.png b/core/game_menu/assets/page_1/chooseyourbiome_text.png new file mode 100644 index 0000000..203038d Binary files /dev/null and b/core/game_menu/assets/page_1/chooseyourbiome_text.png differ diff --git a/core/game_menu/assets/page_1/chooseyourbiome_text.png.import b/core/game_menu/assets/page_1/chooseyourbiome_text.png.import new file mode 100644 index 0000000..3909820 --- /dev/null +++ b/core/game_menu/assets/page_1/chooseyourbiome_text.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqqnfnero7ckl" +path="res://.godot/imported/chooseyourbiome_text.png-4b7f54401f26c8523f3a3effe8f6caa4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/chooseyourbiome_text.png" +dest_files=["res://.godot/imported/chooseyourbiome_text.png-4b7f54401f26c8523f3a3effe8f6caa4.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 diff --git a/core/game_menu/assets/page_1/chooseyourtrain_text.png b/core/game_menu/assets/page_1/chooseyourtrain_text.png new file mode 100644 index 0000000..fb29f12 Binary files /dev/null and b/core/game_menu/assets/page_1/chooseyourtrain_text.png differ diff --git a/core/game_menu/assets/page_1/chooseyourtrain_text.png.import b/core/game_menu/assets/page_1/chooseyourtrain_text.png.import new file mode 100644 index 0000000..ba6db8c --- /dev/null +++ b/core/game_menu/assets/page_1/chooseyourtrain_text.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjqp8kmb5y7px" +path="res://.godot/imported/chooseyourtrain_text.png-ee3b98a7555062fc260ab8ebbed86f06.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/chooseyourtrain_text.png" +dest_files=["res://.godot/imported/chooseyourtrain_text.png-ee3b98a7555062fc260ab8ebbed86f06.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 diff --git a/core/game_menu/assets/page_1/color_dx_biome.png b/core/game_menu/assets/page_1/color_dx_biome.png new file mode 100644 index 0000000..45ec310 Binary files /dev/null and b/core/game_menu/assets/page_1/color_dx_biome.png differ diff --git a/core/game_menu/assets/page_1/color_dx_biome.png.import b/core/game_menu/assets/page_1/color_dx_biome.png.import new file mode 100644 index 0000000..70c8805 --- /dev/null +++ b/core/game_menu/assets/page_1/color_dx_biome.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3qcivnwuisju" +path="res://.godot/imported/color_dx_biome.png-3cc724dd240e512429a7cefd5adc1412.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/color_dx_biome.png" +dest_files=["res://.godot/imported/color_dx_biome.png-3cc724dd240e512429a7cefd5adc1412.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 diff --git a/core/game_menu/assets/page_1/color_main_biome.png b/core/game_menu/assets/page_1/color_main_biome.png new file mode 100644 index 0000000..bd9e248 Binary files /dev/null and b/core/game_menu/assets/page_1/color_main_biome.png differ diff --git a/core/game_menu/assets/page_1/color_main_biome.png.import b/core/game_menu/assets/page_1/color_main_biome.png.import new file mode 100644 index 0000000..69f4e4f --- /dev/null +++ b/core/game_menu/assets/page_1/color_main_biome.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dc0sl04wem136" +path="res://.godot/imported/color_main_biome.png-89de4f4e7d123065cf25b299bcc8cc19.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/color_main_biome.png" +dest_files=["res://.godot/imported/color_main_biome.png-89de4f4e7d123065cf25b299bcc8cc19.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 diff --git a/core/game_menu/assets/page_1/color_sx_biome.png b/core/game_menu/assets/page_1/color_sx_biome.png new file mode 100644 index 0000000..0cb0582 Binary files /dev/null and b/core/game_menu/assets/page_1/color_sx_biome.png differ diff --git a/core/game_menu/assets/page_1/color_sx_biome.png.import b/core/game_menu/assets/page_1/color_sx_biome.png.import new file mode 100644 index 0000000..0f25c66 --- /dev/null +++ b/core/game_menu/assets/page_1/color_sx_biome.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cin3kt42e6w3u" +path="res://.godot/imported/color_sx_biome.png-4c5ebaa4d4bd430214af8b874b4dcc9f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/color_sx_biome.png" +dest_files=["res://.godot/imported/color_sx_biome.png-4c5ebaa4d4bd430214af8b874b4dcc9f.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 diff --git a/core/game_menu/assets/page_1/customizecolor-1.png b/core/game_menu/assets/page_1/customizecolor-1.png new file mode 100644 index 0000000..c5e0ec7 Binary files /dev/null and b/core/game_menu/assets/page_1/customizecolor-1.png differ diff --git a/core/game_menu/assets/page_1/customizecolor-1.png.import b/core/game_menu/assets/page_1/customizecolor-1.png.import new file mode 100644 index 0000000..4fa7af5 --- /dev/null +++ b/core/game_menu/assets/page_1/customizecolor-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdjwvwst3f10a" +path="res://.godot/imported/customizecolor-1.png-abb88424ec3f49b90a0ab001b55b0613.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/customizecolor-1.png" +dest_files=["res://.godot/imported/customizecolor-1.png-abb88424ec3f49b90a0ab001b55b0613.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 diff --git a/core/game_menu/assets/page_1/customizecolor-2.png b/core/game_menu/assets/page_1/customizecolor-2.png new file mode 100644 index 0000000..2744e21 Binary files /dev/null and b/core/game_menu/assets/page_1/customizecolor-2.png differ diff --git a/core/game_menu/assets/page_1/customizecolor-2.png.import b/core/game_menu/assets/page_1/customizecolor-2.png.import new file mode 100644 index 0000000..3a51303 --- /dev/null +++ b/core/game_menu/assets/page_1/customizecolor-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4l5ih723j3md" +path="res://.godot/imported/customizecolor-2.png-fdc9e8b7a1a6738945f62225133a5f93.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/customizecolor-2.png" +dest_files=["res://.godot/imported/customizecolor-2.png-fdc9e8b7a1a6738945f62225133a5f93.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 diff --git a/core/game_menu/assets/page_1/customizecolor-3.png b/core/game_menu/assets/page_1/customizecolor-3.png new file mode 100644 index 0000000..7ee41ca Binary files /dev/null and b/core/game_menu/assets/page_1/customizecolor-3.png differ diff --git a/core/game_menu/assets/page_1/customizecolor-3.png.import b/core/game_menu/assets/page_1/customizecolor-3.png.import new file mode 100644 index 0000000..dfca141 --- /dev/null +++ b/core/game_menu/assets/page_1/customizecolor-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5arobd7gl4u4" +path="res://.godot/imported/customizecolor-3.png-bd0e0603c54a8be9173c4384e6c383e0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/customizecolor-3.png" +dest_files=["res://.godot/imported/customizecolor-3.png-bd0e0603c54a8be9173c4384e6c383e0.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 diff --git a/core/game_menu/assets/page_1/customizecolor-4.png b/core/game_menu/assets/page_1/customizecolor-4.png new file mode 100644 index 0000000..4d6488c Binary files /dev/null and b/core/game_menu/assets/page_1/customizecolor-4.png differ diff --git a/core/game_menu/assets/page_1/customizecolor-4.png.import b/core/game_menu/assets/page_1/customizecolor-4.png.import new file mode 100644 index 0000000..23b556e --- /dev/null +++ b/core/game_menu/assets/page_1/customizecolor-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://el88fib24nl0" +path="res://.godot/imported/customizecolor-4.png-f5e40c0772c10048e3a4e0128aeb8a8b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/customizecolor-4.png" +dest_files=["res://.godot/imported/customizecolor-4.png-f5e40c0772c10048e3a4e0128aeb8a8b.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 diff --git a/core/game_menu/assets/page_1/customizecolor-5.png b/core/game_menu/assets/page_1/customizecolor-5.png new file mode 100644 index 0000000..c5687cf Binary files /dev/null and b/core/game_menu/assets/page_1/customizecolor-5.png differ diff --git a/core/game_menu/assets/page_1/customizecolor-5.png.import b/core/game_menu/assets/page_1/customizecolor-5.png.import new file mode 100644 index 0000000..5a901ef --- /dev/null +++ b/core/game_menu/assets/page_1/customizecolor-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bv07xhpe3kh0r" +path="res://.godot/imported/customizecolor-5.png-e5eb95a46b9ee7054e655b899a6ab240.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/customizecolor-5.png" +dest_files=["res://.godot/imported/customizecolor-5.png-e5eb95a46b9ee7054e655b899a6ab240.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 diff --git a/core/game_menu/assets/page_1/customizecolor.png b/core/game_menu/assets/page_1/customizecolor.png new file mode 100644 index 0000000..878d056 Binary files /dev/null and b/core/game_menu/assets/page_1/customizecolor.png differ diff --git a/core/game_menu/assets/page_1/customizecolor.png.import b/core/game_menu/assets/page_1/customizecolor.png.import new file mode 100644 index 0000000..ef7fef1 --- /dev/null +++ b/core/game_menu/assets/page_1/customizecolor.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cryqbi1av2x1c" +path="res://.godot/imported/customizecolor.png-7404db9d68a3dd3878307821594d53ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/customizecolor.png" +dest_files=["res://.godot/imported/customizecolor.png-7404db9d68a3dd3878307821594d53ad.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 diff --git a/core/game_menu/assets/page_1/freccetta.png b/core/game_menu/assets/page_1/freccetta.png new file mode 100644 index 0000000..97a0053 Binary files /dev/null and b/core/game_menu/assets/page_1/freccetta.png differ diff --git a/core/game_menu/assets/page_1/freccetta.png.import b/core/game_menu/assets/page_1/freccetta.png.import new file mode 100644 index 0000000..ebf27fe --- /dev/null +++ b/core/game_menu/assets/page_1/freccetta.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cm7fok7lhrano" +path="res://.godot/imported/freccetta.png-1f722a91d38c121331b8f1da0d46fd5b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/freccetta.png" +dest_files=["res://.godot/imported/freccetta.png-1f722a91d38c121331b8f1da0d46fd5b.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 diff --git a/core/game_menu/assets/page_1/lucchetto.png b/core/game_menu/assets/page_1/lucchetto.png new file mode 100644 index 0000000..97829ae Binary files /dev/null and b/core/game_menu/assets/page_1/lucchetto.png differ diff --git a/core/game_menu/assets/page_1/lucchetto.png.import b/core/game_menu/assets/page_1/lucchetto.png.import new file mode 100644 index 0000000..92e3435 --- /dev/null +++ b/core/game_menu/assets/page_1/lucchetto.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dj6pt25w5i4jq" +path="res://.godot/imported/lucchetto.png-f1e987e0e755b3be36217eb4b4fd394c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/lucchetto.png" +dest_files=["res://.godot/imported/lucchetto.png-f1e987e0e755b3be36217eb4b4fd394c.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 diff --git a/core/game_menu/assets/page_1/quad_main.png b/core/game_menu/assets/page_1/quad_main.png new file mode 100644 index 0000000..db661ea Binary files /dev/null and b/core/game_menu/assets/page_1/quad_main.png differ diff --git a/core/game_menu/assets/page_1/quad_main.png.import b/core/game_menu/assets/page_1/quad_main.png.import new file mode 100644 index 0000000..8908690 --- /dev/null +++ b/core/game_menu/assets/page_1/quad_main.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bs56pdbywm4uh" +path="res://.godot/imported/quad_main.png-d8ebb090a71d154c7b85b21cd98309de.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/quad_main.png" +dest_files=["res://.godot/imported/quad_main.png-d8ebb090a71d154c7b85b21cd98309de.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 diff --git a/core/game_menu/assets/page_1/ticket1.png b/core/game_menu/assets/page_1/ticket1.png new file mode 100644 index 0000000..6ce29a4 Binary files /dev/null and b/core/game_menu/assets/page_1/ticket1.png differ diff --git a/core/game_menu/assets/page_1/ticket1.png.import b/core/game_menu/assets/page_1/ticket1.png.import new file mode 100644 index 0000000..b136f67 --- /dev/null +++ b/core/game_menu/assets/page_1/ticket1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ce1u34fp1h2o5" +path="res://.godot/imported/ticket1.png-4b89d749fceedf56ec709b39fb017843.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/ticket1.png" +dest_files=["res://.godot/imported/ticket1.png-4b89d749fceedf56ec709b39fb017843.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 diff --git a/core/game_menu/assets/page_1/ticket2.png b/core/game_menu/assets/page_1/ticket2.png new file mode 100644 index 0000000..bd2b8c4 Binary files /dev/null and b/core/game_menu/assets/page_1/ticket2.png differ diff --git a/core/game_menu/assets/page_1/ticket2.png.import b/core/game_menu/assets/page_1/ticket2.png.import new file mode 100644 index 0000000..2a096dc --- /dev/null +++ b/core/game_menu/assets/page_1/ticket2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dq7owenentst2" +path="res://.godot/imported/ticket2.png-d93cc2fc9745e0c4ab3407edc886e5e2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/ticket2.png" +dest_files=["res://.godot/imported/ticket2.png-d93cc2fc9745e0c4ab3407edc886e5e2.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 diff --git a/core/game_menu/assets/page_1/ticket3.png b/core/game_menu/assets/page_1/ticket3.png new file mode 100644 index 0000000..4fe0f60 Binary files /dev/null and b/core/game_menu/assets/page_1/ticket3.png differ diff --git a/core/game_menu/assets/page_1/ticket3.png.import b/core/game_menu/assets/page_1/ticket3.png.import new file mode 100644 index 0000000..f815302 --- /dev/null +++ b/core/game_menu/assets/page_1/ticket3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdfsfteuwk5bu" +path="res://.godot/imported/ticket3.png-1d1587e008b784257314db853d9a08b2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/ticket3.png" +dest_files=["res://.godot/imported/ticket3.png-1d1587e008b784257314db853d9a08b2.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 diff --git a/core/game_menu/assets/page_1/train_texture.png b/core/game_menu/assets/page_1/train_texture.png new file mode 100644 index 0000000..bd112ad Binary files /dev/null and b/core/game_menu/assets/page_1/train_texture.png differ diff --git a/core/game_menu/assets/page_1/train_texture.png.import b/core/game_menu/assets/page_1/train_texture.png.import new file mode 100644 index 0000000..31a851a --- /dev/null +++ b/core/game_menu/assets/page_1/train_texture.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqvani6n2h3fw" +path="res://.godot/imported/train_texture.png-1eab22a04864866f63460a6e23227b70.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_1/train_texture.png" +dest_files=["res://.godot/imported/train_texture.png-1eab22a04864866f63460a6e23227b70.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 diff --git a/core/game_menu/assets/page_2/achievements_text.png b/core/game_menu/assets/page_2/achievements_text.png new file mode 100644 index 0000000..65c4104 Binary files /dev/null and b/core/game_menu/assets/page_2/achievements_text.png differ diff --git a/core/game_menu/assets/page_2/achievements_text.png.import b/core/game_menu/assets/page_2/achievements_text.png.import new file mode 100644 index 0000000..90c31ab --- /dev/null +++ b/core/game_menu/assets/page_2/achievements_text.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xfl3ks4dbfaw" +path="res://.godot/imported/achievements_text.png-32a5769fb769900c3a6ba65365ea76bf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/achievements_text.png" +dest_files=["res://.godot/imported/achievements_text.png-32a5769fb769900c3a6ba65365ea76bf.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 diff --git a/core/game_menu/assets/page_2/cat_animals_collection.png b/core/game_menu/assets/page_2/cat_animals_collection.png new file mode 100644 index 0000000..e7ca812 Binary files /dev/null and b/core/game_menu/assets/page_2/cat_animals_collection.png differ diff --git a/core/game_menu/assets/page_2/cat_animals_collection.png.import b/core/game_menu/assets/page_2/cat_animals_collection.png.import new file mode 100644 index 0000000..6d9595b --- /dev/null +++ b/core/game_menu/assets/page_2/cat_animals_collection.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dsvu86m5la1tp" +path="res://.godot/imported/cat_animals_collection.png-c53e4b447b3840269e1b27c64bc3aded.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/cat_animals_collection.png" +dest_files=["res://.godot/imported/cat_animals_collection.png-c53e4b447b3840269e1b27c64bc3aded.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 diff --git a/core/game_menu/assets/page_2/cornice_polaroid-1.png b/core/game_menu/assets/page_2/cornice_polaroid-1.png new file mode 100644 index 0000000..131b0e3 Binary files /dev/null and b/core/game_menu/assets/page_2/cornice_polaroid-1.png differ diff --git a/core/game_menu/assets/page_2/cornice_polaroid-1.png.import b/core/game_menu/assets/page_2/cornice_polaroid-1.png.import new file mode 100644 index 0000000..4e0144d --- /dev/null +++ b/core/game_menu/assets/page_2/cornice_polaroid-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cia06e8h25hdg" +path="res://.godot/imported/cornice_polaroid-1.png-cacf40a33a4522d76f7008a4db175996.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/cornice_polaroid-1.png" +dest_files=["res://.godot/imported/cornice_polaroid-1.png-cacf40a33a4522d76f7008a4db175996.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 diff --git a/core/game_menu/assets/page_2/cornice_polaroid-2.png b/core/game_menu/assets/page_2/cornice_polaroid-2.png new file mode 100644 index 0000000..168f86b Binary files /dev/null and b/core/game_menu/assets/page_2/cornice_polaroid-2.png differ diff --git a/core/game_menu/assets/page_2/cornice_polaroid-2.png.import b/core/game_menu/assets/page_2/cornice_polaroid-2.png.import new file mode 100644 index 0000000..ab80e87 --- /dev/null +++ b/core/game_menu/assets/page_2/cornice_polaroid-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hadduptddnje" +path="res://.godot/imported/cornice_polaroid-2.png-aa00250f5a846e73d36438b89abc4d6c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/cornice_polaroid-2.png" +dest_files=["res://.godot/imported/cornice_polaroid-2.png-aa00250f5a846e73d36438b89abc4d6c.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 diff --git a/core/game_menu/assets/page_2/cornice_polaroid-3.png b/core/game_menu/assets/page_2/cornice_polaroid-3.png new file mode 100644 index 0000000..6947eb0 Binary files /dev/null and b/core/game_menu/assets/page_2/cornice_polaroid-3.png differ diff --git a/core/game_menu/assets/page_2/cornice_polaroid-3.png.import b/core/game_menu/assets/page_2/cornice_polaroid-3.png.import new file mode 100644 index 0000000..e393b6d --- /dev/null +++ b/core/game_menu/assets/page_2/cornice_polaroid-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvouxsvarqvps" +path="res://.godot/imported/cornice_polaroid-3.png-ea1b0aaa10fe0d9549bba7c0c5bf4b25.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/cornice_polaroid-3.png" +dest_files=["res://.godot/imported/cornice_polaroid-3.png-ea1b0aaa10fe0d9549bba7c0c5bf4b25.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 diff --git a/core/game_menu/assets/page_2/cornice_polaroid-4.png b/core/game_menu/assets/page_2/cornice_polaroid-4.png new file mode 100644 index 0000000..22fdcc2 Binary files /dev/null and b/core/game_menu/assets/page_2/cornice_polaroid-4.png differ diff --git a/core/game_menu/assets/page_2/cornice_polaroid-4.png.import b/core/game_menu/assets/page_2/cornice_polaroid-4.png.import new file mode 100644 index 0000000..201663e --- /dev/null +++ b/core/game_menu/assets/page_2/cornice_polaroid-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://x63wfvdbn8r5" +path="res://.godot/imported/cornice_polaroid-4.png-de0efe1fdbef13eb3491a0a6d3924fb7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/cornice_polaroid-4.png" +dest_files=["res://.godot/imported/cornice_polaroid-4.png-de0efe1fdbef13eb3491a0a6d3924fb7.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 diff --git a/core/game_menu/assets/page_2/cornice_polaroid-5.png b/core/game_menu/assets/page_2/cornice_polaroid-5.png new file mode 100644 index 0000000..13b1cd3 Binary files /dev/null and b/core/game_menu/assets/page_2/cornice_polaroid-5.png differ diff --git a/core/game_menu/assets/page_2/cornice_polaroid-5.png.import b/core/game_menu/assets/page_2/cornice_polaroid-5.png.import new file mode 100644 index 0000000..11cd28d --- /dev/null +++ b/core/game_menu/assets/page_2/cornice_polaroid-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dam4tnnqvtd6v" +path="res://.godot/imported/cornice_polaroid-5.png-8a75c06cf4d0f98607de59471441f01c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/cornice_polaroid-5.png" +dest_files=["res://.godot/imported/cornice_polaroid-5.png-8a75c06cf4d0f98607de59471441f01c.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 diff --git a/core/game_menu/assets/page_2/cornice_polaroid.png b/core/game_menu/assets/page_2/cornice_polaroid.png new file mode 100644 index 0000000..c0f9c7e Binary files /dev/null and b/core/game_menu/assets/page_2/cornice_polaroid.png differ diff --git a/core/game_menu/assets/page_2/cornice_polaroid.png.import b/core/game_menu/assets/page_2/cornice_polaroid.png.import new file mode 100644 index 0000000..1ca062c --- /dev/null +++ b/core/game_menu/assets/page_2/cornice_polaroid.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b58l2pqsriu2l" +path="res://.godot/imported/cornice_polaroid.png-42fb7d02bd1f8b8c58f2fc51020815d2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/cornice_polaroid.png" +dest_files=["res://.godot/imported/cornice_polaroid.png-42fb7d02bd1f8b8c58f2fc51020815d2.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 diff --git a/core/game_menu/assets/page_2/crow_animals_collection.png b/core/game_menu/assets/page_2/crow_animals_collection.png new file mode 100644 index 0000000..5742fa6 Binary files /dev/null and b/core/game_menu/assets/page_2/crow_animals_collection.png differ diff --git a/core/game_menu/assets/page_2/crow_animals_collection.png.import b/core/game_menu/assets/page_2/crow_animals_collection.png.import new file mode 100644 index 0000000..07e0e7c --- /dev/null +++ b/core/game_menu/assets/page_2/crow_animals_collection.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dl04xh8e35xyd" +path="res://.godot/imported/crow_animals_collection.png-cd7072ef0af4cfee990eec435d747a1c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/crow_animals_collection.png" +dest_files=["res://.godot/imported/crow_animals_collection.png-cd7072ef0af4cfee990eec435d747a1c.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 diff --git a/core/game_menu/assets/page_2/dog_animals_collection.png b/core/game_menu/assets/page_2/dog_animals_collection.png new file mode 100644 index 0000000..9268928 Binary files /dev/null and b/core/game_menu/assets/page_2/dog_animals_collection.png differ diff --git a/core/game_menu/assets/page_2/dog_animals_collection.png.import b/core/game_menu/assets/page_2/dog_animals_collection.png.import new file mode 100644 index 0000000..6d2d4e2 --- /dev/null +++ b/core/game_menu/assets/page_2/dog_animals_collection.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cusgi1mpq5rn" +path="res://.godot/imported/dog_animals_collection.png-b0b1d6c6c8ed28af23d70283d3b3912f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/dog_animals_collection.png" +dest_files=["res://.godot/imported/dog_animals_collection.png-b0b1d6c6c8ed28af23d70283d3b3912f.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 diff --git a/core/game_menu/assets/page_2/photocollections_text.png b/core/game_menu/assets/page_2/photocollections_text.png new file mode 100644 index 0000000..7ea0d3e Binary files /dev/null and b/core/game_menu/assets/page_2/photocollections_text.png differ diff --git a/core/game_menu/assets/page_2/photocollections_text.png.import b/core/game_menu/assets/page_2/photocollections_text.png.import new file mode 100644 index 0000000..eaa4995 --- /dev/null +++ b/core/game_menu/assets/page_2/photocollections_text.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xgx0211eo8hi" +path="res://.godot/imported/photocollections_text.png-18b484a99826a86757d94c7f7ac0d623.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/photocollections_text.png" +dest_files=["res://.godot/imported/photocollections_text.png-18b484a99826a86757d94c7f7ac0d623.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 diff --git a/core/game_menu/assets/page_2/pigeon_animals_collection.png b/core/game_menu/assets/page_2/pigeon_animals_collection.png new file mode 100644 index 0000000..44a385e Binary files /dev/null and b/core/game_menu/assets/page_2/pigeon_animals_collection.png differ diff --git a/core/game_menu/assets/page_2/pigeon_animals_collection.png.import b/core/game_menu/assets/page_2/pigeon_animals_collection.png.import new file mode 100644 index 0000000..7507412 --- /dev/null +++ b/core/game_menu/assets/page_2/pigeon_animals_collection.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://calno16l7x4wq" +path="res://.godot/imported/pigeon_animals_collection.png-52f80e29309a3ed5398593ffd7e99b56.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/pigeon_animals_collection.png" +dest_files=["res://.godot/imported/pigeon_animals_collection.png-52f80e29309a3ed5398593ffd7e99b56.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 diff --git a/core/game_menu/assets/page_2/squirrel_animals_collection.png b/core/game_menu/assets/page_2/squirrel_animals_collection.png new file mode 100644 index 0000000..d01fa51 Binary files /dev/null and b/core/game_menu/assets/page_2/squirrel_animals_collection.png differ diff --git a/core/game_menu/assets/page_2/squirrel_animals_collection.png.import b/core/game_menu/assets/page_2/squirrel_animals_collection.png.import new file mode 100644 index 0000000..b4b1c80 --- /dev/null +++ b/core/game_menu/assets/page_2/squirrel_animals_collection.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2li830dm14ur" +path="res://.godot/imported/squirrel_animals_collection.png-152708bcabe8d8b888e37978dcfade41.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/squirrel_animals_collection.png" +dest_files=["res://.godot/imported/squirrel_animals_collection.png-152708bcabe8d8b888e37978dcfade41.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 diff --git a/core/game_menu/assets/page_2/turtle_animals_collection.png b/core/game_menu/assets/page_2/turtle_animals_collection.png new file mode 100644 index 0000000..910e91a Binary files /dev/null and b/core/game_menu/assets/page_2/turtle_animals_collection.png differ diff --git a/core/game_menu/assets/page_2/turtle_animals_collection.png.import b/core/game_menu/assets/page_2/turtle_animals_collection.png.import new file mode 100644 index 0000000..54d43b1 --- /dev/null +++ b/core/game_menu/assets/page_2/turtle_animals_collection.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ck36h88n5tebw" +path="res://.godot/imported/turtle_animals_collection.png-f3ae331b1891b5e9d1bf43f5aabc57b3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_2/turtle_animals_collection.png" +dest_files=["res://.godot/imported/turtle_animals_collection.png-f3ae331b1891b5e9d1bf43f5aabc57b3.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 diff --git a/core/game_menu/assets/page_3/aliasing_button.png b/core/game_menu/assets/page_3/aliasing_button.png new file mode 100644 index 0000000..92db2c3 Binary files /dev/null and b/core/game_menu/assets/page_3/aliasing_button.png differ diff --git a/core/game_menu/assets/page_3/aliasing_button.png.import b/core/game_menu/assets/page_3/aliasing_button.png.import new file mode 100644 index 0000000..ba0ac14 --- /dev/null +++ b/core/game_menu/assets/page_3/aliasing_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0s17sglugylc" +path="res://.godot/imported/aliasing_button.png-a39719a2937a6047be3c14c83afcf5aa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/aliasing_button.png" +dest_files=["res://.godot/imported/aliasing_button.png-a39719a2937a6047be3c14c83afcf5aa.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 diff --git a/core/game_menu/assets/page_3/barretta.png b/core/game_menu/assets/page_3/barretta.png new file mode 100644 index 0000000..6b7ad64 Binary files /dev/null and b/core/game_menu/assets/page_3/barretta.png differ diff --git a/core/game_menu/assets/page_3/barretta.png.import b/core/game_menu/assets/page_3/barretta.png.import new file mode 100644 index 0000000..9c91b89 --- /dev/null +++ b/core/game_menu/assets/page_3/barretta.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6kgm3fq8521h" +path="res://.godot/imported/barretta.png-8452363754c4e67034403e1217daa04a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/barretta.png" +dest_files=["res://.godot/imported/barretta.png-8452363754c4e67034403e1217daa04a.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 diff --git a/core/game_menu/assets/page_3/bg_timbri.png b/core/game_menu/assets/page_3/bg_timbri.png new file mode 100644 index 0000000..50c9041 Binary files /dev/null and b/core/game_menu/assets/page_3/bg_timbri.png differ diff --git a/core/game_menu/assets/page_3/bg_timbri.png.import b/core/game_menu/assets/page_3/bg_timbri.png.import new file mode 100644 index 0000000..162a51d --- /dev/null +++ b/core/game_menu/assets/page_3/bg_timbri.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://fpnhk1ygcrmu" +path="res://.godot/imported/bg_timbri.png-1aedde1b98fb4a6e8379f2b9abe711fb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/bg_timbri.png" +dest_files=["res://.godot/imported/bg_timbri.png-1aedde1b98fb4a6e8379f2b9abe711fb.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 diff --git a/core/game_menu/assets/page_3/button_-1.png b/core/game_menu/assets/page_3/button_-1.png new file mode 100644 index 0000000..5044cb3 Binary files /dev/null and b/core/game_menu/assets/page_3/button_-1.png differ diff --git a/core/game_menu/assets/page_3/button_-1.png.import b/core/game_menu/assets/page_3/button_-1.png.import new file mode 100644 index 0000000..737dedc --- /dev/null +++ b/core/game_menu/assets/page_3/button_-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://s33pbfshxhb5" +path="res://.godot/imported/button_-1.png-510ce9cfa9ad6c7aa1d4f04268f68d3b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/button_-1.png" +dest_files=["res://.godot/imported/button_-1.png-510ce9cfa9ad6c7aa1d4f04268f68d3b.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 diff --git a/core/game_menu/assets/page_3/button_-2.png b/core/game_menu/assets/page_3/button_-2.png new file mode 100644 index 0000000..4d5edc0 Binary files /dev/null and b/core/game_menu/assets/page_3/button_-2.png differ diff --git a/core/game_menu/assets/page_3/button_-2.png.import b/core/game_menu/assets/page_3/button_-2.png.import new file mode 100644 index 0000000..c4d9cda --- /dev/null +++ b/core/game_menu/assets/page_3/button_-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5h20nr1ng0nl" +path="res://.godot/imported/button_-2.png-e6778d794ae58520b03192fce0261bec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/button_-2.png" +dest_files=["res://.godot/imported/button_-2.png-e6778d794ae58520b03192fce0261bec.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 diff --git a/core/game_menu/assets/page_3/button_-3.png b/core/game_menu/assets/page_3/button_-3.png new file mode 100644 index 0000000..f948285 Binary files /dev/null and b/core/game_menu/assets/page_3/button_-3.png differ diff --git a/core/game_menu/assets/page_3/button_-3.png.import b/core/game_menu/assets/page_3/button_-3.png.import new file mode 100644 index 0000000..8092d0c --- /dev/null +++ b/core/game_menu/assets/page_3/button_-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cu6bqiext3pwa" +path="res://.godot/imported/button_-3.png-2b02c75d345772518431892f60992d4b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/button_-3.png" +dest_files=["res://.godot/imported/button_-3.png-2b02c75d345772518431892f60992d4b.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 diff --git a/core/game_menu/assets/page_3/button_-4.png b/core/game_menu/assets/page_3/button_-4.png new file mode 100644 index 0000000..0fc6519 Binary files /dev/null and b/core/game_menu/assets/page_3/button_-4.png differ diff --git a/core/game_menu/assets/page_3/button_-4.png.import b/core/game_menu/assets/page_3/button_-4.png.import new file mode 100644 index 0000000..e850dc7 --- /dev/null +++ b/core/game_menu/assets/page_3/button_-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cth6as0m48wu7" +path="res://.godot/imported/button_-4.png-1f25f15677dc03a4d56cb2e3fd7bb51f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/button_-4.png" +dest_files=["res://.godot/imported/button_-4.png-1f25f15677dc03a4d56cb2e3fd7bb51f.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 diff --git a/core/game_menu/assets/page_3/button_-5.png b/core/game_menu/assets/page_3/button_-5.png new file mode 100644 index 0000000..3620496 Binary files /dev/null and b/core/game_menu/assets/page_3/button_-5.png differ diff --git a/core/game_menu/assets/page_3/button_-5.png.import b/core/game_menu/assets/page_3/button_-5.png.import new file mode 100644 index 0000000..692bcef --- /dev/null +++ b/core/game_menu/assets/page_3/button_-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btkto18w6imfj" +path="res://.godot/imported/button_-5.png-5a01d1e8b2c28cb5842f36b37b530ae3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/button_-5.png" +dest_files=["res://.godot/imported/button_-5.png-5a01d1e8b2c28cb5842f36b37b530ae3.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 diff --git a/core/game_menu/assets/page_3/button_-6.png b/core/game_menu/assets/page_3/button_-6.png new file mode 100644 index 0000000..355cdd6 Binary files /dev/null and b/core/game_menu/assets/page_3/button_-6.png differ diff --git a/core/game_menu/assets/page_3/button_-6.png.import b/core/game_menu/assets/page_3/button_-6.png.import new file mode 100644 index 0000000..f17d18f --- /dev/null +++ b/core/game_menu/assets/page_3/button_-6.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgujbx8kariss" +path="res://.godot/imported/button_-6.png-4c3663c0662b063c55fd87f3346e29ce.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/button_-6.png" +dest_files=["res://.godot/imported/button_-6.png-4c3663c0662b063c55fd87f3346e29ce.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 diff --git a/core/game_menu/assets/page_3/button_-7.png b/core/game_menu/assets/page_3/button_-7.png new file mode 100644 index 0000000..fdb2f12 Binary files /dev/null and b/core/game_menu/assets/page_3/button_-7.png differ diff --git a/core/game_menu/assets/page_3/button_-7.png.import b/core/game_menu/assets/page_3/button_-7.png.import new file mode 100644 index 0000000..b9dafc0 --- /dev/null +++ b/core/game_menu/assets/page_3/button_-7.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctiam7fffidjf" +path="res://.godot/imported/button_-7.png-b53af1de57c6f0b20e91f153a129564b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/button_-7.png" +dest_files=["res://.godot/imported/button_-7.png-b53af1de57c6f0b20e91f153a129564b.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 diff --git a/core/game_menu/assets/page_3/button_.png b/core/game_menu/assets/page_3/button_.png new file mode 100644 index 0000000..4aa0093 Binary files /dev/null and b/core/game_menu/assets/page_3/button_.png differ diff --git a/core/game_menu/assets/page_3/button_.png.import b/core/game_menu/assets/page_3/button_.png.import new file mode 100644 index 0000000..6770771 --- /dev/null +++ b/core/game_menu/assets/page_3/button_.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5sg3bw8006y7" +path="res://.godot/imported/button_.png-627da396356dc80efe059e8d8418e929.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/button_.png" +dest_files=["res://.godot/imported/button_.png-627da396356dc80efe059e8d8418e929.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 diff --git a/core/game_menu/assets/page_3/main_volume_button.png b/core/game_menu/assets/page_3/main_volume_button.png new file mode 100644 index 0000000..557d143 Binary files /dev/null and b/core/game_menu/assets/page_3/main_volume_button.png differ diff --git a/core/game_menu/assets/page_3/main_volume_button.png.import b/core/game_menu/assets/page_3/main_volume_button.png.import new file mode 100644 index 0000000..8750d2b --- /dev/null +++ b/core/game_menu/assets/page_3/main_volume_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dirbxw8ii87nv" +path="res://.godot/imported/main_volume_button.png-44073461cc250b89877c6549307ab3d9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/main_volume_button.png" +dest_files=["res://.godot/imported/main_volume_button.png-44073461cc250b89877c6549307ab3d9.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 diff --git a/core/game_menu/assets/page_3/music_volume_button.png b/core/game_menu/assets/page_3/music_volume_button.png new file mode 100644 index 0000000..ad2d9ea Binary files /dev/null and b/core/game_menu/assets/page_3/music_volume_button.png differ diff --git a/core/game_menu/assets/page_3/music_volume_button.png.import b/core/game_menu/assets/page_3/music_volume_button.png.import new file mode 100644 index 0000000..943d588 --- /dev/null +++ b/core/game_menu/assets/page_3/music_volume_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0t00kjvrw206" +path="res://.godot/imported/music_volume_button.png-33de58196bfa768feef0ab6d956d03ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/music_volume_button.png" +dest_files=["res://.godot/imported/music_volume_button.png-33de58196bfa768feef0ab6d956d03ad.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 diff --git a/core/game_menu/assets/page_3/play_button.png b/core/game_menu/assets/page_3/play_button.png new file mode 100644 index 0000000..2dad0a5 Binary files /dev/null and b/core/game_menu/assets/page_3/play_button.png differ diff --git a/core/game_menu/assets/page_3/play_button.png.import b/core/game_menu/assets/page_3/play_button.png.import new file mode 100644 index 0000000..741ce06 --- /dev/null +++ b/core/game_menu/assets/page_3/play_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4nymq3n3468g" +path="res://.godot/imported/play_button.png-82e465772d390dd18294ef73027d355d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/play_button.png" +dest_files=["res://.godot/imported/play_button.png-82e465772d390dd18294ef73027d355d.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 diff --git a/core/game_menu/assets/page_3/quad_main.png b/core/game_menu/assets/page_3/quad_main.png new file mode 100644 index 0000000..db661ea Binary files /dev/null and b/core/game_menu/assets/page_3/quad_main.png differ diff --git a/core/game_menu/assets/page_3/quad_main.png.import b/core/game_menu/assets/page_3/quad_main.png.import new file mode 100644 index 0000000..bb8ec24 --- /dev/null +++ b/core/game_menu/assets/page_3/quad_main.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4e1lbng4uqk" +path="res://.godot/imported/quad_main.png-af26b29d5c3350fc4d75e08ad350ccc7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/quad_main.png" +dest_files=["res://.godot/imported/quad_main.png-af26b29d5c3350fc4d75e08ad350ccc7.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 diff --git a/core/game_menu/assets/page_3/quality_button.png b/core/game_menu/assets/page_3/quality_button.png new file mode 100644 index 0000000..8eb45a1 Binary files /dev/null and b/core/game_menu/assets/page_3/quality_button.png differ diff --git a/core/game_menu/assets/page_3/quality_button.png.import b/core/game_menu/assets/page_3/quality_button.png.import new file mode 100644 index 0000000..e87c8d2 --- /dev/null +++ b/core/game_menu/assets/page_3/quality_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqqs83gh5mwof" +path="res://.godot/imported/quality_button.png-362af22cd4764f63b4532bc0ac31582c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/quality_button.png" +dest_files=["res://.godot/imported/quality_button.png-362af22cd4764f63b4532bc0ac31582c.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 diff --git a/core/game_menu/assets/page_3/quit_button.png b/core/game_menu/assets/page_3/quit_button.png new file mode 100644 index 0000000..00afff9 Binary files /dev/null and b/core/game_menu/assets/page_3/quit_button.png differ diff --git a/core/game_menu/assets/page_3/quit_button.png.import b/core/game_menu/assets/page_3/quit_button.png.import new file mode 100644 index 0000000..7a47413 --- /dev/null +++ b/core/game_menu/assets/page_3/quit_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://v7e7467fkdec" +path="res://.godot/imported/quit_button.png-2a20552d77fd0a6b363d07491f42c8a1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/quit_button.png" +dest_files=["res://.godot/imported/quit_button.png-2a20552d77fd0a6b363d07491f42c8a1.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 diff --git a/core/game_menu/assets/page_3/resolution_button.png b/core/game_menu/assets/page_3/resolution_button.png new file mode 100644 index 0000000..847f3e2 Binary files /dev/null and b/core/game_menu/assets/page_3/resolution_button.png differ diff --git a/core/game_menu/assets/page_3/resolution_button.png.import b/core/game_menu/assets/page_3/resolution_button.png.import new file mode 100644 index 0000000..8d4ca78 --- /dev/null +++ b/core/game_menu/assets/page_3/resolution_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bohvj2bmao03f" +path="res://.godot/imported/resolution_button.png-48bd04fd62af50e2585326b54ad8130f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/resolution_button.png" +dest_files=["res://.godot/imported/resolution_button.png-48bd04fd62af50e2585326b54ad8130f.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 diff --git a/core/game_menu/assets/page_3/resume_button.png b/core/game_menu/assets/page_3/resume_button.png new file mode 100644 index 0000000..daa9e28 Binary files /dev/null and b/core/game_menu/assets/page_3/resume_button.png differ diff --git a/core/game_menu/assets/page_3/resume_button.png.import b/core/game_menu/assets/page_3/resume_button.png.import new file mode 100644 index 0000000..43d367f --- /dev/null +++ b/core/game_menu/assets/page_3/resume_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dd1exrppb6bjq" +path="res://.godot/imported/resume_button.png-5853ddda1af64d88914e53ef9dc0a492.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/resume_button.png" +dest_files=["res://.godot/imported/resume_button.png-5853ddda1af64d88914e53ef9dc0a492.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 diff --git a/core/game_menu/assets/page_3/save_button.png b/core/game_menu/assets/page_3/save_button.png new file mode 100644 index 0000000..bc6adc9 Binary files /dev/null and b/core/game_menu/assets/page_3/save_button.png differ diff --git a/core/game_menu/assets/page_3/save_button.png.import b/core/game_menu/assets/page_3/save_button.png.import new file mode 100644 index 0000000..709f5b9 --- /dev/null +++ b/core/game_menu/assets/page_3/save_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmhx3mscwrwft" +path="res://.godot/imported/save_button.png-c52446515434dcf9eedf3abfd1c43af1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/save_button.png" +dest_files=["res://.godot/imported/save_button.png-c52446515434dcf9eedf3abfd1c43af1.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 diff --git a/core/game_menu/assets/page_3/settings_button.png b/core/game_menu/assets/page_3/settings_button.png new file mode 100644 index 0000000..83ee667 Binary files /dev/null and b/core/game_menu/assets/page_3/settings_button.png differ diff --git a/core/game_menu/assets/page_3/settings_button.png.import b/core/game_menu/assets/page_3/settings_button.png.import new file mode 100644 index 0000000..3dec619 --- /dev/null +++ b/core/game_menu/assets/page_3/settings_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cu8e7pl0y4owq" +path="res://.godot/imported/settings_button.png-7433e4d2dccc6b81934f5bd0fe0f6155.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/settings_button.png" +dest_files=["res://.godot/imported/settings_button.png-7433e4d2dccc6b81934f5bd0fe0f6155.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 diff --git a/core/game_menu/assets/page_3/sfx_volume_button.png b/core/game_menu/assets/page_3/sfx_volume_button.png new file mode 100644 index 0000000..812ff64 Binary files /dev/null and b/core/game_menu/assets/page_3/sfx_volume_button.png differ diff --git a/core/game_menu/assets/page_3/sfx_volume_button.png.import b/core/game_menu/assets/page_3/sfx_volume_button.png.import new file mode 100644 index 0000000..318f1cf --- /dev/null +++ b/core/game_menu/assets/page_3/sfx_volume_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvergpy6qgggn" +path="res://.godot/imported/sfx_volume_button.png-1b0e51859f3551c1d1e4537a0e95499b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/sfx_volume_button.png" +dest_files=["res://.godot/imported/sfx_volume_button.png-1b0e51859f3551c1d1e4537a0e95499b.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 diff --git a/core/audio/settings/audio_option.gd b/core/game_menu/audio_option.gd similarity index 81% rename from core/audio/settings/audio_option.gd rename to core/game_menu/audio_option.gd index 1c386ff..42ef7df 100644 --- a/core/audio/settings/audio_option.gd +++ b/core/game_menu/audio_option.gd @@ -1,3 +1,4 @@ +@tool extends VBoxContainer class_name AudioOption @@ -5,27 +6,34 @@ class_name AudioOption const MIN_VOLUME: float = 0.0 const MAX_VOLUME: float = 1.0 +@export var image: Texture: + set(value): + image = value + if is_inside_tree() and has_node("%Texture"): + $%Texture.texture = image + @export var bus_name: StringName = &"Master" -@export var label_text: String = "Master Volume" @export_range(0.0, 1.0, 0.01) var default_volume: float = 1.0 -@onready var label: Label = $Label @onready var slider: HSlider = $HSlider func _ready() -> void: + if image != null and has_node("%Texture"): + $%Texture.texture = image + + if Engine.is_editor_hint(): + return + slider.min_value = MIN_VOLUME slider.max_value = MAX_VOLUME slider.step = 0.01 slider.value_changed.connect(_on_slider_value_changed) refresh() - + func refresh() -> void: - label.text = label_text - if not has_bus(): slider.set_value_no_signal(default_volume) slider.editable = false - label.text = "%s (bus missing)" % label_text return slider.editable = true @@ -46,6 +54,9 @@ func get_bus_index() -> int: return AudioServer.get_bus_index(bus_name) func _set_bus_volume(linear_value: float) -> void: + if Engine.is_editor_hint(): + return + if not has_bus(): return diff --git a/core/audio/settings/audio_option.gd.uid b/core/game_menu/audio_option.gd.uid similarity index 100% rename from core/audio/settings/audio_option.gd.uid rename to core/game_menu/audio_option.gd.uid diff --git a/core/game_menu/audio_option.tscn b/core/game_menu/audio_option.tscn new file mode 100644 index 0000000..e3a3953 --- /dev/null +++ b/core/game_menu/audio_option.tscn @@ -0,0 +1,43 @@ +[gd_scene format=3 uid="uid://cescrovsjlwke"] + +[ext_resource type="Script" uid="uid://bnh1y560h55vc" path="res://core/game_menu/audio_option.gd" id="1_orafl"] +[ext_resource type="Texture2D" uid="uid://dirbxw8ii87nv" path="res://core/game_menu/assets/page_3/main_volume_button.png" id="2_vudub"] +[ext_resource type="Texture2D" uid="uid://s33pbfshxhb5" path="res://core/game_menu/assets/page_3/button_-1.png" id="3_vf41c"] +[ext_resource type="Texture2D" uid="uid://c6kgm3fq8521h" path="res://core/game_menu/assets/page_3/barretta.png" id="4_hduhm"] + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_f3y2u"] +content_margin_left = 0.0 +content_margin_right = 0.0 +content_margin_bottom = 0.0 +texture = ExtResource("4_hduhm") +texture_margin_top = 23.0 + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tj25j"] +texture = ExtResource("4_hduhm") + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_4fmty"] +texture = ExtResource("4_hduhm") + +[node name="AudioOption" type="VBoxContainer" unique_id=1509773712] +offset_right = 319.0 +offset_bottom = 177.0 +theme_override_constants/separation = 0 +script = ExtResource("1_orafl") +image = ExtResource("2_vudub") + +[node name="Texture" type="TextureRect" parent="." unique_id=637050541] +unique_name_in_owner = true +layout_mode = 2 +texture = ExtResource("2_vudub") +stretch_mode = 5 + +[node name="HSlider" type="HSlider" parent="." unique_id=1286896253] +layout_mode = 2 +theme_override_icons/grabber = ExtResource("3_vf41c") +theme_override_icons/grabber_highlight = ExtResource("3_vf41c") +theme_override_icons/grabber_disabled = ExtResource("3_vf41c") +theme_override_styles/slider = SubResource("StyleBoxTexture_f3y2u") +theme_override_styles/grabber_area = SubResource("StyleBoxTexture_tj25j") +theme_override_styles/grabber_area_highlight = SubResource("StyleBoxTexture_4fmty") +max_value = 1.0 +step = 0.01 diff --git a/core/game_menu/biome_picker.gd b/core/game_menu/biome_picker.gd new file mode 100644 index 0000000..1a9c42f --- /dev/null +++ b/core/game_menu/biome_picker.gd @@ -0,0 +1,22 @@ +@tool +extends Control + +@export var locked: bool = true +@export var image: Texture: + set(value): + image = value + if is_inside_tree() and has_node("%Texture"): + $%Texture.texture = image + + + +func _ready(): + if image != null and has_node("%Texture"): + $%Texture.texture = image + if has_node("%TextureRect") and has_node("%HooverTween"): + if locked: + $%TextureRect.show() + $%HooverTween.queue_free() + else: + $%TextureRect.hide() + diff --git a/core/game_menu/biome_picker.gd.uid b/core/game_menu/biome_picker.gd.uid new file mode 100644 index 0000000..52804e0 --- /dev/null +++ b/core/game_menu/biome_picker.gd.uid @@ -0,0 +1 @@ +uid://c7q3d823b1v1h diff --git a/core/game_menu/biome_picker.tscn b/core/game_menu/biome_picker.tscn new file mode 100644 index 0000000..9f0752d --- /dev/null +++ b/core/game_menu/biome_picker.tscn @@ -0,0 +1,51 @@ +[gd_scene format=3 uid="uid://wckwvvnk8bt4"] + +[ext_resource type="Script" uid="uid://c7q3d823b1v1h" path="res://core/game_menu/biome_picker.gd" id="1_jqji0"] +[ext_resource type="Texture2D" uid="uid://dj6pt25w5i4jq" path="res://core/game_menu/assets/page_1/lucchetto.png" id="2_jqji0"] +[ext_resource type="PackedScene" uid="uid://dxun0jk5t0n6" path="res://core/game_menu/hoover_tween.tscn" id="4_8s4h5"] + +[node name="BiomePicker" type="Control" unique_id=52821564] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_jqji0") + +[node name="Texture" type="TextureRect" parent="." unique_id=606844933] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.47161457 +anchor_top = 0.39027777 +anchor_right = 0.5283854 +anchor_bottom = 0.6097222 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +stretch_mode = 3 +metadata/_edit_use_anchors_ = true + +[node name="TextureRect" type="TextureRect" parent="Texture" unique_id=288045010] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("2_jqji0") + +[node name="HooverTween" parent="." unique_id=160227524 node_paths=PackedStringArray("detector_node", "visual_node") instance=ExtResource("4_8s4h5")] +unique_name_in_owner = true +detector_node = NodePath("..") +visual_node = NodePath("../Texture") +scale_amount = Vector2(1.05, 1.05) diff --git a/core/game_menu/biome_selector.tscn b/core/game_menu/biome_selector.tscn new file mode 100644 index 0000000..40c1288 --- /dev/null +++ b/core/game_menu/biome_selector.tscn @@ -0,0 +1,56 @@ +[gd_scene format=3 uid="uid://bc60gon7fmvbr"] + +[ext_resource type="PackedScene" uid="uid://dm3skv22c60tm" path="res://core/game_menu/arrow_button.tscn" id="1_16l2d"] +[ext_resource type="PackedScene" uid="uid://wckwvvnk8bt4" path="res://core/game_menu/biome_picker.tscn" id="2_q1k23"] +[ext_resource type="Texture2D" uid="uid://cin3kt42e6w3u" path="res://core/game_menu/assets/page_1/color_sx_biome.png" id="2_xjika"] +[ext_resource type="Texture2D" uid="uid://dc0sl04wem136" path="res://core/game_menu/assets/page_1/color_main_biome.png" id="3_0noye"] +[ext_resource type="Texture2D" uid="uid://c3qcivnwuisju" path="res://core/game_menu/assets/page_1/color_dx_biome.png" id="4_0noye"] + +[node name="BiomeSelector" type="HBoxContainer" unique_id=291322067] +offset_right = 700.0 +offset_bottom = 400.0 +theme_override_constants/separation = 0 +alignment = 1 + +[node name="ArrowButtonLeft" parent="." unique_id=1696751730 instance=ExtResource("1_16l2d")] +layout_mode = 2 +size_flags_vertical = 4 +flip_h = true + +[node name="HBoxContainer2" type="HBoxContainer" parent="." unique_id=1117886768] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 0 +alignment = 1 + +[node name="BiomePicker1" parent="HBoxContainer2" unique_id=477354740 instance=ExtResource("2_q1k23")] +layout_mode = 2 +size_flags_horizontal = 3 +image = ExtResource("2_xjika") + +[node name="BiomePicker2" parent="HBoxContainer2" unique_id=52821564 instance=ExtResource("2_q1k23")] +custom_minimum_size = Vector2(200, 400) +layout_mode = 2 +size_flags_horizontal = 3 +locked = false +image = ExtResource("3_0noye") + +[node name="Texture" parent="HBoxContainer2/BiomePicker2" index="0" unique_id=606844933] +texture = ExtResource("3_0noye") + +[node name="TextureRect" parent="HBoxContainer2/BiomePicker2/Texture" index="0" unique_id=288045010] +visible = false + +[node name="HooverTween" parent="HBoxContainer2/BiomePicker2" index="1" unique_id=160227524] +always_active = true + +[node name="BiomePicker3" parent="HBoxContainer2" unique_id=1567545303 instance=ExtResource("2_q1k23")] +layout_mode = 2 +size_flags_horizontal = 3 +image = ExtResource("4_0noye") + +[node name="ArrowButtonRight" parent="." unique_id=1741162553 instance=ExtResource("1_16l2d")] +layout_mode = 2 +size_flags_vertical = 4 + +[editable path="HBoxContainer2/BiomePicker2"] diff --git a/core/photo_mode/ui/collectible_gallery.gd b/core/game_menu/collectible_gallery.gd similarity index 100% rename from core/photo_mode/ui/collectible_gallery.gd rename to core/game_menu/collectible_gallery.gd diff --git a/core/photo_mode/ui/collectible_gallery.gd.uid b/core/game_menu/collectible_gallery.gd.uid similarity index 100% rename from core/photo_mode/ui/collectible_gallery.gd.uid rename to core/game_menu/collectible_gallery.gd.uid diff --git a/core/game_menu/collectible_gallery.tscn b/core/game_menu/collectible_gallery.tscn new file mode 100644 index 0000000..d3fe77c --- /dev/null +++ b/core/game_menu/collectible_gallery.tscn @@ -0,0 +1,48 @@ +[gd_scene format=3 uid="uid://bvw086glfpcba"] + +[ext_resource type="Script" uid="uid://dq3qtcrdnikl7" path="res://core/game_menu/collectible_gallery.gd" id="1_67tug"] +[ext_resource type="PackedScene" uid="uid://dp7dvfauh5rpx" path="res://core/game_menu/collectible_ui.tscn" id="2_or234"] + +[node name="CollectibleGallery" type="Control" unique_id=354419843] +layout_mode = 3 +anchors_preset = 0 +offset_right = 640.0 +offset_bottom = 410.0 +script = ExtResource("1_67tug") +collectible_ui_scene = ExtResource("2_or234") + +[node name="ScrollContainer" type="ScrollContainer" parent="." unique_id=348576028] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +draw_focus_border = true + +[node name="CollectibleGrid" type="GridContainer" parent="ScrollContainer" unique_id=1187865988] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 2 +theme_override_constants/h_separation = 0 +theme_override_constants/v_separation = 0 +columns = 3 + +[node name="CollectibleUI" parent="ScrollContainer/CollectibleGrid" unique_id=201865221 instance=ExtResource("2_or234")] +layout_mode = 2 + +[node name="CollectibleUI2" parent="ScrollContainer/CollectibleGrid" unique_id=68332892 instance=ExtResource("2_or234")] +layout_mode = 2 + +[node name="CollectibleUI3" parent="ScrollContainer/CollectibleGrid" unique_id=825070290 instance=ExtResource("2_or234")] +layout_mode = 2 + +[node name="CollectibleUI4" parent="ScrollContainer/CollectibleGrid" unique_id=2024921123 instance=ExtResource("2_or234")] +layout_mode = 2 + +[node name="CollectibleUI5" parent="ScrollContainer/CollectibleGrid" unique_id=666626121 instance=ExtResource("2_or234")] +layout_mode = 2 + +[node name="CollectibleUI6" parent="ScrollContainer/CollectibleGrid" unique_id=1566830281 instance=ExtResource("2_or234")] +layout_mode = 2 diff --git a/core/photo_mode/ui/collectible_ui.gd b/core/game_menu/collectible_ui.gd similarity index 79% rename from core/photo_mode/ui/collectible_ui.gd rename to core/game_menu/collectible_ui.gd index 453f528..392de96 100644 --- a/core/photo_mode/ui/collectible_ui.gd +++ b/core/game_menu/collectible_ui.gd @@ -2,15 +2,12 @@ extends Control class_name CollectibleUI -@onready var label: Label = $%CollectibleName -@onready var texture_rect: TextureRect = $%CollectibleTexture var collectible_resource: CollectibleResource +@onready var texture_rect: TextureRect = $%CollectibleTexture + func setup(collectible: CollectibleResource) -> void: collectible_resource = collectible - if !label: - label = $%CollectibleName - label.text = collectible_resource.title if collectible.image: if !texture_rect: texture_rect = $%CollectibleTexture diff --git a/core/photo_mode/ui/collectible_ui.gd.uid b/core/game_menu/collectible_ui.gd.uid similarity index 100% rename from core/photo_mode/ui/collectible_ui.gd.uid rename to core/game_menu/collectible_ui.gd.uid diff --git a/core/game_menu/collectible_ui.tscn b/core/game_menu/collectible_ui.tscn new file mode 100644 index 0000000..f1ea2bb --- /dev/null +++ b/core/game_menu/collectible_ui.tscn @@ -0,0 +1,24 @@ +[gd_scene format=3 uid="uid://dp7dvfauh5rpx"] + +[ext_resource type="Script" uid="uid://dxh8e1n16qjpp" path="res://core/game_menu/collectible_ui.gd" id="1_tu5nx"] +[ext_resource type="Texture2D" uid="uid://dsvu86m5la1tp" path="res://core/game_menu/assets/page_2/cat_animals_collection.png" id="3_jkdsb"] + +[node name="CollectibleUI" type="Control" unique_id=201865221] +custom_minimum_size = Vector2(210, 200) +layout_mode = 3 +anchors_preset = 0 +offset_right = 220.0 +offset_bottom = 200.0 +script = ExtResource("1_tu5nx") + +[node name="CollectibleTexture" type="TextureRect" parent="." unique_id=506844785] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +texture = ExtResource("3_jkdsb") +stretch_mode = 3 diff --git a/core/game_menu/color_picker.gd b/core/game_menu/color_picker.gd new file mode 100644 index 0000000..78481a2 --- /dev/null +++ b/core/game_menu/color_picker.gd @@ -0,0 +1,40 @@ +@tool +extends Control + +class_name TrainColorPicker + +signal on_color_selected(color_picker: TrainColorPicker) + +@export var image: Texture: + set(value): + image = value + if is_inside_tree() and has_node("%Texture"): + $%Texture.texture = image + +@onready var color: Color + +var selected: bool = false + +func _ready(): + if image != null and has_node("%Texture"): + $%Texture.texture = image + if $%Texture.texture != null: + var img = $%Texture.texture.get_image() + color = img.get_pixel(0, 0) + else: + color = Color.BLACK + + +func _on_gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + on_color_selected.emit(self) + + +func select() -> void: + selected = true + $%Border.color.a = 1 + + +func deselect() -> void: + selected = false + $%Border.color.a = 0 diff --git a/core/game_menu/color_picker.gd.uid b/core/game_menu/color_picker.gd.uid new file mode 100644 index 0000000..d4a1a2d --- /dev/null +++ b/core/game_menu/color_picker.gd.uid @@ -0,0 +1 @@ +uid://crfw5whcjs0du diff --git a/core/game_menu/color_picker.tscn b/core/game_menu/color_picker.tscn new file mode 100644 index 0000000..ac772ff --- /dev/null +++ b/core/game_menu/color_picker.tscn @@ -0,0 +1,57 @@ +[gd_scene format=3 uid="uid://ch1st1oryjoio"] + +[ext_resource type="Texture2D" uid="uid://cdjwvwst3f10a" path="res://core/game_menu/assets/page_1/customizecolor-1.png" id="1_us0rx"] +[ext_resource type="Script" uid="uid://crfw5whcjs0du" path="res://core/game_menu/color_picker.gd" id="2_323rd"] +[ext_resource type="PackedScene" uid="uid://dxun0jk5t0n6" path="res://core/game_menu/hoover_tween.tscn" id="3_264kt"] + +[node name="ColorPicker" type="Control" unique_id=409505029] +custom_minimum_size = Vector2(53, 53) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("2_323rd") +image = ExtResource("1_us0rx") + +[node name="Border" type="ColorRect" parent="." unique_id=1774696864] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -30.0 +offset_top = -30.0 +offset_right = 30.0 +offset_bottom = 30.0 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 2 + +[node name="Texture" type="TextureRect" parent="Border" unique_id=329703623] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -26.5 +offset_top = -26.5 +offset_right = 26.5 +offset_bottom = 26.5 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 2 +texture = ExtResource("1_us0rx") + +[node name="HooverTween" parent="." unique_id=160227524 node_paths=PackedStringArray("detector_node", "visual_node") instance=ExtResource("3_264kt")] +detector_node = NodePath("..") +visual_node = NodePath("../Border") + +[connection signal="gui_input" from="." to="." method="_on_gui_input"] diff --git a/core/game_menu/game_menu.gd b/core/game_menu/game_menu.gd new file mode 100644 index 0000000..a8d6eb0 --- /dev/null +++ b/core/game_menu/game_menu.gd @@ -0,0 +1,23 @@ +extends Control + +@onready var tabs: Array[GameMenuTab] = [$%Tab1, $%Tab2, $%Tab3] +@onready var pages: Array[Control] = [$%Page1, $%Page2, $%Page3] + +func _ready() -> void: + for tab: GameMenuTab in tabs: + tab.on_tab_selected.connect(_on_tab_pressed) + + tabs[0].select_without_animation() + pages[0].show() + +func _on_tab_pressed(index: int): + for page in pages: + page.hide() + + for tab in tabs: + if tab.index == index: + tab.select() + else: + tab.deselect() + + pages[index].show() diff --git a/core/game_menu/game_menu.gd.uid b/core/game_menu/game_menu.gd.uid new file mode 100644 index 0000000..b71de0d --- /dev/null +++ b/core/game_menu/game_menu.gd.uid @@ -0,0 +1 @@ +uid://dfb61nn3wfbje diff --git a/core/game_menu/game_menu.tscn b/core/game_menu/game_menu.tscn new file mode 100644 index 0000000..65d1826 --- /dev/null +++ b/core/game_menu/game_menu.tscn @@ -0,0 +1,77 @@ +[gd_scene format=3 uid="uid://dqqm4o8j45tr6"] + +[ext_resource type="Texture2D" uid="uid://bs56pdbywm4uh" path="res://core/game_menu/assets/page_1/quad_main.png" id="1_0ojv5"] +[ext_resource type="Script" uid="uid://dfb61nn3wfbje" path="res://core/game_menu/game_menu.gd" id="1_57vaj"] +[ext_resource type="PackedScene" uid="uid://bqvpnu74cwry8" path="res://core/game_menu/page_1.tscn" id="3_quxs6"] +[ext_resource type="PackedScene" uid="uid://dr5b6jnh7rcko" path="res://core/game_menu/game_menu_tab.tscn" id="3_xmmnr"] +[ext_resource type="PackedScene" uid="uid://4bamw5busnvc" path="res://core/game_menu/page_2.tscn" id="4_ilf85"] +[ext_resource type="Texture2D" uid="uid://bdfsfteuwk5bu" path="res://core/game_menu/assets/page_1/ticket3.png" id="4_y36g7"] +[ext_resource type="Texture2D" uid="uid://dq7owenentst2" path="res://core/game_menu/assets/page_1/ticket2.png" id="5_7d256"] +[ext_resource type="PackedScene" uid="uid://c8b5sqnocx8dr" path="res://core/game_menu/page_3.tscn" id="5_yq2ch"] + +[node name="GameMenu" type="Control" unique_id=2124096517] +process_mode = 3 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_57vaj") + +[node name="Tabs" type="HBoxContainer" parent="." unique_id=1745270897] +layout_mode = 1 +offset_left = 1138.0 +offset_top = 208.0 +offset_right = 1734.0 +offset_bottom = 646.0 + +[node name="Tab1" parent="Tabs" unique_id=2026548604 instance=ExtResource("3_xmmnr")] +unique_name_in_owner = true +layout_mode = 2 +image = ExtResource("4_y36g7") + +[node name="Tab2" parent="Tabs" unique_id=640092511 instance=ExtResource("3_xmmnr")] +unique_name_in_owner = true +layout_mode = 2 +index = 1 + +[node name="Tab3" parent="Tabs" unique_id=1769860923 instance=ExtResource("3_xmmnr")] +unique_name_in_owner = true +layout_mode = 2 +index = 2 +image = ExtResource("5_7d256") + +[node name="Background" type="TextureRect" parent="." unique_id=1059942660] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("1_0ojv5") + +[node name="Pages" type="Control" parent="." unique_id=1744911944] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Page1" parent="Pages" unique_id=2037261222 instance=ExtResource("3_quxs6")] +unique_name_in_owner = true +layout_mode = 1 + +[node name="Page2" parent="Pages" unique_id=1254645647 instance=ExtResource("4_ilf85")] +unique_name_in_owner = true +visible = false +layout_mode = 1 + +[node name="Page3" parent="Pages" unique_id=381047815 instance=ExtResource("5_yq2ch")] +unique_name_in_owner = true +visible = false +layout_mode = 1 diff --git a/core/game_menu/game_menu_tab.gd b/core/game_menu/game_menu_tab.gd new file mode 100644 index 0000000..36c23eb --- /dev/null +++ b/core/game_menu/game_menu_tab.gd @@ -0,0 +1,50 @@ +@tool +extends Control + +class_name GameMenuTab + +signal on_tab_selected(index: int) + +@export var bob_height: float = 100 +@export var duration: float = 0.5 +@export var index: int = 0 +@export var image: Texture: + set(value): + image = value + if is_inside_tree() and has_node("%Texture"): + $%Texture.texture = image + +@onready var texture: TextureRect = $%Texture + +var is_selected: bool = false +var hover_tween: Tween + +func _ready(): + if image != null and has_node("%Texture"): + $%Texture.texture = image + +func _on_gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + on_tab_selected.emit(index) + +func select(): + is_selected = true + _move_up() + +func deselect(): + is_selected = false + _move_down() + +func select_without_animation(): + is_selected = true + texture.position.y = -bob_height + +func _move_up(): + if hover_tween: hover_tween.kill() + hover_tween = create_tween() + hover_tween.tween_property(texture, "position:y", -bob_height, duration).set_trans(Tween.TRANS_SINE) + +func _move_down(): + if hover_tween: hover_tween.kill() + var exit_tween = create_tween() + exit_tween.tween_property(texture, "position:y", 0, duration).set_trans(Tween.TRANS_QUAD) diff --git a/core/game_menu/game_menu_tab.gd.uid b/core/game_menu/game_menu_tab.gd.uid new file mode 100644 index 0000000..94e6d3c --- /dev/null +++ b/core/game_menu/game_menu_tab.gd.uid @@ -0,0 +1 @@ +uid://37s131g0d5lh diff --git a/core/game_menu/game_menu_tab.tscn b/core/game_menu/game_menu_tab.tscn new file mode 100644 index 0000000..4f292ce --- /dev/null +++ b/core/game_menu/game_menu_tab.tscn @@ -0,0 +1,25 @@ +[gd_scene format=3 uid="uid://dr5b6jnh7rcko"] + +[ext_resource type="Script" uid="uid://37s131g0d5lh" path="res://core/game_menu/game_menu_tab.gd" id="1_5bcha"] +[ext_resource type="Texture2D" uid="uid://ce1u34fp1h2o5" path="res://core/game_menu/assets/page_1/ticket1.png" id="2_giv8b"] + +[node name="GameMenuTab" type="Control" unique_id=2026548604] +custom_minimum_size = Vector2(196, 408) +layout_mode = 3 +anchor_right = 0.10208333 +anchor_bottom = 0.40648147 +script = ExtResource("1_5bcha") +image = ExtResource("2_giv8b") + +[node name="Texture" type="TextureRect" parent="." unique_id=836668758] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("2_giv8b") +stretch_mode = 5 + +[connection signal="gui_input" from="." to="." method="_on_gui_input"] diff --git a/core/game_menu/highlighted_photo.gd b/core/game_menu/highlighted_photo.gd new file mode 100644 index 0000000..ac75b98 --- /dev/null +++ b/core/game_menu/highlighted_photo.gd @@ -0,0 +1,18 @@ +extends Control + +@onready var photo: Photo = $%Photo +@onready var panel: Panel = $%Panel + +func _ready() -> void: + GameState.on_photo_highlighted.connect(_on_photo_highlighted) + +func _on_photo_highlighted(texture: Texture) -> void: + if texture != photo.texture_rect.texture: + show() + photo.setup(texture) + + +func _on_panel_gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + photo.texture_rect.texture = null + hide() diff --git a/core/game_menu/highlighted_photo.gd.uid b/core/game_menu/highlighted_photo.gd.uid new file mode 100644 index 0000000..8dc0c22 --- /dev/null +++ b/core/game_menu/highlighted_photo.gd.uid @@ -0,0 +1 @@ +uid://uqq4yjdn807o diff --git a/core/game_menu/highlighted_photo.tscn b/core/game_menu/highlighted_photo.tscn new file mode 100644 index 0000000..6a8a9ce --- /dev/null +++ b/core/game_menu/highlighted_photo.tscn @@ -0,0 +1,48 @@ +[gd_scene format=3 uid="uid://c7t3p8sp54apy"] + +[ext_resource type="Script" uid="uid://uqq4yjdn807o" path="res://core/game_menu/highlighted_photo.gd" id="1_j5yug"] +[ext_resource type="PackedScene" uid="uid://cvus62qkop3qi" path="res://core/game_menu/photo.tscn" id="1_x7ou0"] + +[node name="HighlightedPhoto" type="Control" unique_id=888465569] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_j5yug") + +[node name="Panel" type="Panel" parent="." unique_id=1111309868] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Photo" parent="." unique_id=201865221 instance=ExtResource("1_x7ou0")] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.3625 +anchor_top = 0.14351852 +anchor_right = 0.6375 +anchor_bottom = 0.8564815 +mouse_filter = 2 +metadata/_edit_use_anchors_ = true + +[node name="ColorRect" parent="Photo" index="0" unique_id=1208008621] +anchors_preset = 15 +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 0.0 +offset_top = 0.0 +offset_right = 0.0 +offset_bottom = 0.0 + +[connection signal="gui_input" from="Panel" to="." method="_on_panel_gui_input"] + +[editable path="Photo"] diff --git a/core/game_menu/hoover_tween.gd b/core/game_menu/hoover_tween.gd new file mode 100644 index 0000000..61449c9 --- /dev/null +++ b/core/game_menu/hoover_tween.gd @@ -0,0 +1,44 @@ +extends Node + + +@export_group("Settings") +@export var always_active: bool = false +@export var detector_node: Control +@export var visual_node: Control +@export var scale_amount: Vector2 = Vector2(1.1, 1.1) +@export var duration: float = 0.5 + +var hover_tween: Tween + +func _ready(): + if not detector_node or not visual_node: + return + + if always_active: + _start_tween() + return + + detector_node.mouse_entered.connect(_on_mouse_entered) + detector_node.mouse_exited.connect(_on_mouse_exited) + + +func _on_mouse_entered(): + if hover_tween: hover_tween.kill() + + _start_tween() + +func _on_mouse_exited(): + if hover_tween: hover_tween.kill() + + _stop_tween() + + +func _start_tween() -> void: + hover_tween = create_tween().set_loops() + hover_tween.tween_property(visual_node, "scale", scale_amount, duration).set_trans(Tween.TRANS_SINE) + hover_tween.tween_property(visual_node, "scale", Vector2.ONE, duration).set_trans(Tween.TRANS_SINE) + +func _stop_tween() -> void: + var exit_tween = create_tween() + exit_tween.tween_property(visual_node, "scale", Vector2.ONE, 0.2).set_trans(Tween.TRANS_QUAD) + diff --git a/core/game_menu/hoover_tween.gd.uid b/core/game_menu/hoover_tween.gd.uid new file mode 100644 index 0000000..8e0f72d --- /dev/null +++ b/core/game_menu/hoover_tween.gd.uid @@ -0,0 +1 @@ +uid://ryxh3nm7ayvf diff --git a/core/game_menu/hoover_tween.tscn b/core/game_menu/hoover_tween.tscn new file mode 100644 index 0000000..4abaa61 --- /dev/null +++ b/core/game_menu/hoover_tween.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://dxun0jk5t0n6"] + +[ext_resource type="Script" uid="uid://ryxh3nm7ayvf" path="res://core/game_menu/hoover_tween.gd" id="1_gmaf4"] + +[node name="HooverTween" type="Node" unique_id=160227524] +script = ExtResource("1_gmaf4") diff --git a/core/game_menu/option_menu.gd b/core/game_menu/option_menu.gd new file mode 100644 index 0000000..23bf26c --- /dev/null +++ b/core/game_menu/option_menu.gd @@ -0,0 +1,16 @@ +extends Control + +@onready var play_button: Control = $%PlayButton +@onready var resume_button: Control = $%ResumeButton + + +func _on_resume_button_on_button_pressed() -> void: + GameState.resume_game() + + +func _on_save_button_on_button_pressed() -> void: + GameState.save_game() + + +func _on_quit_button_on_button_pressed() -> void: + GameState.quit_game() diff --git a/core/game_menu/option_menu.gd.uid b/core/game_menu/option_menu.gd.uid new file mode 100644 index 0000000..9cc8f5e --- /dev/null +++ b/core/game_menu/option_menu.gd.uid @@ -0,0 +1 @@ +uid://cvrjr02dpnafm diff --git a/core/game_menu/option_menu.tscn b/core/game_menu/option_menu.tscn new file mode 100644 index 0000000..88ee16a --- /dev/null +++ b/core/game_menu/option_menu.tscn @@ -0,0 +1,66 @@ +[gd_scene format=3 uid="uid://cxf8s80ivwj1p"] + +[ext_resource type="Script" uid="uid://cvrjr02dpnafm" path="res://core/game_menu/option_menu.gd" id="1_cd2sv"] +[ext_resource type="PackedScene" uid="uid://c3alhtb3083qs" path="res://core/game_menu/option_menu_button.tscn" id="2_cd2sv"] +[ext_resource type="Texture2D" uid="uid://dd1exrppb6bjq" path="res://core/game_menu/assets/page_3/resume_button.png" id="2_htoi2"] +[ext_resource type="Texture2D" uid="uid://cmhx3mscwrwft" path="res://core/game_menu/assets/page_3/save_button.png" id="3_vwpol"] +[ext_resource type="Texture2D" uid="uid://cu8e7pl0y4owq" path="res://core/game_menu/assets/page_3/settings_button.png" id="4_8w45m"] +[ext_resource type="Texture2D" uid="uid://v7e7467fkdec" path="res://core/game_menu/assets/page_3/quit_button.png" id="4_cd2sv"] + +[node name="OptionMenu" type="Control" unique_id=1055457221] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_cd2sv") + +[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=508055524] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.41927084 +anchor_top = 0.2537037 +anchor_right = 0.5807292 +anchor_bottom = 0.7462963 +offset_top = 60.0 +offset_bottom = -60.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +theme_override_constants/separation = 8 +metadata/_edit_use_anchors_ = true + +[node name="PlayButton" parent="VBoxContainer" unique_id=1990327704 instance=ExtResource("2_cd2sv")] +unique_name_in_owner = true +custom_minimum_size = Vector2(310, 100) +layout_mode = 2 + +[node name="ResumeButton" parent="VBoxContainer" unique_id=635721927 instance=ExtResource("2_cd2sv")] +unique_name_in_owner = true +custom_minimum_size = Vector2(310, 100) +layout_mode = 2 +image = ExtResource("2_htoi2") + +[node name="SettingsButton" parent="VBoxContainer" unique_id=1931222561 instance=ExtResource("2_cd2sv")] +unique_name_in_owner = true +custom_minimum_size = Vector2(310, 100) +layout_mode = 2 +image = ExtResource("4_8w45m") + +[node name="SaveButton" parent="VBoxContainer" unique_id=1161034414 instance=ExtResource("2_cd2sv")] +unique_name_in_owner = true +custom_minimum_size = Vector2(310, 100) +layout_mode = 2 +image = ExtResource("3_vwpol") + +[node name="QuitButton" parent="VBoxContainer" unique_id=1804807896 instance=ExtResource("2_cd2sv")] +unique_name_in_owner = true +custom_minimum_size = Vector2(310, 100) +layout_mode = 2 +image = ExtResource("4_cd2sv") + +[connection signal="on_button_pressed" from="VBoxContainer/ResumeButton" to="." method="_on_resume_button_on_button_pressed"] +[connection signal="on_button_pressed" from="VBoxContainer/SaveButton" to="." method="_on_save_button_on_button_pressed"] +[connection signal="on_button_pressed" from="VBoxContainer/QuitButton" to="." method="_on_quit_button_on_button_pressed"] diff --git a/core/game_menu/option_menu_button.gd b/core/game_menu/option_menu_button.gd new file mode 100644 index 0000000..7dcf811 --- /dev/null +++ b/core/game_menu/option_menu_button.gd @@ -0,0 +1,18 @@ +@tool +extends Control + +signal on_button_pressed + +@export var image: Texture: + set(value): + image = value + if is_inside_tree() and has_node("%Texture"): + $%Texture.texture = image + +func _ready(): + if image != null and has_node("%Texture"): + $%Texture.texture = image + +func _on_gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + on_button_pressed.emit() diff --git a/core/game_menu/option_menu_button.gd.uid b/core/game_menu/option_menu_button.gd.uid new file mode 100644 index 0000000..e51460e --- /dev/null +++ b/core/game_menu/option_menu_button.gd.uid @@ -0,0 +1 @@ +uid://bbhe65f3517m8 diff --git a/core/game_menu/option_menu_button.tscn b/core/game_menu/option_menu_button.tscn new file mode 100644 index 0000000..08bf5a9 --- /dev/null +++ b/core/game_menu/option_menu_button.tscn @@ -0,0 +1,36 @@ +[gd_scene format=3 uid="uid://c3alhtb3083qs"] + +[ext_resource type="Texture2D" uid="uid://b4nymq3n3468g" path="res://core/game_menu/assets/page_3/play_button.png" id="1_movd1"] +[ext_resource type="Script" uid="uid://bbhe65f3517m8" path="res://core/game_menu/option_menu_button.gd" id="2_nghpi"] +[ext_resource type="PackedScene" uid="uid://dxun0jk5t0n6" path="res://core/game_menu/hoover_tween.tscn" id="3_am666"] + +[node name="OptionMenuButton" type="Control" unique_id=635721927] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("2_nghpi") +image = ExtResource("1_movd1") + +[node name="Texture" type="TextureRect" parent="." unique_id=1177880405] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.42135417 +anchor_top = 0.45833334 +anchor_right = 0.5786458 +anchor_bottom = 0.5416667 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 2 +texture = ExtResource("1_movd1") +metadata/_edit_use_anchors_ = true + +[node name="HooverTween" parent="." unique_id=160227524 node_paths=PackedStringArray("detector_node", "visual_node") instance=ExtResource("3_am666")] +detector_node = NodePath("..") +visual_node = NodePath("../Texture") + +[connection signal="gui_input" from="." to="." method="_on_gui_input"] diff --git a/core/game_menu/page.tscn b/core/game_menu/page.tscn new file mode 100644 index 0000000..4f5522c --- /dev/null +++ b/core/game_menu/page.tscn @@ -0,0 +1,17 @@ +[gd_scene format=3 uid="uid://id854u4gh12f"] + +[ext_resource type="Texture2D" uid="uid://bs56pdbywm4uh" path="res://core/game_menu/assets/page_1/quad_main.png" id="1_jwl25"] + +[node name="Page" type="Control" unique_id=2037261222] +layout_mode = 3 +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="Background" type="TextureRect" parent="." unique_id=1203110384] +visible = false +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +mouse_filter = 2 +texture = ExtResource("1_jwl25") diff --git a/core/game_menu/page_1.tscn b/core/game_menu/page_1.tscn new file mode 100644 index 0000000..5b3b698 --- /dev/null +++ b/core/game_menu/page_1.tscn @@ -0,0 +1,48 @@ +[gd_scene format=3 uid="uid://bqvpnu74cwry8"] + +[ext_resource type="PackedScene" uid="uid://id854u4gh12f" path="res://core/game_menu/page.tscn" id="1_uxih6"] +[ext_resource type="PackedScene" uid="uid://bh1kxsp5jyxfx" path="res://core/game_menu/train_selector.tscn" id="3_ijm38"] +[ext_resource type="Texture2D" uid="uid://bjqp8kmb5y7px" path="res://core/game_menu/assets/page_1/chooseyourtrain_text.png" id="3_t5hmd"] +[ext_resource type="Texture2D" uid="uid://dqqnfnero7ckl" path="res://core/game_menu/assets/page_1/chooseyourbiome_text.png" id="11_3chbu"] +[ext_resource type="PackedScene" uid="uid://bc60gon7fmvbr" path="res://core/game_menu/biome_selector.tscn" id="12_7yi8x"] + +[node name="Page1" unique_id=2037261222 instance=ExtResource("1_uxih6")] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = 0.0 +offset_bottom = 0.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="ChooseyourtrainText" type="TextureRect" parent="." index="1" unique_id=1883940124] +layout_mode = 0 +offset_left = 350.0 +offset_top = 365.0 +offset_right = 758.0 +offset_bottom = 445.0 +texture = ExtResource("3_t5hmd") + +[node name="TrainSelector" parent="." index="2" unique_id=1039769375 instance=ExtResource("3_ijm38")] +layout_mode = 0 +offset_left = 211.0 +offset_top = 469.0 +offset_right = 871.0 +offset_bottom = 778.0 + +[node name="ChooseyourbiomeText" type="TextureRect" parent="." index="3" unique_id=1133714914] +layout_mode = 0 +offset_left = 1184.0 +offset_top = 365.0 +offset_right = 1579.0 +offset_bottom = 436.0 +texture = ExtResource("11_3chbu") +stretch_mode = 3 + +[node name="BiomeSelector" parent="." index="4" unique_id=1957954960 instance=ExtResource("12_7yi8x")] +layout_mode = 0 +offset_left = 1038.0 +offset_top = 437.0 +offset_right = 1738.0 +offset_bottom = 837.0 diff --git a/core/game_menu/page_2.tscn b/core/game_menu/page_2.tscn new file mode 100644 index 0000000..d3765dd --- /dev/null +++ b/core/game_menu/page_2.tscn @@ -0,0 +1,57 @@ +[gd_scene format=3 uid="uid://4bamw5busnvc"] + +[ext_resource type="PackedScene" uid="uid://id854u4gh12f" path="res://core/game_menu/page.tscn" id="1_ka6tx"] +[ext_resource type="Texture2D" uid="uid://xgx0211eo8hi" path="res://core/game_menu/assets/page_2/photocollections_text.png" id="2_4uwhd"] +[ext_resource type="Texture2D" uid="uid://xfl3ks4dbfaw" path="res://core/game_menu/assets/page_2/achievements_text.png" id="3_4uwhd"] +[ext_resource type="PackedScene" uid="uid://b6r787sik5yil" path="res://core/game_menu/photo_gallery.tscn" id="4_3tfra"] +[ext_resource type="PackedScene" uid="uid://bvw086glfpcba" path="res://core/game_menu/collectible_gallery.tscn" id="5_w0bcg"] +[ext_resource type="PackedScene" uid="uid://c7t3p8sp54apy" path="res://core/game_menu/highlighted_photo.tscn" id="6_2273a"] + +[node name="Page2" unique_id=2037261222 instance=ExtResource("1_ka6tx")] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = 0.0 +offset_bottom = 0.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Background" parent="." index="0" unique_id=1203110384] +mouse_filter = 2 + +[node name="PhotoCollectionText" type="TextureRect" parent="." index="1" unique_id=240014191] +layout_mode = 0 +offset_left = 350.0 +offset_top = 330.0 +offset_right = 758.0 +offset_bottom = 410.0 +texture = ExtResource("2_4uwhd") +stretch_mode = 3 + +[node name="AchievementsText" type="TextureRect" parent="." index="2" unique_id=1478291812] +layout_mode = 0 +offset_left = 1184.0 +offset_top = 330.0 +offset_right = 1579.0 +offset_bottom = 401.0 +texture = ExtResource("3_4uwhd") +stretch_mode = 3 + +[node name="PhotoGallery" parent="." index="3" unique_id=354419843 instance=ExtResource("4_3tfra")] +layout_mode = 1 +offset_left = 244.0 +offset_top = 410.0 +offset_right = 844.0 +offset_bottom = 810.0 + +[node name="CollectibleGallery" parent="." index="4" unique_id=708445500 instance=ExtResource("5_w0bcg")] +layout_mode = 1 +offset_left = 1050.0 +offset_top = 425.0 +offset_right = 1690.0 +offset_bottom = 835.0011 + +[node name="HighlightedPhoto" parent="." index="5" unique_id=888465569 instance=ExtResource("6_2273a")] +visible = false +layout_mode = 1 diff --git a/core/game_menu/page_3.tscn b/core/game_menu/page_3.tscn new file mode 100644 index 0000000..17e5dd9 --- /dev/null +++ b/core/game_menu/page_3.tscn @@ -0,0 +1,51 @@ +[gd_scene format=3 uid="uid://c8b5sqnocx8dr"] + +[ext_resource type="PackedScene" uid="uid://id854u4gh12f" path="res://core/game_menu/page.tscn" id="1_ua8fn"] +[ext_resource type="Texture2D" uid="uid://fpnhk1ygcrmu" path="res://core/game_menu/assets/page_3/bg_timbri.png" id="2_ckqcb"] +[ext_resource type="PackedScene" uid="uid://cxf8s80ivwj1p" path="res://core/game_menu/option_menu.tscn" id="2_tymfi"] +[ext_resource type="PackedScene" uid="uid://caqf471x0kttc" path="res://core/game_menu/settings_menu.tscn" id="4_twko7"] + +[node name="Page3" unique_id=2037261222 instance=ExtResource("1_ua8fn")] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = 0.0 +offset_bottom = 0.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="TextureRect" type="TextureRect" parent="." index="1" unique_id=464034413] +layout_mode = 0 +offset_left = 1040.0 +offset_top = 309.0 +offset_right = 1738.0 +offset_bottom = 836.0 +texture = ExtResource("2_ckqcb") + +[node name="OptionMenu" parent="." index="2" unique_id=1055457221 instance=ExtResource("2_tymfi")] +layout_mode = 0 +anchors_preset = 0 +anchor_right = 0.0 +anchor_bottom = 0.0 +offset_left = 1385.0 +offset_top = 563.0 +offset_right = 1385.0 +offset_bottom = 563.0 +grow_horizontal = 1 +grow_vertical = 1 + +[node name="PlayButton" parent="OptionMenu/VBoxContainer" parent_id_path=PackedInt32Array(1055457221, 508055524) index="0" unique_id=1990327704] +visible = false + +[node name="SettingsButton" parent="OptionMenu/VBoxContainer" parent_id_path=PackedInt32Array(1055457221, 508055524) index="2" unique_id=1931222561] +visible = false + +[node name="SettingsMenu" parent="." index="3" unique_id=1639777294 instance=ExtResource("4_twko7")] +layout_mode = 1 +offset_left = 365.0 +offset_top = 304.0 +offset_right = 365.0 +offset_bottom = 304.0 + +[editable path="OptionMenu"] diff --git a/core/photo_mode/ui/photo.gd b/core/game_menu/photo.gd similarity index 52% rename from core/photo_mode/ui/photo.gd rename to core/game_menu/photo.gd index 5740c30..b1f48cd 100644 --- a/core/photo_mode/ui/photo.gd +++ b/core/game_menu/photo.gd @@ -9,3 +9,8 @@ func setup(texture: Texture) -> void: if !texture_rect: texture_rect = $%PhotoTexture texture_rect.texture = texture + + +func _on_gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + GameState.on_photo_highlighted.emit(texture_rect.texture) diff --git a/core/photo_mode/ui/photo.gd.uid b/core/game_menu/photo.gd.uid similarity index 100% rename from core/photo_mode/ui/photo.gd.uid rename to core/game_menu/photo.gd.uid diff --git a/core/game_menu/photo.tscn b/core/game_menu/photo.tscn new file mode 100644 index 0000000..0c07fd1 --- /dev/null +++ b/core/game_menu/photo.tscn @@ -0,0 +1,57 @@ +[gd_scene format=3 uid="uid://cvus62qkop3qi"] + +[ext_resource type="Script" uid="uid://dsey5dvc11vpq" path="res://core/game_menu/photo.gd" id="1_u0arp"] +[ext_resource type="PackedScene" uid="uid://dxun0jk5t0n6" path="res://core/game_menu/hoover_tween.tscn" id="2_62vvn"] + +[node name="Photo" type="Control" unique_id=201865221] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_u0arp") + +[node name="ColorRect" type="ColorRect" parent="." unique_id=1208008621] +custom_minimum_size = Vector2(132, 154) +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.465625 +anchor_top = 0.4287037 +anchor_right = 0.534375 +anchor_bottom = 0.5712963 +offset_left = 66.0 +offset_top = 77.0 +offset_right = -66.0 +offset_bottom = -77.0 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 2 +metadata/_edit_use_anchors_ = true + +[node name="MarginContainer" type="MarginContainer" parent="ColorRect" unique_id=1141643525] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 14 +theme_override_constants/margin_top = 15 +theme_override_constants/margin_right = 14 +theme_override_constants/margin_bottom = 50 + +[node name="PhotoTexture" type="TextureRect" parent="ColorRect/MarginContainer" unique_id=506844785] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +mouse_filter = 2 +expand_mode = 1 +stretch_mode = 6 + +[node name="HooverTween" parent="." unique_id=160227524 node_paths=PackedStringArray("detector_node", "visual_node") instance=ExtResource("2_62vvn")] +detector_node = NodePath("..") +visual_node = NodePath("../ColorRect") + +[connection signal="gui_input" from="." to="." method="_on_gui_input"] diff --git a/core/photo_mode/ui/photo_gallery.gd b/core/game_menu/photo_gallery.gd similarity index 94% rename from core/photo_mode/ui/photo_gallery.gd rename to core/game_menu/photo_gallery.gd index 9ffd1e4..26d8801 100644 --- a/core/photo_mode/ui/photo_gallery.gd +++ b/core/game_menu/photo_gallery.gd @@ -25,3 +25,4 @@ func _create_photo_thumbnail(file_path: String) -> void: var texture = ImageTexture.create_from_image(image) photo.setup(texture) grid_container.add_child(photo) + photo.custom_minimum_size = Vector2(132,154) diff --git a/core/photo_mode/ui/photo_gallery.gd.uid b/core/game_menu/photo_gallery.gd.uid similarity index 100% rename from core/photo_mode/ui/photo_gallery.gd.uid rename to core/game_menu/photo_gallery.gd.uid diff --git a/core/game_menu/photo_gallery.tscn b/core/game_menu/photo_gallery.tscn new file mode 100644 index 0000000..4f58395 --- /dev/null +++ b/core/game_menu/photo_gallery.tscn @@ -0,0 +1,55 @@ +[gd_scene format=3 uid="uid://b6r787sik5yil"] + +[ext_resource type="Script" uid="uid://k4iqrlkbjppl" path="res://core/game_menu/photo_gallery.gd" id="1_bp5uf"] +[ext_resource type="PackedScene" uid="uid://cvus62qkop3qi" path="res://core/game_menu/photo.tscn" id="2_45wok"] + +[node name="PhotoGallery" type="Control" unique_id=354419843] +layout_mode = 3 +anchors_preset = 0 +offset_right = 600.0 +offset_bottom = 420.0 +mouse_filter = 2 +script = ExtResource("1_bp5uf") +photo_scene = ExtResource("2_45wok") + +[node name="ScrollContainer" type="ScrollContainer" parent="." unique_id=348576028] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +draw_focus_border = true + +[node name="PhotoGrid" type="GridContainer" parent="ScrollContainer" unique_id=1187865988] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 +theme_override_constants/h_separation = 44 +theme_override_constants/v_separation = 54 +columns = 3 + +[node name="Photo" parent="ScrollContainer/PhotoGrid" unique_id=201865221 instance=ExtResource("2_45wok")] +custom_minimum_size = Vector2(132, 154) +layout_mode = 2 + +[node name="Photo2" parent="ScrollContainer/PhotoGrid" unique_id=427039285 instance=ExtResource("2_45wok")] +custom_minimum_size = Vector2(132, 154) +layout_mode = 2 + +[node name="Photo3" parent="ScrollContainer/PhotoGrid" unique_id=800591401 instance=ExtResource("2_45wok")] +custom_minimum_size = Vector2(132, 154) +layout_mode = 2 + +[node name="Photo4" parent="ScrollContainer/PhotoGrid" unique_id=1895298585 instance=ExtResource("2_45wok")] +custom_minimum_size = Vector2(132, 154) +layout_mode = 2 + +[node name="Photo5" parent="ScrollContainer/PhotoGrid" unique_id=2093353381 instance=ExtResource("2_45wok")] +custom_minimum_size = Vector2(132, 154) +layout_mode = 2 + +[node name="Photo6" parent="ScrollContainer/PhotoGrid" unique_id=316021755 instance=ExtResource("2_45wok")] +custom_minimum_size = Vector2(132, 154) +layout_mode = 2 diff --git a/core/audio/settings/settings_menu.gd b/core/game_menu/settings_menu.gd similarity index 59% rename from core/audio/settings/settings_menu.gd rename to core/game_menu/settings_menu.gd index ea9501e..6327c27 100644 --- a/core/audio/settings/settings_menu.gd +++ b/core/game_menu/settings_menu.gd @@ -3,12 +3,8 @@ extends Control class_name SettingsMenu @onready var audio_options_container: VBoxContainer = $%AudioOptionsContainer -@onready var reset_button: Button = $%ResetToDefault_Button -@onready var close_button: Button = $%Close_Button func _ready() -> void: - reset_button.pressed.connect(_on_reset_to_default_button_pressed) - close_button.pressed.connect(_on_close_button_pressed) _refresh_audio_options() func _get_audio_options() -> Array[AudioOption]: @@ -27,10 +23,3 @@ func _refresh_audio_options() -> void: func _apply_current_audio_values() -> void: for audio_option in _get_audio_options(): audio_option.apply_current_value() - -func _on_reset_to_default_button_pressed() -> void: - for audio_option in _get_audio_options(): - audio_option.reset_to_default() - -func _on_close_button_pressed() -> void: - visible = false diff --git a/core/audio/settings/settings_menu.gd.uid b/core/game_menu/settings_menu.gd.uid similarity index 100% rename from core/audio/settings/settings_menu.gd.uid rename to core/game_menu/settings_menu.gd.uid diff --git a/core/game_menu/settings_menu.tscn b/core/game_menu/settings_menu.tscn new file mode 100644 index 0000000..13f901e --- /dev/null +++ b/core/game_menu/settings_menu.tscn @@ -0,0 +1,33 @@ +[gd_scene format=3 uid="uid://caqf471x0kttc"] + +[ext_resource type="Script" uid="uid://cvr25q1blyxg" path="res://core/game_menu/settings_menu.gd" id="1_4lekq"] +[ext_resource type="PackedScene" uid="uid://cescrovsjlwke" path="res://core/game_menu/audio_option.tscn" id="1_hwcco"] +[ext_resource type="Texture2D" uid="uid://0t00kjvrw206" path="res://core/game_menu/assets/page_3/music_volume_button.png" id="3_kgdba"] +[ext_resource type="Texture2D" uid="uid://dvergpy6qgggn" path="res://core/game_menu/assets/page_3/sfx_volume_button.png" id="4_ugk4n"] + +[node name="SettingsMenu" type="Control" unique_id=1639777294] +layout_mode = 3 +anchors_preset = 0 +offset_right = 600.0 +offset_bottom = 420.0 +script = ExtResource("1_4lekq") + +[node name="AudioOptionsContainer" type="VBoxContainer" parent="." unique_id=743642398] +unique_name_in_owner = true +layout_mode = 0 +offset_right = 327.0 +offset_bottom = 512.0 +theme_override_constants/separation = 12 + +[node name="MasterVolume_AudioOption" parent="AudioOptionsContainer" unique_id=1509773712 instance=ExtResource("1_hwcco")] +layout_mode = 2 + +[node name="MusicVolume_AudioOption" parent="AudioOptionsContainer" unique_id=690924616 instance=ExtResource("1_hwcco")] +layout_mode = 2 +image = ExtResource("3_kgdba") +bus_name = &"Music" + +[node name="SFXVolume_AudioOption" parent="AudioOptionsContainer" unique_id=2096291127 instance=ExtResource("1_hwcco")] +layout_mode = 2 +image = ExtResource("4_ugk4n") +bus_name = &"SFX" diff --git a/core/game_menu/train_selector.gd b/core/game_menu/train_selector.gd new file mode 100644 index 0000000..9812be8 --- /dev/null +++ b/core/game_menu/train_selector.gd @@ -0,0 +1,38 @@ +extends VBoxContainer + +@onready var color_pickers: Array[TrainColorPicker] = [$%ColorPicker1, $%ColorPicker2, $%ColorPicker3, $%ColorPicker4, $%ColorPicker5, $%ColorPicker6] +@onready var left_arrow: ArrowButton = $%ArrowButtonLeft +@onready var right_arrow: ArrowButton = $%ArrowButtonRight +var selected_color: Color +var selected_color_index: int = 0 + +func _ready() -> void: + for color_picker in color_pickers: + color_picker.on_color_selected.connect(_on_color_selected) + color_picker.deselect() + + selected_color = color_pickers[0].color + color_pickers[0].select() + + left_arrow.on_pressed.connect(_select_prev_color) + right_arrow.on_pressed.connect(_select_next_color) + +func _on_color_selected(selected_color_picker: TrainColorPicker) -> void: + for i in range(color_pickers.size()): + if color_pickers[i].color == selected_color_picker.color: + selected_color_picker.select() + selected_color_index = i + else: + color_pickers[i].deselect() + +func _select_prev_color() -> void: + for color_picker in color_pickers: + color_picker.deselect() + selected_color_index = (selected_color_index - 1 + color_pickers.size()) % color_pickers.size() + color_pickers[selected_color_index].select() + +func _select_next_color() -> void: + for color_picker in color_pickers: + color_picker.deselect() + selected_color_index = (selected_color_index + 1) % color_pickers.size() + color_pickers[selected_color_index].select() diff --git a/core/game_menu/train_selector.gd.uid b/core/game_menu/train_selector.gd.uid new file mode 100644 index 0000000..f7a3b45 --- /dev/null +++ b/core/game_menu/train_selector.gd.uid @@ -0,0 +1 @@ +uid://8k1msabobhks diff --git a/core/game_menu/train_selector.tscn b/core/game_menu/train_selector.tscn new file mode 100644 index 0000000..5eb27c6 --- /dev/null +++ b/core/game_menu/train_selector.tscn @@ -0,0 +1,78 @@ +[gd_scene format=3 uid="uid://bh1kxsp5jyxfx"] + +[ext_resource type="Script" uid="uid://8k1msabobhks" path="res://core/game_menu/train_selector.gd" id="1_puip6"] +[ext_resource type="Texture2D" uid="uid://cqvani6n2h3fw" path="res://core/game_menu/assets/page_1/train_texture.png" id="1_wfiis"] +[ext_resource type="PackedScene" uid="uid://dm3skv22c60tm" path="res://core/game_menu/arrow_button.tscn" id="2_puip6"] +[ext_resource type="PackedScene" uid="uid://ch1st1oryjoio" path="res://core/game_menu/color_picker.tscn" id="3_i2rs1"] +[ext_resource type="Texture2D" uid="uid://b5arobd7gl4u4" path="res://core/game_menu/assets/page_1/customizecolor-3.png" id="4_cfvtr"] +[ext_resource type="Texture2D" uid="uid://el88fib24nl0" path="res://core/game_menu/assets/page_1/customizecolor-4.png" id="5_jnto8"] +[ext_resource type="Texture2D" uid="uid://bv07xhpe3kh0r" path="res://core/game_menu/assets/page_1/customizecolor-5.png" id="6_dxnpq"] +[ext_resource type="Texture2D" uid="uid://cryqbi1av2x1c" path="res://core/game_menu/assets/page_1/customizecolor.png" id="7_d1sdr"] +[ext_resource type="Texture2D" uid="uid://d4l5ih723j3md" path="res://core/game_menu/assets/page_1/customizecolor-2.png" id="8_tuh6m"] + +[node name="TrainSelector" type="VBoxContainer" unique_id=1039769375] +offset_right = 625.0 +offset_bottom = 309.0 +script = ExtResource("1_puip6") + +[node name="TrainTexture" type="TextureRect" parent="." unique_id=2095010706] +layout_mode = 2 +texture = ExtResource("1_wfiis") +stretch_mode = 3 + +[node name="HBoxContainer2" type="HBoxContainer" parent="." unique_id=607833319] +layout_mode = 2 + +[node name="ArrowButtonLeft" parent="HBoxContainer2" unique_id=103192648 instance=ExtResource("2_puip6")] +unique_name_in_owner = true +layout_mode = 2 +flip_h = true + +[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer2" unique_id=1364417494] +layout_mode = 2 +theme_override_constants/separation = 18 + +[node name="ColorPicker1" parent="HBoxContainer2/HBoxContainer" unique_id=59169767 instance=ExtResource("3_i2rs1")] +unique_name_in_owner = true +custom_minimum_size = Vector2(60, 60) +layout_mode = 2 +size_flags_vertical = 4 +image = ExtResource("4_cfvtr") + +[node name="ColorPicker2" parent="HBoxContainer2/HBoxContainer" unique_id=584054476 instance=ExtResource("3_i2rs1")] +unique_name_in_owner = true +custom_minimum_size = Vector2(60, 60) +layout_mode = 2 +size_flags_vertical = 4 +image = ExtResource("5_jnto8") + +[node name="ColorPicker3" parent="HBoxContainer2/HBoxContainer" unique_id=889429149 instance=ExtResource("3_i2rs1")] +unique_name_in_owner = true +custom_minimum_size = Vector2(60, 60) +layout_mode = 2 +size_flags_vertical = 4 +image = ExtResource("6_dxnpq") + +[node name="ColorPicker4" parent="HBoxContainer2/HBoxContainer" unique_id=466686411 instance=ExtResource("3_i2rs1")] +unique_name_in_owner = true +custom_minimum_size = Vector2(60, 60) +layout_mode = 2 +size_flags_vertical = 4 +image = ExtResource("7_d1sdr") + +[node name="ColorPicker5" parent="HBoxContainer2/HBoxContainer" unique_id=675841518 instance=ExtResource("3_i2rs1")] +unique_name_in_owner = true +custom_minimum_size = Vector2(60, 60) +layout_mode = 2 +size_flags_vertical = 4 + +[node name="ColorPicker6" parent="HBoxContainer2/HBoxContainer" unique_id=1698412911 instance=ExtResource("3_i2rs1")] +unique_name_in_owner = true +custom_minimum_size = Vector2(60, 60) +layout_mode = 2 +size_flags_vertical = 4 +image = ExtResource("8_tuh6m") + +[node name="ArrowButtonRight" parent="HBoxContainer2" unique_id=68298624 instance=ExtResource("2_puip6")] +unique_name_in_owner = true +layout_mode = 2 diff --git a/core/game_state/game_state.gd b/core/game_state/game_state.gd index ffe6322..e95a1e7 100644 --- a/core/game_state/game_state.gd +++ b/core/game_state/game_state.gd @@ -1,5 +1,12 @@ extends Node +@warning_ignore("unused_signal") +signal on_game_paused +@warning_ignore("unused_signal") +signal on_game_resumed +@warning_ignore("unused_signal") +signal on_photo_highlighted(teture: Texture) + const SAVE_PATH: String = "user://savegame.json" var save_data: SaveGameData = SaveGameData.new() @@ -30,3 +37,12 @@ func load_game() -> void: save_data = SaveGameData.from_dictionary(json.data) is_loaded = true + +func pause_game() -> void: + get_tree().paused = true + +func resume_game() -> void: + get_tree().paused = false + +func quit_game() -> void: + SceneManager.quit_game() diff --git a/core/main_menu/assets/photo_2025-08-27_17-35-14.jpg b/core/main_menu/assets/photo_2025-08-27_17-35-14.jpg new file mode 100644 index 0000000..6d0202a Binary files /dev/null and b/core/main_menu/assets/photo_2025-08-27_17-35-14.jpg differ diff --git a/core/main_menu/assets/photo_2025-08-27_17-35-14.jpg.import b/core/main_menu/assets/photo_2025-08-27_17-35-14.jpg.import new file mode 100644 index 0000000..c303f71 --- /dev/null +++ b/core/main_menu/assets/photo_2025-08-27_17-35-14.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1wg4lif82dxp" +path="res://.godot/imported/photo_2025-08-27_17-35-14.jpg-78d5e1b9cf2d920968331a684da2ca42.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/main_menu/assets/photo_2025-08-27_17-35-14.jpg" +dest_files=["res://.godot/imported/photo_2025-08-27_17-35-14.jpg-78d5e1b9cf2d920968331a684da2ca42.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 diff --git a/core/main_menu/main_menu.gd b/core/main_menu/main_menu.gd new file mode 100644 index 0000000..4a6611a --- /dev/null +++ b/core/main_menu/main_menu.gd @@ -0,0 +1,10 @@ +extends Control + +@onready var settings_menu: Control = $%SettingsMenu + +func _on_play_button_on_button_pressed() -> void: + SceneManager.change_scene(SceneConfig.SceneName.GAME) + + +func _on_settings_button_on_button_pressed() -> void: + $%SettingsMenu.visible = !$%SettingsMenu.visible diff --git a/core/main_menu/main_menu.gd.uid b/core/main_menu/main_menu.gd.uid new file mode 100644 index 0000000..4851987 --- /dev/null +++ b/core/main_menu/main_menu.gd.uid @@ -0,0 +1 @@ +uid://csqxuftsnv1br diff --git a/core/main_menu/main_menu.tscn b/core/main_menu/main_menu.tscn new file mode 100644 index 0000000..8737e45 --- /dev/null +++ b/core/main_menu/main_menu.tscn @@ -0,0 +1,62 @@ +[gd_scene format=3 uid="uid://btcpge7cj2041"] + +[ext_resource type="Script" uid="uid://csqxuftsnv1br" path="res://core/main_menu/main_menu.gd" id="1_g1whv"] +[ext_resource type="PackedScene" uid="uid://cxf8s80ivwj1p" path="res://core/game_menu/option_menu.tscn" id="1_uvy4f"] +[ext_resource type="Texture2D" uid="uid://b1wg4lif82dxp" path="res://core/main_menu/assets/photo_2025-08-27_17-35-14.jpg" id="2_mloc8"] +[ext_resource type="PackedScene" uid="uid://caqf471x0kttc" path="res://core/game_menu/settings_menu.tscn" id="3_26agx"] + +[node name="MainMenu" type="Control" unique_id=889720172] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_g1whv") + +[node name="TextureRect" type="TextureRect" parent="." unique_id=11805511] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("2_mloc8") + +[node name="OptionMenu" parent="." unique_id=1055457221 instance=ExtResource("1_uvy4f")] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 492.0 +offset_top = 274.0 +offset_right = 492.0 +offset_bottom = 274.0 + +[node name="VBoxContainer" parent="OptionMenu" index="0" unique_id=508055524] +anchor_top = 0.3037037 +anchor_bottom = 0.6962963 +offset_top = 6.0 +offset_bottom = -6.0 + +[node name="ResumeButton" parent="OptionMenu/VBoxContainer" index="1" unique_id=635721927] +visible = false + +[node name="SaveButton" parent="OptionMenu/VBoxContainer" index="3" unique_id=1161034414] +visible = false + +[node name="SettingsMenu" parent="." unique_id=1639777294 instance=ExtResource("3_26agx")] +unique_name_in_owner = true +visible = false +layout_mode = 1 +offset_left = 639.0 +offset_top = 566.0 +offset_right = 639.0 +offset_bottom = 566.0 + +[connection signal="on_button_pressed" from="OptionMenu/VBoxContainer/PlayButton" to="." method="_on_play_button_on_button_pressed"] +[connection signal="on_button_pressed" from="OptionMenu/VBoxContainer/SettingsButton" to="." method="_on_settings_button_on_button_pressed"] + +[editable path="OptionMenu"] diff --git a/core/photo_mode/data/collectible_library.tres b/core/photo_mode/data/collectible_library.tres index 0ee1fe2..cb12fe7 100644 --- a/core/photo_mode/data/collectible_library.tres +++ b/core/photo_mode/data/collectible_library.tres @@ -2,30 +2,56 @@ [ext_resource type="Script" uid="uid://bj34o0org55ei" path="res://core/photo_mode/data/collectible_resource.gd" id="1_3cgvf"] [ext_resource type="Script" uid="uid://hhuufh87skq5" path="res://core/photo_mode/data/collectible_library.gd" id="2_ggu10"] -[ext_resource type="Texture2D" uid="uid://cx8d233y32kmu" path="res://icon.svg" id="2_pxmdy"] - -[sub_resource type="Resource" id="Resource_3cgvf"] -script = ExtResource("1_3cgvf") -id = &"cane" -title = "Cane" -image = ExtResource("2_pxmdy") -metadata/_custom_type_script = "uid://bj34o0org55ei" +[ext_resource type="Texture2D" uid="uid://cusgi1mpq5rn" path="res://core/game_menu/assets/page_2/dog_animals_collection.png" id="2_hgshs"] +[ext_resource type="Texture2D" uid="uid://dsvu86m5la1tp" path="res://core/game_menu/assets/page_2/cat_animals_collection.png" id="3_sj2nd"] +[ext_resource type="Texture2D" uid="uid://dl04xh8e35xyd" path="res://core/game_menu/assets/page_2/crow_animals_collection.png" id="4_6l4cv"] +[ext_resource type="Texture2D" uid="uid://calno16l7x4wq" path="res://core/game_menu/assets/page_2/pigeon_animals_collection.png" id="4_hgshs"] +[ext_resource type="Texture2D" uid="uid://ck36h88n5tebw" path="res://core/game_menu/assets/page_2/turtle_animals_collection.png" id="6_b7fb6"] +[ext_resource type="Texture2D" uid="uid://d2li830dm14ur" path="res://core/game_menu/assets/page_2/squirrel_animals_collection.png" id="6_cxbng"] [sub_resource type="Resource" id="Resource_ggu10"] script = ExtResource("1_3cgvf") -id = &"gatto" -title = "Gatto" -image = ExtResource("2_pxmdy") +id = &"Cat" +title = "Cat" +image = ExtResource("3_sj2nd") +metadata/_custom_type_script = "uid://bj34o0org55ei" + +[sub_resource type="Resource" id="Resource_3cgvf"] +script = ExtResource("1_3cgvf") +id = &"dog" +title = "Dog" +image = ExtResource("2_hgshs") metadata/_custom_type_script = "uid://bj34o0org55ei" [sub_resource type="Resource" id="Resource_pxmdy"] script = ExtResource("1_3cgvf") -id = &"farfalla" -title = "Farfalla" -image = ExtResource("2_pxmdy") +id = &"pigeon" +title = "Pigeon" +image = ExtResource("4_hgshs") +metadata/_custom_type_script = "uid://bj34o0org55ei" + +[sub_resource type="Resource" id="Resource_w26i4"] +script = ExtResource("1_3cgvf") +id = &"crow" +title = "Crow" +image = ExtResource("4_6l4cv") +metadata/_custom_type_script = "uid://bj34o0org55ei" + +[sub_resource type="Resource" id="Resource_sj2nd"] +script = ExtResource("1_3cgvf") +id = &"turtle" +title = "Turtle" +image = ExtResource("6_b7fb6") +metadata/_custom_type_script = "uid://bj34o0org55ei" + +[sub_resource type="Resource" id="Resource_6l4cv"] +script = ExtResource("1_3cgvf") +id = &"squirrel" +title = "Squirrel" +image = ExtResource("6_cxbng") metadata/_custom_type_script = "uid://bj34o0org55ei" [resource] script = ExtResource("2_ggu10") -collectibles = Array[ExtResource("1_3cgvf")]([SubResource("Resource_3cgvf"), SubResource("Resource_ggu10"), SubResource("Resource_pxmdy")]) +collectibles = Array[ExtResource("1_3cgvf")]([SubResource("Resource_ggu10"), SubResource("Resource_3cgvf"), SubResource("Resource_pxmdy"), SubResource("Resource_w26i4"), SubResource("Resource_sj2nd"), SubResource("Resource_6l4cv")]) metadata/_custom_type_script = "uid://hhuufh87skq5" diff --git a/core/photo_mode/managers/collection_manager.gd b/core/photo_mode/managers/collection_manager.gd index 193b28a..3d3a2b3 100644 --- a/core/photo_mode/managers/collection_manager.gd +++ b/core/photo_mode/managers/collection_manager.gd @@ -3,7 +3,7 @@ extends Node signal on_collectible_unlocked(collectible_id: StringName) signal on_photo_saved(filePath: String) -var collectibles_library: CollectibleLibrary = preload("res://core/photo_mode/data/collectible_library.tres") +@export var collectibles_library: CollectibleLibrary var unlocked_collectibles_ids: Array[StringName] = [] var saved_photos: Array[String] = [] diff --git a/core/photo_mode/managers/collection_manager.tscn b/core/photo_mode/managers/collection_manager.tscn new file mode 100644 index 0000000..fb3a4d0 --- /dev/null +++ b/core/photo_mode/managers/collection_manager.tscn @@ -0,0 +1,8 @@ +[gd_scene format=3 uid="uid://22orqdm34hfm"] + +[ext_resource type="Script" uid="uid://c3kq1qddpm8tf" path="res://core/photo_mode/managers/collection_manager.gd" id="1_qf21s"] +[ext_resource type="Resource" uid="uid://c6pkpvsvimafb" path="res://core/photo_mode/data/collectible_library.tres" id="2_pxvtd"] + +[node name="CollectionManager" type="Node" unique_id=1532057831] +script = ExtResource("1_qf21s") +collectibles_library = ExtResource("2_pxvtd") diff --git a/core/photo_mode/runtime/photo_mode_controller.gd b/core/photo_mode/runtime/photo_mode_controller.gd index d28d40d..e4e1c52 100644 --- a/core/photo_mode/runtime/photo_mode_controller.gd +++ b/core/photo_mode/runtime/photo_mode_controller.gd @@ -29,7 +29,7 @@ func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed("toggle_photo_mode"): is_active = !is_active - get_tree().paused = is_active + #get_tree().paused = is_active if !is_active: Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) diff --git a/core/photo_mode/ui/collectible_gallery.tscn b/core/photo_mode/ui/collectible_gallery.tscn deleted file mode 100644 index 27851d6..0000000 --- a/core/photo_mode/ui/collectible_gallery.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene format=3 uid="uid://bvw086glfpcba"] - -[ext_resource type="Script" uid="uid://dq3qtcrdnikl7" path="res://core/photo_mode/ui/collectible_gallery.gd" id="1_67tug"] -[ext_resource type="PackedScene" uid="uid://dp7dvfauh5rpx" path="res://core/photo_mode/ui/collectible_ui.tscn" id="2_or234"] - -[node name="CollectibleGallery" type="Control" unique_id=354419843] -layout_mode = 3 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_67tug") -collectible_ui_scene = ExtResource("2_or234") - -[node name="PanelContainer" type="PanelContainer" parent="." unique_id=640179265] -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -350.0 -offset_top = -350.0 -offset_right = 350.0 -offset_bottom = 350.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer" unique_id=125147979] -layout_mode = 2 -theme_override_constants/margin_left = 12 -theme_override_constants/margin_top = 12 -theme_override_constants/margin_right = 12 -theme_override_constants/margin_bottom = 12 - -[node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/MarginContainer" unique_id=348576028] -layout_mode = 2 -draw_focus_border = true - -[node name="CollectibleGrid" type="GridContainer" parent="PanelContainer/MarginContainer/ScrollContainer" unique_id=1187865988] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 2 -theme_override_constants/h_separation = 12 -theme_override_constants/v_separation = 12 -columns = 3 diff --git a/core/photo_mode/ui/collectible_ui.tscn b/core/photo_mode/ui/collectible_ui.tscn deleted file mode 100644 index 8242ea3..0000000 --- a/core/photo_mode/ui/collectible_ui.tscn +++ /dev/null @@ -1,49 +0,0 @@ -[gd_scene format=3 uid="uid://dp7dvfauh5rpx"] - -[ext_resource type="Script" uid="uid://dxh8e1n16qjpp" path="res://core/photo_mode/ui/collectible_ui.gd" id="1_tu5nx"] -[ext_resource type="Texture2D" uid="uid://cx8d233y32kmu" path="res://icon.svg" id="1_x3wje"] - -[node name="CollectibleUI" type="Control" unique_id=201865221] -custom_minimum_size = Vector2(200, 200) -layout_mode = 3 -anchors_preset = 0 -offset_right = 200.0 -offset_bottom = 200.0 -script = ExtResource("1_tu5nx") - -[node name="Panel" type="PanelContainer" parent="." unique_id=1372516531] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="MarginContainer" type="MarginContainer" parent="Panel" unique_id=1141643525] -layout_mode = 2 -theme_override_constants/margin_left = 12 -theme_override_constants/margin_top = 12 -theme_override_constants/margin_right = 12 -theme_override_constants/margin_bottom = 12 - -[node name="VBoxContainer" type="VBoxContainer" parent="Panel/MarginContainer" unique_id=1841409877] -layout_mode = 2 -alignment = 1 - -[node name="CollectibleName" type="Label" parent="Panel/MarginContainer/VBoxContainer" unique_id=117774359] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 0 -text = "Collectible" -horizontal_alignment = 1 - -[node name="HSeparator" type="HSeparator" parent="Panel/MarginContainer/VBoxContainer" unique_id=1345822244] -layout_mode = 2 - -[node name="CollectibleTexture" type="TextureRect" parent="Panel/MarginContainer/VBoxContainer" unique_id=506844785] -unique_name_in_owner = true -modulate = Color(0.16206557, 0.1620656, 0.16206557, 1) -layout_mode = 2 -size_flags_vertical = 3 -texture = ExtResource("1_x3wje") -stretch_mode = 3 diff --git a/core/photo_mode/ui/photo.tscn b/core/photo_mode/ui/photo.tscn deleted file mode 100644 index 615e857..0000000 --- a/core/photo_mode/ui/photo.tscn +++ /dev/null @@ -1,38 +0,0 @@ -[gd_scene format=3 uid="uid://cvus62qkop3qi"] - -[ext_resource type="Script" uid="uid://dsey5dvc11vpq" path="res://core/photo_mode/ui/photo.gd" id="1_u0arp"] - -[node name="Photo" type="Control" unique_id=201865221] -custom_minimum_size = Vector2(200, 200) -layout_mode = 3 -anchors_preset = 0 -offset_right = 200.0 -offset_bottom = 200.0 -script = ExtResource("1_u0arp") - -[node name="ColorRect" type="ColorRect" parent="." unique_id=1208008621] -layout_mode = 0 -offset_right = 200.0 -offset_bottom = 200.0 - -[node name="MarginContainer" type="MarginContainer" parent="ColorRect" unique_id=1141643525] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_constants/margin_left = 12 -theme_override_constants/margin_top = 12 -theme_override_constants/margin_right = 12 -theme_override_constants/margin_bottom = 12 - -[node name="Panel" type="PanelContainer" parent="ColorRect/MarginContainer" unique_id=1372516531] -layout_mode = 2 - -[node name="PhotoTexture" type="TextureRect" parent="ColorRect/MarginContainer/Panel" unique_id=506844785] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 3 -expand_mode = 1 -stretch_mode = 6 diff --git a/core/photo_mode/ui/photo_gallery.tscn b/core/photo_mode/ui/photo_gallery.tscn deleted file mode 100644 index 64c94a7..0000000 --- a/core/photo_mode/ui/photo_gallery.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene format=3 uid="uid://b6r787sik5yil"] - -[ext_resource type="Script" uid="uid://k4iqrlkbjppl" path="res://core/photo_mode/ui/photo_gallery.gd" id="1_bp5uf"] -[ext_resource type="PackedScene" uid="uid://cvus62qkop3qi" path="res://core/photo_mode/ui/photo.tscn" id="2_45wok"] - -[node name="PhotoGallery" type="Control" unique_id=354419843] -layout_mode = 3 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_bp5uf") -photo_scene = ExtResource("2_45wok") - -[node name="PanelContainer" type="PanelContainer" parent="." unique_id=640179265] -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -350.0 -offset_top = -350.0 -offset_right = 350.0 -offset_bottom = 350.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer" unique_id=125147979] -layout_mode = 2 -theme_override_constants/margin_left = 12 -theme_override_constants/margin_top = 12 -theme_override_constants/margin_right = 12 -theme_override_constants/margin_bottom = 12 - -[node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/MarginContainer" unique_id=348576028] -layout_mode = 2 -draw_focus_border = true - -[node name="PhotoGrid" type="GridContainer" parent="PanelContainer/MarginContainer/ScrollContainer" unique_id=1187865988] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 2 -theme_override_constants/h_separation = 12 -theme_override_constants/v_separation = 12 -columns = 3 diff --git a/core/scene_manager/scene_config.gd b/core/scene_manager/scene_config.gd new file mode 100644 index 0000000..2d53629 --- /dev/null +++ b/core/scene_manager/scene_config.gd @@ -0,0 +1,7 @@ +class_name SceneConfig +extends Resource + +enum SceneName { MAIN_MENU, GAME } + +@export var scenes: Dictionary[SceneName, PackedScene] = { +} diff --git a/core/scene_manager/scene_config.gd.uid b/core/scene_manager/scene_config.gd.uid new file mode 100644 index 0000000..6a59f3a --- /dev/null +++ b/core/scene_manager/scene_config.gd.uid @@ -0,0 +1 @@ +uid://bbgyhmb8a17i7 diff --git a/core/scene_manager/scene_config.tres b/core/scene_manager/scene_config.tres new file mode 100644 index 0000000..7a878e5 --- /dev/null +++ b/core/scene_manager/scene_config.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" script_class="SceneConfig" format=3 uid="uid://dr612tmciq8pg"] + +[ext_resource type="PackedScene" uid="uid://btcpge7cj2041" path="res://core/main_menu/main_menu.tscn" id="1_72aup"] +[ext_resource type="Script" uid="uid://bbgyhmb8a17i7" path="res://core/scene_manager/scene_config.gd" id="1_km45g"] +[ext_resource type="PackedScene" uid="uid://cae0mnf353dy3" path="res://docs/museums/biome_generator/museum_biome_generator.tscn" id="2_prsyo"] + +[resource] +script = ExtResource("1_km45g") +scenes = Dictionary[int, PackedScene]({ +0: ExtResource("1_72aup"), +1: ExtResource("2_prsyo") +}) +metadata/_custom_type_script = "uid://bbgyhmb8a17i7" diff --git a/core/scene_manager/scene_manager.gd b/core/scene_manager/scene_manager.gd new file mode 100644 index 0000000..597c766 --- /dev/null +++ b/core/scene_manager/scene_manager.gd @@ -0,0 +1,43 @@ +extends CanvasLayer + +@export var config: SceneConfig +@onready var color_rect = $ColorRect +@onready var loading_screen = $LoadingScreen +@export var transition_duration: float = 1 + +func _ready() -> void: + color_rect.color.a = 0.0 + color_rect.mouse_filter = Control.MOUSE_FILTER_IGNORE + loading_screen.hide() + +func change_scene(scene_enum: SceneConfig.SceneName) -> void: + if not config or not config.scenes.has(scene_enum): + return + + var target_scene: PackedScene = config.scenes[scene_enum] + + color_rect.mouse_filter = Control.MOUSE_FILTER_STOP + + var tween_in = create_tween() + tween_in.tween_property(color_rect, "color:a", 1.0, transition_duration) + await tween_in.finished + + loading_screen.show() + await get_tree().process_frame + + get_tree().change_scene_to_packed(target_scene) + + loading_screen.hide() + + var tween_out = create_tween() + tween_out.tween_property(color_rect, "color:a", 0.0, transition_duration) + await tween_out.finished + + color_rect.mouse_filter = Control.MOUSE_FILTER_IGNORE + +func quit_game() -> void: + color_rect.mouse_filter = Control.MOUSE_FILTER_STOP + var tween = create_tween() + tween.tween_property(color_rect, "color:a", 1.0, transition_duration) + await tween.finished + get_tree().quit() diff --git a/core/scene_manager/scene_manager.gd.uid b/core/scene_manager/scene_manager.gd.uid new file mode 100644 index 0000000..8a4ec14 --- /dev/null +++ b/core/scene_manager/scene_manager.gd.uid @@ -0,0 +1 @@ +uid://bf1f2kp8ghtei diff --git a/core/scene_manager/scene_manager.tscn b/core/scene_manager/scene_manager.tscn new file mode 100644 index 0000000..2370a3f --- /dev/null +++ b/core/scene_manager/scene_manager.tscn @@ -0,0 +1,44 @@ +[gd_scene format=3 uid="uid://bw8hwkw55j675"] + +[ext_resource type="Script" uid="uid://bf1f2kp8ghtei" path="res://core/scene_manager/scene_manager.gd" id="1_7resu"] +[ext_resource type="Resource" uid="uid://dr612tmciq8pg" path="res://core/scene_manager/scene_config.tres" id="2_vtdwt"] + +[node name="SceneManager" type="CanvasLayer" unique_id=399843239] +layer = 100 +script = ExtResource("1_7resu") +config = ExtResource("2_vtdwt") + +[node name="ColorRect" type="ColorRect" parent="." unique_id=1075660170] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +color = Color(0, 0, 0, 0) + +[node name="LoadingScreen" type="Control" parent="." unique_id=1075176512] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Label" type="Label" parent="LoadingScreen" unique_id=887425331] +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -169.0 +offset_top = -65.0 +offset_right = -20.0 +offset_bottom = -20.0 +grow_horizontal = 0 +grow_vertical = 0 +theme_override_constants/outline_size = 24 +theme_override_font_sizes/font_size = 32 +text = "Loading..." diff --git a/docs/gyms/ai/gym_ai.tscn b/docs/gyms/ai/gym_ai.tscn index faa1cc8..f103117 100644 --- a/docs/gyms/ai/gym_ai.tscn +++ b/docs/gyms/ai/gym_ai.tscn @@ -43,6 +43,8 @@ shape = SubResource("BoxShape3D_lmjyn") [node name="AIBase" parent="." unique_id=1228675528 instance=ExtResource("1_a2xtd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.48246834, 0.21202153, 0.11262059) +speed = 5.0 +enable_state_machine = true [node name="Camera3D" type="Camera3D" parent="." unique_id=1148396057] transform = Transform3D(-2.0613477e-08, 0.8818225, -0.47158146, 3.854569e-08, 0.47158146, 0.8818225, 1, -3.5527137e-15, -4.371139e-08, -18.21907, 28.71355, 0) diff --git a/docs/gyms/photo_mode/gym_photo_mode.tscn b/docs/gyms/photo_mode/gym_photo_mode.tscn index 7549329..7e64ab8 100644 --- a/docs/gyms/photo_mode/gym_photo_mode.tscn +++ b/docs/gyms/photo_mode/gym_photo_mode.tscn @@ -5,8 +5,8 @@ [ext_resource type="PackedScene" uid="uid://bmkxt6btcx8qr" path="res://core/photo_mode/runtime/collectible.tscn" id="3_734hf"] [ext_resource type="Texture2D" uid="uid://c3grftlmap4q5" path="res://tgcc/chunk/prop/tree/leaf1_alpha.png" id="4_00joj"] [ext_resource type="Script" uid="uid://bj34o0org55ei" path="res://core/photo_mode/data/collectible_resource.gd" id="5_crfij"] -[ext_resource type="PackedScene" uid="uid://bvw086glfpcba" path="res://core/photo_mode/ui/collectible_gallery.tscn" id="6_6aab5"] -[ext_resource type="PackedScene" uid="uid://b6r787sik5yil" path="res://core/photo_mode/ui/photo_gallery.tscn" id="7_tb1ii"] +[ext_resource type="PackedScene" uid="uid://bvw086glfpcba" path="res://core/game_menu/collectible_gallery.tscn" id="6_6aab5"] +[ext_resource type="PackedScene" uid="uid://b6r787sik5yil" path="res://core/game_menu/photo_gallery.tscn" id="7_tb1ii"] [sub_resource type="Environment" id="Environment_48mla"] diff --git a/docs/gyms/radio/gym_radio.tscn b/docs/gyms/radio/gym_radio.tscn index 7289baa..1c9a650 100644 --- a/docs/gyms/radio/gym_radio.tscn +++ b/docs/gyms/radio/gym_radio.tscn @@ -3,7 +3,7 @@ [ext_resource type="PackedScene" uid="uid://cpeyt1dgrtglc" path="res://core/radio/radio.tscn" id="1_8yomj"] [ext_resource type="Script" uid="uid://ew4b78u5tkiu" path="res://docs/gyms/radio/gym_radio.gd" id="1_h5r8c"] [ext_resource type="AudioStream" uid="uid://70cc8she43re" path="res://docs/gyms/radio/lofi_01.ogg" id="3_ltpvc"] -[ext_resource type="PackedScene" uid="uid://caqf471x0kttc" path="res://core/audio/settings/settings_menu.tscn" id="4_8pw2j"] +[ext_resource type="PackedScene" uid="uid://caqf471x0kttc" path="res://core/game_menu/settings_menu.tscn" id="4_8pw2j"] [node name="GymRadio" type="Node3D" unique_id=204859062] script = ExtResource("1_h5r8c") diff --git a/docs/museums/biome_generator/museum_map.tscn b/docs/museums/biome_generator/museum_map.tscn index b2e8bb2..b6ec1c0 100644 --- a/docs/museums/biome_generator/museum_map.tscn +++ b/docs/museums/biome_generator/museum_map.tscn @@ -5,6 +5,7 @@ [ext_resource type="Texture2D" uid="uid://dest0qa7vaid0" path="res://core/daynight/stars_albedo.png" id="3_ncg1s"] [ext_resource type="Script" uid="uid://brcimd12tx3dm" path="res://core/daynight/edge_detection_compositor.gd" id="4_5uio4"] [ext_resource type="PackedScene" uid="uid://ujv2f1l4d2ps" path="res://core/biome_generator/biome_generator.tscn" id="5_yeh4a"] +[ext_resource type="Resource" uid="uid://nrm040srfjwo" path="res://core/biome_generator/railway_pool.tres" id="6_awm2r"] [ext_resource type="Script" uid="uid://wv6kcqkibium" path="res://core/biome_generator/biome.gd" id="6_s3jnv"] [ext_resource type="PackedScene" uid="uid://crlk31ecl480n" path="res://tgcc/chunk/countryside/scene/chunk_country_corner_03.tscn" id="7_4elh6"] [ext_resource type="PackedScene" uid="uid://b8blm6bwintf7" path="res://tgcc/chunk/countryside/scene/chunk_country_empty_01.tscn" id="7_xgfli"] @@ -47,6 +48,7 @@ [ext_resource type="PackedScene" uid="uid://ccgd3uy68r88h" path="res://tgcc/chunk/river/scene/chunk_river_curve_3.tscn" id="31_dsw5k"] [ext_resource type="PackedScene" uid="uid://mpgyaho52lii" path="res://tgcc/chunk/river/scene/chunk_river_straight_5.tscn" id="32_03yl6"] [ext_resource type="PackedScene" uid="uid://q26mkh3cupic" path="res://tgcc/chunk/river/scene/chunk_river_cross_2.tscn" id="33_rlemp"] +[ext_resource type="Resource" uid="uid://cmd6s6thq4f7r" path="res://core/biome_generator/entities_pool.tres" id="35_hmtvu"] [sub_resource type="FastNoiseLite" id="FastNoiseLite_wjpfq"] fractal_lacunarity = 1.915 @@ -159,7 +161,9 @@ compositor = SubResource("Compositor_mb5yv") [node name="biome_generator" parent="." unique_id=1861369341 node_paths=PackedStringArray("rail_path") instance=ExtResource("5_yeh4a")] rail_path = NodePath("../rail") +railway_pool = ExtResource("6_awm2r") biome_list = Array[ExtResource("6_s3jnv")]([SubResource("Resource_3qrd0")]) +entity_pool = ExtResource("35_hmtvu") eye_line = 5 [node name="Terrain" type="MeshInstance3D" parent="." unique_id=219178561] diff --git a/project.godot b/project.godot index b1a9573..8038d49 100644 --- a/project.godot +++ b/project.godot @@ -22,12 +22,12 @@ UIEvents="*uid://dehu28iq27mbn" GameState="*uid://b17g2w2g101o6" CollectionManager="*uid://c3kq1qddpm8tf" AudioManager="*uid://dcttbbavtwtsg" +SceneManager="*uid://bw8hwkw55j675" [display] window/size/viewport_width=1920 window/size/viewport_height=1080 -window/size/mode=3 window/stretch/mode="canvas_items" window/stretch/aspect="expand" diff --git a/tgcc/chunk/countryside/scene/chunk_country_corner_01.tscn b/tgcc/chunk/countryside/scene/chunk_country_corner_01.tscn index 6aa124a..7bee345 100644 --- a/tgcc/chunk/countryside/scene/chunk_country_corner_01.tscn +++ b/tgcc/chunk/countryside/scene/chunk_country_corner_01.tscn @@ -4,7 +4,7 @@ [ext_resource type="Script" uid="uid://dg2h4kbqe8j3m" path="res://core/biome_generator/chunk_info.gd" id="2_4d433"] [ext_resource type="Material" uid="uid://blqelpjvdv23j" path="res://tgcc/chunk/material/grassflat_chunk.tres" id="2_ewqv4"] [ext_resource type="Material" uid="uid://4xhpd6lust7w" path="res://tgcc/chunk/material/path_chunk.tres" id="3_4d433"] -[ext_resource type="Script" uid="uid://dg6ngy4pmtsyc" path="res://core/biome_generator/prop_info.gd" id="3_ckjyx"] +[ext_resource type="Script" uid="uid://c5ercbqy7srx3" path="res://core/biome_generator/entity_spawn_point.gd" id="3_sddh0"] [ext_resource type="Material" uid="uid://ce0bdk3mx2xao" path="res://tgcc/chunk/material/water_chunk.tres" id="4_r06ll"] [ext_resource type="PackedScene" uid="uid://be1px5nxfr4hs" path="res://tgcc/chunk/prop/scarecrow/scarecrow.tscn" id="4_vtfy7"] [ext_resource type="PackedScene" uid="uid://chhdorj82bkus" path="res://tgcc/chunk/prop/scarecrow/scarecrow2.tscn" id="5_mm7rq"] @@ -57,29 +57,29 @@ have_lamppost = true connection_left = [NodePath("PaloLuce/sx")] connection_right = [NodePath("PaloLuce/dx")] -[node name="Prop1" type="Marker3D" parent="." index="0" unique_id=1846012620] -transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 5.7180157, 0.35683155, -5.504174) -script = ExtResource("3_ckjyx") -available_props = Array[PackedScene]([ExtResource("4_vtfy7"), ExtResource("5_mm7rq"), ExtResource("6_bpm3x"), ExtResource("7_mm7rq")]) +[node name="Prop_Humanoid" type="Marker3D" parent="." index="0" unique_id=1846012620] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 2.1078086, 4.588761, 4.5396976) +script = ExtResource("3_sddh0") +allowed_type = 1 -[node name="Prop2" type="Marker3D" parent="." index="1" unique_id=210098136] -transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -5.9134417, 0.35683155, 5.9683104) -script = ExtResource("3_ckjyx") -available_props = Array[PackedScene]([ExtResource("4_vtfy7"), ExtResource("5_mm7rq"), ExtResource("6_bpm3x"), ExtResource("7_mm7rq")]) +[node name="Prop_Animal" type="Marker3D" parent="." index="1" unique_id=537927515] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 6.568111, 8.177522, 6.6475058) +script = ExtResource("3_sddh0") +allowed_type = 2 -[node name="Argini_001" parent="." index="2" unique_id=439223507] +[node name="Argini_001" parent="." index="2" unique_id=1474838784] surface_material_override/0 = ExtResource("2_ewqv4") -[node name="Chunk_005" parent="." index="3" unique_id=1955568282] +[node name="Chunk_005" parent="." index="3" unique_id=844192036] surface_material_override/0 = ExtResource("2_ewqv4") -[node name="Chunk_036" parent="." index="4" unique_id=1808067169 groups=["weather_node"]] +[node name="Chunk_036" parent="." index="4" unique_id=1584066508 groups=["weather_node"]] surface_material_override/0 = ExtResource("3_4d433") -[node name="Chunk_037" parent="." index="5" unique_id=1338393481 groups=["weather_node"]] +[node name="Chunk_037" parent="." index="5" unique_id=1100757609 groups=["weather_node"]] surface_material_override/0 = ExtResource("3_4d433") -[node name="Water_003" parent="." index="6" unique_id=1175879696] +[node name="Water_003" parent="." index="6" unique_id=1047599796] surface_material_override/0 = ExtResource("4_r06ll") [node name="grass" type="Node3D" parent="." index="7" unique_id=924191951 groups=["weather_vegetables_node", "wind_node"]] diff --git a/tgcc/chunk/material/glass.tres b/tgcc/chunk/material/glass.tres index cf6b01b..72d9a00 100644 --- a/tgcc/chunk/material/glass.tres +++ b/tgcc/chunk/material/glass.tres @@ -1,6 +1,6 @@ [gd_resource type="ShaderMaterial" format=3 uid="uid://lt21ti7jo8yj"] -[ext_resource type="Shader" uid="uid://dw42rl0af5h1m" path="res://tgcc/chunk/material/script/glass.gdshader" id="1_yqmqd"] +[ext_resource type="Shader" path="res://tgcc/chunk/material/script/glass.gdshader" id="1_yqmqd"] [resource] render_priority = 0