You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.4 KiB
56 lines
1.4 KiB
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
|