From 70785c3b3552f168931dcc0548d9b75563b52d6b Mon Sep 17 00:00:00 2001 From: LunarAkai Date: Fri, 27 Jun 2025 19:37:52 +0200 Subject: [PATCH] inital commit --- .editorconfig | 4 + .gitattributes | 2 + .gitignore | 4 + .idea/.gitignore | 13 ++ .idea/encodings.xml | 4 + .idea/indexLayout.xml | 8 + .idea/libraries/GdSdk_Master.xml | 10 + export_presets.cfg | 41 ++++ icon.svg | 1 + icon.svg.import | 37 ++++ project.godot | 33 ++++ src/UI/close_button.gd | 15 ++ src/UI/close_button.gd.uid | 1 + src/UI/file_menu.gd | 11 ++ src/UI/file_menu.gd.uid | 1 + src/UI/main.tscn | 177 ++++++++++++++++++ src/UI/menu_bar.gd | 19 ++ src/UI/menu_bar.gd.uid | 1 + src/UI/minimize_button.gd | 4 + src/UI/minimize_button.gd.uid | 1 + .../fonts/overpass-latin-400-normal.ttf | Bin 0 -> 43096 bytes .../overpass-latin-400-normal.ttf.import | 35 ++++ src/assets/icons/chevron-compact-down.svg | 1 + .../icons/chevron-compact-down.svg.import | 37 ++++ src/assets/icons/x.svg | 1 + src/assets/icons/x.svg.import | 37 ++++ src/theme/main_theme.tres | 15 ++ src/theme/styles/close_button.tres | 4 + src/theme/styles/close_button_pressed.tres | 4 + 29 files changed, 521 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/encodings.xml create mode 100644 .idea/indexLayout.xml create mode 100644 .idea/libraries/GdSdk_Master.xml create mode 100644 export_presets.cfg create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 project.godot create mode 100644 src/UI/close_button.gd create mode 100644 src/UI/close_button.gd.uid create mode 100644 src/UI/file_menu.gd create mode 100644 src/UI/file_menu.gd.uid create mode 100644 src/UI/main.tscn create mode 100644 src/UI/menu_bar.gd create mode 100644 src/UI/menu_bar.gd.uid create mode 100644 src/UI/minimize_button.gd create mode 100644 src/UI/minimize_button.gd.uid create mode 100644 src/assets/fonts/overpass-latin-400-normal.ttf create mode 100644 src/assets/fonts/overpass-latin-400-normal.ttf.import create mode 100644 src/assets/icons/chevron-compact-down.svg create mode 100644 src/assets/icons/chevron-compact-down.svg.import create mode 100644 src/assets/icons/x.svg create mode 100644 src/assets/icons/x.svg.import create mode 100644 src/theme/main_theme.tres create mode 100644 src/theme/styles/close_button.tres create mode 100644 src/theme/styles/close_button_pressed.tres diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..761bbdd --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# Godot 4+ specific ignores +.godot/ +/android/ +/exports/ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..dec26cb --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/contentModel.xml +/projectSettingsUpdater.xml +/.idea.whydt.iml +/modules.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/indexLayout.xml b/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/GdSdk_Master.xml b/.idea/libraries/GdSdk_Master.xml new file mode 100644 index 0000000..364d1a8 --- /dev/null +++ b/.idea/libraries/GdSdk_Master.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..e2f6bb3 --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,41 @@ +[preset.0] + +name="Linux" +platform="Linux" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="exports/linux/whydt.x86_64" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..3250ead --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0txj1dmclwf5" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..d58a3ff --- /dev/null +++ b/project.godot @@ -0,0 +1,33 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="whydt" +run/main_scene="uid://brs37lcvmx2h5" +config/features=PackedStringArray("4.4", "Forward Plus") +run/low_processor_mode=true +boot_splash/show_image=false +boot_splash/fullsize=false +boot_splash/use_filter=false +config/icon="res://icon.svg" + +[display] + +window/size/viewport_width=1280 +window/size/viewport_height=720 +window/size/borderless=true +window/size/transparent=true +window/per_pixel_transparency/allowed=true +display_server/driver.linuxbsd="wayland" + +[rendering] + +viewport/transparent_background=true diff --git a/src/UI/close_button.gd b/src/UI/close_button.gd new file mode 100644 index 0000000..25f5529 --- /dev/null +++ b/src/UI/close_button.gd @@ -0,0 +1,15 @@ +extends Button + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +func _on_pressed() -> void: + get_tree().quit() diff --git a/src/UI/close_button.gd.uid b/src/UI/close_button.gd.uid new file mode 100644 index 0000000..7172b05 --- /dev/null +++ b/src/UI/close_button.gd.uid @@ -0,0 +1 @@ +uid://cs8ywlsgql3pg diff --git a/src/UI/file_menu.gd b/src/UI/file_menu.gd new file mode 100644 index 0000000..8fb06f1 --- /dev/null +++ b/src/UI/file_menu.gd @@ -0,0 +1,11 @@ +extends PopupMenu + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/src/UI/file_menu.gd.uid b/src/UI/file_menu.gd.uid new file mode 100644 index 0000000..53befdb --- /dev/null +++ b/src/UI/file_menu.gd.uid @@ -0,0 +1 @@ +uid://dhgrxotssjayx diff --git a/src/UI/main.tscn b/src/UI/main.tscn new file mode 100644 index 0000000..fa70630 --- /dev/null +++ b/src/UI/main.tscn @@ -0,0 +1,177 @@ +[gd_scene load_steps=13 format=3 uid="uid://brs37lcvmx2h5"] + +[ext_resource type="Theme" uid="uid://bal6yp0a25hf2" path="res://src/theme/main_theme.tres" id="1_apmt2"] +[ext_resource type="Script" uid="uid://hiyarq0kbm45" path="res://src/UI/menu_bar.gd" id="1_rt51c"] +[ext_resource type="Texture2D" uid="uid://bpvgbghct7ayv" path="res://src/assets/icons/x.svg" id="4_6nn4n"] +[ext_resource type="Texture2D" uid="uid://duloi6af1avtm" path="res://src/assets/icons/chevron-compact-down.svg" id="5_dv4hw"] +[ext_resource type="Script" uid="uid://cs8ywlsgql3pg" path="res://src/UI/close_button.gd" id="5_teubg"] +[ext_resource type="Script" uid="uid://d3l1hl06c3n56" path="res://src/UI/minimize_button.gd" id="7_14o3q"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5vilm"] +bg_color = Color(0.962281, 0.933337, 0.999483, 1) +corner_radius_top_left = 30 +corner_radius_top_right = 30 +corner_radius_bottom_right = 30 +corner_radius_bottom_left = 30 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dv4hw"] +bg_color = Color(0.887088, 0, 0.157561, 1) +corner_radius_top_left = 100 +corner_radius_top_right = 100 +corner_radius_bottom_right = 100 +corner_radius_bottom_left = 100 +expand_margin_left = 2.0 +expand_margin_top = 2.0 +expand_margin_right = 2.0 +expand_margin_bottom = 2.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_teubg"] +bg_color = Color(0.550207, 0, 0.0815203, 1) +corner_radius_top_left = 100 +corner_radius_top_right = 100 +corner_radius_bottom_right = 100 +corner_radius_bottom_left = 100 +expand_margin_left = 2.0 +expand_margin_top = 2.0 +expand_margin_right = 2.0 +expand_margin_bottom = 2.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_14o3q"] +bg_color = Color(1, 0.956863, 0.0823529, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cqoei"] +bg_color = Color(0.728507, 0.695771, 0, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_apmt2"] +corner_radius_top_left = 30 +corner_radius_top_right = 30 +corner_radius_bottom_right = 30 +corner_radius_bottom_left = 30 + +[node name="Main" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Panel" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_5vilm") + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel"] +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/VBoxContainer"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +theme_override_constants/margin_left = 30 +theme_override_constants/margin_right = 30 + +[node name="MenuBar" type="MenuBar" parent="Panel/VBoxContainer/MarginContainer"] +layout_mode = 2 +script = ExtResource("1_rt51c") + +[node name="CloseButton" type="Button" parent="Panel/VBoxContainer/MarginContainer/MenuBar"] +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -26.0 +offset_top = -10.0 +offset_right = -2.0 +offset_bottom = 14.0 +grow_horizontal = 0 +grow_vertical = 2 +theme = ExtResource("1_apmt2") +theme_type_variation = &"FlatButton" +theme_override_styles/hover = SubResource("StyleBoxFlat_dv4hw") +theme_override_styles/pressed = SubResource("StyleBoxFlat_teubg") +action_mode = 0 +icon = ExtResource("4_6nn4n") +script = ExtResource("5_teubg") + +[node name="MinimizeButton" type="Button" parent="Panel/VBoxContainer/MarginContainer/MenuBar"] +visible = false +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -73.0 +offset_top = -11.5 +offset_right = -49.0 +offset_bottom = 12.5 +grow_horizontal = 0 +grow_vertical = 2 +theme = ExtResource("1_apmt2") +theme_type_variation = &"FlatButton" +theme_override_constants/outline_size = 3 +theme_override_styles/hover = SubResource("StyleBoxFlat_14o3q") +theme_override_styles/pressed = SubResource("StyleBoxFlat_cqoei") +action_mode = 0 +icon = ExtResource("5_dv4hw") +script = ExtResource("7_14o3q") + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Panel" type="Panel" parent="Panel/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 +size_flags_horizontal = 0 +theme_override_styles/panel = SubResource("StyleBoxFlat_apmt2") + +[node name="MarginContainer" type="MarginContainer" parent="Panel/VBoxContainer/HBoxContainer/Panel"] +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 = 10 +theme_override_constants/margin_top = 30 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 30 + +[node name="ScrollContainer" type="ScrollContainer" parent="Panel/VBoxContainer/HBoxContainer/Panel/MarginContainer"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +horizontal_scroll_mode = 0 + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/VBoxContainer/HBoxContainer/Panel/MarginContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="RichTextLabel" type="RichTextLabel" parent="Panel/VBoxContainer/HBoxContainer/Panel/MarginContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("1_apmt2") +text = "aaaaa" +fit_content = true + +[node name="ScrollContainer" type="ScrollContainer" parent="Panel/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +horizontal_scroll_mode = 0 + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/VBoxContainer/HBoxContainer/ScrollContainer"] +layout_mode = 2 + +[connection signal="pressed" from="Panel/VBoxContainer/MarginContainer/MenuBar/CloseButton" to="Panel/VBoxContainer/MarginContainer/MenuBar/CloseButton" method="_on_pressed"] +[connection signal="pressed" from="Panel/VBoxContainer/MarginContainer/MenuBar/MinimizeButton" to="Panel/VBoxContainer/MarginContainer/MenuBar/MinimizeButton" method="_on_pressed"] diff --git a/src/UI/menu_bar.gd b/src/UI/menu_bar.gd new file mode 100644 index 0000000..5cb921e --- /dev/null +++ b/src/UI/menu_bar.gd @@ -0,0 +1,19 @@ +extends MenuBar + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +func _input(event: InputEvent) -> void: + pass + +func _on_file_menu_id_pressed(id:int) -> void: + if id == 0: + get_tree().quit() diff --git a/src/UI/menu_bar.gd.uid b/src/UI/menu_bar.gd.uid new file mode 100644 index 0000000..c1adf2b --- /dev/null +++ b/src/UI/menu_bar.gd.uid @@ -0,0 +1 @@ +uid://hiyarq0kbm45 diff --git a/src/UI/minimize_button.gd b/src/UI/minimize_button.gd new file mode 100644 index 0000000..ffefbd7 --- /dev/null +++ b/src/UI/minimize_button.gd @@ -0,0 +1,4 @@ +extends Button + +func _on_pressed() -> void: + get_tree().root.mode = Window.MODE_MINIMIZED diff --git a/src/UI/minimize_button.gd.uid b/src/UI/minimize_button.gd.uid new file mode 100644 index 0000000..1368f39 --- /dev/null +++ b/src/UI/minimize_button.gd.uid @@ -0,0 +1 @@ +uid://d3l1hl06c3n56 diff --git a/src/assets/fonts/overpass-latin-400-normal.ttf b/src/assets/fonts/overpass-latin-400-normal.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d61898445e536eab7c8e315233677a565fac30a3 GIT binary patch literal 43096 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

