Compare commits
17 commits
Author | SHA1 | Date | |
---|---|---|---|
ad18cab2ad | |||
9d7dee7404 | |||
4fe193ec26 | |||
3b71d0b3ed | |||
ff6abb0a94 | |||
b3245eba93 | |||
7f4f8433fb | |||
b39ae55230 | |||
c3d9e08ae9 | |||
bc2aa0ba2c | |||
1efbf8df4f | |||
921db0e9eb | |||
3bbbbf7567 | |||
a545b8134f | |||
35adc2315d | |||
55ff74065d | |||
8efe7f7bac |
132
README.md
Normal 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
After Width: | Height: | Size: 5.2 KiB |
34
icon.png.import
Normal 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
|
|
@ -12,7 +12,7 @@ config_version=5
|
|||
|
||||
config/name="One-Button Racing"
|
||||
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"
|
||||
|
||||
[autoload]
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
[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" path="res://scripts/car.gd" id="1_i5tet"]
|
||||
[ext_resource type="Script" uid="uid://bft67fimys37h" path="res://scripts/car_node.gd" id="1_0tin3"]
|
||||
[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://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="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://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"]
|
||||
|
@ -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://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="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://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"]
|
||||
|
@ -84,8 +84,8 @@ tracks/0/keys = {
|
|||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_55lyd"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_3soig"),
|
||||
"show_rounds": SubResource("Animation_wl2vo")
|
||||
&"RESET": SubResource("Animation_3soig"),
|
||||
&"show_rounds": SubResource("Animation_wl2vo")
|
||||
}
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_0d1y1"]
|
||||
|
@ -216,7 +216,7 @@ script = ExtResource("5_vheit")
|
|||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="CharacterBody_Car"]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_55lyd")
|
||||
&"": SubResource("AnimationLibrary_55lyd")
|
||||
}
|
||||
|
||||
[node name="Enginesound" parent="CharacterBody_Car" instance=ExtResource("6_v21se")]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[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"]
|
||||
buffer_length = 0.05
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[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" path="res://scripts/times.gd" id="2_80mhm"]
|
||||
[ext_resource type="Script" uid="uid://d1q0abyr2mlcd" path="res://scripts/game.gd" id="1_7syh4"]
|
||||
[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://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"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_fgk0n"),
|
||||
"fast": SubResource("Animation_2q66f"),
|
||||
"normal": SubResource("Animation_52fxl")
|
||||
&"RESET": SubResource("Animation_fgk0n"),
|
||||
&"fast": SubResource("Animation_2q66f"),
|
||||
&"normal": SubResource("Animation_52fxl")
|
||||
}
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e0d0g"]
|
||||
|
@ -200,7 +200,7 @@ tracks/0/keys = {
|
|||
"times": PackedFloat32Array(0, 0.7, 2),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"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/imported = false
|
||||
|
@ -264,8 +264,7 @@ tracks/1/keys = {
|
|||
"times": PackedFloat32Array(0, 1, 2, 3),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 1,
|
||||
"values": ["3", "2
|
||||
", "1", "Go!"]
|
||||
"values": ["3", "2", "1", "Go!"]
|
||||
}
|
||||
tracks/2/type = "method"
|
||||
tracks/2/imported = false
|
||||
|
@ -351,10 +350,10 @@ tracks/1/keys = {
|
|||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_wuihg"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_ph30r"),
|
||||
"game_end": SubResource("Animation_gjxtp"),
|
||||
"game_start": SubResource("Animation_5vgpy"),
|
||||
"show_splittime": SubResource("Animation_60fqb")
|
||||
&"RESET": SubResource("Animation_ph30r"),
|
||||
&"game_end": SubResource("Animation_gjxtp"),
|
||||
&"game_start": SubResource("Animation_5vgpy"),
|
||||
&"show_splittime": SubResource("Animation_60fqb")
|
||||
}
|
||||
|
||||
[node name="Game" type="Node2D"]
|
||||
|
@ -365,7 +364,7 @@ script = ExtResource("1_7syh4")
|
|||
[node name="carpreset_animations" type="AnimationPlayer" parent="hud"]
|
||||
root_node = NodePath("../..")
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_dbd4v")
|
||||
&"": SubResource("AnimationLibrary_dbd4v")
|
||||
}
|
||||
|
||||
[node name="label_fast" type="Label" parent="hud/carpreset_animations"]
|
||||
|
@ -422,23 +421,6 @@ text = "3"
|
|||
horizontal_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"]
|
||||
modulate = Color(1, 1, 1, 0)
|
||||
anchors_preset = 8
|
||||
|
@ -466,6 +448,22 @@ offset_right = 1190.0
|
|||
offset_bottom = 682.0
|
||||
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"]
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
|
@ -474,18 +472,28 @@ anchor_right = 0.5
|
|||
anchor_bottom = 0.5
|
||||
offset_left = -483.861
|
||||
offset_top = -287.132
|
||||
offset_right = -354.861
|
||||
offset_right = -148.861
|
||||
offset_bottom = -173.132
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = SubResource("Theme_lsv84")
|
||||
alignment = 1
|
||||
script = ExtResource("2_80mhm")
|
||||
|
||||
[node name="game_hud_animations" type="AnimationPlayer" parent="hud"]
|
||||
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="cars" type="Node" parent="."]
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
[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="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="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="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://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"]
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
[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="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://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="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://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"]
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
[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://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="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://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="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://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"]
|
||||
|
@ -28,7 +28,7 @@
|
|||
size = Vector2(32, 128)
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_uys5r"]
|
||||
size = Vector2(32, 64)
|
||||
size = Vector2(32, 115)
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_82iti"]
|
||||
size = Vector2(32, 128)
|
||||
|
@ -50,7 +50,7 @@ texture = ExtResource("1_y1cwa")
|
|||
|
||||
[node name="Line2D2_right" type="Line2D" parent="."]
|
||||
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
|
||||
width = 6.0
|
||||
texture = ExtResource("2_8k47d")
|
||||
|
@ -67,7 +67,7 @@ texture_mode = 1
|
|||
|
||||
[node name="Line2D2_left" type="Line2D" parent="."]
|
||||
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
|
||||
width = 6.0
|
||||
texture = ExtResource("2_8k47d")
|
||||
|
@ -102,7 +102,7 @@ collision_layer = 4
|
|||
collision_mask = 4
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="area_cp1"]
|
||||
position = Vector2(224, 576)
|
||||
position = Vector2(247, 652.5)
|
||||
shape = SubResource("RectangleShape2D_uys5r")
|
||||
debug_color = Color(0.371138, 0.615246, 1.54018e-06, 0.42)
|
||||
|
||||
|
@ -138,7 +138,7 @@ position = Vector2(-448, 95)
|
|||
texture = ExtResource("9_djfug")
|
||||
|
||||
[node name="FieldsBush003" type="Sprite2D" parent="Scenery2D"]
|
||||
position = Vector2(544, 159)
|
||||
position = Vector2(507, 165)
|
||||
texture = ExtResource("10_xr588")
|
||||
|
||||
[node name="FieldsBush004" type="Sprite2D" parent="Scenery2D"]
|
||||
|
@ -146,7 +146,7 @@ position = Vector2(87, 591)
|
|||
texture = ExtResource("11_kmule")
|
||||
|
||||
[node name="FieldsBush005" type="Sprite2D" parent="Scenery2D"]
|
||||
position = Vector2(352, 607)
|
||||
position = Vector2(369, 587)
|
||||
texture = ExtResource("8_4etr5")
|
||||
|
||||
[node name="FieldsBush006" type="Sprite2D" parent="Scenery2D"]
|
||||
|
@ -158,11 +158,11 @@ position = Vector2(-256, 383)
|
|||
texture = ExtResource("9_djfug")
|
||||
|
||||
[node name="FieldsBush008" type="Sprite2D" parent="Scenery2D"]
|
||||
position = Vector2(-237, 264)
|
||||
position = Vector2(-238, 303)
|
||||
texture = ExtResource("10_xr588")
|
||||
|
||||
[node name="FieldsBush009" type="Sprite2D" parent="Scenery2D"]
|
||||
position = Vector2(-438, 473)
|
||||
position = Vector2(-446, 435)
|
||||
texture = ExtResource("11_kmule")
|
||||
|
||||
[node name="FieldsBush010" type="Sprite2D" parent="Scenery2D"]
|
||||
|
@ -170,12 +170,12 @@ position = Vector2(224, 319)
|
|||
texture = ExtResource("10_xr588")
|
||||
|
||||
[node name="FieldsAnimal001" type="Sprite2D" parent="Scenery2D"]
|
||||
position = Vector2(234, 634)
|
||||
position = Vector2(239, 746)
|
||||
scale = Vector2(0.246732, 0.246732)
|
||||
texture = ExtResource("13_7sh31")
|
||||
|
||||
[node name="FieldsAnimal002" type="Sprite2D" parent="Scenery2D"]
|
||||
position = Vector2(127, 679)
|
||||
position = Vector2(112, 666)
|
||||
scale = Vector2(0.2475, 0.2475)
|
||||
texture = ExtResource("14_dp5oa")
|
||||
|
||||
|
@ -188,11 +188,11 @@ position = Vector2(-32, 95)
|
|||
texture = ExtResource("2_jpevj")
|
||||
|
||||
[node name="FieldsFlower023" type="Sprite2D" parent="Scenery2D"]
|
||||
position = Vector2(-272, 281)
|
||||
position = Vector2(-268, 331)
|
||||
texture = ExtResource("2_jpevj")
|
||||
|
||||
[node name="FieldsFlower013" type="Sprite2D" parent="Scenery2D"]
|
||||
position = Vector2(500, 78)
|
||||
position = Vector2(469, 84)
|
||||
texture = ExtResource("2_jpevj")
|
||||
|
||||
[node name="FieldsFlower014" type="Sprite2D" parent="Scenery2D"]
|
||||
|
@ -295,7 +295,7 @@ position = Vector2(829, 557)
|
|||
texture = ExtResource("19_p0gwi")
|
||||
|
||||
[node name="FieldsBush022" type="Sprite2D" parent="Scenery2D"]
|
||||
position = Vector2(545.75, 703.441)
|
||||
position = Vector2(553, 717)
|
||||
scale = Vector2(1.36992, 1.36992)
|
||||
texture = ExtResource("18_3gxm6")
|
||||
|
||||
|
@ -321,7 +321,7 @@ texture = ExtResource("17_jtvuw")
|
|||
texture_mode = 1
|
||||
|
||||
[node name="line2d_cp1" type="Line2D" parent="Node2D_Roadmarkings"]
|
||||
points = PackedVector2Array(239, 549, 238, 603)
|
||||
points = PackedVector2Array(253, 595, 252, 705)
|
||||
width = 16.0
|
||||
texture = ExtResource("17_jtvuw")
|
||||
texture_mode = 1
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
[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="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://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="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://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"]
|
||||
|
@ -56,7 +56,7 @@ texture = ExtResource("1_ck4s5")
|
|||
|
||||
[node name="Line2D2_right" type="Line2D" parent="."]
|
||||
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
|
||||
width = 6.0
|
||||
texture = ExtResource("2_0ms3p")
|
||||
|
@ -73,7 +73,7 @@ texture_mode = 1
|
|||
|
||||
[node name="Line2D2_left" type="Line2D" parent="."]
|
||||
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
|
||||
width = 6.0
|
||||
texture = ExtResource("2_0ms3p")
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
[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://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="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="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://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"]
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
[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://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://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://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"]
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
[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="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="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="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://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"]
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
[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="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="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="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://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"]
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
|
||||
[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="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://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://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)
|
||||
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"]
|
||||
size = Vector2(23, 327)
|
||||
|
||||
|
@ -212,7 +214,7 @@ visible = false
|
|||
position = Vector2(30, -363)
|
||||
rotation = -3.14159
|
||||
scale = Vector2(2.09269, 2.09269)
|
||||
texture = ExtResource("3_ytr3a")
|
||||
texture = SubResource("Resource_ncnur")
|
||||
|
||||
[node name="Line2D_right_inside" type="Line2D" parent="."]
|
||||
z_index = 1
|
||||
|
|
|
@ -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" 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://sngr878yi4e2" path="res://scripts/menu.gd" id="1_fushn"]
|
||||
[ext_resource type="Script" uid="uid://5j77s0sni4jr" path="res://scripts/menudisplay.gd" id="2_jc4pv"]
|
||||
[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://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://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://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://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://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"]
|
||||
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"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_7lydi"),
|
||||
"menu_idle": SubResource("Animation_y58ke")
|
||||
&"RESET": SubResource("Animation_7lydi"),
|
||||
&"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"]
|
||||
script = ExtResource("1_fushn")
|
||||
|
||||
|
@ -105,7 +122,6 @@ offset_right = 517.0
|
|||
offset_bottom = 637.245
|
||||
|
||||
[node name="VBoxContainer_Playerlist" type="VBoxContainer" parent="MenuDisplay/MarginContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme = SubResource("Theme_eo4i1")
|
||||
|
||||
|
@ -314,19 +330,28 @@ texture = ExtResource("6_wj8p2")
|
|||
texture = ExtResource("7_duvwv")
|
||||
|
||||
[node name="btn_fullscreen" type="CheckButton" parent="MenuDisplay"]
|
||||
offset_left = 845.0
|
||||
offset_top = 539.0
|
||||
offset_right = 972.0
|
||||
offset_bottom = 570.0
|
||||
offset_left = 897.0
|
||||
offset_top = 547.0
|
||||
offset_right = 998.0
|
||||
offset_bottom = 572.0
|
||||
scale = Vector2(2, 2)
|
||||
theme_override_constants/outline_size = 10
|
||||
theme_override_constants/icon_max_width = 25
|
||||
theme_override_font_sizes/font_size = 12
|
||||
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"]
|
||||
offset_left = 936.0
|
||||
offset_top = 605.0
|
||||
offset_right = 1085.0
|
||||
offset_bottom = 636.0
|
||||
offset_left = 940.0
|
||||
offset_top = 600.0
|
||||
offset_right = 1089.0
|
||||
offset_bottom = 631.0
|
||||
text = "Save Key Whitelist"
|
||||
|
||||
[node name="map_container" type="HFlowContainer" parent="MenuDisplay"]
|
||||
|
@ -367,11 +392,6 @@ layout_mode = 2
|
|||
toggle_mode = true
|
||||
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"]
|
||||
offset_left = 690.0
|
||||
offset_top = 556.0
|
||||
|
@ -379,6 +399,7 @@ offset_right = 732.0
|
|||
offset_bottom = 587.0
|
||||
item_count = 5
|
||||
popup/item_0/text = "1"
|
||||
popup/item_0/id = 0
|
||||
popup/item_1/text = "2"
|
||||
popup/item_1/id = 1
|
||||
popup/item_2/text = "3"
|
||||
|
@ -400,7 +421,7 @@ text = "Rounds:"
|
|||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="MenuDisplay"]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_08km3")
|
||||
&"": SubResource("AnimationLibrary_08km3")
|
||||
}
|
||||
autoplay = "menu_idle"
|
||||
|
||||
|
@ -425,8 +446,16 @@ text = "Hold Button to join"
|
|||
[node name="Timer" type="Timer" parent="."]
|
||||
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="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="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"]
|
||||
|
|
|
@ -9,9 +9,16 @@ func _ready() -> void:
|
|||
config.set_value("keywhitelist", "enabled", 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", "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)
|
||||
else:
|
||||
|
|
|
@ -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/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()
|
||||
|
||||
var phase_rotation = 0.0
|
||||
|
|
|
@ -16,6 +16,7 @@ extends Node2D
|
|||
@onready var highscore_label: Label = $hud/highscore_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
|
||||
|
@ -48,6 +49,7 @@ var carpreset="normal" # normal, fast
|
|||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
|
||||
|
||||
Gamestate.resetTimeElapsed()
|
||||
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.
|
||||
func _process(delta: float) -> void:
|
||||
fps_label.text=str(round(1.0/delta))
|
||||
if running:
|
||||
Gamestate.addTimeElapsed(delta)
|
||||
#if !countdown.is_stopped():
|
||||
|
@ -155,7 +158,17 @@ func checkCarsTimeout(delta: float):
|
|||
if !c.hasFinished() and c.getNoInputTimeout():
|
||||
print("Removing car")
|
||||
c.queue_free()
|
||||
if cars.size()<=0 and !game_ended: #no cars left
|
||||
if !game_ended:
|
||||
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):
|
||||
|
@ -265,7 +278,7 @@ func _on_car_finished(playerid,finalTime) -> void:
|
|||
finishGame()# Game finished
|
||||
|
||||
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
|
||||
var timediff = checkpointtimes[i]-highscorecheckpointtimes[i]
|
||||
|
@ -315,8 +328,8 @@ func finishGame():
|
|||
highscore_label.text=="+"+str(timediff)
|
||||
highscore_label.modulate=Color(200,200,0)
|
||||
elif timediff<0: #new highscore
|
||||
highscore_label.text=str(timediff)
|
||||
highscore_label.modulate=Color(0,0,200)
|
||||
highscore_label.text="New Highscore\n"+str(timediff)
|
||||
highscore_label.modulate=Color(0,200,0)
|
||||
elif timediff>0: #worse time
|
||||
highscore_label.text="+"+str(timediff)
|
||||
highscore_label.modulate=Color(200,0,0)
|
||||
|
|
|
@ -14,22 +14,35 @@ var map_scene_path_prefix="res://scenes/"
|
|||
var map_scene_name_prefix="map_"
|
||||
var map_scene_name_postfix=".tscn"
|
||||
|
||||
var rounds=3
|
||||
var rounds:int=0 #if 0, load from file
|
||||
|
||||
var carpreset="normal"
|
||||
|
||||
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 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
|
||||
|
||||
func setRounds(r):
|
||||
print("Rounds set to "+str(r))
|
||||
ConfigFileHandler.save_general_setting("rounds",r)
|
||||
rounds=r
|
||||
|
||||
func getRemoveCarsTimeout():
|
||||
|
@ -47,6 +60,8 @@ func setCarPreset(p:String):
|
|||
|
||||
func setAutomaticMapChangeAfter(v):
|
||||
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"
|
||||
return map_scene_name
|
||||
|
@ -86,11 +101,11 @@ func setColorwheelstepByPlayernum(playernum:int):
|
|||
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
|
||||
if not getPlayerkeys().has(key): #key is not yet registered
|
||||
var prefered_colori=0
|
||||
var overridecolor=null
|
||||
var overridecolor:Color=Color(0,0,0,0)
|
||||
var setrank=((randf()-0.5)/10.0)+0.5
|
||||
for p in last_players:
|
||||
if p.inputkey==key: #key was used in last round
|
||||
|
@ -104,10 +119,10 @@ func addPlayer(key:int,poverridecolor=null):
|
|||
prefered_colori+=1
|
||||
|
||||
var newplayer: Player = Player.new(key,prefered_colori)
|
||||
if overridecolor!=null:
|
||||
if overridecolor.a>0:
|
||||
newplayer.setOverrideColor(overridecolor)
|
||||
newplayer.rank=setrank
|
||||
if poverridecolor!=null:
|
||||
if poverridecolor.a>0:
|
||||
print("play key "+str(key)+" overridecolor="+str(poverridecolor))
|
||||
newplayer.setOverrideColor(poverridecolor)
|
||||
players.append(newplayer)
|
||||
|
|
|
@ -16,8 +16,9 @@ func _ready() -> void:
|
|||
if len(Gamestate.getSelectedMap())<=0: #no map selected (ie on startup)
|
||||
get_children()[0].emit_signal("pressed") #preselect first map in list
|
||||
else:
|
||||
if Gamestate.automatic_map_change_after>0:
|
||||
Gamestate.automatic_map_change_in-=1
|
||||
if Gamestate.automatic_map_change_in<=0: #do automatic mapchange
|
||||
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
|
||||
var 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
|
||||
next_map_pick.emit_signal("pressed")
|
||||
Gamestate.automatic_map_change_in=saved_automatic_map_change_in
|
||||
else: #no automatic mapchange mapchange
|
||||
else: #no automatic mapchange
|
||||
for c in get_children():
|
||||
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
|
||||
|
|
|
@ -5,11 +5,14 @@ extends Node
|
|||
var keywhitelist
|
||||
#var playeroverridecolors
|
||||
|
||||
@onready var sfx: Node = $SFX
|
||||
|
||||
var keyHolddownQueue = {}
|
||||
|
||||
const KEY_HOLDDOWN_TO_ENTER_TIME=500 #in milliseconds
|
||||
|
||||
func _ready():
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
|
||||
removeAssignedKeys()
|
||||
Gamestate.removeAllPlayers()
|
||||
$Timer.stop()
|
||||
|
@ -20,6 +23,8 @@ func _ready():
|
|||
Gamestate.setRemoveCarsTimeout(ConfigFileHandler.get_general_setting("remove_cars_timeout"))
|
||||
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
|
||||
btn_save_whitelist.disabled=keywhitelist.size()>0 #whitelist enabled, then disable save whitelist button
|
||||
btn_save_whitelist.visible=!keywhitelist.size()>0
|
||||
|
@ -27,6 +32,7 @@ func _ready():
|
|||
Gamestate.setColorwheelstepByPlayernum(keywhitelist.size())
|
||||
|
||||
|
||||
|
||||
#playeroverridecolors=ConfigFileHandler.get_playeroverridecolors_setting()
|
||||
#print("playeroverridecolors="+str(playeroverridecolors))
|
||||
|
||||
|
@ -72,7 +78,7 @@ func _unhandled_key_input(event: InputEvent) -> void:
|
|||
|
||||
func _on_timer_timeout() -> void: #Start Game
|
||||
print("Game starting")
|
||||
if (randi() % 3 == 0):
|
||||
if (randi() % 100 <= Gamestate.getFastModeChance()*100):
|
||||
Gamestate.setCarPreset("fast")
|
||||
else:
|
||||
Gamestate.setCarPreset("normal")
|
||||
|
@ -92,6 +98,9 @@ func _process(delta: float) -> void:
|
|||
print("Key added. keycode:"+str(queuedKey))
|
||||
var addedID=Gamestate.addPlayer(queuedKey)
|
||||
|
||||
sfx.playAddPlayerSound()
|
||||
|
||||
|
||||
$MenuDisplay.update_playerlist(Gamestate.players,queuedKey,"explode")
|
||||
|
||||
|
||||
|
@ -131,8 +140,15 @@ func _on_map_container_map_changed() -> void:
|
|||
$Timer.start()
|
||||
|
||||
|
||||
func _on_button_pressed() -> void:
|
||||
func _on_btn_save_whitelist_pressed() -> void:
|
||||
if len(Gamestate.getPlayerkeys())>=1:
|
||||
var _playerkeys=Gamestate.getPlayerkeys()
|
||||
print("Keys ="+str(_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
|
@ -0,0 +1,5 @@
|
|||
extends Node
|
||||
|
||||
func playAddPlayerSound():
|
||||
$horn.play()
|
||||
|
|
@ -2,15 +2,27 @@ extends Node2D
|
|||
|
||||
const ADD_STEP_OUTLINESIZE=30
|
||||
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
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
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.
|
||||
func updateCountdown(t):
|
||||
func updateCountdown(t:int):
|
||||
if (t<0):
|
||||
$countdown.visible=false
|
||||
else:
|
||||
|
@ -31,11 +43,19 @@ func update_playerlist(players:Array[Gamestate.Player],flashplayer_keycode=-1,ef
|
|||
PlayerSprite.visible=true
|
||||
if (p.inputkey==flashplayer_keycode): #this player should show an animation
|
||||
if effect=="blink":
|
||||
if animate_outline_on_press:
|
||||
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 animate_outline_on_press:
|
||||
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 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:
|
||||
var Playerlabels=$MarginContainer/VBoxContainer_Playerlist.get_children()
|
||||
var i=0
|
||||
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)
|
||||
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=""
|
||||
|
||||
|
|
|
@ -3,12 +3,7 @@ extends OptionButton
|
|||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
var selectedRounds=Gamestate.getRounds()
|
||||
select(selectedRounds-1) #preselect rounds
|
||||
Gamestate.setRounds(selectedRounds)
|
||||
|
||||
|
||||
|
||||
select(Gamestate.getRounds()-1)
|
||||
|
||||
func _on_item_selected(index: int) -> void:
|
||||
Gamestate.setRounds(index+1)
|
||||
|
|
BIN
sounds/horn/bobbycar_horn-001.wav
Normal file
24
sounds/horn/bobbycar_horn-001.wav.import
Normal 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
|
BIN
sounds/horn/bobbycar_horn-002.wav
Normal file
24
sounds/horn/bobbycar_horn-002.wav.import
Normal 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
|
BIN
sounds/horn/bobbycar_horn-003.wav
Normal file
24
sounds/horn/bobbycar_horn-003.wav.import
Normal 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
|
BIN
sounds/horn/bobbycar_horn-004.wav
Normal file
24
sounds/horn/bobbycar_horn-004.wav.import
Normal 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
|
BIN
sounds/horn/bobbycar_horn-005.wav
Normal file
24
sounds/horn/bobbycar_horn-005.wav.import
Normal 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
|
BIN
sounds/horn/bobbycar_horn-006.wav
Normal file
24
sounds/horn/bobbycar_horn-006.wav.import
Normal 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
|
BIN
sounds/horn/bobbycar_horn-007.wav
Normal file
24
sounds/horn/bobbycar_horn-007.wav.import
Normal 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
|
Before Width: | Height: | Size: 7 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 2 KiB |
BIN
sprites/icon.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
34
sprites/icon.png.import
Normal 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
|