From 55499832f9e9eeb3c071b3070a74faa832be12a8 Mon Sep 17 00:00:00 2001 From: Fisch Date: Mon, 24 Mar 2025 22:06:50 +0100 Subject: [PATCH] add preset speed mode functions --- scenes/game.tscn | 18 +++++++++++++++--- scenes/map_00.tscn | 28 ++++++++++++++++++++++++---- scripts/car.gd | 26 ++++++++++++++++++++------ scripts/car_node.gd | 6 ++++++ scripts/game.gd | 11 +++++++---- 5 files changed, 72 insertions(+), 17 deletions(-) diff --git a/scenes/game.tscn b/scenes/game.tscn index b918873..fa20723 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -271,6 +271,18 @@ tracks/0/keys = { "update": 0, "values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] } +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("countdown_label:self_modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 0)] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_wuihg"] _data = { @@ -289,10 +301,10 @@ script = ExtResource("1_7syh4") visible = false z_index = 8 offset_left = 14.0 -offset_top = 535.0 +offset_top = 483.0 offset_right = 430.0 -offset_bottom = 580.0 -theme_override_font_sizes/font_size = 20 +offset_bottom = 604.0 +theme_override_font_sizes/font_size = 50 text = "adsf" vertical_alignment = 1 diff --git a/scenes/map_00.tscn b/scenes/map_00.tscn index 7aeae98..5bc9352 100644 --- a/scenes/map_00.tscn +++ b/scenes/map_00.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=35 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="Script" path="res://scripts/map_settings.gd" id="1_7xl02"] @@ -30,9 +30,10 @@ [ext_resource type="Texture2D" uid="uid://c6yd5j7dsnrhc" path="res://sprites/smooth_fields/fields_flower_009.png" id="23_qsqn3"] [ext_resource type="Texture2D" uid="uid://c02dmvpb7541n" path="res://sprites/smooth_fields/fields_flower_013.png" id="24_joq8i"] [ext_resource type="Texture2D" uid="uid://cx2uy8puk15v5" path="res://sprites/smooth_fields/fields_flower_015.png" id="25_ituuu"] +[ext_resource type="Texture2D" uid="uid://do3gd2qodpq66" path="res://sprites/road/checkpoint.png" id="31_7cme3"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_dltky"] -size = Vector2(64, 128) +size = Vector2(12, 128) [sub_resource type="RectangleShape2D" id="RectangleShape2D_uys5r"] size = Vector2(64, 192) @@ -90,6 +91,7 @@ texture = ExtResource("4_s7foq") texture_mode = 1 [node name="Road" type="Polygon2D" parent="." node_paths=PackedStringArray("line_road_left", "line_road_right")] +position = Vector2(0, 2) color = Color(0.314316, 0.314316, 0.314316, 1) script = ExtResource("5_g15mv") line_road_left = NodePath("../Line2D2_left") @@ -100,7 +102,7 @@ collision_layer = 4 collision_mask = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="area_cp0"] -position = Vector2(480, 0) +position = Vector2(455, 0) shape = SubResource("RectangleShape2D_dltky") debug_color = Color(0.958025, 0, 0.529392, 0.42) @@ -127,7 +129,7 @@ collision_layer = 4 collision_mask = 4 [node name="CollisionShape2D_Fin" type="CollisionShape2D" parent="area_finish"] -position = Vector2(144, 0) +position = Vector2(114, 0) shape = SubResource("RectangleShape2D_daqun") debug_color = Color(1, 1, 1, 0.42) @@ -444,3 +446,21 @@ points = PackedVector2Array(128, -48, 128, 48) width = 16.0 texture = ExtResource("7_03lti") texture_mode = 1 + +[node name="line2d_cp0" type="Line2D" parent="Node2D_Roadmarkings"] +points = PackedVector2Array(448, -48, 448, 48) +width = 16.0 +texture = ExtResource("31_7cme3") +texture_mode = 1 + +[node name="line2d_cp1" type="Line2D" parent="Node2D_Roadmarkings"] +points = PackedVector2Array(320, 336, 320, 496) +width = 16.0 +texture = ExtResource("31_7cme3") +texture_mode = 1 + +[node name="line2d_cp2" type="Line2D" parent="Node2D_Roadmarkings"] +points = PackedVector2Array(-528, 160, -624, 160) +width = 16.0 +texture = ExtResource("31_7cme3") +texture_mode = 1 diff --git a/scripts/car.gd b/scripts/car.gd index 660239b..1a25e9c 100644 --- a/scripts/car.gd +++ b/scripts/car.gd @@ -24,22 +24,24 @@ const MIN_CRASH_VELOCITY=10 const STANDSTILLSPEED=0.5 var wheel_base = 60*0.5 -var engine_power = 350 -#var engine_power = 1000 #crazy mode + var applied_engine_power=0 + +var engine_power = 350 +#var engine_power = 1000 #crazy mode var friction = -0.5 var drag = -0.0005 -var braking = -200 +var braking = -250 #was 200 #var braking = -600 #crazy mode var max_speed_reverse = 100 var slip_speed = 150 var traction_fast = 0.05 #traction when above slip_speed var traction_slow = 0.5 -var max_steering_change = 2.5 -var turndirection_scale = 0.01 +var max_steering_change = 5.0 +var turndirection_scale = 0.01 #Automatic Steering settings @@ -284,7 +286,7 @@ func get_input(delta:float): if autoreset and running: acceleration = transform.x * braking #drive backwards steer_direction_aim=resetcar_steerangle #keep steering to turn around if standing in the middle of a track - steer_direction=steer_direction_aim #steer without smoothing + #steer_direction=steer_direction_aim #steer without smoothing else: if steer_direction_aim<0.1: resetcar_steerangle=max(-resetcar_steerangle,+resetcar_steerangle) #calculate steering direction for next autoreset @@ -382,3 +384,15 @@ func _on_collision_enable_timer_timeout() -> void: func _on_no_input_timer_timeout() -> void: no_input_timeout_flag=true running=false + +func applyPresetNormal() -> void: + engine_power = 350 + braking = -250 + steering_speed_fast = 400 + + +func applyPresetFast() -> void: + engine_power = 700 + braking = -300 + steering_speed_fast = 3*400 + diff --git a/scripts/car_node.gd b/scripts/car_node.gd index 8e2018d..2d56415 100644 --- a/scripts/car_node.gd +++ b/scripts/car_node.gd @@ -7,6 +7,12 @@ var reference_gamestateplayer func setMapRounds(r:int): $CharacterBody_Car/label_round.map_rounds=r +func setPreset(p:String): + if p=="normal": + cbcar.applyPresetNormal() + elif p=="fast": + cbcar.applyPresetFast() + func getSpeed() -> float: return cbcar.velocity.length() diff --git a/scripts/game.gd b/scripts/game.gd index ec584ee..9468481 100644 --- a/scripts/game.gd +++ b/scripts/game.gd @@ -39,6 +39,9 @@ var game_ended=false var map_rounds:int=1 +#var carpreset="normal" +var carpreset="fast" + # Called when the node enters the scene tree for the first time. @@ -47,8 +50,6 @@ func _ready() -> void: Gamestate.resetTimeElapsed() map_rounds=Gamestate.getRounds() #load round number from menu - - #countdown.start() game_hud_animations.play("game_start") #countdown_label.visible=true @@ -88,6 +89,7 @@ func _ready() -> void: newcarinstance.getCharacterBody().car_finished.connect(_on_car_finished) newcarinstance.getCharacterBody().car_on_checkpoint.connect(_on_car_on_checkpoint) newcarinstance.setMapRounds(map_rounds) #give information to each car (to show correct rounds number) + newcarinstance.setPreset(carpreset) var startmarker:Sprite2D=mapsceneinstance.get_node("startmarker") if startmarker != null: @@ -101,7 +103,7 @@ func _ready() -> void: print("i_position="+str(i_position)+" carpos is ="+str(newcarinstance.getPosition())+" instancepos="+str(newcarinstance.position)+" colori="+str(player.colori)+" color="+str(player.color)) i+=1 - highscorecheckpointtimes=HighscoreHandler.loadHighcoreCheckpoints(Gamestate.getSelectedMapName(),"normal",str(map_rounds)) + highscorecheckpointtimes=HighscoreHandler.loadHighcoreCheckpoints(Gamestate.getSelectedMapName(),carpreset,str(map_rounds)) func custom_array_sort_rank(a, b): @@ -120,6 +122,7 @@ func _process(delta: float) -> void: #$hud/debuglabel.text=""+str(calculatedViewCarMargin)+" / "+str(viewCarMargin_zoomstart)+" zoomspeed="+str(mapped_zoomspeed) #$hud/debuglabel.text=""+str(calculatedViewCarMargin)+" / "+str(viewsize)+" zoomspeed="+str(mapped_zoomspeed) + $hud/debuglabel.text=""+str($cars.get_child(0).getCharacterBody().velocity.length()) $hud/timer.text=str(round(Gamestate.getTimeElapsed()*1000)/1000.0) @@ -297,7 +300,7 @@ func finishGame(): if Gamestate.getPlayers().size()==1: #was played in singleplayer - var timediff=HighscoreHandler.updateHighscore(Gamestate.getSelectedMapName(),"normal",str(map_rounds),getfinalTimeByPlayer(Gamestate.getPlayers()[0]),getcheckpointtimesByPlayer(Gamestate.getPlayers()[0])) + var timediff=HighscoreHandler.updateHighscore(Gamestate.getSelectedMapName(),carpreset,str(map_rounds),getfinalTimeByPlayer(Gamestate.getPlayers()[0]),getcheckpointtimesByPlayer(Gamestate.getPlayers()[0])) print("Timediff="+str(timediff)) timediff=round(timediff*1000)/1000 highscore_label.visible=true