Compare commits

...

17 commits

46 changed files with 630 additions and 140 deletions

132
README.md Normal file
View file

@ -0,0 +1,132 @@
# Teststrecke das rasante One-Button-Multiplayer-Rennen!
#### German
Steuere dein elektrisches Bobbycar mit nur einem Knopf und finde das
perfekte Timing für die Beschleunigung gelenkt wird automatisch.
Ob auf staubigen Wüstenpisten oder saftigen Wiesen: Wer sauber fährt und
zuerst im Ziel ist, gewinnt das Rennen.
Perfekt für spontane Couch-Sessions allein oder mit anderen: leicht zu
lernen, schwer zu meistern.
#### English
Control your electric Bobbycar with a single button and perfect your
timing for acceleration steering is automatic.
Whether on dusty desert trails or lush meadows: who drives cleanly and
crosses the finish line first wins the race.
Perfect for spontaneous couch sessions solo or with friends: easy to
learn, hard to master.
## How to play
A multiplayer couch game that uses one button per player.
Press and hold to accelerate, release so slow down.
Steering is controlled automatically, based on distance to a wall.
Driving slower results in a smaller turn radius.
## Config
The config.ini file is created with default values on first launch of the game.
## Key Whitelist
To allow only certain keys / inputs to be allowed, a whitelist can be created.
This is useful for gamepads or controllers with multiple buttons to avoid accidentially spawning multiple cars per player.
To create a whitelist make sure to set enabled to false unter \[keywhitelist\] in config.ini
Start the game. In the menu press and hold all inputs that should be whitelisted, so that they all appear in this list.
Then press "Save Key Whitelist" in the lower right corner.
A list of keys assigned to player IDs will be created under \[keywhitelist\].
Close the Game. Open config.ini and change enabled to true under \[keywhitelist\].
## Key Colors
When assigning colors to controllers with colored tape or using [colored controllers](https://figch.de/index.php?nav=onebuttoncontroller) the input keys used in the key whitelist can be assigned to fixed colors.
First create the key whitelist as described above.
Close the Game and open config.ini.
Create a new section "keycolors" with each line assigning a color to a player id.
Godot color constants: [docs.godotengine.org/en/stable/classes/class_color.html#constants](https://docs.godotengine.org/en/stable/classes/class_color.html#constants)
Example:
'''
[keycolors]
0="RED"
1="GREEN"
2="BLUE"
3="HOT_PINK"
4="YELLOW"
5="PURPLE"
6="ORANGE"
7="WHITE"
'''
## Video
**fullscreen**
Represents last state of in menu button "Fullscreen"
**playerlist_sprite**
Show sprites in menu playerlist. true or false.
**playerlist_key**
Show input key in menu playerlist. true or false.
**animate_sprite_on_press**
Animate sprite on key press in menu playerlist.
Only effective when playerlist_sprite is set to true.
true or false.
**animate_outline_on_press**
Animate input key on key press in menu playerlist.
Only effective when playerlist_key is set to true.
true or false.
## General
**rounds**
Last selected rounds.
### Remove cars timeout
**remove_cars_timeout**
Time in seconds after which players will be removed from a running game.
0 to disable.
Helpful to remove accidentially spawned players after a game has started or players leaving mid game.
### Automatic map change
**automatic_map_change_after**
How many rounds played after the selected map changes randomly.
Useful for gameplay without UI interaction.
0 to disable
### Fast Mode
fast_mode_chance
Float in range [0.0 .. 1.0]
How often the fast mode should be triggered for a game.
0.0 means never, 1.0 means everytime.

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

34
icon.png.import Normal file
View file

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

View file

@ -12,7 +12,7 @@ config_version=5
config/name="One-Button Racing" config/name="One-Button Racing"
run/main_scene="res://scenes/menu.tscn" run/main_scene="res://scenes/menu.tscn"
config/features=PackedStringArray("4.3", "Forward Plus") config/features=PackedStringArray("4.4", "Forward Plus")
config/icon="res://icon.svg" config/icon="res://icon.svg"
[autoload] [autoload]

View file

@ -1,12 +1,12 @@
[gd_scene load_steps=51 format=3 uid="uid://0g7qqh7naniv"] [gd_scene load_steps=51 format=3 uid="uid://0g7qqh7naniv"]
[ext_resource type="Script" path="res://scripts/car_node.gd" id="1_0tin3"] [ext_resource type="Script" uid="uid://bft67fimys37h" path="res://scripts/car_node.gd" id="1_0tin3"]
[ext_resource type="Script" path="res://scripts/car.gd" id="1_i5tet"] [ext_resource type="Script" uid="uid://byf0k6sjqwucg" path="res://scripts/car.gd" id="1_i5tet"]
[ext_resource type="Texture2D" uid="uid://c5rlo1fhm3bl4" path="res://sprites/bobbycar_features.png" id="3_k2wmt"] [ext_resource type="Texture2D" uid="uid://c5rlo1fhm3bl4" path="res://sprites/bobbycar_features.png" id="3_k2wmt"]
[ext_resource type="Texture2D" uid="uid://dojj5iqges76q" path="res://sprites/bobbycar_body.png" id="4_2gwtk"] [ext_resource type="Texture2D" uid="uid://dojj5iqges76q" path="res://sprites/bobbycar_body.png" id="4_2gwtk"]
[ext_resource type="Script" path="res://scripts/tiretrails.gd" id="5_4geqi"] [ext_resource type="Script" uid="uid://cg0gkwdditjjp" path="res://scripts/tiretrails.gd" id="5_4geqi"]
[ext_resource type="Texture2D" uid="uid://dkg8e3stos5rw" path="res://sprites/bobbycar_steeringwheel.png" id="5_swfp0"] [ext_resource type="Texture2D" uid="uid://dkg8e3stos5rw" path="res://sprites/bobbycar_steeringwheel.png" id="5_swfp0"]
[ext_resource type="Script" path="res://scripts/label_round.gd" id="5_vheit"] [ext_resource type="Script" uid="uid://drd8en47kth23" path="res://scripts/label_round.gd" id="5_vheit"]
[ext_resource type="PackedScene" uid="uid://dilif5od0ipli" path="res://scenes/burnout.tscn" id="6_nxxrr"] [ext_resource type="PackedScene" uid="uid://dilif5od0ipli" path="res://scenes/burnout.tscn" id="6_nxxrr"]
[ext_resource type="PackedScene" uid="uid://dl7r8s5sxyvlw" path="res://scenes/enginesound.tscn" id="6_v21se"] [ext_resource type="PackedScene" uid="uid://dl7r8s5sxyvlw" path="res://scenes/enginesound.tscn" id="6_v21se"]
[ext_resource type="AudioStream" uid="uid://dq5rei2w1isu4" path="res://sounds/crash/Car_Crash_01.mp3" id="7_7erwn"] [ext_resource type="AudioStream" uid="uid://dq5rei2w1isu4" path="res://sounds/crash/Car_Crash_01.mp3" id="7_7erwn"]
@ -21,7 +21,7 @@
[ext_resource type="AudioStream" uid="uid://bw64pl0a24hh1" path="res://sounds/crash/Car_Crash_08.mp3" id="16_7cb5n"] [ext_resource type="AudioStream" uid="uid://bw64pl0a24hh1" path="res://sounds/crash/Car_Crash_08.mp3" id="16_7cb5n"]
[ext_resource type="AudioStream" uid="uid://1txhc7kv6hmt" path="res://sounds/crash/Car_Crash_09.mp3" id="17_44mic"] [ext_resource type="AudioStream" uid="uid://1txhc7kv6hmt" path="res://sounds/crash/Car_Crash_09.mp3" id="17_44mic"]
[ext_resource type="AudioStream" uid="uid://dw2mxaef28o8q" path="res://sounds/crash/Car_Crash_10.mp3" id="18_poxqa"] [ext_resource type="AudioStream" uid="uid://dw2mxaef28o8q" path="res://sounds/crash/Car_Crash_10.mp3" id="18_poxqa"]
[ext_resource type="Script" path="res://scripts/sfx.gd" id="19_85lmo"] [ext_resource type="Script" uid="uid://d3o3tt4x2vjln" path="res://scripts/sfx.gd" id="19_85lmo"]
[ext_resource type="AudioStream" uid="uid://w27a31rx438n" path="res://sounds/crashcartocar/carToCarCrash_1.mp3" id="20_i46w7"] [ext_resource type="AudioStream" uid="uid://w27a31rx438n" path="res://sounds/crashcartocar/carToCarCrash_1.mp3" id="20_i46w7"]
[ext_resource type="AudioStream" uid="uid://jxtl6bre86fe" path="res://sounds/crashcartocar/carToCarCrash_2.mp3" id="21_ijxir"] [ext_resource type="AudioStream" uid="uid://jxtl6bre86fe" path="res://sounds/crashcartocar/carToCarCrash_2.mp3" id="21_ijxir"]
[ext_resource type="AudioStream" uid="uid://f8h6ilj36le0" path="res://sounds/crashcartocar/carToCarCrash_11.mp3" id="22_2dot5"] [ext_resource type="AudioStream" uid="uid://f8h6ilj36le0" path="res://sounds/crashcartocar/carToCarCrash_11.mp3" id="22_2dot5"]
@ -84,8 +84,8 @@ tracks/0/keys = {
[sub_resource type="AnimationLibrary" id="AnimationLibrary_55lyd"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_55lyd"]
_data = { _data = {
"RESET": SubResource("Animation_3soig"), &"RESET": SubResource("Animation_3soig"),
"show_rounds": SubResource("Animation_wl2vo") &"show_rounds": SubResource("Animation_wl2vo")
} }
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_0d1y1"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_0d1y1"]
@ -216,7 +216,7 @@ script = ExtResource("5_vheit")
[node name="AnimationPlayer" type="AnimationPlayer" parent="CharacterBody_Car"] [node name="AnimationPlayer" type="AnimationPlayer" parent="CharacterBody_Car"]
libraries = { libraries = {
"": SubResource("AnimationLibrary_55lyd") &"": SubResource("AnimationLibrary_55lyd")
} }
[node name="Enginesound" parent="CharacterBody_Car" instance=ExtResource("6_v21se")] [node name="Enginesound" parent="CharacterBody_Car" instance=ExtResource("6_v21se")]

View file

@ -1,6 +1,6 @@
[gd_scene load_steps=3 format=3 uid="uid://dl7r8s5sxyvlw"] [gd_scene load_steps=3 format=3 uid="uid://dl7r8s5sxyvlw"]
[ext_resource type="Script" path="res://scripts/enginesound.gd" id="1_1xhsl"] [ext_resource type="Script" uid="uid://dqag2j5d0uqu6" path="res://scripts/enginesound.gd" id="1_1xhsl"]
[sub_resource type="AudioStreamGenerator" id="AudioStreamGenerator_kj4va"] [sub_resource type="AudioStreamGenerator" id="AudioStreamGenerator_kj4va"]
buffer_length = 0.05 buffer_length = 0.05

View file

@ -1,7 +1,7 @@
[gd_scene load_steps=18 format=3 uid="uid://cotth8e5rtioe"] [gd_scene load_steps=18 format=3 uid="uid://cotth8e5rtioe"]
[ext_resource type="Script" path="res://scripts/game.gd" id="1_7syh4"] [ext_resource type="Script" uid="uid://d1q0abyr2mlcd" path="res://scripts/game.gd" id="1_7syh4"]
[ext_resource type="Script" path="res://scripts/times.gd" id="2_80mhm"] [ext_resource type="Script" uid="uid://c8hsnjn5eut6e" path="res://scripts/times.gd" id="2_80mhm"]
[ext_resource type="AudioStream" uid="uid://cdricwi06nttp" path="res://sounds/beep/countdown_beep_high.mp3" id="3_fdp2i"] [ext_resource type="AudioStream" uid="uid://cdricwi06nttp" path="res://sounds/beep/countdown_beep_high.mp3" id="3_fdp2i"]
[ext_resource type="AudioStream" uid="uid://v3eqa857k2xo" path="res://sounds/beep/countdown_beep.mp3" id="3_fv4j3"] [ext_resource type="AudioStream" uid="uid://v3eqa857k2xo" path="res://sounds/beep/countdown_beep.mp3" id="3_fv4j3"]
@ -65,9 +65,9 @@ resource_name = "normal"
[sub_resource type="AnimationLibrary" id="AnimationLibrary_dbd4v"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_dbd4v"]
_data = { _data = {
"RESET": SubResource("Animation_fgk0n"), &"RESET": SubResource("Animation_fgk0n"),
"fast": SubResource("Animation_2q66f"), &"fast": SubResource("Animation_2q66f"),
"normal": SubResource("Animation_52fxl") &"normal": SubResource("Animation_52fxl")
} }
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e0d0g"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e0d0g"]
@ -200,7 +200,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0, 0.7, 2), "times": PackedFloat32Array(0, 0.7, 2),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 0, "update": 0,
"values": [Vector2(92.1386, 36.868), Vector2(92.1386, 36.868), Vector2(410, 72)] "values": [Vector2(0, 35), Vector2(120, 36.868), Vector2(330, 72)]
} }
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
@ -264,8 +264,7 @@ tracks/1/keys = {
"times": PackedFloat32Array(0, 1, 2, 3), "times": PackedFloat32Array(0, 1, 2, 3),
"transitions": PackedFloat32Array(1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 1, "update": 1,
"values": ["3", "2 "values": ["3", "2", "1", "Go!"]
", "1", "Go!"]
} }
tracks/2/type = "method" tracks/2/type = "method"
tracks/2/imported = false tracks/2/imported = false
@ -351,10 +350,10 @@ tracks/1/keys = {
[sub_resource type="AnimationLibrary" id="AnimationLibrary_wuihg"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_wuihg"]
_data = { _data = {
"RESET": SubResource("Animation_ph30r"), &"RESET": SubResource("Animation_ph30r"),
"game_end": SubResource("Animation_gjxtp"), &"game_end": SubResource("Animation_gjxtp"),
"game_start": SubResource("Animation_5vgpy"), &"game_start": SubResource("Animation_5vgpy"),
"show_splittime": SubResource("Animation_60fqb") &"show_splittime": SubResource("Animation_60fqb")
} }
[node name="Game" type="Node2D"] [node name="Game" type="Node2D"]
@ -365,7 +364,7 @@ script = ExtResource("1_7syh4")
[node name="carpreset_animations" type="AnimationPlayer" parent="hud"] [node name="carpreset_animations" type="AnimationPlayer" parent="hud"]
root_node = NodePath("../..") root_node = NodePath("../..")
libraries = { libraries = {
"": SubResource("AnimationLibrary_dbd4v") &"": SubResource("AnimationLibrary_dbd4v")
} }
[node name="label_fast" type="Label" parent="hud/carpreset_animations"] [node name="label_fast" type="Label" parent="hud/carpreset_animations"]
@ -422,23 +421,6 @@ text = "3"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="highscore_label" type="Label" parent="hud"]
visible = false
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -57.5
offset_top = 2.70999
offset_right = 57.5
offset_bottom = 71.71
grow_horizontal = 2
grow_vertical = 2
theme_override_font_sizes/font_size = 50
horizontal_alignment = 1
vertical_alignment = 1
[node name="splittime_label" type="Label" parent="hud"] [node name="splittime_label" type="Label" parent="hud"]
modulate = Color(1, 1, 1, 0) modulate = Color(1, 1, 1, 0)
anchors_preset = 8 anchors_preset = 8
@ -466,6 +448,22 @@ offset_right = 1190.0
offset_bottom = 682.0 offset_bottom = 682.0
color = Color(0.482353, 0.482353, 0.482353, 0.52549) color = Color(0.482353, 0.482353, 0.482353, 0.52549)
[node name="highscore_label" type="Label" parent="hud"]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -57.5
offset_top = 2.70999
offset_right = 57.5
offset_bottom = 71.71
grow_horizontal = 2
grow_vertical = 2
theme_override_font_sizes/font_size = 50
horizontal_alignment = 1
vertical_alignment = 1
[node name="times_container" type="HFlowContainer" parent="hud"] [node name="times_container" type="HFlowContainer" parent="hud"]
anchors_preset = 8 anchors_preset = 8
anchor_left = 0.5 anchor_left = 0.5
@ -474,18 +472,28 @@ anchor_right = 0.5
anchor_bottom = 0.5 anchor_bottom = 0.5
offset_left = -483.861 offset_left = -483.861
offset_top = -287.132 offset_top = -287.132
offset_right = -354.861 offset_right = -148.861
offset_bottom = -173.132 offset_bottom = -173.132
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
theme = SubResource("Theme_lsv84") theme = SubResource("Theme_lsv84")
alignment = 1
script = ExtResource("2_80mhm") script = ExtResource("2_80mhm")
[node name="game_hud_animations" type="AnimationPlayer" parent="hud"] [node name="game_hud_animations" type="AnimationPlayer" parent="hud"]
libraries = { libraries = {
"": SubResource("AnimationLibrary_wuihg") &"": SubResource("AnimationLibrary_wuihg")
} }
[node name="fps_label" type="Label" parent="hud"]
visible = false
offset_left = 1028.0
offset_top = 12.0
offset_right = 1117.0
offset_bottom = 56.0
theme_override_font_sizes/font_size = 28
text = "60 FPS"
[node name="Camera2D" type="Camera2D" parent="."] [node name="Camera2D" type="Camera2D" parent="."]
[node name="cars" type="Node" parent="."] [node name="cars" type="Node" parent="."]

View file

@ -1,11 +1,11 @@
[gd_scene load_steps=36 format=3 uid="uid://bu1m43nyf4ys8"] [gd_scene load_steps=36 format=3 uid="uid://bu1m43nyf4ys8"]
[ext_resource type="Texture2D" uid="uid://csknopg1cbqbq" path="res://sprites/background/green_gradient.png" id="1_01a82"] [ext_resource type="Texture2D" uid="uid://csknopg1cbqbq" path="res://sprites/background/green_gradient.png" id="1_01a82"]
[ext_resource type="Script" path="res://scripts/map_settings.gd" id="1_7xl02"] [ext_resource type="Script" uid="uid://ct2a8b6fj4phj" path="res://scripts/map_settings.gd" id="1_7xl02"]
[ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_fr1tj"] [ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_fr1tj"]
[ext_resource type="Script" path="res://scripts/roadborder.gd" id="3_pbq8s"] [ext_resource type="Script" uid="uid://bm4x3mtvdtb0w" path="res://scripts/roadborder.gd" id="3_pbq8s"]
[ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_s7foq"] [ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_s7foq"]
[ext_resource type="Script" path="res://scripts/generate_road_polyon.gd" id="5_g15mv"] [ext_resource type="Script" uid="uid://hjnf4en27k1o" path="res://scripts/generate_road_polyon.gd" id="5_g15mv"]
[ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_2dfn4"] [ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_2dfn4"]
[ext_resource type="Texture2D" uid="uid://bdpm76vsgrpc0" path="res://sprites/smooth_fields/fields_animal_002.png" id="6_61lnv"] [ext_resource type="Texture2D" uid="uid://bdpm76vsgrpc0" path="res://sprites/smooth_fields/fields_animal_002.png" id="6_61lnv"]
[ext_resource type="Texture2D" uid="uid://bn31voko78y3i" path="res://sprites/smooth_fields/fields_bush_001.png" id="6_u22tk"] [ext_resource type="Texture2D" uid="uid://bn31voko78y3i" path="res://sprites/smooth_fields/fields_bush_001.png" id="6_u22tk"]

View file

@ -1,12 +1,12 @@
[gd_scene load_steps=35 format=3 uid="uid://cxj0xsy7clbrt"] [gd_scene load_steps=35 format=3 uid="uid://cxj0xsy7clbrt"]
[ext_resource type="Texture2D" uid="uid://dh437eqwliuu1" path="res://sprites/background/desert_gradient.png" id="1_hn21d"] [ext_resource type="Texture2D" uid="uid://dh437eqwliuu1" path="res://sprites/background/desert_gradient.png" id="1_hn21d"]
[ext_resource type="Script" path="res://scripts/map_settings.gd" id="1_rmyo5"] [ext_resource type="Script" uid="uid://ct2a8b6fj4phj" path="res://scripts/map_settings.gd" id="1_rmyo5"]
[ext_resource type="Texture2D" uid="uid://ba7g1ewwchn6c" path="res://sprites/smooth_fields/fields_animal_001.png" id="2_08by0"] [ext_resource type="Texture2D" uid="uid://ba7g1ewwchn6c" path="res://sprites/smooth_fields/fields_animal_001.png" id="2_08by0"]
[ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_r66hk"] [ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_r66hk"]
[ext_resource type="Script" path="res://scripts/roadborder.gd" id="3_s3rd6"] [ext_resource type="Script" uid="uid://bm4x3mtvdtb0w" path="res://scripts/roadborder.gd" id="3_s3rd6"]
[ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_8dt2b"] [ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_8dt2b"]
[ext_resource type="Script" path="res://scripts/generate_road_polyon.gd" id="5_pu6fv"] [ext_resource type="Script" uid="uid://hjnf4en27k1o" path="res://scripts/generate_road_polyon.gd" id="5_pu6fv"]
[ext_resource type="Texture2D" uid="uid://2iy70pq6wvrt" path="res://sprites/desert/desert_cactus_001.png" id="6_m3am2"] [ext_resource type="Texture2D" uid="uid://2iy70pq6wvrt" path="res://sprites/desert/desert_cactus_001.png" id="6_m3am2"]
[ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_yxqi8"] [ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_yxqi8"]
[ext_resource type="Texture2D" uid="uid://cowu84p6mdr71" path="res://sprites/desert/desert_cactus_002.png" id="7_6y4v3"] [ext_resource type="Texture2D" uid="uid://cowu84p6mdr71" path="res://sprites/desert/desert_cactus_002.png" id="7_6y4v3"]

View file

@ -1,14 +1,14 @@
[gd_scene load_steps=28 format=3 uid="uid://bwtvxy6hryc4u"] [gd_scene load_steps=28 format=3 uid="uid://bwtvxy6hryc4u"]
[ext_resource type="Script" path="res://scripts/map_settings.gd" id="1_v25kt"] [ext_resource type="Script" uid="uid://ct2a8b6fj4phj" path="res://scripts/map_settings.gd" id="1_v25kt"]
[ext_resource type="Texture2D" uid="uid://csknopg1cbqbq" path="res://sprites/background/green_gradient.png" id="1_y1cwa"] [ext_resource type="Texture2D" uid="uid://csknopg1cbqbq" path="res://sprites/background/green_gradient.png" id="1_y1cwa"]
[ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_8k47d"] [ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_8k47d"]
[ext_resource type="Texture2D" uid="uid://c0ss6dp7hba8j" path="res://sprites/smooth_fields/fields_flower_011.png" id="2_jpevj"] [ext_resource type="Texture2D" uid="uid://c0ss6dp7hba8j" path="res://sprites/smooth_fields/fields_flower_011.png" id="2_jpevj"]
[ext_resource type="Script" path="res://scripts/roadborder.gd" id="3_ibujf"] [ext_resource type="Script" uid="uid://bm4x3mtvdtb0w" path="res://scripts/roadborder.gd" id="3_ibujf"]
[ext_resource type="Texture2D" uid="uid://dmno1fargtbjv" path="res://sprites/smooth_fields/fields_flower_014.png" id="3_vn8si"] [ext_resource type="Texture2D" uid="uid://dmno1fargtbjv" path="res://sprites/smooth_fields/fields_flower_014.png" id="3_vn8si"]
[ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_gp7du"] [ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_gp7du"]
[ext_resource type="Texture2D" uid="uid://bcyf52kneoo3t" path="res://sprites/smooth_fields/fields_flower_016.png" id="4_px8ei"] [ext_resource type="Texture2D" uid="uid://bcyf52kneoo3t" path="res://sprites/smooth_fields/fields_flower_016.png" id="4_px8ei"]
[ext_resource type="Script" path="res://scripts/generate_road_polyon.gd" id="5_vurbe"] [ext_resource type="Script" uid="uid://hjnf4en27k1o" path="res://scripts/generate_road_polyon.gd" id="5_vurbe"]
[ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_6cnvq"] [ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_6cnvq"]
[ext_resource type="Texture2D" uid="uid://crb12ld3cl3lu" path="res://sprites/road/finishline.png" id="7_1s8ny"] [ext_resource type="Texture2D" uid="uid://crb12ld3cl3lu" path="res://sprites/road/finishline.png" id="7_1s8ny"]
[ext_resource type="Texture2D" uid="uid://bn31voko78y3i" path="res://sprites/smooth_fields/fields_bush_001.png" id="8_4etr5"] [ext_resource type="Texture2D" uid="uid://bn31voko78y3i" path="res://sprites/smooth_fields/fields_bush_001.png" id="8_4etr5"]
@ -28,7 +28,7 @@
size = Vector2(32, 128) size = Vector2(32, 128)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_uys5r"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_uys5r"]
size = Vector2(32, 64) size = Vector2(32, 115)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_82iti"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_82iti"]
size = Vector2(32, 128) size = Vector2(32, 128)
@ -50,7 +50,7 @@ texture = ExtResource("1_y1cwa")
[node name="Line2D2_right" type="Line2D" parent="."] [node name="Line2D2_right" type="Line2D" parent="."]
z_index = 1 z_index = 1
points = PackedVector2Array(-256, 64, 512, 64, 576, 128, 576, 192, 512, 256, 384, 256, 256, 128, 0, 128, -64, 192, -64, 384, 64, 512, 576, 512, 768, 320, 832, 288, 864, 288, 896, 320, 928, 416, 928, 512, 896, 576, 832, 608, 672, 608, 576, 544, 480, 544, 384, 608, 384, 672, 320, 672, 320, 544, 128, 544, 128, 608, 160, 672, 128, 704, 64, 672, 0, 608, -32, 512, -64, 448, -128, 352, -160, 288, -160, 192, -224, 128, -320, 128, -384, 192, -416, 256, -416, 480, -448, 512, -512, 480, -544, 448, -576, 384, -576, 192, -544, 128, -512, 96, -448, 64, -288, 64) points = PackedVector2Array(-256, 64, 487, 64, 545, 128, 547, 192, 489, 256, 384, 256, 256, 128, 0, 128, -64, 192, -64, 384, 64, 512, 576, 512, 768, 320, 832, 288, 864, 288, 896, 320, 928, 416, 928, 512, 896, 576, 832, 608, 672, 608, 576, 544, 480, 544, 384, 608, 362, 624, 330, 623, 290, 595, 212, 591, 138, 668, 120, 694, 58, 660, 0, 608, -32, 512, -64, 448, -109, 341, -129, 232, -165, 157, -224, 128, -320, 128, -384, 172, -416, 256, -418, 445, -462, 471, -510, 463, -550, 425, -576, 384, -576, 192, -544, 128, -512, 96, -448, 64, -288, 64)
closed = true closed = true
width = 6.0 width = 6.0
texture = ExtResource("2_8k47d") texture = ExtResource("2_8k47d")
@ -67,7 +67,7 @@ texture_mode = 1
[node name="Line2D2_left" type="Line2D" parent="."] [node name="Line2D2_left" type="Line2D" parent="."]
z_index = 1 z_index = 1
points = PackedVector2Array(-256, -64, 544, -64, 704, 96, 704, 224, 544, 384, 352, 384, 224, 256, 32, 256, 32, 352, 96, 416, 544, 416, 736, 224, 800, 192, 864, 192, 928, 224, 1024, 320, 1088, 416, 1120, 512, 1120, 576, 1088, 672, 1024, 736, 928, 768, 832, 768, 736, 736, 640, 672, 576, 640, 512, 640, 448, 672, 416, 736, 384, 768, 320, 768, 256, 704, 256, 608, 192, 608, 224, 672, 224, 704, 160, 768, 32, 768, -64, 640, -128, 544, -192, 384, -224, 320, -224, 224, -256, 192, -288, 224, -288, 448, -320, 512, -384, 576, -448, 608, -544, 608, -608, 576, -672, 512, -704, 448, -736, 320, -736, 192, -704, 64, -640, 0, -576, -32, -448, -64, -288, -64) points = PackedVector2Array(-256, -64, 544, -64, 679, -28, 734, 94, 704, 224, 544, 384, 352, 384, 224, 256, 96, 256, 61, 352, 124, 416, 544, 416, 736, 224, 831, 185, 921, 190, 1008, 238, 1063, 311, 1099, 403, 1120, 512, 1120, 576, 1088, 672, 1024, 736, 928, 768, 832, 768, 736, 736, 620, 694, 562, 658, 502, 657, 454, 695, 416, 736, 384, 768, 302, 760, 277, 725, 244, 704, 205, 732, 164, 802, -22, 793, -134, 663, -160, 531, -192, 384, -213, 319, -225, 263, -255, 237, -289, 267, -288, 448, -320, 512, -384, 576, -448, 608, -544, 608, -608, 576, -672, 512, -704, 448, -736, 320, -736, 192, -704, 64, -640, 0, -553, -51, -448, -64, -288, -64)
closed = true closed = true
width = 6.0 width = 6.0
texture = ExtResource("2_8k47d") texture = ExtResource("2_8k47d")
@ -102,7 +102,7 @@ collision_layer = 4
collision_mask = 4 collision_mask = 4
[node name="CollisionShape2D" type="CollisionShape2D" parent="area_cp1"] [node name="CollisionShape2D" type="CollisionShape2D" parent="area_cp1"]
position = Vector2(224, 576) position = Vector2(247, 652.5)
shape = SubResource("RectangleShape2D_uys5r") shape = SubResource("RectangleShape2D_uys5r")
debug_color = Color(0.371138, 0.615246, 1.54018e-06, 0.42) debug_color = Color(0.371138, 0.615246, 1.54018e-06, 0.42)
@ -138,7 +138,7 @@ position = Vector2(-448, 95)
texture = ExtResource("9_djfug") texture = ExtResource("9_djfug")
[node name="FieldsBush003" type="Sprite2D" parent="Scenery2D"] [node name="FieldsBush003" type="Sprite2D" parent="Scenery2D"]
position = Vector2(544, 159) position = Vector2(507, 165)
texture = ExtResource("10_xr588") texture = ExtResource("10_xr588")
[node name="FieldsBush004" type="Sprite2D" parent="Scenery2D"] [node name="FieldsBush004" type="Sprite2D" parent="Scenery2D"]
@ -146,7 +146,7 @@ position = Vector2(87, 591)
texture = ExtResource("11_kmule") texture = ExtResource("11_kmule")
[node name="FieldsBush005" type="Sprite2D" parent="Scenery2D"] [node name="FieldsBush005" type="Sprite2D" parent="Scenery2D"]
position = Vector2(352, 607) position = Vector2(369, 587)
texture = ExtResource("8_4etr5") texture = ExtResource("8_4etr5")
[node name="FieldsBush006" type="Sprite2D" parent="Scenery2D"] [node name="FieldsBush006" type="Sprite2D" parent="Scenery2D"]
@ -158,11 +158,11 @@ position = Vector2(-256, 383)
texture = ExtResource("9_djfug") texture = ExtResource("9_djfug")
[node name="FieldsBush008" type="Sprite2D" parent="Scenery2D"] [node name="FieldsBush008" type="Sprite2D" parent="Scenery2D"]
position = Vector2(-237, 264) position = Vector2(-238, 303)
texture = ExtResource("10_xr588") texture = ExtResource("10_xr588")
[node name="FieldsBush009" type="Sprite2D" parent="Scenery2D"] [node name="FieldsBush009" type="Sprite2D" parent="Scenery2D"]
position = Vector2(-438, 473) position = Vector2(-446, 435)
texture = ExtResource("11_kmule") texture = ExtResource("11_kmule")
[node name="FieldsBush010" type="Sprite2D" parent="Scenery2D"] [node name="FieldsBush010" type="Sprite2D" parent="Scenery2D"]
@ -170,12 +170,12 @@ position = Vector2(224, 319)
texture = ExtResource("10_xr588") texture = ExtResource("10_xr588")
[node name="FieldsAnimal001" type="Sprite2D" parent="Scenery2D"] [node name="FieldsAnimal001" type="Sprite2D" parent="Scenery2D"]
position = Vector2(234, 634) position = Vector2(239, 746)
scale = Vector2(0.246732, 0.246732) scale = Vector2(0.246732, 0.246732)
texture = ExtResource("13_7sh31") texture = ExtResource("13_7sh31")
[node name="FieldsAnimal002" type="Sprite2D" parent="Scenery2D"] [node name="FieldsAnimal002" type="Sprite2D" parent="Scenery2D"]
position = Vector2(127, 679) position = Vector2(112, 666)
scale = Vector2(0.2475, 0.2475) scale = Vector2(0.2475, 0.2475)
texture = ExtResource("14_dp5oa") texture = ExtResource("14_dp5oa")
@ -188,11 +188,11 @@ position = Vector2(-32, 95)
texture = ExtResource("2_jpevj") texture = ExtResource("2_jpevj")
[node name="FieldsFlower023" type="Sprite2D" parent="Scenery2D"] [node name="FieldsFlower023" type="Sprite2D" parent="Scenery2D"]
position = Vector2(-272, 281) position = Vector2(-268, 331)
texture = ExtResource("2_jpevj") texture = ExtResource("2_jpevj")
[node name="FieldsFlower013" type="Sprite2D" parent="Scenery2D"] [node name="FieldsFlower013" type="Sprite2D" parent="Scenery2D"]
position = Vector2(500, 78) position = Vector2(469, 84)
texture = ExtResource("2_jpevj") texture = ExtResource("2_jpevj")
[node name="FieldsFlower014" type="Sprite2D" parent="Scenery2D"] [node name="FieldsFlower014" type="Sprite2D" parent="Scenery2D"]
@ -295,7 +295,7 @@ position = Vector2(829, 557)
texture = ExtResource("19_p0gwi") texture = ExtResource("19_p0gwi")
[node name="FieldsBush022" type="Sprite2D" parent="Scenery2D"] [node name="FieldsBush022" type="Sprite2D" parent="Scenery2D"]
position = Vector2(545.75, 703.441) position = Vector2(553, 717)
scale = Vector2(1.36992, 1.36992) scale = Vector2(1.36992, 1.36992)
texture = ExtResource("18_3gxm6") texture = ExtResource("18_3gxm6")
@ -321,7 +321,7 @@ texture = ExtResource("17_jtvuw")
texture_mode = 1 texture_mode = 1
[node name="line2d_cp1" type="Line2D" parent="Node2D_Roadmarkings"] [node name="line2d_cp1" type="Line2D" parent="Node2D_Roadmarkings"]
points = PackedVector2Array(239, 549, 238, 603) points = PackedVector2Array(253, 595, 252, 705)
width = 16.0 width = 16.0
texture = ExtResource("17_jtvuw") texture = ExtResource("17_jtvuw")
texture_mode = 1 texture_mode = 1

