Initial commit

This commit is contained in:
Maximilian Kerbel 2025-02-15 15:36:27 +01:00
commit 21bfb97511
56 changed files with 2144 additions and 0 deletions

2
.gitattributes vendored Normal file
View file

@ -0,0 +1,2 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
# Godot 4+ specific ignores
.godot/
/android/

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dsl4n8xh7u2s3"
path="res://.godot/imported/Background.png-6be4d76c68d11161ca3a2112112543a0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/background/Background.png"
dest_files=["res://.godot/imported/Background.png-6be4d76c68d11161ca3a2112112543a0.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

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bsnrkucx738te"
path="res://.godot/imported/PixelOperator8-Bold.ttf-74faf550739674ad3170f08e646e0614.fontdata"
[deps]
source_file="res://assets/fonts/PixelOperator8-Bold.ttf"
dest_files=["res://.godot/imported/PixelOperator8-Bold.ttf-74faf550739674ad3170f08e646e0614.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=1
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://ccibh2jw5qu60"
path="res://.godot/imported/PixelOperator8.ttf-6f9f01766aff16f52046b880ffb8d367.fontdata"
[deps]
source_file="res://assets/fonts/PixelOperator8.ttf"
dest_files=["res://.godot/imported/PixelOperator8.ttf-6f9f01766aff16f52046b880ffb8d367.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=1
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View file

@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://pwtmr7mko3ls"
path="res://.godot/imported/time_for_adventure.mp3-b8a49ae1cfc83b211be9d82e6e985655.mp3str"
[deps]
source_file="res://assets/music/time_for_adventure.mp3"
dest_files=["res://.godot/imported/time_for_adventure.mp3-b8a49ae1cfc83b211be9d82e6e985655.mp3str"]
[params]
loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4

BIN
assets/sounds/coin.wav Normal file

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://x377tvet513g"
path="res://.godot/imported/coin.wav-9081ee1c6d81d9c34d08bc916297b892.sample"
[deps]
source_file="res://assets/sounds/coin.wav"
dest_files=["res://.godot/imported/coin.wav-9081ee1c6d81d9c34d08bc916297b892.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
assets/sounds/explosion.wav Normal file

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b2ajl1ie2eq7v"
path="res://.godot/imported/explosion.wav-52e05e8d4b6600106c8dde082c90f915.sample"
[deps]
source_file="res://assets/sounds/explosion.wav"
dest_files=["res://.godot/imported/explosion.wav-52e05e8d4b6600106c8dde082c90f915.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
assets/sounds/hurt.wav Normal file

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dn7xtqm75cxah"
path="res://.godot/imported/hurt.wav-792baeb99505afd6a1496d4e4330b023.sample"
[deps]
source_file="res://assets/sounds/hurt.wav"
dest_files=["res://.godot/imported/hurt.wav-792baeb99505afd6a1496d4e4330b023.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
assets/sounds/jump.wav Normal file

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://g2u2p5u4ngwg"
path="res://.godot/imported/jump.wav-395b727cde98999423d5c020c9c3492f.sample"
[deps]
source_file="res://assets/sounds/jump.wav"
dest_files=["res://.godot/imported/jump.wav-395b727cde98999423d5c020c9c3492f.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
assets/sounds/power_up.wav Normal file

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cbmemleloq0ye"
path="res://.godot/imported/power_up.wav-8349ffe570559470036ebff4b80f7fc0.sample"
[deps]
source_file="res://assets/sounds/power_up.wav"
dest_files=["res://.godot/imported/power_up.wav-8349ffe570559470036ebff4b80f7fc0.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
assets/sounds/tap.wav Normal file

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://jc4hm451c7qc"
path="res://.godot/imported/tap.wav-78d4c5a48b21a853d89bec74f20510e7.sample"
[deps]
source_file="res://assets/sounds/tap.wav"
dest_files=["res://.godot/imported/tap.wav-78d4c5a48b21a853d89bec74f20510e7.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
assets/sprites/coin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://s5i4yb3kf1k4"
path="res://.godot/imported/coin.png-c8309bf0f8fb5f3a7d1e96a4eb3f02ce.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sprites/coin.png"
dest_files=["res://.godot/imported/coin.png-c8309bf0f8fb5f3a7d1e96a4eb3f02ce.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

BIN
assets/sprites/fruit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://jssmdvye2bhd"
path="res://.godot/imported/fruit.png-3735163b668af10c2b35b52cba81b68a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sprites/fruit.png"
dest_files=["res://.godot/imported/fruit.png-3735163b668af10c2b35b52cba81b68a.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

BIN
assets/sprites/knight.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://biyt8lt8upr57"
path="res://.godot/imported/knight.png-7c67c83d34932624952797d9e971a644.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sprites/knight.png"
dest_files=["res://.godot/imported/knight.png-7c67c83d34932624952797d9e971a644.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b6hly46al66si"
path="res://.godot/imported/platforms.png-3869606db457611ed4193d705dc364e4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sprites/platforms.png"
dest_files=["res://.godot/imported/platforms.png-3869606db457611ed4193d705dc364e4.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 908 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://rwxwpjc74ugo"
path="res://.godot/imported/slime_green.png-f6349164bf3a0f5189bb927b97af9c58.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sprites/slime_green.png"
dest_files=["res://.godot/imported/slime_green.png-f6349164bf3a0f5189bb927b97af9c58.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://sodrxj5v1y74"
path="res://.godot/imported/slime_purple.png-26dc5ddef235ce6a400e78e0d532b050.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sprites/slime_purple.png"
dest_files=["res://.godot/imported/slime_purple.png-26dc5ddef235ce6a400e78e0d532b050.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cc6id13qf0ol8"
path="res://.godot/imported/world_tileset.png-61a32465f33c3d9d3bfecb75b6485009.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sprites/world_tileset.png"
dest_files=["res://.godot/imported/world_tileset.png-61a32465f33c3d9d3bfecb75b6485009.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

15
default_bus_layout.tres Normal file
View file

@ -0,0 +1,15 @@
[gd_resource type="AudioBusLayout" format=3 uid="uid://6ju5gsvmy3j6"]
[resource]
bus/1/name = &"Music"
bus/1/solo = false
bus/1/mute = false
bus/1/bypass_fx = false
bus/1/volume_db = 0.0
bus/1/send = &"Master"
bus/2/name = &"SFX"
bus/2/solo = false
bus/2/mute = false
bus/2/bypass_fx = false
bus/2/volume_db = 0.0
bus/2/send = &"Master"

View file

@ -0,0 +1,40 @@
extends Node
var config = ConfigFile.new()
const SETTINGS_FILE_PATH = "user://settings.ini"
func _ready():
if !FileAccess.file_exists(SETTINGS_FILE_PATH):
config.set_value("video", "fullscreen", true)
config.set_value("audio", "master_volume", 1.0)
config.set_value("audio", "music_volume", 1.0)
config.set_value("audio", "sfx_volume", 1.0)
config.set_value("audio", "master_volume_mute", false)
config.set_value("audio", "music_volume_mute", false)
config.set_value("audio", "sfx_volume_mute", false)
config.save(SETTINGS_FILE_PATH)
else:
config.load(SETTINGS_FILE_PATH)
func save_video_setting(key: String, value):
config.set_value("video",key,value)
config.save(SETTINGS_FILE_PATH)
func load_video_settings():
var video_settings ={}
for key in config.get_section_keys("video"):
video_settings[key] = config.get_value("video", key)
return video_settings
func save_audio_setting(key: String, value):
config.set_value("audio",key,value)
config.save(SETTINGS_FILE_PATH)
func load_audio_settings():
var audio_settings ={}
for key in config.get_section_keys("audio"):
audio_settings[key] = config.get_value("audio", key)
return audio_settings

1
icon.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>

After

Width:  |  Height:  |  Size: 994 B

37
icon.svg.import Normal file
View file

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ct2pu5735few"
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

68
project.godot Normal file
View file

@ -0,0 +1,68 @@
; 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="Solok night Adventures"
run/main_scene="res://scenes/main_menu.tscn"
config/features=PackedStringArray("4.3", "Forward Plus")
config/icon="res://icon.svg"
[autoload]
Music="*res://scenes/music.tscn"
ConfigFileHandler="*res://global/ConfigFileHandler.gd"
GlobalSettings="*res://saves/global_settings.gd"
[display]
window/stretch/mode="viewport"
[input]
move_left={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
move_right={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
jump={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
roll={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
move_down={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
back={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[rendering]
textures/canvas_textures/default_texture_filter=0

33
saves/global_settings.gd Normal file
View file

@ -0,0 +1,33 @@
extends Node
var video_settings
var audio_settings
func _ready():
video_settings = ConfigFileHandler.load_video_settings()
audio_settings = ConfigFileHandler.load_audio_settings()
change_fullscreen(video_settings.fullscreen)
change_master_volume()
change_music_volume()
change_sfx_volume()
mute_master(audio_settings.master_volume_mute)
mute_music(audio_settings.music_volume_mute)
mute_sfx(audio_settings.sfx_volume_mute)
func change_fullscreen(fullscreen: bool):
if fullscreen:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
else:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
func change_master_volume():
audio_settings = ConfigFileHandler.load_audio_settings()
AudioServer.set_bus_volume_db(0, log(audio_settings.master_volume)*20)
func change_music_volume():
audio_settings = ConfigFileHandler.load_audio_settings()
AudioServer.set_bus_volume_db(1, log(audio_settings.music_volume)*20)
func change_sfx_volume():
audio_settings = ConfigFileHandler.load_audio_settings()
AudioServer.set_bus_volume_db(2, log(audio_settings.sfx_volume)*20)
func mute_master(master_mute : bool):
AudioServer.set_bus_mute(0, master_mute)
func mute_music(music_mute : bool):
AudioServer.set_bus_mute(1, music_mute)
func mute_sfx(sfx_mute : bool):
AudioServer.set_bus_mute(2, sfx_mute)

214
scenes/game.tscn Normal file

File diff suppressed because one or more lines are too long

80
scenes/healthbar.tscn Normal file
View file

@ -0,0 +1,80 @@
[gd_scene load_steps=7 format=3 uid="uid://cpvniud8u5cye"]
[ext_resource type="Script" path="res://scripts/healthbar.gd" id="1_uekis"]
[ext_resource type="FontFile" uid="uid://ccibh2jw5qu60" path="res://assets/fonts/PixelOperator8.ttf" id="2_18f0b"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tl3bd"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hjn1m"]
bg_color = Color(0.297826, 0.667312, 0.30976, 1)
corner_radius_top_left = 10
corner_radius_top_right = 10
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kp0or"]
bg_color = Color(0.295867, 0.295867, 0.295866, 1)
corner_radius_top_left = 10
corner_radius_top_right = 10
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
expand_margin_left = 1.0
expand_margin_top = 1.0
expand_margin_right = 1.0
expand_margin_bottom = 1.0
shadow_color = Color(0, 0, 0, 0.27451)
shadow_offset = Vector2(0, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ovopx"]
bg_color = Color(1, 1, 1, 1)
corner_radius_top_left = 10
corner_radius_top_right = 10
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
[node name="Healthbar" type="ProgressBar"]
z_index = 1
offset_right = 240.0
offset_bottom = 10.0
theme_override_styles/background = SubResource("StyleBoxEmpty_tl3bd")
theme_override_styles/fill = SubResource("StyleBoxFlat_hjn1m")
value = 60.0
show_percentage = false
script = ExtResource("1_uekis")
[node name="Damagebar" type="ProgressBar" parent="."]
z_index = -1
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/background = SubResource("StyleBoxFlat_kp0or")
theme_override_styles/fill = SubResource("StyleBoxFlat_ovopx")
value = 80.0
show_percentage = false
[node name="Timer" type="Timer" parent="."]
wait_time = 0.4
one_shot = true
[node name="Label" type="Label" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -10.5
offset_top = -4.0
offset_right = 10.5
offset_bottom = 4.0
grow_horizontal = 2
grow_vertical = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("2_18f0b")
theme_override_font_sizes/font_size = 16
text = "50"
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

167
scenes/main_menu.tscn Normal file
View file

@ -0,0 +1,167 @@
[gd_scene load_steps=10 format=3 uid="uid://ckh2ov6h4uotl"]
[ext_resource type="FontFile" uid="uid://bsnrkucx738te" path="res://assets/fonts/PixelOperator8-Bold.ttf" id="1_iv486"]
[ext_resource type="Script" path="res://scripts/main_menu.gd" id="1_s33a7"]
[ext_resource type="Texture2D" uid="uid://dsl4n8xh7u2s3" path="res://assets/background/Background.png" id="2_ejcuj"]
[ext_resource type="PackedScene" uid="uid://ba41h5bxomx8c" path="res://scenes/settings.tscn" id="3_hnkc8"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_1i6wl"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_608mi"]
bg_color = Color(0.497474, 0.497474, 0.497474, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o8wg7"]
bg_color = Color(0.737193, 0.737193, 0.737193, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7su0m"]
bg_color = Color(0.497474, 0.497474, 0.497474, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q67y6"]
bg_color = Color(1, 1, 1, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[node name="MainMenu" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
focus_neighbor_top = NodePath("VBoxContainer/Exit")
script = ExtResource("1_s33a7")
[node name="TextureRect" type="TextureRect" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = -0.102
anchor_top = -0.002
offset_left = -466.496
offset_top = -229.704
offset_right = 1171.0
offset_bottom = 745.0
texture = ExtResource("2_ejcuj")
expand_mode = 1
[node name="Label" type="Label" parent="."]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -405.0
offset_top = 82.0
offset_right = 405.0
offset_bottom = 122.0
grow_horizontal = 2
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
theme_override_constants/shadow_offset_x = 3
theme_override_constants/shadow_offset_y = 3
theme_override_fonts/font = ExtResource("1_iv486")
theme_override_font_sizes/font_size = 40
text = "Solok night Adventures"
horizontal_alignment = 1
vertical_alignment = 1
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -219.0
offset_top = -116.0
offset_right = 219.0
offset_bottom = 164.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 20
[node name="StartGame" type="Button" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
focus_neighbor_top = NodePath("../Exit")
focus_neighbor_bottom = NodePath("../Options")
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0.513726, 0.513726, 0, 1)
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("1_iv486")
theme_override_font_sizes/font_size = 24
theme_override_styles/focus = SubResource("StyleBoxEmpty_1i6wl")
theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_608mi")
theme_override_styles/hover = SubResource("StyleBoxFlat_o8wg7")
theme_override_styles/pressed = SubResource("StyleBoxFlat_7su0m")
theme_override_styles/normal = SubResource("StyleBoxFlat_q67y6")
text = "Start Game"
[node name="Options" type="Button" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
focus_neighbor_top = NodePath("../StartGame")
focus_neighbor_bottom = NodePath("../Exit")
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0.513726, 0.513726, 0, 1)
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("1_iv486")
theme_override_font_sizes/font_size = 24
theme_override_styles/focus = SubResource("StyleBoxEmpty_1i6wl")
theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_608mi")
theme_override_styles/hover = SubResource("StyleBoxFlat_o8wg7")
theme_override_styles/pressed = SubResource("StyleBoxFlat_7su0m")
theme_override_styles/normal = SubResource("StyleBoxFlat_q67y6")
text = "Options"
[node name="Exit" type="Button" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
focus_neighbor_top = NodePath("../Options")
focus_neighbor_bottom = NodePath("../StartGame")
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0.513726, 0.513726, 0, 1)
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("1_iv486")
theme_override_font_sizes/font_size = 24
theme_override_styles/focus = SubResource("StyleBoxEmpty_1i6wl")
theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_608mi")
theme_override_styles/hover = SubResource("StyleBoxFlat_o8wg7")
theme_override_styles/pressed = SubResource("StyleBoxFlat_7su0m")
theme_override_styles/normal = SubResource("StyleBoxFlat_q67y6")
text = "Exit"
[node name="Settings" parent="." instance=ExtResource("3_hnkc8")]
visible = false
layout_mode = 1
[connection signal="pressed" from="VBoxContainer/StartGame" to="." method="_on_start_game_pressed"]
[connection signal="pressed" from="VBoxContainer/Options" to="." method="_on_options_pressed"]
[connection signal="pressed" from="VBoxContainer/Exit" to="." method="_on_exit_pressed"]

9
scenes/music.tscn Normal file
View file

@ -0,0 +1,9 @@
[gd_scene load_steps=2 format=3 uid="uid://d4lukp0vk4p64"]
[ext_resource type="AudioStream" uid="uid://pwtmr7mko3ls" path="res://assets/music/time_for_adventure.mp3" id="1_k2etp"]
[node name="Music" type="AudioStreamPlayer2D"]
stream = ExtResource("1_k2etp")
autoplay = true
bus = &"Music"
parameters/looping = false

135
scenes/pause_menu.tscn Normal file
View file

@ -0,0 +1,135 @@
[gd_scene load_steps=9 format=3 uid="uid://dtsxritjcddxc"]
[ext_resource type="Script" path="res://scripts/pause_menu.gd" id="1_6ya5j"]
[ext_resource type="FontFile" uid="uid://bsnrkucx738te" path="res://assets/fonts/PixelOperator8-Bold.ttf" id="1_7l1o7"]
[ext_resource type="PackedScene" uid="uid://ba41h5bxomx8c" path="res://scenes/settings.tscn" id="3_qpp3d"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_1i6wl"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_608mi"]
bg_color = Color(0.497474, 0.497474, 0.497474, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o8wg7"]
bg_color = Color(0.737193, 0.737193, 0.737193, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7su0m"]
bg_color = Color(0.497474, 0.497474, 0.497474, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q67y6"]
bg_color = Color(1, 1, 1, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[node name="Pause Menu" type="Control"]
process_mode = 3
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
focus_neighbor_top = NodePath("VBoxContainer/Main Menu")
script = ExtResource("1_6ya5j")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -219.0
offset_top = -116.0
offset_right = 219.0
offset_bottom = 164.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 20
[node name="Resume" type="Button" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
focus_neighbor_top = NodePath("../Main Menu")
focus_neighbor_bottom = NodePath("../Options")
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0.513726, 0.513726, 0, 1)
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("1_7l1o7")
theme_override_font_sizes/font_size = 24
theme_override_styles/focus = SubResource("StyleBoxEmpty_1i6wl")
theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_608mi")
theme_override_styles/hover = SubResource("StyleBoxFlat_o8wg7")
theme_override_styles/pressed = SubResource("StyleBoxFlat_7su0m")
theme_override_styles/normal = SubResource("StyleBoxFlat_q67y6")
text = "Resume"
[node name="Options" type="Button" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
focus_neighbor_top = NodePath("../Resume")
focus_neighbor_bottom = NodePath("../Main Menu")
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0.513726, 0.513726, 0, 1)
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("1_7l1o7")
theme_override_font_sizes/font_size = 24
theme_override_styles/focus = SubResource("StyleBoxEmpty_1i6wl")
theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_608mi")
theme_override_styles/hover = SubResource("StyleBoxFlat_o8wg7")
theme_override_styles/pressed = SubResource("StyleBoxFlat_7su0m")
theme_override_styles/normal = SubResource("StyleBoxFlat_q67y6")
text = "Options"
[node name="Main Menu" type="Button" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
focus_neighbor_top = NodePath("../Options")
focus_neighbor_bottom = NodePath("../Resume")
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0.513726, 0.513726, 0, 1)
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("1_7l1o7")
theme_override_font_sizes/font_size = 24
theme_override_styles/focus = SubResource("StyleBoxEmpty_1i6wl")
theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_608mi")
theme_override_styles/hover = SubResource("StyleBoxFlat_o8wg7")
theme_override_styles/pressed = SubResource("StyleBoxFlat_7su0m")
theme_override_styles/normal = SubResource("StyleBoxFlat_q67y6")
text = "Quit and Save"
[node name="Settings" parent="." instance=ExtResource("3_qpp3d")]
visible = false
layout_mode = 1
[connection signal="pressed" from="VBoxContainer/Resume" to="." method="_on_resume_pressed"]
[connection signal="pressed" from="VBoxContainer/Options" to="." method="_on_options_pressed"]
[connection signal="pressed" from="VBoxContainer/Main Menu" to="." method="_on_main_menu_pressed"]

18
scenes/platform.tscn Normal file
View file

@ -0,0 +1,18 @@
[gd_scene load_steps=3 format=3 uid="uid://cxkbwbyvm01u"]
[ext_resource type="Texture2D" uid="uid://b6hly46al66si" path="res://assets/sprites/platforms.png" id="1_1uwpc"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ap8pu"]
size = Vector2(48, 8)
[node name="Platform Stone Ice" type="AnimatableBody2D"]
collision_layer = 2
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource("1_1uwpc")
region_enabled = true
region_rect = Rect2(0, 48, 48, 9)
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_ap8pu")
one_way_collision = true

344
scenes/player.tscn Normal file
View file

@ -0,0 +1,344 @@
[gd_scene load_steps=45 format=3 uid="uid://2ix3b3dgvsb8"]
[ext_resource type="Texture2D" uid="uid://biyt8lt8upr57" path="res://assets/sprites/knight.png" id="1_eln0f"]
[ext_resource type="Script" path="res://scripts/player.gd" id="1_kr8bd"]
[ext_resource type="AudioStream" uid="uid://g2u2p5u4ngwg" path="res://assets/sounds/jump.wav" id="2_1534m"]
[ext_resource type="PackedScene" uid="uid://cpvniud8u5cye" path="res://scenes/healthbar.tscn" id="4_qiotf"]
[sub_resource type="AtlasTexture" id="AtlasTexture_vqg2e"]
atlas = ExtResource("1_eln0f")
region = Rect2(64, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_uvy3x"]
atlas = ExtResource("1_eln0f")
region = Rect2(0, 224, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_iivs4"]
atlas = ExtResource("1_eln0f")
region = Rect2(32, 224, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_80rif"]
atlas = ExtResource("1_eln0f")
region = Rect2(64, 224, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_6fjjv"]
atlas = ExtResource("1_eln0f")
region = Rect2(96, 224, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_l0wiy"]
atlas = ExtResource("1_eln0f")
region = Rect2(0, 192, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ax3sr"]
atlas = ExtResource("1_eln0f")
region = Rect2(32, 192, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ashfv"]
atlas = ExtResource("1_eln0f")
region = Rect2(64, 192, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_x8aus"]
atlas = ExtResource("1_eln0f")
region = Rect2(96, 192, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_xt6x1"]
atlas = ExtResource("1_eln0f")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_qigwk"]
atlas = ExtResource("1_eln0f")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_rl4qg"]
atlas = ExtResource("1_eln0f")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_w5wnh"]
atlas = ExtResource("1_eln0f")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_r3luj"]
atlas = ExtResource("1_eln0f")
region = Rect2(64, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ypqk0"]
atlas = ExtResource("1_eln0f")
region = Rect2(0, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jccvt"]
atlas = ExtResource("1_eln0f")
region = Rect2(32, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_6uq80"]
atlas = ExtResource("1_eln0f")
region = Rect2(64, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jjvof"]
atlas = ExtResource("1_eln0f")
region = Rect2(96, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_j2b3a"]
atlas = ExtResource("1_eln0f")
region = Rect2(128, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_me27c"]
atlas = ExtResource("1_eln0f")
region = Rect2(160, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_v24te"]
atlas = ExtResource("1_eln0f")
region = Rect2(192, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_l2fu4"]
atlas = ExtResource("1_eln0f")
region = Rect2(224, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_utnbs"]
atlas = ExtResource("1_eln0f")
region = Rect2(0, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_elbi0"]
atlas = ExtResource("1_eln0f")
region = Rect2(32, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_058hd"]
atlas = ExtResource("1_eln0f")
region = Rect2(64, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_iwikn"]
atlas = ExtResource("1_eln0f")
region = Rect2(96, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_rjri0"]
atlas = ExtResource("1_eln0f")
region = Rect2(128, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_vpbpm"]
atlas = ExtResource("1_eln0f")
region = Rect2(160, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_y43fb"]
atlas = ExtResource("1_eln0f")
region = Rect2(192, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_lck22"]
atlas = ExtResource("1_eln0f")
region = Rect2(224, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ubi3o"]
atlas = ExtResource("1_eln0f")
region = Rect2(0, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_db76j"]
atlas = ExtResource("1_eln0f")
region = Rect2(32, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ach3q"]
atlas = ExtResource("1_eln0f")
region = Rect2(64, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_8ocsr"]
atlas = ExtResource("1_eln0f")
region = Rect2(96, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_l5pj6"]
atlas = ExtResource("1_eln0f")
region = Rect2(128, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ep4xs"]
atlas = ExtResource("1_eln0f")
region = Rect2(160, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_pqgbo"]
atlas = ExtResource("1_eln0f")
region = Rect2(192, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_w5eqv"]
atlas = ExtResource("1_eln0f")
region = Rect2(224, 96, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_ngeqx"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_vqg2e")
}],
"loop": true,
"name": &"crouch",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_uvy3x")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_iivs4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_80rif")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6fjjv")
}],
"loop": true,
"name": &"death",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_l0wiy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ax3sr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ashfv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_x8aus")
}],
"loop": true,
"name": &"hit",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_xt6x1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qigwk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rl4qg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w5wnh")
}],
"loop": true,
"name": &"idle",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_r3luj")
}],
"loop": true,
"name": &"jump",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_ypqk0")
}, {
"duration": 2.0,
"texture": SubResource("AtlasTexture_jccvt")
}, {
"duration": 2.0,
"texture": SubResource("AtlasTexture_6uq80")
}, {
"duration": 2.0,
"texture": SubResource("AtlasTexture_jjvof")
}, {
"duration": 2.0,
"texture": SubResource("AtlasTexture_j2b3a")
}, {
"duration": 2.0,
"texture": SubResource("AtlasTexture_me27c")
}, {
"duration": 2.0,
"texture": SubResource("AtlasTexture_v24te")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l2fu4")
}],
"loop": true,
"name": &"roll",
"speed": 30.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_utnbs")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_elbi0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_058hd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_iwikn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rjri0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vpbpm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_y43fb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lck22")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ubi3o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_db76j")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ach3q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8ocsr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l5pj6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ep4xs")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pqgbo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w5eqv")
}],
"loop": true,
"name": &"run",
"speed": 10.0
}]
[sub_resource type="CircleShape2D" id="CircleShape2D_esl4s"]
radius = 5.0
[node name="Player" type="CharacterBody2D"]
position = Vector2(2, 0)
collision_mask = 3
script = ExtResource("1_kr8bd")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(1, -12)
sprite_frames = SubResource("SpriteFrames_ngeqx")
animation = &"roll"
frame_progress = 0.509179
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(1, -5)
shape = SubResource("CircleShape2D_esl4s")
[node name="Jump" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("2_1534m")
bus = &"SFX"
[node name="RollTimer" type="Timer" parent="."]
wait_time = 0.5
one_shot = true
[node name="ui" type="CanvasLayer" parent="."]
[node name="Healthbar" parent="ui" instance=ExtResource("4_qiotf")]
offset_left = 30.0
offset_top = 23.0
offset_right = 368.0
offset_bottom = 54.0

206
scenes/settings.tscn Normal file
View file

@ -0,0 +1,206 @@
[gd_scene load_steps=10 format=3 uid="uid://ba41h5bxomx8c"]
[ext_resource type="Script" path="res://scripts/settings_menu.gd" id="1_h841y"]
[ext_resource type="FontFile" uid="uid://bsnrkucx738te" path="res://assets/fonts/PixelOperator8-Bold.ttf" id="2_aovm3"]
[ext_resource type="FontFile" uid="uid://ccibh2jw5qu60" path="res://assets/fonts/PixelOperator8.ttf" id="2_md6qq"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2nkwn"]
bg_color = Color(0.552941, 0.552941, 0.552941, 0.772549)
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_dsvtm"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8vupu"]
bg_color = Color(0.497474, 0.497474, 0.497474, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e3yc6"]
bg_color = Color(0.737193, 0.737193, 0.737193, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rtxvr"]
bg_color = Color(0.497474, 0.497474, 0.497474, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ea2pv"]
bg_color = Color(1, 1, 1, 1)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
shadow_color = Color(0, 0, 0, 0.368627)
shadow_size = 5
shadow_offset = Vector2(0, 3.41)
[node name="Settings" type="Control"]
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_h841y")
[node name="Panel" type="Panel" parent="."]
custom_minimum_size = Vector2(1, 2)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -324.5
offset_top = -197.0
offset_right = 324.5
offset_bottom = 197.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_2nkwn")
[node name="CenterContainer" type="CenterContainer" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -326.0
offset_top = -195.5
offset_right = 326.0
offset_bottom = 195.5
grow_horizontal = 2
grow_vertical = 2
[node name="VBoxContainer2" type="VBoxContainer" parent="CenterContainer"]
layout_mode = 2
theme_override_constants/separation = 15
[node name="Label3" type="Label" parent="CenterContainer/VBoxContainer2"]
layout_mode = 2
theme_override_fonts/font = ExtResource("2_md6qq")
theme_override_font_sizes/font_size = 24
text = "Video"
[node name="HBoxContainer2" type="HBoxContainer" parent="CenterContainer/VBoxContainer2"]
layout_mode = 2
[node name="Fullscreen" type="CheckBox" parent="CenterContainer/VBoxContainer2/HBoxContainer2"]
layout_mode = 2
size_flags_horizontal = 0
[node name="Label" type="Label" parent="CenterContainer/VBoxContainer2/HBoxContainer2"]
layout_mode = 2
theme_override_fonts/font = ExtResource("2_md6qq")
theme_override_font_sizes/font_size = 16
text = "Fullscreen"
[node name="Label2" type="Label" parent="CenterContainer/VBoxContainer2"]
layout_mode = 2
theme_override_fonts/font = ExtResource("2_md6qq")
theme_override_font_sizes/font_size = 24
text = "Audio"
[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 75
[node name="Volume Slider" type="VBoxContainer" parent="CenterContainer/VBoxContainer2/HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 10
[node name="Label4" type="Label" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider"]
layout_mode = 2
theme_override_fonts/font = ExtResource("2_md6qq")
theme_override_font_sizes/font_size = 16
text = "Master Volume"
[node name="MasterVolume" type="HSlider" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider"]
layout_mode = 2
[node name="Label5" type="Label" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider"]
layout_mode = 2
theme_override_fonts/font = ExtResource("2_md6qq")
theme_override_font_sizes/font_size = 16
text = "Music Volume"
[node name="MusicVolume" type="HSlider" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider"]
layout_mode = 2
[node name="Label6" type="Label" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider"]
layout_mode = 2
theme_override_fonts/font = ExtResource("2_md6qq")
theme_override_font_sizes/font_size = 16
text = "SFX Volume"
[node name="SFXVolume" type="HSlider" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider"]
layout_mode = 2
[node name="Volume Mute" type="VBoxContainer" parent="CenterContainer/VBoxContainer2/HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 5
[node name="Label7" type="Label" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute"]
layout_mode = 2
theme_override_fonts/font = ExtResource("2_md6qq")
theme_override_font_sizes/font_size = 16
text = "Mute"
[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute"]
layout_mode = 2
theme_override_constants/separation = 30
[node name="MasterVolumeMute" type="CheckBox" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute/VBoxContainer"]
layout_mode = 2
[node name="MusicVolumeMute" type="CheckBox" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute/VBoxContainer"]
layout_mode = 2
[node name="SFXVolumeMute" type="CheckBox" parent="CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute/VBoxContainer"]
layout_mode = 2
[node name="Back" type="Button" parent="CenterContainer/VBoxContainer2"]
layout_mode = 2
size_flags_vertical = 3
focus_neighbor_top = NodePath("../Options")
focus_neighbor_bottom = NodePath("../StartGame")
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0.513726, 0.513726, 0, 1)
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("2_aovm3")
theme_override_font_sizes/font_size = 24
theme_override_styles/focus = SubResource("StyleBoxEmpty_dsvtm")
theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_8vupu")
theme_override_styles/hover = SubResource("StyleBoxFlat_e3yc6")
theme_override_styles/pressed = SubResource("StyleBoxFlat_rtxvr")
theme_override_styles/normal = SubResource("StyleBoxFlat_ea2pv")
text = "Back"
[connection signal="toggled" from="CenterContainer/VBoxContainer2/HBoxContainer2/Fullscreen" to="." method="_on_fullscreen_toggled"]
[connection signal="drag_ended" from="CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider/MasterVolume" to="." method="_on_master_volume_drag_ended"]
[connection signal="drag_ended" from="CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider/MusicVolume" to="." method="_on_music_volume_drag_ended"]
[connection signal="drag_ended" from="CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider/SFXVolume" to="." method="_on_sfx_volume_drag_ended"]
[connection signal="toggled" from="CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute/VBoxContainer/MasterVolumeMute" to="." method="_on_master_volume_mute_toggled"]
[connection signal="toggled" from="CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute/VBoxContainer/MasterVolumeMute" to="." method="_on_mastervolume_mute_toggled"]
[connection signal="toggled" from="CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute/VBoxContainer/MusicVolumeMute" to="." method="_on_music_volume_mute_toggled"]
[connection signal="toggled" from="CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute/VBoxContainer/SFXVolumeMute" to="." method="_on_sfx_volume_mute_toggled"]
[connection signal="pressed" from="CenterContainer/VBoxContainer2/Back" to="." method="_on_back_pressed"]

13
scripts/game.gd Normal file
View file

@ -0,0 +1,13 @@
extends Node2D
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass

34
scripts/healthbar.gd Normal file
View file

@ -0,0 +1,34 @@
extends ProgressBar
@onready var label: Label = $Label
@onready var damagebar: ProgressBar = $Damagebar
@onready var timer: Timer = $Timer
var health = 0 : set = _set_health
func _set_health(new_health):
var prev_health = health
health = min(max_value, new_health)
value = health
label.text = str(health)
if health <= 0:
queue_free()
if health < prev_health:
timer.start()
elif !timer.is_stopped():
pass
else: damagebar.value = health
func init_health(_health):
health = _health
max_value = health
value = health
damagebar.max_value = health
damagebar.value = health
func _on_timer_timeout() -> void:
damagebar.value = health

25
scripts/main_menu.gd Normal file
View file

@ -0,0 +1,25 @@
extends Control
@onready var settings: Control = $Settings
@onready var v_box_container: VBoxContainer = $VBoxContainer
@onready var label: Label = $Label
func _ready() -> void:
$VBoxContainer/StartGame.grab_focus()
func _on_start_game_pressed() -> void:
get_tree().change_scene_to_file("res://scenes/game.tscn")
func _on_options_pressed() -> void:
settings.visible = true
v_box_container.visible = false
label.visible = false
func _on_exit_pressed() -> void:
get_tree().quit()
func _process(delta: float) -> void:
if !settings.visible:
v_box_container.visible = true
label.visible = true

33
scripts/pause_menu.gd Normal file
View file

@ -0,0 +1,33 @@
extends Control
@onready var settings: Control = $Settings
@onready var v_box_container: VBoxContainer = $VBoxContainer
func _ready() -> void:
visible = false
func resume():
visible = false
func pause():
$VBoxContainer/Resume.grab_focus()
visible = true
func testEsc():
if Input.is_action_just_pressed("back") and !visible:
pause()
elif Input.is_action_just_pressed("back") and visible:
resume()
func _on_resume_pressed() -> void:
resume()
func _on_options_pressed() -> void:
settings.visible = true
v_box_container.visible = false
func _on_main_menu_pressed() -> void:
get_tree().change_scene_to_file("res://scenes/main_menu.tscn")
get_parent().queue_free()
func _process(delta: float) -> void:
testEsc()
if !settings.visible and !v_box_container.visible:
v_box_container.visible = true

101
scripts/player.gd Normal file
View file

@ -0,0 +1,101 @@
extends CharacterBody2D
@onready var healthbar: ProgressBar = $ui/Healthbar
var health
var speed
var jump_velocity
var jumpcount
const ROLLSPEED = 2
var is_rolling = false
@onready var jump: AudioStreamPlayer2D = $Jump
@onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D
func _ready() -> void:
health = 100
speed = 130.0
jump_velocity = -300
jumpcount = 0
healthbar.init_health(health)
func _physics_process(delta: float) -> void:
# Add the gravity.
if not is_on_floor():
if Input.is_action_pressed("move_down"):
velocity += get_gravity() * delta * 1.7
elif velocity.y > 0:
velocity += get_gravity() * delta * 1.3
else:
velocity += get_gravity() * delta
# Handle jump.
if Input.is_action_just_released("jump") and velocity.y<0:
velocity.y = jump_velocity/4
# Doublejump
if jumpcount == 1 and Input.is_action_just_pressed("jump"):
velocity.y = jump_velocity
jump.play()
jumpcount = 2
# Jump
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
jump.play()
jumpcount = 1
health -= 20
# Doublejump reset
if !Input.is_action_just_pressed("jump") and is_on_floor():
jumpcount = 0
# Fall through
if Input.is_action_pressed("move_down"):
set_collision_mask_value(2, false)
else:
set_collision_mask_value(2, true)
# Get the input direction: -1, 0, 1
var direction := Input.get_axis("move_left", "move_right")
# Flip the Sprite
if direction > 0 :
animated_sprite.flip_h = false
elif direction < 0:
animated_sprite.flip_h = true
# Play animations
if is_on_floor():
if Input.is_action_pressed("move_down") and direction == 0:
animated_sprite.play("crouch")
elif direction == 0:
animated_sprite.play("idle")
elif is_rolling:
animated_sprite.play("roll")
else:
animated_sprite.play("run")
else:
animated_sprite.play("jump")
# Apply Movement
# Roll
if Input.is_action_just_pressed("roll"):
if !is_rolling and direction and is_on_floor():
start_dash()
if direction:
if is_rolling:
velocity.x = direction * speed * ROLLSPEED
# Running
else:
velocity.x = direction * speed
else:
velocity.x = move_toward(velocity.x, 0, speed)
move_and_slide()
func start_dash():
is_rolling = true
$RollTimer.connect("timeout", stop_dash)
$RollTimer.start()
func stop_dash():
is_rolling = false
#Health
func _process(delta: float) -> void:
healthbar._set_health(health)

63
scripts/settings_menu.gd Normal file
View file

@ -0,0 +1,63 @@
extends Control
@onready var back: Button = $CenterContainer/VBoxContainer2/Back
# Video Settings
@onready var fullscreen: CheckBox = $CenterContainer/VBoxContainer2/HBoxContainer2/Fullscreen
# Audio Settings
@onready var master_volume: HSlider = $"CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider/MasterVolume"
@onready var music_volume: HSlider = $"CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider/MusicVolume"
@onready var sfx_volume: HSlider = $"CenterContainer/VBoxContainer2/HBoxContainer/Volume Slider/SFXVolume"
@onready var master_volume_mute: CheckBox = $"CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute/VBoxContainer/MasterVolumeMute"
@onready var music_volume_mute: CheckBox = $"CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute/VBoxContainer/MusicVolumeMute"
@onready var sfx_volume_mute: CheckBox =$"CenterContainer/VBoxContainer2/HBoxContainer/Volume Mute/VBoxContainer/SFXVolumeMute"
# saving
func _ready():
var video_settings = ConfigFileHandler.load_video_settings()
fullscreen.button_pressed = video_settings.fullscreen
var audio_settings = ConfigFileHandler.load_audio_settings()
master_volume.value = min(audio_settings.master_volume, 1.0) * 100
music_volume.value = min(audio_settings.music_volume, 1.0) * 100
sfx_volume.value = min(audio_settings.sfx_volume, 1.0) * 100
master_volume_mute.button_pressed = audio_settings.master_volume_mute
music_volume_mute.button_pressed = audio_settings.music_volume_mute
sfx_volume_mute.button_pressed = audio_settings.sfx_volume_mute
visible = false
func _on_fullscreen_toggled(toggled_on: bool) -> void:
ConfigFileHandler.save_video_setting("fullscreen", toggled_on)
GlobalSettings.change_fullscreen(fullscreen.button_pressed)
func _on_master_volume_drag_ended(value_changed: bool) -> void:
if value_changed:
ConfigFileHandler.save_audio_setting("master_volume", master_volume.value/100)
GlobalSettings.change_master_volume()
func _on_music_volume_drag_ended(value_changed: bool) -> void:
if value_changed:
ConfigFileHandler.save_audio_setting("music_volume", music_volume.value/100)
GlobalSettings.change_music_volume()
func _on_sfx_volume_drag_ended(value_changed: bool) -> void:
if value_changed:
ConfigFileHandler.save_audio_setting("sfx_volume", sfx_volume.value/100)
GlobalSettings.change_sfx_volume()
func _on_master_volume_mute_toggled(toggled_on: bool) -> void:
ConfigFileHandler.save_audio_setting("master_volume_mute", toggled_on)
GlobalSettings.mute_master(master_volume_mute.button_pressed)
func _on_music_volume_mute_toggled(toggled_on: bool) -> void:
ConfigFileHandler.save_audio_setting("music_volume_mute", toggled_on)
GlobalSettings.mute_music(music_volume_mute.button_pressed)
func _on_sfx_volume_mute_toggled(toggled_on: bool) -> void:
ConfigFileHandler.save_audio_setting("sfx_volume_mute", toggled_on)
GlobalSettings.mute_sfx(sfx_volume_mute.button_pressed)
# Settings
func _process(delta: float) -> void:
check_Esc()
func check_Esc():
if Input.is_action_just_pressed("back"):
visible = false
func _on_back_pressed() -> void:
visible = false