change start placement based on ranking
This commit is contained in:
parent
bc53034a1c
commit
45e337b295
6 changed files with 63 additions and 16 deletions
|
@ -193,6 +193,7 @@ sources/0 = SubResource("TileSetAtlasSource_hclam")
|
||||||
[node name="Map" type="Node"]
|
[node name="Map" type="Node"]
|
||||||
|
|
||||||
[node name="Background" type="TileMapLayer" parent="."]
|
[node name="Background" type="TileMapLayer" parent="."]
|
||||||
|
visible = false
|
||||||
tile_map_data = PackedByteArray("AAD6//z/AQAAAAAAAAD6//3/AQAAAAAAAAD6//7/AQAAAAAAAAD6////AQAAAAAAAAD6/wAAAQAAAAAAAAD6/wEAAQAAAAAAAAD6/wIAAQAAAAAAAAD6/wMAAQAAAAAAAAD6/wQAAQAAAAAAAAD6/wUAAQAAAAAAAAD6/wYAAQAAAAAAAAD6/wcAAQAAAAAAAAD7//z/AQAAAAAAAAD7//3/AQAAAAAAAAD7//7/AQAAAAAAAAD7////AQAAAAAAAAD7/wAAAQAAAAAAAAD7/wEAAQAAAAAAAAD7/wIAAQAAAAAAAAD7/wMAAQAAAAAAAAD7/wQAAQAAAAAAAAD7/wUAAQAAAAAAAAD7/wYAAQAAAAAAAAD7/wcAAQAAAAAAAAD8//z/AQAAAAAAAAD8//3/AQAAAAAAAAD8//7/AQAAAAAAAAD8////AQAAAAAAAAD8/wAAAQAAAAAAAAD8/wEAAQAAAAAAAAD8/wIAAQAAAAAAAAD8/wMAAQAAAAAAAAD8/wQAAQAAAAAAAAD8/wUAAQAAAAAAAAD8/wYAAQAAAAAAAAD8/wcAAQAAAAAAAAD9//z/AQAAAAAAAAD9//3/AQAAAAAAAAD9//7/AQAAAAAAAAD9////AQAAAAAAAAD9/wAAAQAAAAAAAAD9/wEAAQAAAAAAAAD9/wIAAQAAAAAAAAD9/wMAAQAAAAAAAAD9/wQAAQAAAAAAAAD9/wUAAQAAAAAAAAD9/wYAAQAAAAAAAAD9/wcAAQAAAAAAAAD+//z/AQAAAAAAAAD+//3/AQAAAAAAAAD+//7/AQAAAAAAAAD+////AQAAAAAAAAD+/wAAAQAAAAAAAAD+/wEAAQABAAAAAAD+/wIAAQAAAAAAAAD+/wMAAQAAAAAAAAD+/wQAAQAAAAAAAAD+/wUAAQAAAAAAAAD+/wYAAQAAAAAAAAD+/wcAAQAAAAAAAAD///z/AQAAAAAAAAD///3/AQAAAAAAAAD///7/AQAAAAAAAAD/////AQAAAAAAAAD//wAAAQAAAAAAAAD//wEAAQABAAAAACD//wIAAQABAAAAACD//wMAAQAAAAAAAAD//wQAAQAAAAAAAAD//wUAAQAAAAAAAAD//wYAAQAAAAAAAAD//wcAAQAAAAAAAAAAAPz/AQAAAAAAAAAAAP3/AQAAAAAAAAAAAP7/AQAAAAAAAAAAAP//AQAAAAAAAAAAAAAAAQAAAAAAAAAAAAEAAQAAAAAAAAAAAAIAAQAAAAAAAAAAAAMAAQAAAAAAAAAAAAQAAQAAAAAAAAAAAAUAAQAAAAAAAAAAAAYAAQAAAAAAAAAAAAcAAQAAAAAAAAABAPz/AQAAAAAAAAABAP3/AQAAAAAAAAABAP7/AQABAAAAAAABAP//AQAAAAAAAAABAAAAAQAAAAAAAAABAAEAAQAAAAAAAAABAAIAAQAAAAAAAAABAAMAAQAAAAAAAAABAAQAAQAAAAAAAAABAAUAAQAAAAAAAAABAAYAAQAAAAAAAAABAAcAAQAAAAAAAAACAPz/AQAAAAAAAAACAP3/AQAAAAAAAAACAP7/AQAAAAAAAAACAP//AQAAAAAAAAACAAAAAQAAAAAAAAACAAEAAQABAAAAAAACAAIAAQAAAAAAAAACAAMAAQAAAAAAAAACAAQAAQAAAAAAAAACAAUAAQAAAAAAAAACAAYAAQAAAAAAAAACAAcAAQAAAAAAAAADAPz/AQAAAAAAAAADAP3/AQAAAAAAAAADAP7/AQAAAAAAAAADAP//AQAAAAAAAAADAAAAAQAAAAAAAAADAAEAAQAAAAAAAAADAAIAAQAAAAAAAAADAAMAAQAAAAAAAAADAAQAAQAAAAAAAAADAAUAAQAAAAAAAAADAAYAAQAAAAAAAAADAAcAAQAAAAAAAAAEAPz/AQAAAAAAAAAEAP3/AQAAAAAAAAAEAP7/AQAAAAAAAAAEAP//AQABAAAAACAEAAAAAQABAAAAACAEAAEAAQAAAAAAAAAEAAIAAQAAAAAAAAAEAAMAAQAAAAAAAAAEAAQAAQAAAAAAAAAEAAUAAQAAAAAAAAAEAAYAAQAAAAAAAAAEAAcAAQAAAAAAAAAFAPz/AQAAAAAAAAAFAP3/AQAAAAAAAAAFAP7/AQAAAAAAAAAFAP//AQAAAAAAAAAFAAAAAQABAAAAAAAFAAEAAQAAAAAAAAAFAAIAAQAAAAAAAAAFAAMAAQAAAAAAAAAFAAQAAQAAAAAAAAAFAAUAAQAAAAAAAAAFAAYAAQAAAAAAAAAFAAcAAQAAAAAAAAAGAPz/AQAAAAAAAAAGAP3/AQAAAAAAAAAGAP7/AQAAAAAAAAAGAP//AQAAAAAAAAAGAAAAAQAAAAAAAAAGAAEAAQAAAAAAAAAGAAIAAQAAAAAAAAAGAAMAAQAAAAAAAAAGAAQAAQAAAAAAAAAGAAUAAQAAAAAAAAAGAAYAAQAAAAAAAAAGAAcAAQAAAAAAAAAHAPz/AQAAAAAAAAAHAP3/AQAAAAAAAAAHAP7/AQAAAAAAAAAHAP//AQAAAAAAAAAHAAAAAQAAAAAAAAAHAAEAAQAAAAAAAAAHAAIAAQAAAAAAAAAHAAMAAQAAAAAAAAAHAAQAAQAAAAAAAAAHAAUAAQAAAAAAAAAHAAYAAQAAAAAAAAAHAAcAAQAAAAAAAAAIAPz/AQAAAAAAAAAIAP3/AQAAAAAAAAAIAP7/AQAAAAAAAAAIAP//AQAAAAAAAAAIAAAAAQAAAAAAAAAIAAEAAQAAAAAAAAAIAAIAAQAAAAAAAAAIAAMAAQAAAAAAAAAIAAQAAQAAAAAAAAAIAAUAAQAAAAAAAAAIAAYAAQAAAAAAAAAIAAcAAQAAAAAAAAAJAPz/AQAAAAAAAAAJAP3/AQAAAAAAAAAJAP7/AQAAAAAAAAAJAP//AQAAAAAAAAAJAAAAAQAAAAAAAAAJAAEAAQAAAAAAAAAJAAIAAQAAAAAAAAAJAAMAAQAAAAAAAAAJAAQAAQAAAAAAAAAJAAUAAQAAAAAAAAAJAAYAAQAAAAAAAAAJAAcAAQAAAAAAAAAKAPz/AQAAAAAAAAAKAP3/AQAAAAAAAAAKAP7/AQAAAAAAAAAKAP//AQAAAAAAAAAKAAAAAQAAAAAAAAAKAAEAAQAAAAAAAAAKAAIAAQAAAAAAAAAKAAMAAQAAAAAAAAAKAAQAAQAAAAAAAAAKAAUAAQAAAAAAAAAKAAYAAQAAAAAAAAAKAAcAAQAAAAAAAAD3//r/AQAAAAAAAAD3//v/AQAAAAAAAAD3//z/AQAAAAAAAAD3//3/AQAAAAAAAAD3//7/AQAAAAAAAAD3////AQAAAAAAAAD3/wAAAQAAAAAAAAD3/wEAAQAAAAAAAAD3/wIAAQAAAAAAAAD3/wMAAQAAAAAAAAD3/wQAAQAAAAAAAAD3/wUAAQAAAAAAAAD3/wYAAQAAAAAAAAD3/wcAAQAAAAAAAAD4//r/AQAAAAAAAAD4//v/AQAAAAAAAAD4//z/AQAAAAAAAAD4//3/AQAAAAAAAAD4//7/AQAAAAAAAAD4////AQAAAAAAAAD4/wAAAQAAAAAAAAD4/wEAAQAAAAAAAAD4/wIAAQAAAAAAAAD4/wMAAQAAAAAAAAD4/wQAAQAAAAAAAAD4/wUAAQAAAAAAAAD4/wYAAQAAAAAAAAD4/wcAAQAAAAAAAAD5//r/AQAAAAAAAAD5//v/AQAAAAAAAAD5//z/AQAAAAAAAAD5//3/AQAAAAAAAAD5//7/AQAAAAAAAAD5////AQAAAAAAAAD5/wAAAQAAAAAAAAD5/wEAAQAAAAAAAAD5/wIAAQAAAAAAAAD5/wMAAQAAAAAAAAD5/wQAAQAAAAAAAAD5/wUAAQAAAAAAAAD5/wYAAQAAAAAAAAD5/wcAAQAAAAAAAAD6//r/AQAAAAAAAAD6//v/AQAAAAAAAAD7//r/AQAAAAAAAAD7//v/AQAAAAAAAAD8//r/AQAAAAAAAAD8//v/AQAAAAAAAAD9//r/AQAAAAAAAAD9//v/AQAAAAAAAAD+//r/AQAAAAAAAAD+//v/AQAAAAAAAAD///r/AQAAAAAAAAD///v/AQAAAAAAAAAAAPr/AQAAAAAAAAAAAPv/AQAAAAAAAAABAPr/AQAAAAAAAAABAPv/AQAAAAAAAAACAPr/AQAAAAAAAAACAPv/AQAAAAAAAAADAPr/AQAAAAAAAAADAPv/AQAAAAAAAAAEAPr/AQAAAAAAAAAEAPv/AQAAAAAAAAAFAPr/AQAAAAAAAAAFAPv/AQAAAAAAAAAGAPr/AQAAAAAAAAAGAPv/AQAAAAAAAAAHAPr/AQAAAAAAAAAHAPv/AQAAAAAAAAAIAPr/AQAAAAAAAAAIAPv/AQAAAAAAAAAJAPr/AQAAAAAAAAAJAPv/AQAAAAAAAAAKAPr/AQAAAAAAAAAKAPv/AQAAAAAAAAA=")
|
tile_map_data = PackedByteArray("AAD6//z/AQAAAAAAAAD6//3/AQAAAAAAAAD6//7/AQAAAAAAAAD6////AQAAAAAAAAD6/wAAAQAAAAAAAAD6/wEAAQAAAAAAAAD6/wIAAQAAAAAAAAD6/wMAAQAAAAAAAAD6/wQAAQAAAAAAAAD6/wUAAQAAAAAAAAD6/wYAAQAAAAAAAAD6/wcAAQAAAAAAAAD7//z/AQAAAAAAAAD7//3/AQAAAAAAAAD7//7/AQAAAAAAAAD7////AQAAAAAAAAD7/wAAAQAAAAAAAAD7/wEAAQAAAAAAAAD7/wIAAQAAAAAAAAD7/wMAAQAAAAAAAAD7/wQAAQAAAAAAAAD7/wUAAQAAAAAAAAD7/wYAAQAAAAAAAAD7/wcAAQAAAAAAAAD8//z/AQAAAAAAAAD8//3/AQAAAAAAAAD8//7/AQAAAAAAAAD8////AQAAAAAAAAD8/wAAAQAAAAAAAAD8/wEAAQAAAAAAAAD8/wIAAQAAAAAAAAD8/wMAAQAAAAAAAAD8/wQAAQAAAAAAAAD8/wUAAQAAAAAAAAD8/wYAAQAAAAAAAAD8/wcAAQAAAAAAAAD9//z/AQAAAAAAAAD9//3/AQAAAAAAAAD9//7/AQAAAAAAAAD9////AQAAAAAAAAD9/wAAAQAAAAAAAAD9/wEAAQAAAAAAAAD9/wIAAQAAAAAAAAD9/wMAAQAAAAAAAAD9/wQAAQAAAAAAAAD9/wUAAQAAAAAAAAD9/wYAAQAAAAAAAAD9/wcAAQAAAAAAAAD+//z/AQAAAAAAAAD+//3/AQAAAAAAAAD+//7/AQAAAAAAAAD+////AQAAAAAAAAD+/wAAAQAAAAAAAAD+/wEAAQABAAAAAAD+/wIAAQAAAAAAAAD+/wMAAQAAAAAAAAD+/wQAAQAAAAAAAAD+/wUAAQAAAAAAAAD+/wYAAQAAAAAAAAD+/wcAAQAAAAAAAAD///z/AQAAAAAAAAD///3/AQAAAAAAAAD///7/AQAAAAAAAAD/////AQAAAAAAAAD//wAAAQAAAAAAAAD//wEAAQABAAAAACD//wIAAQABAAAAACD//wMAAQAAAAAAAAD//wQAAQAAAAAAAAD//wUAAQAAAAAAAAD//wYAAQAAAAAAAAD//wcAAQAAAAAAAAAAAPz/AQAAAAAAAAAAAP3/AQAAAAAAAAAAAP7/AQAAAAAAAAAAAP//AQAAAAAAAAAAAAAAAQAAAAAAAAAAAAEAAQAAAAAAAAAAAAIAAQAAAAAAAAAAAAMAAQAAAAAAAAAAAAQAAQAAAAAAAAAAAAUAAQAAAAAAAAAAAAYAAQAAAAAAAAAAAAcAAQAAAAAAAAABAPz/AQAAAAAAAAABAP3/AQAAAAAAAAABAP7/AQABAAAAAAABAP//AQAAAAAAAAABAAAAAQAAAAAAAAABAAEAAQAAAAAAAAABAAIAAQAAAAAAAAABAAMAAQAAAAAAAAABAAQAAQAAAAAAAAABAAUAAQAAAAAAAAABAAYAAQAAAAAAAAABAAcAAQAAAAAAAAACAPz/AQAAAAAAAAACAP3/AQAAAAAAAAACAP7/AQAAAAAAAAACAP//AQAAAAAAAAACAAAAAQAAAAAAAAACAAEAAQABAAAAAAACAAIAAQAAAAAAAAACAAMAAQAAAAAAAAACAAQAAQAAAAAAAAACAAUAAQAAAAAAAAACAAYAAQAAAAAAAAACAAcAAQAAAAAAAAADAPz/AQAAAAAAAAADAP3/AQAAAAAAAAADAP7/AQAAAAAAAAADAP//AQAAAAAAAAADAAAAAQAAAAAAAAADAAEAAQAAAAAAAAADAAIAAQAAAAAAAAADAAMAAQAAAAAAAAADAAQAAQAAAAAAAAADAAUAAQAAAAAAAAADAAYAAQAAAAAAAAADAAcAAQAAAAAAAAAEAPz/AQAAAAAAAAAEAP3/AQAAAAAAAAAEAP7/AQAAAAAAAAAEAP//AQABAAAAACAEAAAAAQABAAAAACAEAAEAAQAAAAAAAAAEAAIAAQAAAAAAAAAEAAMAAQAAAAAAAAAEAAQAAQAAAAAAAAAEAAUAAQAAAAAAAAAEAAYAAQAAAAAAAAAEAAcAAQAAAAAAAAAFAPz/AQAAAAAAAAAFAP3/AQAAAAAAAAAFAP7/AQAAAAAAAAAFAP//AQAAAAAAAAAFAAAAAQABAAAAAAAFAAEAAQAAAAAAAAAFAAIAAQAAAAAAAAAFAAMAAQAAAAAAAAAFAAQAAQAAAAAAAAAFAAUAAQAAAAAAAAAFAAYAAQAAAAAAAAAFAAcAAQAAAAAAAAAGAPz/AQAAAAAAAAAGAP3/AQAAAAAAAAAGAP7/AQAAAAAAAAAGAP//AQAAAAAAAAAGAAAAAQAAAAAAAAAGAAEAAQAAAAAAAAAGAAIAAQAAAAAAAAAGAAMAAQAAAAAAAAAGAAQAAQAAAAAAAAAGAAUAAQAAAAAAAAAGAAYAAQAAAAAAAAAGAAcAAQAAAAAAAAAHAPz/AQAAAAAAAAAHAP3/AQAAAAAAAAAHAP7/AQAAAAAAAAAHAP//AQAAAAAAAAAHAAAAAQAAAAAAAAAHAAEAAQAAAAAAAAAHAAIAAQAAAAAAAAAHAAMAAQAAAAAAAAAHAAQAAQAAAAAAAAAHAAUAAQAAAAAAAAAHAAYAAQAAAAAAAAAHAAcAAQAAAAAAAAAIAPz/AQAAAAAAAAAIAP3/AQAAAAAAAAAIAP7/AQAAAAAAAAAIAP//AQAAAAAAAAAIAAAAAQAAAAAAAAAIAAEAAQAAAAAAAAAIAAIAAQAAAAAAAAAIAAMAAQAAAAAAAAAIAAQAAQAAAAAAAAAIAAUAAQAAAAAAAAAIAAYAAQAAAAAAAAAIAAcAAQAAAAAAAAAJAPz/AQAAAAAAAAAJAP3/AQAAAAAAAAAJAP7/AQAAAAAAAAAJAP//AQAAAAAAAAAJAAAAAQAAAAAAAAAJAAEAAQAAAAAAAAAJAAIAAQAAAAAAAAAJAAMAAQAAAAAAAAAJAAQAAQAAAAAAAAAJAAUAAQAAAAAAAAAJAAYAAQAAAAAAAAAJAAcAAQAAAAAAAAAKAPz/AQAAAAAAAAAKAP3/AQAAAAAAAAAKAP7/AQAAAAAAAAAKAP//AQAAAAAAAAAKAAAAAQAAAAAAAAAKAAEAAQAAAAAAAAAKAAIAAQAAAAAAAAAKAAMAAQAAAAAAAAAKAAQAAQAAAAAAAAAKAAUAAQAAAAAAAAAKAAYAAQAAAAAAAAAKAAcAAQAAAAAAAAD3//r/AQAAAAAAAAD3//v/AQAAAAAAAAD3//z/AQAAAAAAAAD3//3/AQAAAAAAAAD3//7/AQAAAAAAAAD3////AQAAAAAAAAD3/wAAAQAAAAAAAAD3/wEAAQAAAAAAAAD3/wIAAQAAAAAAAAD3/wMAAQAAAAAAAAD3/wQAAQAAAAAAAAD3/wUAAQAAAAAAAAD3/wYAAQAAAAAAAAD3/wcAAQAAAAAAAAD4//r/AQAAAAAAAAD4//v/AQAAAAAAAAD4//z/AQAAAAAAAAD4//3/AQAAAAAAAAD4//7/AQAAAAAAAAD4////AQAAAAAAAAD4/wAAAQAAAAAAAAD4/wEAAQAAAAAAAAD4/wIAAQAAAAAAAAD4/wMAAQAAAAAAAAD4/wQAAQAAAAAAAAD4/wUAAQAAAAAAAAD4/wYAAQAAAAAAAAD4/wcAAQAAAAAAAAD5//r/AQAAAAAAAAD5//v/AQAAAAAAAAD5//z/AQAAAAAAAAD5//3/AQAAAAAAAAD5//7/AQAAAAAAAAD5////AQAAAAAAAAD5/wAAAQAAAAAAAAD5/wEAAQAAAAAAAAD5/wIAAQAAAAAAAAD5/wMAAQAAAAAAAAD5/wQAAQAAAAAAAAD5/wUAAQAAAAAAAAD5/wYAAQAAAAAAAAD5/wcAAQAAAAAAAAD6//r/AQAAAAAAAAD6//v/AQAAAAAAAAD7//r/AQAAAAAAAAD7//v/AQAAAAAAAAD8//r/AQAAAAAAAAD8//v/AQAAAAAAAAD9//r/AQAAAAAAAAD9//v/AQAAAAAAAAD+//r/AQAAAAAAAAD+//v/AQAAAAAAAAD///r/AQAAAAAAAAD///v/AQAAAAAAAAAAAPr/AQAAAAAAAAAAAPv/AQAAAAAAAAABAPr/AQAAAAAAAAABAPv/AQAAAAAAAAACAPr/AQAAAAAAAAACAPv/AQAAAAAAAAADAPr/AQAAAAAAAAADAPv/AQAAAAAAAAAEAPr/AQAAAAAAAAAEAPv/AQAAAAAAAAAFAPr/AQAAAAAAAAAFAPv/AQAAAAAAAAAGAPr/AQAAAAAAAAAGAPv/AQAAAAAAAAAHAPr/AQAAAAAAAAAHAPv/AQAAAAAAAAAIAPr/AQAAAAAAAAAIAPv/AQAAAAAAAAAJAPr/AQAAAAAAAAAJAPv/AQAAAAAAAAAKAPr/AQAAAAAAAAAKAPv/AQAAAAAAAAA=")
|
||||||
tile_set = SubResource("TileSet_5knbn")
|
tile_set = SubResource("TileSet_5knbn")
|
||||||
collision_enabled = false
|
collision_enabled = false
|
||||||
|
@ -202,10 +203,12 @@ tile_map_data = PackedByteArray("AAD/////AgAAAAAAAGD//wAAAgAAAAAAAFAAAP//AgAAAAA
|
||||||
tile_set = ExtResource("2_1kitx")
|
tile_set = ExtResource("2_1kitx")
|
||||||
|
|
||||||
[node name="road_bg2" type="TileMapLayer" parent="."]
|
[node name="road_bg2" type="TileMapLayer" parent="."]
|
||||||
|
visible = false
|
||||||
tile_map_data = PackedByteArray("AAD7/wEAAgABAAEAADD//wQAAAAAAAAAAGAHAAQAAgAHAAIAADAHAP//AAAAAAIAAAAIAAAAAAABAAMAAAAHAAUAAAABAAMAAFAIAAQAAAAAAAIAAFAEAAMAAAABAAAAAHAEAAQAAAAAAAAAAHADAAMAAAABAAEAAHAAAAMAAAABAAEAAGD//wMAAAABAAAAAGACAAQAAgAHAAIAAFAHAAAAAgAGAAAAAAAHAAEAAgAHAAIAADAGAAAAAgAHAAIAAFD8/wAAAgAHAAIAAFA=")
|
tile_map_data = PackedByteArray("AAD7/wEAAgABAAEAADD//wQAAAAAAAAAAGAHAAQAAgAHAAIAADAHAP//AAAAAAIAAAAIAAAAAAABAAMAAAAHAAUAAAABAAMAAFAIAAQAAAAAAAIAAFAEAAMAAAABAAAAAHAEAAQAAAAAAAAAAHADAAMAAAABAAEAAHAAAAMAAAABAAEAAGD//wMAAAABAAAAAGACAAQAAgAHAAIAAFAHAAAAAgAGAAAAAAAHAAEAAgAHAAIAADAGAAAAAgAHAAIAAFD8/wAAAgAHAAIAAFA=")
|
||||||
tile_set = ExtResource("2_1kitx")
|
tile_set = ExtResource("2_1kitx")
|
||||||
|
|
||||||
[node name="road_bg_fixes" type="TileMapLayer" parent="."]
|
[node name="road_bg_fixes" type="TileMapLayer" parent="."]
|
||||||
|
visible = false
|
||||||
tile_map_data = PackedByteArray("AAD//wQAAgABAAEAAFAEAAQAAAAAAAAAAEAFAAUAAAABAAEAAEAEAAUAAAABAAAAAEAHAAQAAgAHAAIAAGA=")
|
tile_map_data = PackedByteArray("AAD//wQAAgABAAEAAFAEAAQAAAAAAAAAAEAFAAUAAAABAAEAAEAEAAUAAAABAAAAAEAHAAQAAgAHAAIAAGA=")
|
||||||
tile_set = ExtResource("2_1kitx")
|
tile_set = ExtResource("2_1kitx")
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
[gd_scene load_steps=14 format=3 uid="uid://b1uhymisifcho"]
|
[gd_scene load_steps=12 format=3 uid="uid://b1uhymisifcho"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scripts/menu.gd" id="1_fushn"]
|
[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/menudisplay.gd" id="2_jc4pv"]
|
||||||
[ext_resource type="Script" path="res://scripts/map_selection.gd" id="3_c0mhk"]
|
[ext_resource type="Script" 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="Shader" path="res://shader/menubg.gdshader" id="3_vry7a"]
|
|
||||||
[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://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://mkjrrv20lhkc" path="res://scenes/map_preview/map_03.png" id="7_5f67q"]
|
[ext_resource type="Texture2D" uid="uid://mkjrrv20lhkc" path="res://scenes/map_preview/map_03.png" id="7_5f67q"]
|
||||||
|
@ -13,13 +12,6 @@
|
||||||
[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://drgqjl330tj2p" path="res://scenes/map_preview/no_preview.png" id="11_3sx36"]
|
[ext_resource type="Texture2D" uid="uid://drgqjl330tj2p" path="res://scenes/map_preview/no_preview.png" id="11_3sx36"]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_kpdum"]
|
|
||||||
shader = ExtResource("3_vry7a")
|
|
||||||
shader_parameter/rotationpivot = Vector2(0.5, 0.49)
|
|
||||||
shader_parameter/speed = 0.1
|
|
||||||
shader_parameter/strength = 8.5
|
|
||||||
shader_parameter/iChannel0 = ExtResource("10_equk1")
|
|
||||||
|
|
||||||
[node name="Menu" type="Node"]
|
[node name="Menu" type="Node"]
|
||||||
script = ExtResource("1_fushn")
|
script = ExtResource("1_fushn")
|
||||||
|
|
||||||
|
@ -27,7 +19,6 @@ script = ExtResource("1_fushn")
|
||||||
script = ExtResource("2_jc4pv")
|
script = ExtResource("2_jc4pv")
|
||||||
|
|
||||||
[node name="MenuBg" type="Sprite2D" parent="MenuDisplay"]
|
[node name="MenuBg" type="Sprite2D" parent="MenuDisplay"]
|
||||||
material = SubResource("ShaderMaterial_kpdum")
|
|
||||||
position = Vector2(1170, 338)
|
position = Vector2(1170, 338)
|
||||||
scale = Vector2(2.65635, 2.65635)
|
scale = Vector2(2.65635, 2.65635)
|
||||||
texture = ExtResource("10_equk1")
|
texture = ExtResource("10_equk1")
|
||||||
|
|
|
@ -210,12 +210,14 @@ func get_input(delta:float):
|
||||||
if distance_min<steering_distance_far: #wall close, start steering away
|
if distance_min<steering_distance_far: #wall close, start steering away
|
||||||
steer_direction += turndirection*deg_to_rad(constrain(remap(distance_min,steering_distance_far,steering_distance_close,0,steering_angle), 0,steering_angle))
|
steer_direction += turndirection*deg_to_rad(constrain(remap(distance_min,steering_distance_far,steering_distance_close,0,steering_angle), 0,steering_angle))
|
||||||
|
|
||||||
|
'''
|
||||||
if Input.is_action_pressed("ui_left"):
|
if Input.is_action_pressed("ui_left"):
|
||||||
autosteer_enabled=false
|
autosteer_enabled=false
|
||||||
steer_direction=-1
|
steer_direction=-1
|
||||||
elif Input.is_action_pressed("ui_right"):
|
elif Input.is_action_pressed("ui_right"):
|
||||||
autosteer_enabled=false
|
autosteer_enabled=false
|
||||||
steer_direction=1
|
steer_direction=1
|
||||||
|
'''
|
||||||
|
|
||||||
applied_engine_power=0
|
applied_engine_power=0
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ extends Node2D
|
||||||
@onready var cbcar: CharacterBody2D = $CharacterBody_Car
|
@onready var cbcar: CharacterBody2D = $CharacterBody_Car
|
||||||
@onready var carbody: Sprite2D = $CharacterBody_Car/sprite_body
|
@onready var carbody: Sprite2D = $CharacterBody_Car/sprite_body
|
||||||
|
|
||||||
|
var reference_gamestateplayer
|
||||||
|
|
||||||
func getSpeed() -> float:
|
func getSpeed() -> float:
|
||||||
return cbcar.velocity.length()
|
return cbcar.velocity.length()
|
||||||
|
@ -16,9 +17,10 @@ func getPositionLookahead(t:float):
|
||||||
func setPosition(p:Vector2):
|
func setPosition(p:Vector2):
|
||||||
cbcar.position=p
|
cbcar.position=p
|
||||||
|
|
||||||
func setPlayerinformation(playerid, playercolor):
|
func setPlayerinformation(playerid, playercolor,preference_gamestateplayer):
|
||||||
cbcar.playerid=playerid
|
cbcar.playerid=playerid
|
||||||
carbody.modulate = playercolor
|
carbody.modulate = playercolor
|
||||||
|
reference_gamestateplayer=preference_gamestateplayer
|
||||||
|
|
||||||
|
|
||||||
func setCheckpoints(cps,rounds):
|
func setCheckpoints(cps,rounds):
|
||||||
|
|
|
@ -13,6 +13,8 @@ extends Node2D
|
||||||
|
|
||||||
|
|
||||||
const caroffset= 32+4 #space cars on start line
|
const caroffset= 32+4 #space cars on start line
|
||||||
|
const caroffset_side= 32+16
|
||||||
|
const caroffset_rear= 64
|
||||||
|
|
||||||
var viewCarMargin=Vector2(0.7,0.7) #1=zoom out full speed when car is at border. 0.9 zoom out full speed when car is 10% away from border
|
var viewCarMargin=Vector2(0.7,0.7) #1=zoom out full speed when car is at border. 0.9 zoom out full speed when car is 10% away from border
|
||||||
var viewCarMargin_zoomstart=viewCarMargin-Vector2(0.2,0.2) #start zooming
|
var viewCarMargin_zoomstart=viewCarMargin-Vector2(0.2,0.2) #start zooming
|
||||||
|
@ -51,20 +53,34 @@ func _ready() -> void:
|
||||||
print(str(checkpoints.size())+" Checkpoints found")
|
print(str(checkpoints.size())+" Checkpoints found")
|
||||||
|
|
||||||
var i=0
|
var i=0
|
||||||
|
var players_ranked :Array = Gamestate.getPlayers().duplicate()
|
||||||
|
players_ranked.sort_custom(custom_array_sort_rank) #arrange players by handicap/rank
|
||||||
for player in Gamestate.getPlayers(): #create all players
|
for player in Gamestate.getPlayers(): #create all players
|
||||||
|
#get player rank
|
||||||
|
var i_position=0
|
||||||
|
while i_position<players_ranked.size() and player.inputkey!=players_ranked[i_position].inputkey:
|
||||||
|
i_position+=1
|
||||||
|
|
||||||
var newcarscene=load("res://scenes/car.tscn")
|
var newcarscene=load("res://scenes/car.tscn")
|
||||||
var newcarinstance=newcarscene.instantiate()
|
var newcarinstance=newcarscene.instantiate()
|
||||||
cars.add_child(newcarinstance)
|
cars.add_child(newcarinstance)
|
||||||
newcarinstance.setPlayerinformation(i,player.color)
|
newcarinstance.setPlayerinformation(i,player.color,player)
|
||||||
|
|
||||||
newcarinstance.setPosition(Vector2(0,ceil(i/2.0)*(fmod(i,2)-0.5)*2.0*caroffset))
|
#newcarinstance.setPosition(Vector2(0,ceil(i/2.0)*(fmod(i,2)-0.5)*2.0*caroffset)) #all in a row, alternating up/down
|
||||||
|
newcarinstance.setPosition(Vector2(caroffset_rear*-1*i_position,0)) #TODO, nicer start placement
|
||||||
|
#caroffset_rear
|
||||||
|
#caroffset_side
|
||||||
newcarinstance.setCheckpoints(checkpoints,Gamestate.getRounds())
|
newcarinstance.setCheckpoints(checkpoints,Gamestate.getRounds())
|
||||||
newcarinstance.getCharacterBody().car_finished.connect(_on_car_finished)
|
newcarinstance.getCharacterBody().car_finished.connect(_on_car_finished)
|
||||||
|
|
||||||
print("carpos is ="+str(newcarinstance.getPosition())+" instancepos="+str(newcarinstance.position))
|
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
|
i+=1
|
||||||
|
|
||||||
|
|
||||||
|
func custom_array_sort_rank(a, b):
|
||||||
|
return a.rank > b.rank #a>b = higher rank (more wins) -> better start position
|
||||||
|
|
||||||
|
|
||||||
# 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:
|
||||||
if running:
|
if running:
|
||||||
|
@ -196,11 +212,38 @@ func finishGame():
|
||||||
print("Game Finished")
|
print("Game Finished")
|
||||||
running=false
|
running=false
|
||||||
game_ended=true
|
game_ended=true
|
||||||
|
|
||||||
|
#change rank for players
|
||||||
|
|
||||||
|
var players_ranked :Array = Gamestate.getPlayers().duplicate()
|
||||||
|
players_ranked.sort_custom(custom_array_sort_player_finaltime) #arrange players by handicap/rank
|
||||||
|
|
||||||
|
var i=0
|
||||||
|
for p in players_ranked:
|
||||||
|
print("Player "+str(i)+" key="+str(OS.get_keycode_string(p.inputkey))+" was rank "+str(p.rank))
|
||||||
|
var floatrank=1.0-(i*1.0/(Gamestate.getPlayers().size()-1)) #winning player=1.0, losing player=0.0
|
||||||
|
var rankchangedown=-0.2 #change rank down limit
|
||||||
|
var rankchangeup=0.5 #change rank up limit
|
||||||
|
p.rank=p.rank+min(max((floatrank-p.rank),rankchangedown),rankchangeup)
|
||||||
|
print(" changed to rank "+str(p.rank))
|
||||||
|
i+=1
|
||||||
|
|
||||||
game_hud_animations.play("game_end")
|
game_hud_animations.play("game_end")
|
||||||
timer_close.start()
|
timer_close.start()
|
||||||
#overlaycolor.visible=true
|
#overlaycolor.visible=true
|
||||||
|
|
||||||
|
|
||||||
|
func custom_array_sort_player_finaltime(a, b):
|
||||||
|
var cars=cars.get_children()
|
||||||
|
var finalTimeA=-1
|
||||||
|
var finalTimeB=-1
|
||||||
|
for c in cars:
|
||||||
|
if c.reference_gamestateplayer==a:
|
||||||
|
finalTimeA=c.getCharacterBody().finalTime
|
||||||
|
elif c.reference_gamestateplayer==b:
|
||||||
|
finalTimeB=c.getCharacterBody().finalTime
|
||||||
|
return finalTimeA < finalTimeB
|
||||||
|
|
||||||
|
|
||||||
func _on_timer_close_timeout() -> void:
|
func _on_timer_close_timeout() -> void:
|
||||||
print("Close Map")
|
print("Close Map")
|
||||||
|
|
|
@ -43,15 +43,20 @@ func addPlayer(key:int):
|
||||||
#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 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
|
||||||
prefered_colori=p.colori
|
prefered_colori=p.colori
|
||||||
|
setrank=p.rank
|
||||||
|
print("Player found in last_players. rank="+str(setrank)+" colori="+str(prefered_colori))
|
||||||
|
|
||||||
#check if color is free, else assign next free
|
#check if color is free, else assign next free
|
||||||
while not checkColoriFree(prefered_colori):
|
while not checkColoriFree(prefered_colori):
|
||||||
prefered_colori+=1
|
prefered_colori+=1
|
||||||
|
|
||||||
players.append(Player.new(key,prefered_colori))
|
var newplayer: Player = Player.new(key,prefered_colori)
|
||||||
|
newplayer.rank=setrank
|
||||||
|
players.append(newplayer)
|
||||||
|
|
||||||
return prefered_colori
|
return prefered_colori
|
||||||
else:
|
else:
|
||||||
|
@ -76,6 +81,7 @@ class Player:
|
||||||
var inputkey:int
|
var inputkey:int
|
||||||
var color:Color
|
var color:Color
|
||||||
var colori
|
var colori
|
||||||
|
var rank:float #0-1, nonlinear, higher when player wins often
|
||||||
|
|
||||||
func _init(key:int, pcolori:int=-1):
|
func _init(key:int, pcolori:int=-1):
|
||||||
inputkey=key
|
inputkey=key
|
||||||
|
@ -86,7 +92,7 @@ class Player:
|
||||||
if colori<0:
|
if colori<0:
|
||||||
color=Color.from_hsv(randf_range(0.0,1.0), sat,val,1.0)
|
color=Color.from_hsv(randf_range(0.0,1.0), sat,val,1.0)
|
||||||
else:
|
else:
|
||||||
color=Color.from_hsv(fmod(0.3*colori,1.0), sat,val,1.0)
|
color=Color.from_hsv(fmod(0.3*colori,1.0), sat,val,1.0) #todo: make colorwheel smaller when whitelist enabled
|
||||||
|
|
||||||
|
|
||||||
func startGame():
|
func startGame():
|
||||||
|
|
Loading…
Reference in a new issue