From 62fab7f1f00fc7954a7d5681288949116b06e380 Mon Sep 17 00:00:00 2001 From: Tomasz Boruc Date: Thu, 30 Oct 2025 22:12:04 +0100 Subject: [PATCH] =?UTF-8?q?System=20czasu=20i=20s=C5=82ownik?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/fonts/main_font.ttf | Bin 0 -> 70900 bytes assets/fonts/main_font.ttf.import | 36 ++++++++++++++++ project.godot | 1 + scenes/galaxy.tscn | 12 ++++-- scenes/menu.tscn | 12 +++--- scenes/ui/time_display.tscn | 67 ++++++++++++++++++++++++++++++ scripts/GameClasses.gd | 38 ----------------- scripts/GameClasses.gd.uid | 1 - scripts/GameData.gd | 12 ++++++ scripts/camera_2d.gd | 2 +- scripts/dictionary.gd | 66 +++++++++++++++++++++++++++++ scripts/dictionary.gd.uid | 1 + scripts/galaxy.gd | 4 +- scripts/planet.gd | 8 ++-- scripts/settings.gd | 13 ++++-- scripts/star.gd | 2 +- scripts/time_label.gd | 39 +++++++++++++++++ scripts/time_label.gd.uid | 1 + 18 files changed, 255 insertions(+), 60 deletions(-) create mode 100644 assets/fonts/main_font.ttf create mode 100644 assets/fonts/main_font.ttf.import create mode 100644 scenes/ui/time_display.tscn delete mode 100644 scripts/GameClasses.gd delete mode 100644 scripts/GameClasses.gd.uid create mode 100644 scripts/dictionary.gd create mode 100644 scripts/dictionary.gd.uid create mode 100644 scripts/time_label.gd create mode 100644 scripts/time_label.gd.uid diff --git a/assets/fonts/main_font.ttf b/assets/fonts/main_font.ttf new file mode 100644 index 0000000000000000000000000000000000000000..03979d1348b2bd2e406c730d1d592a1554b3ff00 GIT binary patch literal 70900 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 DFW6x- literal 0 HcmV?d00001 diff --git a/assets/fonts/main_font.ttf.import b/assets/fonts/main_font.ttf.import new file mode 100644 index 0000000..ea3414d --- /dev/null +++ b/assets/fonts/main_font.ttf.import @@ -0,0 +1,36 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://chk8jrn2ighpx" +path="res://.godot/imported/main_font.ttf-36d79ba454878c9b3ab34b1c4d76239a.fontdata" + +[deps] + +source_file="res://assets/fonts/main_font.ttf" +dest_files=["res://.godot/imported/main_font.ttf-36d79ba454878c9b3ab34b1c4d76239a.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +modulate_color_glyphs=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/project.godot b/project.godot index 48a4dda..3170964 100644 --- a/project.godot +++ b/project.godot @@ -17,6 +17,7 @@ config/icon="res://icon.svg" [autoload] +Names="*res://scripts/dictionary.gd" MusicManager="*res://music_manager.gd" ObjectNames="*res://scripts/ObjectNames.gd" Settings="*res://scripts/settings.gd" diff --git a/scenes/galaxy.tscn b/scenes/galaxy.tscn index 4c68082..97026c1 100644 --- a/scenes/galaxy.tscn +++ b/scenes/galaxy.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=5 format=3 uid="uid://b1vxl6rs5odt1"] +[gd_scene load_steps=6 format=3 uid="uid://b1vxl6rs5odt1"] [ext_resource type="Script" uid="uid://cts6e8xmnqsax" path="res://scripts/galaxy.gd" id="1_jxn3g"] [ext_resource type="Texture2D" uid="uid://dvydsg5o77wdm" path="res://assets/background/galaxy_background.jpg" id="1_n7ltq"] +[ext_resource type="PackedScene" uid="uid://bbgymc0drqpbx" path="res://scenes/ui/time_display.tscn" id="3_fmtwf"] [ext_resource type="AudioStream" uid="uid://c8xg32p8lbltw" path="res://assets/sounds/music/game_music.mp3" id="3_mlxib"] [ext_resource type="Script" uid="uid://b4cmg63daeo7g" path="res://scripts/camera_2d.gd" id="4_5xxpo"] @@ -13,10 +14,15 @@ layer = -1 [node name="Background" type="Sprite2D" parent="CanvasLayer"] z_index = -10 -position = Vector2(580, 332) -scale = Vector2(0.30208334, 0.32222223) +position = Vector2(580.00006, 340.00003) +scale = Vector2(0.30208334, 0.3148148) texture = ExtResource("1_n7ltq") +[node name="TimeDisplay" parent="CanvasLayer" instance=ExtResource("3_fmtwf")] +offset_left = 896.0 +offset_top = 8.0 +offset_bottom = -616.0 + [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] stream = ExtResource("3_mlxib") autoplay = true diff --git a/scenes/menu.tscn b/scenes/menu.tscn index dcbdde0..0441446 100644 --- a/scenes/menu.tscn +++ b/scenes/menu.tscn @@ -7,7 +7,7 @@ [ext_resource type="Texture2D" uid="uid://da6hb1mill5yn" path="res://assets/icons/buttons/button_blue.png" id="3_v86rl"] [ext_resource type="Texture2D" uid="uid://t2pwtja7yfa4" path="res://assets/icons/buttons/button_red.png" id="4_13sgg"] [ext_resource type="Texture2D" uid="uid://dssoa5bxs2h4r" path="res://assets/icons/logo_game.png" id="5_4ytvr"] -[ext_resource type="FontFile" uid="uid://bytgiothu0eoy" path="res://assets/fonts/Chopsic.otf" id="5_13sgg"] +[ext_resource type="FontFile" uid="uid://chk8jrn2ighpx" path="res://assets/fonts/main_font.ttf" id="6_i6lef"] [ext_resource type="Texture2D" uid="uid://cm376wgq8l0n4" path="res://assets/stars/small_star.png" id="7_i6lef"] [sub_resource type="Animation" id="Animation_mj5lg"] @@ -137,7 +137,7 @@ theme_override_colors/font_color = Color(3.008172e-09, 0.06855638, 0.14010939, 1 theme_override_colors/font_shadow_color = Color(0.7570387, 0.75415635, 0.7885611, 0) theme_override_colors/font_outline_color = Color(0.9954526, 0.93959796, 0.9103491, 1) theme_override_constants/outline_size = 23 -theme_override_fonts/font = ExtResource("5_13sgg") +theme_override_fonts/font = ExtResource("6_i6lef") theme_override_font_sizes/font_size = 120 text = "menu_exit" horizontal_alignment = 1 @@ -164,7 +164,7 @@ theme_override_colors/font_color = Color(3.008172e-09, 0.06855638, 0.14010939, 1 theme_override_colors/font_shadow_color = Color(0.7570387, 0.75415635, 0.7885611, 0) theme_override_colors/font_outline_color = Color(0.9954526, 0.93959796, 0.9103491, 1) theme_override_constants/outline_size = 23 -theme_override_fonts/font = ExtResource("5_13sgg") +theme_override_fonts/font = ExtResource("6_i6lef") theme_override_font_sizes/font_size = 120 text = "menu_options" horizontal_alignment = 1 @@ -198,7 +198,7 @@ theme_override_colors/font_color = Color(3.008172e-09, 0.06855638, 0.14010939, 1 theme_override_colors/font_shadow_color = Color(0.7570387, 0.75415635, 0.7885611, 0) theme_override_colors/font_outline_color = Color(0.9954526, 0.93959796, 0.9103491, 1) theme_override_constants/outline_size = 23 -theme_override_fonts/font = ExtResource("5_13sgg") +theme_override_fonts/font = ExtResource("6_i6lef") theme_override_font_sizes/font_size = 120 text = "menu_start" horizontal_alignment = 1 @@ -232,7 +232,7 @@ theme_override_colors/font_color = Color(3.008172e-09, 0.06855638, 0.14010939, 1 theme_override_colors/font_shadow_color = Color(0.7570387, 0.75415635, 0.7885611, 0) theme_override_colors/font_outline_color = Color(0.9954526, 0.93959796, 0.9103491, 1) theme_override_constants/outline_size = 23 -theme_override_fonts/font = ExtResource("5_13sgg") +theme_override_fonts/font = ExtResource("6_i6lef") theme_override_font_sizes/font_size = 120 text = "menu_back" horizontal_alignment = 1 @@ -266,7 +266,7 @@ theme_override_colors/font_color = Color(3.008172e-09, 0.06855638, 0.14010939, 1 theme_override_colors/font_shadow_color = Color(0.7570387, 0.75415635, 0.7885611, 0) theme_override_colors/font_outline_color = Color(0.9954526, 0.93959796, 0.9103491, 1) theme_override_constants/outline_size = 23 -theme_override_fonts/font = ExtResource("5_13sgg") +theme_override_fonts/font = ExtResource("6_i6lef") theme_override_font_sizes/font_size = 120 text = "menu_load" horizontal_alignment = 1 diff --git a/scenes/ui/time_display.tscn b/scenes/ui/time_display.tscn new file mode 100644 index 0000000..54713b6 --- /dev/null +++ b/scenes/ui/time_display.tscn @@ -0,0 +1,67 @@ +[gd_scene load_steps=4 format=3 uid="uid://bbgymc0drqpbx"] + +[ext_resource type="Script" uid="uid://dxky82mepun1j" path="res://scripts/time_label.gd" id="1_3uj10"] +[ext_resource type="FontFile" uid="uid://chk8jrn2ighpx" path="res://assets/fonts/main_font.ttf" id="2_742oq"] +[ext_resource type="FontFile" uid="uid://drp85tpfncq5m" path="res://assets/fonts/font2.ttf" id="3_aosp1"] + +[node name="TimeDisplay" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_3uj10") + +[node name="TimeLabel" type="Label" parent="."] +layout_mode = 0 +offset_left = 39.0 +offset_right = 164.0 +offset_bottom = 20.0 +theme_override_fonts/font = ExtResource("2_742oq") +text = "time_display" + +[node name="pause" type="Button" parent="."] +layout_mode = 0 +offset_left = 12.0 +offset_top = 2.0 +offset_right = 32.0 +offset_bottom = 24.0 +scale = Vector2(0.5, 0.5) +theme_override_colors/font_color = Color(0.80287457, 0.40096578, 0.15050122, 1) +theme_override_fonts/font = ExtResource("3_aosp1") +theme_override_font_sizes/font_size = 16 +text = "II" + +[node name="faster" type="Button" parent="."] +layout_mode = 0 +offset_left = 23.0 +offset_top = 2.0 +offset_right = 41.0 +offset_bottom = 24.0 +scale = Vector2(0.5, 0.5) +theme_override_colors/font_color = Color(0.80287457, 0.40096578, 0.15050122, 1) +theme_override_fonts/font = ExtResource("3_aosp1") +theme_override_font_sizes/font_size = 16 +text = ">" + +[node name="slower" type="Button" parent="."] +layout_mode = 0 +offset_left = 2.0 +offset_top = 2.0 +offset_right = 20.0 +offset_bottom = 24.0 +scale = Vector2(0.5, 0.5) +theme_override_colors/font_color = Color(0.80287457, 0.40096578, 0.15050122, 1) +theme_override_fonts/font = ExtResource("3_aosp1") +theme_override_font_sizes/font_size = 16 +text = "<" + +[node name="MenuButton" type="Button" parent="."] +layout_mode = 0 +offset_left = 198.0 +offset_right = 246.0 +offset_bottom = 23.0 +theme_override_fonts/font = ExtResource("2_742oq") +theme_override_font_sizes/font_size = 11 +text = "Menu" diff --git a/scripts/GameClasses.gd b/scripts/GameClasses.gd deleted file mode 100644 index af1faec..0000000 --- a/scripts/GameClasses.gd +++ /dev/null @@ -1,38 +0,0 @@ -# Plik: res://data/GameClasses.gd -extends Resource -class_name GameClasses # Użyjemy go do globalnego dostępu (jak Singleton dla klas) - -# ========================================================================= -# === 1. KLASA DANYCH PLANETY ============================================= -# ========================================================================= -class PlanetData extends Resource: - @export var name: String = "" - @export var size: int = 1 - @export var orbit_radius: float = 0.0 - @export var angle: float = 0.0 - @export var rotation_speed: float = 0.0 - @export var texture_path: String = "" - - func randomize_properties(): - size = randi_range(1, 5) - rotation_speed = randf_range(0.0001, 0.001) - var tex_id = randi_range(1, 18) - texture_path = "res://assets/planets/p%d.png" % tex_id - - -# ========================================================================= -# === 2. KLASA DANYCH GWIAZDY/SEKTORA ==================================== -# ========================================================================= -class StarData extends Resource: - @export var name: String = "" - @export var position: Vector2 = Vector2.ZERO - @export var type: String = "G2V" - @export var texture_path: String = "" - @export var planets: Array = [] # Lista obiektów PlanetData - - func randomize_properties(): - var types = ["O", "B", "A", "F", "G", "K", "M"] - type = types[randi() % types.size()] - var tex_id = randi_range(1, 3) - texture_path = "res://assets/stars/s%d.png" % tex_id - name = "Ziemia" diff --git a/scripts/GameClasses.gd.uid b/scripts/GameClasses.gd.uid deleted file mode 100644 index 0a76476..0000000 --- a/scripts/GameClasses.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://knplo8og2w4a diff --git a/scripts/GameData.gd b/scripts/GameData.gd index fd28616..615bbfb 100644 --- a/scripts/GameData.gd +++ b/scripts/GameData.gd @@ -1,3 +1,15 @@ extends Node var game_lunched = false +var game_time := 0.0 +var update_timer := 0.0 +func _ready(): + TranslationServer.set_locale(Settings.LANGUAGE) + +func _process(delta): + + game_time += delta * Settings.TIME_SCALE + #print(game_time) + update_timer += delta * Settings.TIME_SCALE + if update_timer >= Settings.UPDATE_INTERVAL: + update_timer = 0.0 diff --git a/scripts/camera_2d.gd b/scripts/camera_2d.gd index ce6216b..07e4ef4 100644 --- a/scripts/camera_2d.gd +++ b/scripts/camera_2d.gd @@ -1,7 +1,7 @@ extends Camera2D @export var speed := 500 # prędkość przesuwania -@export var zoom_speed := 0.1 # prędkość zoomu +@export var zoom_speed := 0.5 # prędkość zoomu func _process(delta): var move = Vector2.ZERO diff --git a/scripts/dictionary.gd b/scripts/dictionary.gd new file mode 100644 index 0000000..ef57b08 --- /dev/null +++ b/scripts/dictionary.gd @@ -0,0 +1,66 @@ +extends Node +const sector_names = [ + "Aetherion", "Altaris", "Andur System", "Artemis Reach", "Astrion", + "Azura Prime", "Borealis Expanse", "Caldris Belt", "Canthar System", "Celion Verge", + "Corvax Sector", "Cygnera Rift", "Daedalus Reach", "Darnis Cluster", "Dravon Expanse", + "Eclipta Prime", "Erevos System", "Eryndor Belt", "Ethon Reach", "Epsilon Mare", + "Falcoris Rim", "Feron Cluster", "Gaelis System", "Galmar Belt", "Gryphon Reach", + "Halion Expanse", "Helios Verge", "Hespera Sector", "Hyden Reach", "Icarion System", + "Illun Belt", "Istris Cluster", "Jorath System", "Kaelor Expanse", "Kassian Reach", + "Koralis Rim", "Krynn Sector", "Lunaris Reach", "Lysara System", "Maelor Verge", + "Magnor Belt", "Mareth Cluster", "Meridian Expanse", "Morthal System", "Myrris Reach", + "Nadir Verge", "Naos Sector", "Nerath Cluster", "Norian Belt", "Nova Thal", + "Oblivis Reach", "Odessa Expanse", "Orionis Verge", "Orryx System", "Pallas Belt", + "Parallax Rim", "Perion Sector", "Pharos System", "Phoenix Reach", "Primis Expanse", + "Pyra Cluster", "Quaron Belt", "Quiris System", "Ragnar Verge", "Rathor Expanse", + "Ravenna Sector", "Regalis System", "Remora Reach", "Rydan Belt", "Saren Cluster", + "Selena Verge", "Seraphis System", "Shadow Rift", "Silvar Reach", "Solara Expanse", + "Starnis Belt", "Syrion Cluster", "Talion System", "Tarsis Verge", "Tauren Expanse", + "Tenebris Rim", "Thalassa Reach", "Tharon Belt", "Tirion Sector", "Tritonis Expanse", + "Umbra Verge", "Valis Reach", "Varon Cluster", "Velora System", "Verrin Belt", + "Veyra Expanse", "Viridis Rim", "Volnar Sector", "Vortex Reach", "Vulcaris System", + "Wraith Expanse", "Xandor Cluster", "Xerion Verge", "Ymir Belt", "Zephyra System", + "Zerath Expanse", "Zyra Prime", "Zyneth Reach", "Zorath System", "Zyphon Rim" +] + +var planet_names = [ + "Aurion", "Belthar", "Cynos", "Dravus", "Elyth", "Farnor", "Glyria", "Hathor", "Ilyon", "Jovara", + "Klyss", "Lunaris", "Myrr", "Nethra", "Orionis", "Penthra", "Quaron", "Ravon", "Siriath", "Thalen", + "Urrax", "Veyra", "Worath", "Xynar", "Yllith", "Zorvan", "Aqmar", "Brenth", "Caelia", "Draxion", + "Enyra", "Falun", "Gravon", "Helior", "Iridra", "Jareth", "Karnis", "Lythra", "Mornis", "Neyra", + "Orryx", "Phaedon", "Quyra", "Rynor", "Sylen", "Taran", "Ulthor", "Vynath", "Wenor", "Xalun", + "Yndra", "Zerath", "Alyon", "Beryth", "Clyra", "Dornis", "Eryon", "Feyra", "Gornis", "Hyron", + "Ithra", "Joryn", "Kavon", "Lornis", "Meyra", "Nornis", "Olyth", "Pryon", "Qalor", "Rytha", + "Sornis", "Teyra", "Ulyth", "Vornis", "Weyra", "Xirra", "Yornis", "Zeyra", "Arax", "Blyth", + "Cerion", "Delyth", "Eron", "Fynor", "Geyra", "Hiron", "Ismar", "Jynar", "Koryth", "Lynor", + "Mythra", "Neyth", "Orryn", "Pynar", "Qorath", "Ryneth", "Syron", "Tynor", "Uryth", "Vylar", + "Woryn", "Xyneth", "Ylar", "Zyron", "Aethra", "Balor", "Cyneth", "Doryn", "Elyra", "Fylar", + "Gyron", "Hynis", "Ithos", "Jalor", "Kynis", "Lyra", "Maron", "Nytha", "Oryth", "Pheron", + "Qynis", "Ralon", "Synor", "Thyra", "Ulor", "Vanys", "Wyron", "Xynis", "Ythor", "Zynor", + "Aevra", "Boran", "Ceryn", "Dyrra", "Eranis", "Fynis", "Golar", "Hyrris", "Iryon", "Jovra", + "Kyrra", "Lyneth", "Myrra", "Norrin", "Orvra", "Pyneth", "Qyron", "Ryvra", "Syrrin", "Toryn", + "Ulyra", "Vynor", "Waryn", "Xyrris", "Yvra", "Zaryn", "Arion", "Belra", "Calon", "Delthar", + "Elyon", "Fornar", "Geyon", "Helra", "Irion", "Jelth", "Koryn", "Lunth", "Meyon", "Noryth", + "Olyra", "Pheon", "Quyron", "Rionis", "Seyth", "Torys", "Ulthar", "Veyron", "Wynor", "Xalon", + "Ythra", "Zynis", "Akris", "Byron", "Cyrron", "Deyra", "Ethon", "Fynar", "Gorrin", "Hyra", + "Irris", "Jorion", "Kavris", "Loryn", "Myrion", "Neyon", "Orris", "Pynor", "Qyrris", "Rheon", + "Sylon", "Tyrron", "Urris", "Vyrris", "Wyra", "Xynon", "Yvron", "Zyrra", "Aenor", "Beyra", + "Cynor", "Dyrion", "Eryth", "Fynon", "Garnis", "Heryth", "Ithion", "Jynor", "Keryn", "Lynis", + "Myron", "Neris", "Oryn", "Peyra", "Qyron", "Rynis", "Seyron", "Teryn", "Uryn", "Veyth", + "Wynis", "Xeron", "Yronis", "Zeyth", "Aoryn", "Boryth", "Cyrra", "Doryn", "Eryn", "Foryn", + "Geryth", "Horyn", "Ioryth", "Jeryn", "Koryth", "Leryn", "Moryn", "Noryn", "Oeryth", "Poryn", + "Qoryn", "Roryn", "Soryn", "Toryn", "Uoryn", "Voryn", "Woryn", "Xoryn", "Yoryn", "Zoryn", + "Altara", "Brionis", "Calyra", "Drethon", "Eonix", "Ferya", "Garnor", "Helyra", "Ionis", "Jarnis", + "Kalith", "Lyros", "Mythra", "Nelyon", "Orion", "Phalor", "Qeyra", "Rynon", "Saryn", "Talon", + "Ulyon", "Vorn", "Weyra", "Xylon", "Ylith", "Zarion", "Althos", "Beyon", "Cynis", "Deyon", + "Elyth", "Fornis", "Geyth", "Hynor", "Ilyon", "Jeyra", "Kynor", "Lorn", "Mynis", "Neyth", + "Orynth", "Pynis", "Qynor", "Rynith", "Sorn", "Tynis", "Urynth", "Vynis", "Wynis", "Xynor", + "Ynis", "Zynis", "Alyth", "Boryn", "Ceryth", "Dyrth", "Elyra", "Foryth", "Gynis", "Heryon", + "Iryth", "Jynis", "Keryth", "Loryth", "Mynith", "Neryth", "Olyth", "Peryth", "Qynith", "Roryth", + "Seryth", "Toryth", "Ulyth", "Veryth", "Woryth", "Xeryth", "Yeryth", "Zeryth", "Aenith", "Benor", + "Cynith", "Denor", "Enith", "Fenor", "Genith", "Henor", "Inith", "Jenor", "Kenith", "Lenor", + "Menith", "Nenor", "Oenith", "Penor", "Qenith", "Renor", "Senith", "Tenor", "Uenith", "Venor", + "Wenith", "Xenor", "Yenith", "Zenor", "Aelor", "Belor", "Celor", "Delor", "Elor", "Felor", + "Gelor", "Helor", "Ielor", "Jelor", "Kelon", "Lelor", "Melor", "Nelon", "Oelor", "Pelon", + "Qelor", "Relor", "Selor", "Telor", "Uelor", "Velor", "Welor", "Xelor", "Yelor", "Zelor" +] diff --git a/scripts/dictionary.gd.uid b/scripts/dictionary.gd.uid new file mode 100644 index 0000000..60e6a12 --- /dev/null +++ b/scripts/dictionary.gd.uid @@ -0,0 +1 @@ +uid://b28os2n0kielx diff --git a/scripts/galaxy.gd b/scripts/galaxy.gd index d9375ba..338a273 100644 --- a/scripts/galaxy.gd +++ b/scripts/galaxy.gd @@ -13,7 +13,7 @@ func _ready(): func _generate_galaxy(count: int): for i in range(count): var star = StarScene.instantiate() - star.star_name = "Star_" + str(i) + star.star_name = Names.sector_names[randi() % Names.sector_names.size()] star.planet_count = randi_range(Settings.min_planet, Settings.max_planet) star.global_position = Vector2(randi_range(50, Settings.x), randi_range(50, Settings.y)) star.get_node("Sprite2D").texture = load("res://assets/stars/s%d.png" % randi_range(1,8)) @@ -22,7 +22,7 @@ func _generate_galaxy(count: int): # generowanie planet dla danej gwiazdy for j in range(star.planet_count): var planet = PlanetScene.instantiate() - planet.pname = "Planet_" + str(i) + "_" + str(j) + planet.pname = Names.planet_names[randi() % Names.planet_names.size()] planet.orbit_radius = 30 + j * 20 planet.orbit_speed = randf_range(0.01, 0.04) generate_planet_resources(planet) # <-- tu losujemy surowce diff --git a/scripts/planet.gd b/scripts/planet.gd index 5e22082..7705b6d 100644 --- a/scripts/planet.gd +++ b/scripts/planet.gd @@ -10,17 +10,17 @@ var resources := {} var texture: Texture2D var angle = randf() * TAU func _ready(): - print("Planeta: %s, surowiec: %s" % [pname, resources]) + #str(round(biosfere * 100) / 100.0) _update_position() func _process(delta): - angle += orbit_speed * delta # obrót w czasie + angle += orbit_speed * delta * Settings.TIME_SCALE # obrót w czasie angle = fmod(angle, TAU) # utrzymanie kąta w 0..2π _update_position() - print(pname, angle) - label.text = str(round(position * 100) / 100.0) + + label.text = str(pname) func _update_position(): # pozycja lokalna względem gwiazdy diff --git a/scripts/settings.gd b/scripts/settings.gd index 1db08a1..e75a4b0 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -1,15 +1,20 @@ extends Node -var language = 'pl' +const LANGUAGE = 'pl' var number_of_players = 1 + # Liczba sektorów w galaktyce -var NUMBER_OF_SYSTEMS: int = 14 +var NUMBER_OF_SYSTEMS: int = 44 const RESOURCE_TYPES = ["Iron", "Uran", "Titan", "Water"] #pozycja systemów -var x = 1900 -var y = 1000 +var x = 4000 +var y = 4000 #Ilosc systemów var min_planet = 1 var max_planet = 5 + +#Zmienen upływu czasu +var TIME_SCALE = 1 +const UPDATE_INTERVAL := 10.0 #Cykl w sekundach diff --git a/scripts/star.gd b/scripts/star.gd index 0715f66..2a9b2db 100644 --- a/scripts/star.gd +++ b/scripts/star.gd @@ -7,5 +7,5 @@ var planets: Array = [] var texture: Texture2D func _ready(): - print("Gwiazda %s z %d planetami" % [star_name, planet_count]) + #print("Gwiazda %s z %d planetami" % [star_name, planet_count]) label.text = star_name diff --git a/scripts/time_label.gd b/scripts/time_label.gd new file mode 100644 index 0000000..9462032 --- /dev/null +++ b/scripts/time_label.gd @@ -0,0 +1,39 @@ +extends Control + +@onready var time_label: Label = $TimeLabel +@onready var faster = $faster +@onready var slower = $slower +@onready var pause = $pause + +func _ready(): + faster.pressed.connect(_on_faster_pressed) + slower.pressed.connect(_on_slower_pressed) + pause.pressed.connect(_on_pause_pressed) + $MenuButton.pressed.connect(_on_menu_button_pressed) + +func _process(delta): + var total_days = int(GameData.game_time) + var numer_roku = 3980 + total_days / 365 + var day_of_year = total_days % 365 + var dzien_cykliczny: int + + if day_of_year == 0: + dzien_cykliczny = 0 + if total_days > 0: + numer_roku -= 1 + else: + dzien_cykliczny = day_of_year + var full_date = tr("time_display") + ": " + str(numer_roku) + "." + str(dzien_cykliczny) + time_label.text = full_date + +func _on_faster_pressed(): + if Settings.TIME_SCALE < 10: + Settings.TIME_SCALE +=1 +func _on_slower_pressed(): + if Settings.TIME_SCALE > 0: + Settings.TIME_SCALE -=1 +func _on_pause_pressed(): + Settings.TIME_SCALE = 0 + +func _on_menu_button_pressed(): + get_tree().change_scene_to_file("res://scenes/menu.tscn") diff --git a/scripts/time_label.gd.uid b/scripts/time_label.gd.uid new file mode 100644 index 0000000..956bf2a --- /dev/null +++ b/scripts/time_label.gd.uid @@ -0,0 +1 @@ +uid://dxky82mepun1j