57 lines
1.4 KiB
GDScript3
57 lines
1.4 KiB
GDScript3
|
extends Spatial
|
||
|
|
||
|
var player:Player
|
||
|
|
||
|
const MAX_ROAD_INDEX = 1
|
||
|
var error_rate:float = 0.00
|
||
|
var underspeed_rate:float = 0.00
|
||
|
|
||
|
|
||
|
func _ready():
|
||
|
randomize()
|
||
|
|
||
|
|
||
|
func _physics_process(delta):
|
||
|
if is_network_master() && player != null:
|
||
|
if player.is_out:
|
||
|
if player.is_resetable:
|
||
|
player.reset()
|
||
|
else:
|
||
|
if player.get_road() != null:
|
||
|
var rate = randf()
|
||
|
var road = player.get_road()
|
||
|
var road_index = 0
|
||
|
var speed_constrain = 0.0
|
||
|
while road != null && road_index < MAX_ROAD_INDEX:
|
||
|
for index in range(road.speed_constrains.size()):
|
||
|
var constrain = road.speed_constrains[index]
|
||
|
if constrain.z > 0:
|
||
|
speed_constrain = max(speed_constrain, constrain.z)
|
||
|
elif constrain.z < 0:
|
||
|
speed_constrain = min(speed_constrain, constrain.z)
|
||
|
road = player.route.get_road(road.get_index() + 1)
|
||
|
road_index += 1
|
||
|
|
||
|
var speed = player.current_speed
|
||
|
if speed_constrain < 0:
|
||
|
player.thrust = 1
|
||
|
elif speed_constrain > 0 && speed > speed_constrain:
|
||
|
player.thrust = -1
|
||
|
elif rate > underspeed_rate:
|
||
|
player.thrust = 1
|
||
|
else:
|
||
|
player.thrust = 0
|
||
|
|
||
|
|
||
|
func set_player(path:String):
|
||
|
player = get_node(path)
|
||
|
get_node("inventory").set_player(player)
|
||
|
|
||
|
|
||
|
func set_error_rate(new_error_rate:float):
|
||
|
error_rate = new_error_rate
|
||
|
|
||
|
|
||
|
func set_underspeed_rate(new_underspeed_rate:float):
|
||
|
underspeed_rate = new_underspeed_rate
|