View file

@ -1,12 +1,12 @@
[gd_scene load_steps=34 format=3 uid="uid://bp3hpwhldy2rn"] [gd_scene load_steps=34 format=3 uid="uid://bp3hpwhldy2rn"]
[ext_resource type="Texture2D" uid="uid://dh437eqwliuu1" path="res://sprites/background/desert_gradient.png" id="1_ck4s5"] [ext_resource type="Texture2D" uid="uid://dh437eqwliuu1" path="res://sprites/background/desert_gradient.png" id="1_ck4s5"]
[ext_resource type="Script" path="res://scripts/map_settings.gd" id="1_kc7uh"] [ext_resource type="Script" uid="uid://ct2a8b6fj4phj" path="res://scripts/map_settings.gd" id="1_kc7uh"]
[ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_0ms3p"] [ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_0ms3p"]
[ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_kby5d"] [ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_kby5d"]
[ext_resource type="Script" path="res://scripts/generate_road_polyon.gd" id="5_65xy1"] [ext_resource type="Script" uid="uid://hjnf4en27k1o" path="res://scripts/generate_road_polyon.gd" id="5_65xy1"]
[ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_3qep6"] [ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_3qep6"]
[ext_resource type="Script" path="res://scripts/roadborder.gd" id="6_50nf2"] [ext_resource type="Script" uid="uid://bm4x3mtvdtb0w" path="res://scripts/roadborder.gd" id="6_50nf2"]
[ext_resource type="Texture2D" uid="uid://crb12ld3cl3lu" path="res://sprites/road/finishline.png" id="7_i2bpy"] [ext_resource type="Texture2D" uid="uid://crb12ld3cl3lu" path="res://sprites/road/finishline.png" id="7_i2bpy"]
[ext_resource type="Texture2D" uid="uid://d3eind2bieqfj" path="res://sprites/desert/desert_spikyplant_001.png" id="10_8hhju"] [ext_resource type="Texture2D" uid="uid://d3eind2bieqfj" path="res://sprites/desert/desert_spikyplant_001.png" id="10_8hhju"]
[ext_resource type="Texture2D" uid="uid://cogcsvywxqfor" path="res://sprites/desert/desert_spikyplant_002.png" id="11_6ermr"] [ext_resource type="Texture2D" uid="uid://cogcsvywxqfor" path="res://sprites/desert/desert_spikyplant_002.png" id="11_6ermr"]
@ -56,7 +56,7 @@ texture = ExtResource("1_ck4s5")
[node name="Line2D2_right" type="Line2D" parent="."] [node name="Line2D2_right" type="Line2D" parent="."]
z_index = 1 z_index = 1
points = PackedVector2Array(-249, 64, 640, 64, 772, 60, 907, 12, 996, -80, 1039, -190, 1077, -318, 1072, -412, 1031, -470, 912, -510, 702, -484, 537, -397, 439, -309, 285, -270, 175, -298, 140, -370, 154, -451, 207, -480, 323, -487, 523, -497, 858, -524, 981, -518, 1056, -480, 1093, -419, 1101, -319, 1124, -186, 1143, -46, 1101, 85, 956, 187, 778, 305, 684, 301, 569, 256, 483, 164, 399, 148, 289, 170, 210, 232, 199, 295, 209, 379, 297, 462, 375, 537, 388, 582, 370, 612, 305, 604, 191, 547, 105, 458, 91, 374, 97, 281, 130, 241, 172, 201, 192, 131, 180, 89, 130, 82, -60, 85, -236, 135, -317, 199, -374, 196, -398, 151, -377, 96, -311, 62, -271, 62) points = PackedVector2Array(-249, 64, 640, 64, 772, 60, 907, 12, 996, -80, 1039, -190, 1077, -318, 1072, -412, 1031, -470, 912, -510, 702, -484, 537, -397, 439, -309, 285, -270, 175, -298, 140, -370, 154, -451, 207, -480, 323, -487, 523, -497, 858, -524, 981, -518, 1056, -480, 1093, -419, 1101, -319, 1124, -186, 1143, -46, 1101, 85, 956, 187, 778, 305, 684, 301, 569, 256, 484, 155, 371, 127, 260, 143, 189, 222, 164, 305, 206, 425, 288, 502, 352, 529, 388, 582, 370, 612, 305, 604, 191, 547, 105, 458, 91, 374, 108, 305, 146, 254, 172, 201, 172, 157, 139, 105, 67, 83, -60, 85, -236, 135, -317, 199, -374, 196, -398, 151, -377, 96, -311, 62, -271, 62)
closed = true closed = true
width = 6.0 width = 6.0
texture = ExtResource("2_0ms3p") texture = ExtResource("2_0ms3p")
@ -73,7 +73,7 @@ texture_mode = 1
[node name="Line2D2_left" type="Line2D" parent="."] [node name="Line2D2_left" type="Line2D" parent="."]
z_index = 1 z_index = 1
points = PackedVector2Array(-252, -64, 640, -64, 737, -78, 865, -126, 928, -201, 918, -303, 668, -300, 561, -249, 485, -157, 361, -131, 166, -138, 60, -207, -20, -394, 33, -581, 178, -631, 726, -634, 1102, -595, 1279, -446, 1359, -220, 1312, -1, 1220, 149, 1109, 274, 951, 423, 766, 429, 605, 405, 529, 333, 458, 233, 394, 213, 347, 231, 325, 303, 366, 415, 448, 481, 506, 593, 490, 670, 383, 728, 210, 692, 20, 581, -49, 401, -31, 282, 13, 233, 64, 203, 75, 165, 7, 161, -151, 207, -227, 233, -316, 309, -420, 321, -522, 294, -604, 184, -622, 54, -551, -56, -449, -88, -344, -81, -272, -67) points = PackedVector2Array(-252, -64, 640, -64, 737, -78, 865, -126, 928, -201, 918, -303, 668, -300, 561, -249, 485, -157, 361, -131, 166, -138, 60, -207, -20, -394, 33, -581, 178, -631, 726, -634, 1102, -595, 1279, -446, 1359, -220, 1312, -1, 1220, 149, 1109, 274, 951, 423, 766, 429, 605, 405, 529, 333, 458, 233, 394, 213, 347, 231, 325, 303, 366, 415, 487, 512, 506, 593, 490, 670, 383, 728, 210, 692, 20, 581, -49, 401, -31, 282, 13, 233, 47, 204, 57, 161, 7, 161, -151, 207, -227, 233, -316, 309, -420, 321, -522, 294, -604, 184, -622, 54, -551, -56, -473, -95, -383, -99, -322, -81)
closed = true closed = true
width = 6.0 width = 6.0
texture = ExtResource("2_0ms3p") texture = ExtResource("2_0ms3p")