_9Jfl>IZyG`}{-mLefKRhEJIlS+FT<)?3v% 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 Ae*gdg literal 0 HcmV?d00001 diff --git a/src/assets/fonts/overpass-latin-400-normal.ttf.import b/src/assets/fonts/overpass-latin-400-normal.ttf.import new file mode 100644 index 0000000..407bc40 --- /dev/null +++ b/src/assets/fonts/overpass-latin-400-normal.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://dcpict6ixxvdw" +path="res://.godot/imported/overpass-latin-400-normal.ttf-186b96825e6326cf02118dee1697d52f.fontdata" + +[deps] + +source_file="res://src/assets/fonts/overpass-latin-400-normal.ttf" +dest_files=["res://.godot/imported/overpass-latin-400-normal.ttf-186b96825e6326cf02118dee1697d52f.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 +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/src/assets/icons/chevron-compact-down.svg b/src/assets/icons/chevron-compact-down.svg new file mode 100644 index 0000000..2eae5f0 --- /dev/null +++ b/src/assets/icons/chevron-compact-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/chevron-compact-down.svg.import b/src/assets/icons/chevron-compact-down.svg.import new file mode 100644 index 0000000..9e3d223 --- /dev/null +++ b/src/assets/icons/chevron-compact-down.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://duloi6af1avtm" +path="res://.godot/imported/chevron-compact-down.svg-71bca9f8344c168edda67a228cc23752.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/assets/icons/chevron-compact-down.svg" +dest_files=["res://.godot/imported/chevron-compact-down.svg-71bca9f8344c168edda67a228cc23752.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/src/assets/icons/x.svg b/src/assets/icons/x.svg new file mode 100644 index 0000000..79f489b --- /dev/null +++ b/src/assets/icons/x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/x.svg.import b/src/assets/icons/x.svg.import new file mode 100644 index 0000000..c7294ea --- /dev/null +++ b/src/assets/icons/x.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpvgbghct7ayv" +path="res://.godot/imported/x.svg-0af056cdf47cf7d9e1123ab8f944106d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/assets/icons/x.svg" +dest_files=["res://.godot/imported/x.svg-0af056cdf47cf7d9e1123ab8f944106d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/src/theme/main_theme.tres b/src/theme/main_theme.tres new file mode 100644 index 0000000..91888af --- /dev/null +++ b/src/theme/main_theme.tres @@ -0,0 +1,15 @@ +[gd_resource type="Theme" load_steps=5 format=3 uid="uid://bal6yp0a25hf2"] + +[ext_resource type="FontFile" uid="uid://dcpict6ixxvdw" path="res://src/assets/fonts/overpass-latin-400-normal.ttf" id="1_04vft"] +[ext_resource type="StyleBox" uid="uid://868ty5nf7kwh" path="res://src/theme/styles/close_button.tres" id="1_o3bvj"] +[ext_resource type="StyleBox" uid="uid://kph4m57vnoas" path="res://src/theme/styles/close_button_pressed.tres" id="2_l3loh"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_04vft"] +bg_color = Color(0.6, 0.6, 0.6, 0) + +[resource] +default_font = ExtResource("1_04vft") +Button/styles/hover = ExtResource("1_o3bvj") +Button/styles/normal = SubResource("StyleBoxFlat_04vft") +Button/styles/pressed = ExtResource("2_l3loh") +MenuButton/colors/font_color = Color(0.875, 0.875, 0.875, 1) diff --git a/src/theme/styles/close_button.tres b/src/theme/styles/close_button.tres new file mode 100644 index 0000000..fc17b69 --- /dev/null +++ b/src/theme/styles/close_button.tres @@ -0,0 +1,4 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://868ty5nf7kwh"] + +[resource] +bg_color = Color(0.887088, 0, 0.157561, 1) diff --git a/src/theme/styles/close_button_pressed.tres b/src/theme/styles/close_button_pressed.tres new file mode 100644 index 0000000..ad03caa --- /dev/null +++ b/src/theme/styles/close_button_pressed.tres @@ -0,0 +1,4 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://kph4m57vnoas"] + +[resource] +bg_color = Color(0.550207, 0, 0.0815203, 1)