View file

@ -1,12 +1,12 @@
[gd_scene load_steps=37 format=3 uid="uid://bilsj1h72s23a"] [gd_scene load_steps=37 format=3 uid="uid://bilsj1h72s23a"]
[ext_resource type="Script" path="res://scripts/map_settings.gd" id="1_cg3k6"] [ext_resource type="Script" uid="uid://ct2a8b6fj4phj" path="res://scripts/map_settings.gd" id="1_cg3k6"]
[ext_resource type="Texture2D" uid="uid://csknopg1cbqbq" path="res://sprites/background/green_gradient.png" id="2_mev6t"] [ext_resource type="Texture2D" uid="uid://csknopg1cbqbq" path="res://sprites/background/green_gradient.png" id="2_mev6t"]
[ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="3_q2khr"] [ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="3_q2khr"]
[ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="5_xsnl8"] [ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="5_xsnl8"]
[ext_resource type="Script" path="res://scripts/roadborder.gd" id="6_50nf2"] [ext_resource type="Script" uid="uid://bm4x3mtvdtb0w" path="res://scripts/roadborder.gd" id="6_50nf2"]
[ext_resource type="Texture2D" uid="uid://ba7g1ewwchn6c" path="res://sprites/smooth_fields/fields_animal_001.png" id="6_c655a"] [ext_resource type="Texture2D" uid="uid://ba7g1ewwchn6c" path="res://sprites/smooth_fields/fields_animal_001.png" id="6_c655a"]
[ext_resource type="Script" path="res://scripts/generate_road_polyon.gd" id="6_x0jfh"] [ext_resource type="Script" uid="uid://hjnf4en27k1o" path="res://scripts/generate_road_polyon.gd" id="6_x0jfh"]
[ext_resource type="Texture2D" uid="uid://bdpm76vsgrpc0" path="res://sprites/smooth_fields/fields_animal_002.png" id="7_frdrh"] [ext_resource type="Texture2D" uid="uid://bdpm76vsgrpc0" path="res://sprites/smooth_fields/fields_animal_002.png" id="7_frdrh"]
[ext_resource type="Texture2D" uid="uid://bn31voko78y3i" path="res://sprites/smooth_fields/fields_bush_001.png" id="9_cssop"] [ext_resource type="Texture2D" uid="uid://bn31voko78y3i" path="res://sprites/smooth_fields/fields_bush_001.png" id="9_cssop"]
[ext_resource type="Texture2D" uid="uid://bwow1hv3be0gh" path="res://sprites/smooth_fields/fields_bush_002.png" id="10_y6sb7"] [ext_resource type="Texture2D" uid="uid://bwow1hv3be0gh" path="res://sprites/smooth_fields/fields_bush_002.png" id="10_y6sb7"]

View file

@ -1,12 +1,12 @@
[gd_scene load_steps=36 format=3 uid="uid://c3bc2y1kqhboa"] [gd_scene load_steps=36 format=3 uid="uid://c3bc2y1kqhboa"]
[ext_resource type="Script" path="res://scripts/map_settings.gd" id="1_cowj0"] [ext_resource type="Script" uid="uid://ct2a8b6fj4phj" path="res://scripts/map_settings.gd" id="1_cowj0"]
[ext_resource type="Texture2D" uid="uid://dh437eqwliuu1" path="res://sprites/background/desert_gradient.png" id="1_un1r6"] [ext_resource type="Texture2D" uid="uid://dh437eqwliuu1" path="res://sprites/background/desert_gradient.png" id="1_un1r6"]
[ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="3_mivmq"] [ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="3_mivmq"]
[ext_resource type="Script" path="res://scripts/roadborder.gd" id="4_8hrwh"] [ext_resource type="Script" uid="uid://bm4x3mtvdtb0w" path="res://scripts/roadborder.gd" id="4_8hrwh"]
[ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="5_5a0eo"] [ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="5_5a0eo"]
[ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_bauvc"] [ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_bauvc"]
[ext_resource type="Script" path="res://scripts/generate_road_polyon.gd" id="6_vdo8x"] [ext_resource type="Script" uid="uid://hjnf4en27k1o" path="res://scripts/generate_road_polyon.gd" id="6_vdo8x"]
[ext_resource type="Texture2D" uid="uid://crb12ld3cl3lu" path="res://sprites/road/finishline.png" id="7_cyh48"] [ext_resource type="Texture2D" uid="uid://crb12ld3cl3lu" path="res://sprites/road/finishline.png" id="7_cyh48"]
[ext_resource type="Texture2D" uid="uid://coodxt0qrcw57" path="res://sprites/desert/desert_pyramid_001.png" id="8_s11ym"] [ext_resource type="Texture2D" uid="uid://coodxt0qrcw57" path="res://sprites/desert/desert_pyramid_001.png" id="8_s11ym"]
[ext_resource type="Texture2D" uid="uid://bkfr440vx31jh" path="res://sprites/desert/desert_pyramid_002.png" id="9_ou266"] [ext_resource type="Texture2D" uid="uid://bkfr440vx31jh" path="res://sprites/desert/desert_pyramid_002.png" id="9_ou266"]

View file

@ -1,11 +1,11 @@
[gd_scene load_steps=23 format=3 uid="uid://ccy3rfrd1jpg1"] [gd_scene load_steps=23 format=3 uid="uid://ccy3rfrd1jpg1"]
[ext_resource type="Texture2D" uid="uid://csknopg1cbqbq" path="res://sprites/background/green_gradient.png" id="1_wo3gb"] [ext_resource type="Texture2D" uid="uid://csknopg1cbqbq" path="res://sprites/background/green_gradient.png" id="1_wo3gb"]
[ext_resource type="Script" path="res://scripts/map_settings.gd" id="1_y50df"] [ext_resource type="Script" uid="uid://ct2a8b6fj4phj" path="res://scripts/map_settings.gd" id="1_y50df"]
[ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_2ey0t"] [ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_2ey0t"]
[ext_resource type="Script" path="res://scripts/roadborder.gd" id="3_yxc3j"] [ext_resource type="Script" uid="uid://bm4x3mtvdtb0w" path="res://scripts/roadborder.gd" id="3_yxc3j"]
[ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_lutxb"] [ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_lutxb"]
[ext_resource type="Script" path="res://scripts/generate_road_polyon.gd" id="5_weemp"] [ext_resource type="Script" uid="uid://hjnf4en27k1o" path="res://scripts/generate_road_polyon.gd" id="5_weemp"]
[ext_resource type="Texture2D" uid="uid://ba7g1ewwchn6c" path="res://sprites/smooth_fields/fields_animal_001.png" id="6_mbvo3"] [ext_resource type="Texture2D" uid="uid://ba7g1ewwchn6c" path="res://sprites/smooth_fields/fields_animal_001.png" id="6_mbvo3"]
[ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_vt0h1"] [ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_vt0h1"]
[ext_resource type="Texture2D" uid="uid://bdpm76vsgrpc0" path="res://sprites/smooth_fields/fields_animal_002.png" id="7_6ssj3"] [ext_resource type="Texture2D" uid="uid://bdpm76vsgrpc0" path="res://sprites/smooth_fields/fields_animal_002.png" id="7_6ssj3"]

View file

@ -1,11 +1,11 @@
[gd_scene load_steps=14 format=3 uid="uid://b8e6unjutl5bb"] [gd_scene load_steps=14 format=3 uid="uid://b8e6unjutl5bb"]
[ext_resource type="Texture2D" uid="uid://csknopg1cbqbq" path="res://sprites/background/green_gradient.png" id="1_1q1bt"] [ext_resource type="Texture2D" uid="uid://csknopg1cbqbq" path="res://sprites/background/green_gradient.png" id="1_1q1bt"]
[ext_resource type="Script" path="res://scripts/map_settings.gd" id="1_4kvv2"] [ext_resource type="Script" uid="uid://ct2a8b6fj4phj" path="res://scripts/map_settings.gd" id="1_4kvv2"]
[ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_3n7v7"] [ext_resource type="Texture2D" uid="uid://5l1t6nyjn022" path="res://sprites/road/road_border.png" id="2_3n7v7"]
[ext_resource type="Script" path="res://scripts/roadborder.gd" id="3_i3pho"] [ext_resource type="Script" uid="uid://bm4x3mtvdtb0w" path="res://scripts/roadborder.gd" id="3_i3pho"]
[ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_1s1xa"] [ext_resource type="Texture2D" uid="uid://gydxil7qf7jc" path="res://sprites/road/road_trim.png" id="4_1s1xa"]
[ext_resource type="Script" path="res://scripts/generate_road_polyon.gd" id="5_mb5tb"] [ext_resource type="Script" uid="uid://hjnf4en27k1o" path="res://scripts/generate_road_polyon.gd" id="5_mb5tb"]
[ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_tm0js"] [ext_resource type="Texture2D" uid="uid://bu1vuswjdjub3" path="res://sprites/road/road_startmarker.png" id="6_tm0js"]
[ext_resource type="Texture2D" uid="uid://crb12ld3cl3lu" path="res://sprites/road/finishline.png" id="7_ocekn"] [ext_resource type="Texture2D" uid="uid://crb12ld3cl3lu" path="res://sprites/road/finishline.png" id="7_ocekn"]
[ext_resource type="Texture2D" uid="uid://do3gd2qodpq66" path="res://sprites/road/checkpoint.png" id="8_osfw4"] [ext_resource type="Texture2D" uid="uid://do3gd2qodpq66" path="res://sprites/road/checkpoint.png" id="8_osfw4"]

View file

@ -2,10 +2,9 @@
[ext_resource type="Texture2D" uid="uid://bu05e161cb61k" path="res://sprites/background/spritesheet_bg.png" id="1_m3cjb"] [ext_resource type="Texture2D" uid="uid://bu05e161cb61k" path="res://sprites/background/spritesheet_bg.png" id="1_m3cjb"]
[ext_resource type="TileSet" uid="uid://buu8w8n61kbxf" path="res://sprites/spritesheet_road/markings.tres" id="3_xmt4t"] [ext_resource type="TileSet" uid="uid://buu8w8n61kbxf" path="res://sprites/spritesheet_road/markings.tres" id="3_xmt4t"]
[ext_resource type="Texture2D" uid="uid://f07emh5nd432" path="res://upload_90656c517c9d3b6045c12e343446b97c.png" id="3_ytr3a"]
[ext_resource type="Texture2D" uid="uid://cvkrjllwsen6r" path="res://sprites/htrohr/ht_rohr.png" id="4_46p8j"] [ext_resource type="Texture2D" uid="uid://cvkrjllwsen6r" path="res://sprites/htrohr/ht_rohr.png" id="4_46p8j"]
[ext_resource type="Texture2D" uid="uid://dpuhee0x5ekud" path="res://sprites/background/spritesheet_scenery.png" id="5_unub2"] [ext_resource type="Texture2D" uid="uid://dpuhee0x5ekud" path="res://sprites/background/spritesheet_scenery.png" id="5_unub2"]
[ext_resource type="Script" path="res://scripts/roadborder.gd" id="6_50nf2"] [ext_resource type="Script" uid="uid://bm4x3mtvdtb0w" path="res://scripts/roadborder.gd" id="6_50nf2"]
[ext_resource type="Texture2D" uid="uid://bal4r8rnh38dx" path="res://sprites/htrohr/ht_rohr_fitting.png" id="6_lu60n"] [ext_resource type="Texture2D" uid="uid://bal4r8rnh38dx" path="res://sprites/htrohr/ht_rohr_fitting.png" id="6_lu60n"]
[ext_resource type="Texture2D" uid="uid://b0h14qq3jgbcw" path="res://sprites/htrohr/weights.png" id="7_7xqft"] [ext_resource type="Texture2D" uid="uid://b0h14qq3jgbcw" path="res://sprites/htrohr/weights.png" id="7_7xqft"]
@ -49,6 +48,9 @@ texture_region_size = Vector2i(256, 256)
tile_size = Vector2i(256, 256) tile_size = Vector2i(256, 256)
sources/1 = SubResource("TileSetAtlasSource_hemvv") sources/1 = SubResource("TileSetAtlasSource_hemvv")
[sub_resource type="Resource" id="Resource_ncnur"]
metadata/__load_path__ = "res://upload_90656c517c9d3b6045c12e343446b97c.png"
[sub_resource type="RectangleShape2D" id="RectangleShape2D_daqun"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_daqun"]
size = Vector2(23, 327) size = Vector2(23, 327)
@ -212,7 +214,7 @@ visible = false
position = Vector2(30, -363) position = Vector2(30, -363)
rotation = -3.14159 rotation = -3.14159
scale = Vector2(2.09269, 2.09269) scale = Vector2(2.09269, 2.09269)
texture = ExtResource("3_ytr3a") texture = SubResource("Resource_ncnur")
[node name="Line2D_right_inside" type="Line2D" parent="."] [node name="Line2D_right_inside" type="Line2D" parent="."]
z_index = 1 z_index = 1

View file

@ -1,20 +1,27 @@
[gd_scene load_steps=22 format=3 uid="uid://b1uhymisifcho"] [gd_scene load_steps=30 format=3 uid="uid://b1uhymisifcho"]
[ext_resource type="Script" path="res://scripts/menu.gd" id="1_fushn"] [ext_resource type="Script" uid="uid://sngr878yi4e2" path="res://scripts/menu.gd" id="1_fushn"]
[ext_resource type="Script" path="res://scripts/menudisplay.gd" id="2_jc4pv"] [ext_resource type="Script" uid="uid://5j77s0sni4jr" path="res://scripts/menudisplay.gd" id="2_jc4pv"]
[ext_resource type="Script" path="res://scripts/map_selection.gd" id="3_c0mhk"] [ext_resource type="Script" uid="uid://ca808u31gy4rd" path="res://scripts/map_selection.gd" id="3_c0mhk"]
[ext_resource type="Texture2D" uid="uid://my0glsan1h2e" path="res://scenes/map_preview/map_00.png" id="3_p822h"] [ext_resource type="Texture2D" uid="uid://my0glsan1h2e" path="res://scenes/map_preview/map_00.png" id="3_p822h"]
[ext_resource type="Texture2D" uid="uid://bk32usoetq3b" path="res://scenes/map_preview/map_01.png" id="4_ac8w4"] [ext_resource type="Texture2D" uid="uid://bk32usoetq3b" path="res://scenes/map_preview/map_01.png" id="4_ac8w4"]
[ext_resource type="Texture2D" uid="uid://dojj5iqges76q" path="res://sprites/bobbycar_body.png" id="5_4c5nu"] [ext_resource type="Texture2D" uid="uid://dojj5iqges76q" path="res://sprites/bobbycar_body.png" id="5_4c5nu"]
[ext_resource type="Texture2D" uid="uid://ole07xte1dxp" path="res://scenes/map_preview/map_02.png" id="5_pnyq7"] [ext_resource type="Texture2D" uid="uid://ole07xte1dxp" path="res://scenes/map_preview/map_02.png" id="5_pnyq7"]
[ext_resource type="Texture2D" uid="uid://c5rlo1fhm3bl4" path="res://sprites/bobbycar_features.png" id="6_wj8p2"] [ext_resource type="Texture2D" uid="uid://c5rlo1fhm3bl4" path="res://sprites/bobbycar_features.png" id="6_wj8p2"]
[ext_resource type="Texture2D" uid="uid://btol62ajcio85" path="res://scenes/map_preview/map_03.png" id="7_5f67q"] [ext_resource type="Texture2D" uid="uid://btol62ajcio85" path="res://scenes/map_preview/map_03.png" id="7_5f67q"]
[ext_resource type="Script" path="res://scripts/rounds_selection.gd" id="7_cr4tq"] [ext_resource type="Script" uid="uid://i2rjudao77vi" path="res://scripts/rounds_selection.gd" id="7_cr4tq"]
[ext_resource type="Texture2D" uid="uid://dkg8e3stos5rw" path="res://sprites/bobbycar_steeringwheel.png" id="7_duvwv"] [ext_resource type="Texture2D" uid="uid://dkg8e3stos5rw" path="res://sprites/bobbycar_steeringwheel.png" id="7_duvwv"]
[ext_resource type="Texture2D" uid="uid://dku8jinmijays" path="res://scenes/map_preview/map_04.png" id="8_46b6b"] [ext_resource type="Texture2D" uid="uid://dku8jinmijays" path="res://scenes/map_preview/map_04.png" id="8_46b6b"]
[ext_resource type="Texture2D" uid="uid://mp5f6jviyl44" path="res://scenes/map_preview/map_05.png" id="10_cou7n"] [ext_resource type="Texture2D" uid="uid://mp5f6jviyl44" path="res://scenes/map_preview/map_05.png" id="10_cou7n"]
[ext_resource type="Texture2D" uid="uid://bst8p5s1sgurm" path="res://sprites/menu_bg.png" id="10_equk1"] [ext_resource type="Texture2D" uid="uid://bst8p5s1sgurm" path="res://sprites/menu_bg.png" id="10_equk1"]
[ext_resource type="Texture2D" uid="uid://djdqilsxvrw5q" path="res://scenes/map_preview/map_06.png" id="14_ussa6"] [ext_resource type="Script" uid="uid://bt0cqdl0t6eci" path="res://scripts/menu_sfx.gd" id="15_fy8yy"]
[ext_resource type="AudioStream" uid="uid://b8d14bwst1dhr" path="res://sounds/horn/bobbycar_horn-001.wav" id="16_6wigr"]
[ext_resource type="AudioStream" uid="uid://dksemfojtisr4" path="res://sounds/horn/bobbycar_horn-002.wav" id="17_lnf0i"]
[ext_resource type="AudioStream" uid="uid://d2h0u2lfqevtq" path="res://sounds/horn/bobbycar_horn-003.wav" id="18_ffqrc"]
[ext_resource type="AudioStream" uid="uid://k7qbpkrrjni0" path="res://sounds/horn/bobbycar_horn-004.wav" id="19_x16fv"]
[ext_resource type="AudioStream" uid="uid://bv76qacjjtqt1" path="res://sounds/horn/bobbycar_horn-005.wav" id="20_g54pe"]
[ext_resource type="AudioStream" uid="uid://2kxfawkq4ddr" path="res://sounds/horn/bobbycar_horn-006.wav" id="21_48ryc"]
[ext_resource type="AudioStream" uid="uid://dfpk2vihkyeft" path="res://sounds/horn/bobbycar_horn-007.wav" id="22_vhsb5"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_un5vh"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_un5vh"]
bg_color = Color(0.699653, 0.699654, 0.699653, 0.388235) bg_color = Color(0.699653, 0.699654, 0.699653, 0.388235)
@ -67,10 +74,20 @@ tracks/0/keys = {
[sub_resource type="AnimationLibrary" id="AnimationLibrary_08km3"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_08km3"]
_data = { _data = {
"RESET": SubResource("Animation_7lydi"), &"RESET": SubResource("Animation_7lydi"),
"menu_idle": SubResource("Animation_y58ke") &"menu_idle": SubResource("Animation_y58ke")
} }
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_hwfsl"]
streams_count = 7
stream_0/stream = ExtResource("16_6wigr")
stream_1/stream = ExtResource("17_lnf0i")
stream_2/stream = ExtResource("18_ffqrc")
stream_3/stream = ExtResource("19_x16fv")
stream_4/stream = ExtResource("20_g54pe")
stream_5/stream = ExtResource("21_48ryc")
stream_6/stream = ExtResource("22_vhsb5")
[node name="Menu" type="Node"] [node name="Menu" type="Node"]
script = ExtResource("1_fushn") script = ExtResource("1_fushn")
@ -105,7 +122,6 @@ offset_right = 517.0
offset_bottom = 637.245 offset_bottom = 637.245
[node name="VBoxContainer_Playerlist" type="VBoxContainer" parent="MenuDisplay/MarginContainer"] [node name="VBoxContainer_Playerlist" type="VBoxContainer" parent="MenuDisplay/MarginContainer"]
visible = false
layout_mode = 2 layout_mode = 2
theme = SubResource("Theme_eo4i1") theme = SubResource("Theme_eo4i1")
@ -314,19 +330,28 @@ texture = ExtResource("6_wj8p2")
texture = ExtResource("7_duvwv") texture = ExtResource("7_duvwv")
[node name="btn_fullscreen" type="CheckButton" parent="MenuDisplay"] [node name="btn_fullscreen" type="CheckButton" parent="MenuDisplay"]
offset_left = 845.0 offset_left = 897.0
offset_top = 539.0 offset_top = 547.0
offset_right = 972.0 offset_right = 998.0
offset_bottom = 570.0 offset_bottom = 572.0
scale = Vector2(2, 2) scale = Vector2(2, 2)
theme_override_constants/outline_size = 10 theme_override_constants/outline_size = 10
theme_override_constants/icon_max_width = 25
theme_override_font_sizes/font_size = 12
text = "Fullscreen" text = "Fullscreen"
[node name="btn_reset_players" type="Button" parent="MenuDisplay"]
offset_left = 800.0
offset_top = 600.0
offset_right = 912.0
offset_bottom = 631.0
text = "Reset Players"
[node name="btn_save_whitelist" type="Button" parent="MenuDisplay"] [node name="btn_save_whitelist" type="Button" parent="MenuDisplay"]
offset_left = 936.0 offset_left = 940.0
offset_top = 605.0 offset_top = 600.0
offset_right = 1085.0 offset_right = 1089.0
offset_bottom = 636.0 offset_bottom = 631.0
text = "Save Key Whitelist" text = "Save Key Whitelist"
[node name="map_container" type="HFlowContainer" parent="MenuDisplay"] [node name="map_container" type="HFlowContainer" parent="MenuDisplay"]
@ -367,11 +392,6 @@ layout_mode = 2
toggle_mode = true toggle_mode = true
icon = ExtResource("10_cou7n") icon = ExtResource("10_cou7n")
[node name="btn_map_06" type="Button" parent="MenuDisplay/map_container"]
layout_mode = 2
toggle_mode = true
icon = ExtResource("14_ussa6")
[node name="rounds_selection" type="OptionButton" parent="MenuDisplay"] [node name="rounds_selection" type="OptionButton" parent="MenuDisplay"]
offset_left = 690.0 offset_left = 690.0
offset_top = 556.0 offset_top = 556.0
@ -379,6 +399,7 @@ offset_right = 732.0
offset_bottom = 587.0 offset_bottom = 587.0
item_count = 5 item_count = 5
popup/item_0/text = "1" popup/item_0/text = "1"
popup/item_0/id = 0
popup/item_1/text = "2" popup/item_1/text = "2"
popup/item_1/id = 1 popup/item_1/id = 1
popup/item_2/text = "3" popup/item_2/text = "3"
@ -400,7 +421,7 @@ text = "Rounds:"
[node name="AnimationPlayer" type="AnimationPlayer" parent="MenuDisplay"] [node name="AnimationPlayer" type="AnimationPlayer" parent="MenuDisplay"]
libraries = { libraries = {
"": SubResource("AnimationLibrary_08km3") &"": SubResource("AnimationLibrary_08km3")
} }
autoplay = "menu_idle" autoplay = "menu_idle"
@ -425,8 +446,16 @@ text = "Hold Button to join"
[node name="Timer" type="Timer" parent="."] [node name="Timer" type="Timer" parent="."]
wait_time = 5.0 wait_time = 5.0
[node name="SFX" type="Node" parent="."]
script = ExtResource("15_fy8yy")
[node name="horn" type="AudioStreamPlayer" parent="SFX"]
stream = SubResource("AudioStreamRandomizer_hwfsl")
max_polyphony = 8
[connection signal="toggled" from="MenuDisplay/btn_fullscreen" to="." method="_on_btn_fullscreen_toggled"] [connection signal="toggled" from="MenuDisplay/btn_fullscreen" to="." method="_on_btn_fullscreen_toggled"]
[connection signal="pressed" from="MenuDisplay/btn_save_whitelist" to="." method="_on_button_pressed"] [connection signal="pressed" from="MenuDisplay/btn_reset_players" to="." method="_on_btn_reset_players_pressed"]
[connection signal="pressed" from="MenuDisplay/btn_save_whitelist" to="." method="_on_btn_save_whitelist_pressed"]
[connection signal="map_changed" from="MenuDisplay/map_container" to="." method="_on_map_container_map_changed"] [connection signal="map_changed" from="MenuDisplay/map_container" to="." method="_on_map_container_map_changed"]
[connection signal="item_selected" from="MenuDisplay/rounds_selection" to="." method="_on_rounds_selection_item_selected"] [connection signal="item_selected" from="MenuDisplay/rounds_selection" to="." method="_on_rounds_selection_item_selected"]
[connection signal="item_selected" from="MenuDisplay/rounds_selection" to="MenuDisplay/rounds_selection" method="_on_item_selected"] [connection signal="item_selected" from="MenuDisplay/rounds_selection" to="MenuDisplay/rounds_selection" method="_on_item_selected"]

View file

@ -9,9 +9,16 @@ func _ready() -> void:
config.set_value("keywhitelist", "enabled", false) config.set_value("keywhitelist", "enabled", false)
config.set_value("video", "fullscreen", false) config.set_value("video", "fullscreen", false)
config.set_value("video", "playerlist_sprite", true)
config.set_value("video", "playerlist_key", true)
config.set_value("video", "animate_sprite_on_press", false)
config.set_value("video", "animate_outline_on_press", true)
config.set_value("general", "remove_cars_timeout", 15) config.set_value("general", "remove_cars_timeout", 15)
config.set_value("general", "automatic_map_change_after", 2) config.set_value("general", "automatic_map_change_after", 0)
config.set_value("general", "fast_mode_chance", 0.0)
config.set_value("general", "rounds", 3)
config.save(SETTINGS_FILE_PATH) config.save(SETTINGS_FILE_PATH)
else: else:

View file

@ -2,7 +2,7 @@ extends Node
#var sample_hz = 44100.0 # Keep the number of samples to mix low, GDScript is not super fast. #var sample_hz = 44100.0 # Keep the number of samples to mix low, GDScript is not super fast.
var sample_hz = 44100.0/4 # Keep the number of samples to mix low, GDScript is not super fast. var sample_hz = 44100.0/8 # Keep the number of samples to mix low, GDScript is not super fast.
@onready var noise = FastNoiseLite.new() @onready var noise = FastNoiseLite.new()
var phase_rotation = 0.0 var phase_rotation = 0.0

View file

@ -16,6 +16,7 @@ extends Node2D
@onready var highscore_label: Label = $hud/highscore_label @onready var highscore_label: Label = $hud/highscore_label
@onready var splittime_label: Label = $hud/splittime_label @onready var splittime_label: Label = $hud/splittime_label
@onready var fps_label: Label = $hud/fps_label
const caroffset= 32+4 #space cars on start line const caroffset= 32+4 #space cars on start line
@ -48,6 +49,7 @@ var carpreset="normal" # normal, fast
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
Gamestate.resetTimeElapsed() Gamestate.resetTimeElapsed()
map_rounds=Gamestate.getRounds() #load round number from menu map_rounds=Gamestate.getRounds() #load round number from menu
@ -118,6 +120,7 @@ func custom_array_sort_rank(a, b):
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void: func _process(delta: float) -> void:
fps_label.text=str(round(1.0/delta))
if running: if running:
Gamestate.addTimeElapsed(delta) Gamestate.addTimeElapsed(delta)
#if !countdown.is_stopped(): #if !countdown.is_stopped():
@ -155,8 +158,18 @@ func checkCarsTimeout(delta: float):
if !c.hasFinished() and c.getNoInputTimeout(): if !c.hasFinished() and c.getNoInputTimeout():
print("Removing car") print("Removing car")
c.queue_free() c.queue_free()
if cars.size()<=0 and !game_ended: #no cars left if !game_ended:
end_game() if cars.size()<=0: #no cars left
print("No Cars Left")
end_game()
var cars_finished=0
for c in cars:
if c.hasFinished():
cars_finished+=1
if cars_finished >= cars.size() : #all cars left have finished
print("All Remaining Cars finished")
end_game()
func updateCameraMovement(delta: float): func updateCameraMovement(delta: float):
@ -265,7 +278,7 @@ func _on_car_finished(playerid,finalTime) -> void:
finishGame()# Game finished finishGame()# Game finished
func _on_car_on_checkpoint(playerid,checkpointtimes,i) -> void: func _on_car_on_checkpoint(playerid,checkpointtimes,i) -> void:
if Gamestate.getPlayers().size()==1 and highscorecheckpointtimes != null: #singleplayer and previous split times exista if Gamestate.getPlayers().size()==1 and highscorecheckpointtimes != null: #singleplayer and previous split times exists
# calculate split times # calculate split times
var timediff = checkpointtimes[i]-highscorecheckpointtimes[i] var timediff = checkpointtimes[i]-highscorecheckpointtimes[i]
@ -315,8 +328,8 @@ func finishGame():
highscore_label.text=="+"+str(timediff) highscore_label.text=="+"+str(timediff)
highscore_label.modulate=Color(200,200,0) highscore_label.modulate=Color(200,200,0)
elif timediff<0: #new highscore elif timediff<0: #new highscore
highscore_label.text=str(timediff) highscore_label.text="New Highscore\n"+str(timediff)
highscore_label.modulate=Color(0,0,200) highscore_label.modulate=Color(0,200,0)
elif timediff>0: #worse time elif timediff>0: #worse time
highscore_label.text="+"+str(timediff) highscore_label.text="+"+str(timediff)
highscore_label.modulate=Color(200,0,0) highscore_label.modulate=Color(200,0,0)

View file

@ -14,22 +14,35 @@ var map_scene_path_prefix="res://scenes/"
var map_scene_name_prefix="map_" var map_scene_name_prefix="map_"
var map_scene_name_postfix=".tscn" var map_scene_name_postfix=".tscn"
var rounds=3 var rounds:int=0 #if 0, load from file
var carpreset="normal" var carpreset="normal"
var remove_cars_timeout=true var remove_cars_timeout=true
var automatic_map_change_after=2 var automatic_map_change_after=-1 #-1 to load config value initally
var automatic_map_change_in=automatic_map_change_after #change map when this reaches 0 var automatic_map_change_in=automatic_map_change_after #change map when this reaches 0
var colorwheelstep:float=0.3 var colorwheelstep:float=0.3
func getRounds(): var fast_mode_chance:float=0
func setFastModeChance(v:float):
fast_mode_chance=max(min(v,1.0),0.0)
func getFastModeChance():
return fast_mode_chance
func getRounds() -> int:
if rounds<=0: #if no rounds setting configured, use from config file
var loadedRounds:int=ConfigFileHandler.get_general_setting("rounds")
if loadedRounds>0:
rounds=loadedRounds
return rounds return rounds
func setRounds(r): func setRounds(r):
print("Rounds set to "+str(r)) print("Rounds set to "+str(r))
ConfigFileHandler.save_general_setting("rounds",r)
rounds=r rounds=r
func getRemoveCarsTimeout(): func getRemoveCarsTimeout():
@ -47,6 +60,8 @@ func setCarPreset(p:String):
func setAutomaticMapChangeAfter(v): func setAutomaticMapChangeAfter(v):
automatic_map_change_after=max(v,0) automatic_map_change_after=max(v,0)
if automatic_map_change_in==-1:
automatic_map_change_in=automatic_map_change_after #initial value
func getSelectedMap(): #return only short map name "00" func getSelectedMap(): #return only short map name "00"
return map_scene_name return map_scene_name
@ -86,11 +101,11 @@ func setColorwheelstepByPlayernum(playernum:int):
colorwheelstep=0.3 colorwheelstep=0.3
func addPlayer(key:int,poverridecolor=null): func addPlayer(key:int,poverridecolor:Color=Color(0,0,0,0)):
#return -1 if player already exists with this key. else return id of player added #return -1 if player already exists with this key. else return id of player added
if not getPlayerkeys().has(key): #key is not yet registered if not getPlayerkeys().has(key): #key is not yet registered
var prefered_colori=0 var prefered_colori=0
var overridecolor=null var overridecolor:Color=Color(0,0,0,0)
var setrank=((randf()-0.5)/10.0)+0.5 var setrank=((randf()-0.5)/10.0)+0.5
for p in last_players: for p in last_players:
if p.inputkey==key: #key was used in last round if p.inputkey==key: #key was used in last round
@ -104,10 +119,10 @@ func addPlayer(key:int,poverridecolor=null):
prefered_colori+=1 prefered_colori+=1
var newplayer: Player = Player.new(key,prefered_colori) var newplayer: Player = Player.new(key,prefered_colori)
if overridecolor!=null: if overridecolor.a>0:
newplayer.setOverrideColor(overridecolor) newplayer.setOverrideColor(overridecolor)
newplayer.rank=setrank newplayer.rank=setrank
if poverridecolor!=null: if poverridecolor.a>0:
print("play key "+str(key)+" overridecolor="+str(poverridecolor)) print("play key "+str(key)+" overridecolor="+str(poverridecolor))
newplayer.setOverrideColor(poverridecolor) newplayer.setOverrideColor(poverridecolor)
players.append(newplayer) players.append(newplayer)

View file

@ -16,8 +16,9 @@ func _ready() -> void:
if len(Gamestate.getSelectedMap())<=0: #no map selected (ie on startup) if len(Gamestate.getSelectedMap())<=0: #no map selected (ie on startup)
get_children()[0].emit_signal("pressed") #preselect first map in list get_children()[0].emit_signal("pressed") #preselect first map in list
else: else:
Gamestate.automatic_map_change_in-=1 if Gamestate.automatic_map_change_after>0:
if Gamestate.automatic_map_change_in<=0: #do automatic mapchange Gamestate.automatic_map_change_in-=1
if Gamestate.automatic_map_change_after>0 and Gamestate.automatic_map_change_in<=0: #do automatic mapchange
Gamestate.automatic_map_change_in=Gamestate.automatic_map_change_after #reset Gamestate.automatic_map_change_in=Gamestate.automatic_map_change_after #reset
var next_map_pick=null var next_map_pick=null
while next_map_pick==null: while next_map_pick==null:
@ -28,7 +29,7 @@ func _ready() -> void:
var saved_automatic_map_change_in=Gamestate.automatic_map_change_in #save number, to restore after simulated map button press var saved_automatic_map_change_in=Gamestate.automatic_map_change_in #save number, to restore after simulated map button press
next_map_pick.emit_signal("pressed") next_map_pick.emit_signal("pressed")
Gamestate.automatic_map_change_in=saved_automatic_map_change_in Gamestate.automatic_map_change_in=saved_automatic_map_change_in
else: #no automatic mapchange mapchange else: #no automatic mapchange
for c in get_children(): for c in get_children():
if c.name==button_prefix+Gamestate.getSelectedMap(): if c.name==button_prefix+Gamestate.getSelectedMap():
var saved_automatic_map_change_in=Gamestate.automatic_map_change_in #save number, to restore after simulated map button press var saved_automatic_map_change_in=Gamestate.automatic_map_change_in #save number, to restore after simulated map button press

View file

@ -5,11 +5,14 @@ extends Node
var keywhitelist var keywhitelist
#var playeroverridecolors #var playeroverridecolors
@onready var sfx: Node = $SFX
var keyHolddownQueue = {} var keyHolddownQueue = {}
const KEY_HOLDDOWN_TO_ENTER_TIME=500 #in milliseconds const KEY_HOLDDOWN_TO_ENTER_TIME=500 #in milliseconds
func _ready(): func _ready():
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
removeAssignedKeys() removeAssignedKeys()
Gamestate.removeAllPlayers() Gamestate.removeAllPlayers()
$Timer.stop() $Timer.stop()
@ -20,6 +23,8 @@ func _ready():
Gamestate.setRemoveCarsTimeout(ConfigFileHandler.get_general_setting("remove_cars_timeout")) Gamestate.setRemoveCarsTimeout(ConfigFileHandler.get_general_setting("remove_cars_timeout"))
Gamestate.setAutomaticMapChangeAfter(ConfigFileHandler.get_general_setting("automatic_map_change_after")) Gamestate.setAutomaticMapChangeAfter(ConfigFileHandler.get_general_setting("automatic_map_change_after"))
Gamestate.setFastModeChance(ConfigFileHandler.get_general_setting("fast_mode_chance"))
keywhitelist=ConfigFileHandler.get_keywhitelist_setting() #empty list if disabled keywhitelist=ConfigFileHandler.get_keywhitelist_setting() #empty list if disabled
btn_save_whitelist.disabled=keywhitelist.size()>0 #whitelist enabled, then disable save whitelist button btn_save_whitelist.disabled=keywhitelist.size()>0 #whitelist enabled, then disable save whitelist button
btn_save_whitelist.visible=!keywhitelist.size()>0 btn_save_whitelist.visible=!keywhitelist.size()>0
@ -27,6 +32,7 @@ func _ready():
Gamestate.setColorwheelstepByPlayernum(keywhitelist.size()) Gamestate.setColorwheelstepByPlayernum(keywhitelist.size())
#playeroverridecolors=ConfigFileHandler.get_playeroverridecolors_setting() #playeroverridecolors=ConfigFileHandler.get_playeroverridecolors_setting()
#print("playeroverridecolors="+str(playeroverridecolors)) #print("playeroverridecolors="+str(playeroverridecolors))
@ -72,7 +78,7 @@ func _unhandled_key_input(event: InputEvent) -> void:
func _on_timer_timeout() -> void: #Start Game func _on_timer_timeout() -> void: #Start Game
print("Game starting") print("Game starting")
if (randi() % 3 == 0): if (randi() % 100 <= Gamestate.getFastModeChance()*100):
Gamestate.setCarPreset("fast") Gamestate.setCarPreset("fast")
else: else:
Gamestate.setCarPreset("normal") Gamestate.setCarPreset("normal")
@ -91,6 +97,9 @@ func _process(delta: float) -> void:
#if keywhitelist.has(event.keycode) or keywhitelist.size()<1: #is key whitelisted? #if keywhitelist.has(event.keycode) or keywhitelist.size()<1: #is key whitelisted?
print("Key added. keycode:"+str(queuedKey)) print("Key added. keycode:"+str(queuedKey))
var addedID=Gamestate.addPlayer(queuedKey) var addedID=Gamestate.addPlayer(queuedKey)
sfx.playAddPlayerSound()
$MenuDisplay.update_playerlist(Gamestate.players,queuedKey,"explode") $MenuDisplay.update_playerlist(Gamestate.players,queuedKey,"explode")
@ -131,8 +140,15 @@ func _on_map_container_map_changed() -> void:
$Timer.start() $Timer.start()
func _on_button_pressed() -> void: func _on_btn_save_whitelist_pressed() -> void:
if len(Gamestate.getPlayerkeys())>=1: if len(Gamestate.getPlayerkeys())>=1:
var _playerkeys=Gamestate.getPlayerkeys() var _playerkeys=Gamestate.getPlayerkeys()
print("Keys ="+str(_playerkeys)) print("Keys ="+str(_playerkeys))
ConfigFileHandler.save_keywhitelist_setting(_playerkeys) ConfigFileHandler.save_keywhitelist_setting(_playerkeys)
func _on_btn_reset_players_pressed() -> void:
removeAssignedKeys()
Gamestate.removeAllPlayers()
$Timer.stop()
$MenuDisplay.update_playerlist(Gamestate.players)
print("Removed players")

5
scripts/menu_sfx.gd Normal file
View file

@ -0,0 +1,5 @@
extends Node
func playAddPlayerSound():
$horn.play()

View file

@ -2,15 +2,27 @@ extends Node2D
const ADD_STEP_OUTLINESIZE=30 const ADD_STEP_OUTLINESIZE=30
const MAX_OUTLINESIZE=60 const MAX_OUTLINESIZE=60
var animate_outline_on_press=true
const ADD_STEP_SPRITE_SCALE=0.2
const MAX_SPRITE_SCALE=1.5
var animate_sprite_on_press=true
@onready var playerlist_particles_2d: CPUParticles2D = $MarginContainer/PlayerlistParticles2D @onready var playerlist_particles_2d: CPUParticles2D = $MarginContainer/PlayerlistParticles2D
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
$MapChangeInfo.text="Mapchange in "+str(Gamestate.automatic_map_change_in) if ConfigFileHandler.get_video_setting("playerlist_sprite")==false:
$MarginContainer/VBoxContainer_Spritelist.visible=false
if ConfigFileHandler.get_video_setting("playerlist_key")==false:
$MarginContainer/VBoxContainer_Playerlist.visible=false
animate_outline_on_press=ConfigFileHandler.get_video_setting("animate_outline_on_press")
animate_sprite_on_press=ConfigFileHandler.get_video_setting("animate_sprite_on_press")
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func updateCountdown(t): func updateCountdown(t:int):
if (t<0): if (t<0):
$countdown.visible=false $countdown.visible=false
else: else:
@ -31,11 +43,19 @@ func update_playerlist(players:Array[Gamestate.Player],flashplayer_keycode=-1,ef
PlayerSprite.visible=true PlayerSprite.visible=true
if (p.inputkey==flashplayer_keycode): #this player should show an animation if (p.inputkey==flashplayer_keycode): #this player should show an animation
if effect=="blink": if effect=="blink":
var outlinesize=min(max(0,label.get_theme_constant("outline_size")+ADD_STEP_OUTLINESIZE),MAX_OUTLINESIZE) #enlarge outline a bit if animate_outline_on_press:
label.add_theme_constant_override("outline_size",outlinesize) var outlinesize=min(max(0,label.get_theme_constant("outline_size")+ADD_STEP_OUTLINESIZE),MAX_OUTLINESIZE) #enlarge outline a bit
label.add_theme_constant_override("outline_size",outlinesize)
if animate_sprite_on_press:
var spritescale=min(max(1.0,PlayerSprite.scale.x+ADD_STEP_SPRITE_SCALE),MAX_SPRITE_SCALE) #enlarge outline a bit
PlayerSprite.scale=Vector2(spritescale,spritescale)
if effect=="explode": if effect=="explode":
var outlinesize=MAX_OUTLINESIZE if animate_outline_on_press:
label.add_theme_constant_override("outline_size",outlinesize) #make outline max size var outlinesize=MAX_OUTLINESIZE
label.add_theme_constant_override("outline_size",outlinesize) #make outline max size
if animate_sprite_on_press:
var spritescale=min(max(1.0,PlayerSprite.scale.x+ADD_STEP_SPRITE_SCALE),MAX_SPRITE_SCALE) #enlarge outline a bit
PlayerSprite.scale=Vector2(spritescale,spritescale)
var font_size=label.get_theme_font_size("font_size") var font_size=label.get_theme_font_size("font_size")
var new_playerlist_particles_2d=playerlist_particles_2d.duplicate() var new_playerlist_particles_2d=playerlist_particles_2d.duplicate()
@ -56,7 +76,18 @@ func update_playerlist(players:Array[Gamestate.Player],flashplayer_keycode=-1,ef
func _process(delta: float) -> void: func _process(delta: float) -> void:
var Playerlabels=$MarginContainer/VBoxContainer_Playerlist.get_children() var Playerlabels=$MarginContainer/VBoxContainer_Playerlist.get_children()
var i=0
for label in Playerlabels: for label in Playerlabels:
var PlayerSprite=$MarginContainer/VBoxContainer_Spritelist.get_child(i) #get corresponding car sprite
var outlinesize=max(0,label.get_theme_constant("outline_size")-2*delta) var outlinesize=max(0,label.get_theme_constant("outline_size")-2*delta)
label.add_theme_constant_override("outline_size",outlinesize) label.add_theme_constant_override("outline_size",outlinesize)
var spritescale=min(max(1.0,PlayerSprite.scale.x-1*delta),MAX_SPRITE_SCALE) #enlarge outline a bit
PlayerSprite.scale=Vector2(spritescale,spritescale)
i+=1
if Gamestate.automatic_map_change_in>0:
$MapChangeInfo.text="Mapchange in "+str(Gamestate.automatic_map_change_in)
else:
$MapChangeInfo.text=""

View file

@ -3,13 +3,8 @@ extends OptionButton
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
var selectedRounds=Gamestate.getRounds() select(Gamestate.getRounds()-1)
select(selectedRounds-1) #preselect rounds
Gamestate.setRounds(selectedRounds)
func _on_item_selected(index: int) -> void: func _on_item_selected(index: int) -> void:
Gamestate.setRounds(index+1) Gamestate.setRounds(index+1)
print("Set rounds to "+str(index+1)) print("Set rounds to "+str(index+1))

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b8d14bwst1dhr"
path="res://.godot/imported/bobbycar_horn-001.wav-bbba800686c44e6618f7bf10b33815c9.sample"
[deps]
source_file="res://sounds/horn/bobbycar_horn-001.wav"
dest_files=["res://.godot/imported/bobbycar_horn-001.wav-bbba800686c44e6618f7bf10b33815c9.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=2

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dksemfojtisr4"
path="res://.godot/imported/bobbycar_horn-002.wav-5f052c006327dc2740b0f5ef0c626b61.sample"
[deps]
source_file="res://sounds/horn/bobbycar_horn-002.wav"
dest_files=["res://.godot/imported/bobbycar_horn-002.wav-5f052c006327dc2740b0f5ef0c626b61.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=2

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://d2h0u2lfqevtq"
path="res://.godot/imported/bobbycar_horn-003.wav-6dee88ed655389b6919ad175558f69cb.sample"
[deps]
source_file="res://sounds/horn/bobbycar_horn-003.wav"
dest_files=["res://.godot/imported/bobbycar_horn-003.wav-6dee88ed655389b6919ad175558f69cb.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=2

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://k7qbpkrrjni0"
path="res://.godot/imported/bobbycar_horn-004.wav-69ecd7e6daca242c9f54f1ef8572d2d3.sample"
[deps]
source_file="res://sounds/horn/bobbycar_horn-004.wav"
dest_files=["res://.godot/imported/bobbycar_horn-004.wav-69ecd7e6daca242c9f54f1ef8572d2d3.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=2

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bv76qacjjtqt1"
path="res://.godot/imported/bobbycar_horn-005.wav-77fd3f11482183d4b9db69d2b8644232.sample"
[deps]
source_file="res://sounds/horn/bobbycar_horn-005.wav"
dest_files=["res://.godot/imported/bobbycar_horn-005.wav-77fd3f11482183d4b9db69d2b8644232.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=2

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://2kxfawkq4ddr"
path="res://.godot/imported/bobbycar_horn-006.wav-f3eeea4e38fdfd2c2985dd42f699b1b1.sample"
[deps]
source_file="res://sounds/horn/bobbycar_horn-006.wav"
dest_files=["res://.godot/imported/bobbycar_horn-006.wav-f3eeea4e38fdfd2c2985dd42f699b1b1.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=2

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dfpk2vihkyeft"
path="res://.godot/imported/bobbycar_horn-007.wav-29c2e522e23b3bb16f5e0805ac7bde79.sample"
[deps]
source_file="res://sounds/horn/bobbycar_horn-007.wav"
dest_files=["res://.godot/imported/bobbycar_horn-007.wav-29c2e522e23b3bb16f5e0805ac7bde79.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=2

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 2 KiB

BIN
sprites/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

34
sprites/icon.png.import Normal file
View file

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