Browse Source

player improvements, road speed logic

Lurkars 6 years ago
parent
commit
0e419ed9dc
  1. BIN
      resources/ui/i18n.de.translation
  2. BIN
      resources/ui/i18n.en.translation
  3. 22
      scripts/player/bot_controls.gd
  4. 2
      scripts/player/bot_inventory.gd
  5. 14
      scripts/player/human_controls.gd
  6. 2
      scripts/player/human_inventory.gd
  7. 29
      scripts/player/player.gd
  8. 22
      scripts/road/road.gd

BIN
resources/ui/i18n.de.translation

BIN
resources/ui/i18n.en.translation

22
scripts/player/bot_controls.gd

@ -3,7 +3,7 @@ extends Spatial
var player:Player var player:Player
var overspeed_rate:float = 0.8 var overspeed_rate:float = 0.8
var underspeed_rate:float = 0.8
var underspeed_rate:float = 0.3
func _ready(): func _ready():
@ -27,16 +27,18 @@ func _physics_process(delta):
if constrain.x <= distance && constrain.y >= distance: if constrain.x <= distance && constrain.y >= distance:
has_constrain = true has_constrain = true
if constrain.z > 0 && speed < constrain.z && rate > underspeed_rate: if constrain.z > 0 && speed < constrain.z && rate > underspeed_rate:
player.current_speed += player.speed_factor
elif player.current_speed > 0 && rate > overspeed_rate:
player.current_speed -= player.speed_factor * player.friction_brake_factor
player.thrust = 1
elif rate > overspeed_rate:
player.thrust = -1
else:
player.thrust = 0
if not has_constrain: if not has_constrain:
if player.current_speed <= player.MAX_SPEED && rate > underspeed_rate:
player.current_speed += player.speed_factor
elif player.current_speed > 0 && rate > overspeed_rate:
player.current_speed -= player.speed_factor * player.friction_brake_factor
if player.current_speed < 0:
player.current_speed = 0
if rate > underspeed_rate:
player.thrust = 1
elif rate > overspeed_rate:
player.thrust = -1
else:
player.thrust = 0
func set_player(path:String): func set_player(path:String):

2
scripts/player/bot_inventory.gd

@ -14,7 +14,7 @@ func _on_raceCar_road_entered(road):
if route.get_last_road().get_index() <= (road.get_index() +2): if route.get_last_road().get_index() <= (road.get_index() +2):
type = rand.randi_range(0,roads.size() -2) # TODO: remove special, loop need fixes! type = rand.randi_range(0,roads.size() -2) # TODO: remove special, loop need fixes!
index = rand.randi_range(0, roads[type].size() -1) index = rand.randi_range(0, roads[type].size() -1)
route.rpc("add_road", roads[type][index], -1)
route.rpc("add_road", roads[type][index], player.get_index())
func set_player(new_player:Player): func set_player(new_player:Player):

14
scripts/player/human_controls.gd

@ -17,14 +17,12 @@ func _physics_process(delta):
camera.set_speed(10) camera.set_speed(10)
get_node("hud/reset").set_text("") get_node("hud/reset").set_text("")
else: else:
if Input.is_action_pressed("controls_thrust") && player.current_speed <= player.MAX_SPEED:
player.current_speed += player.speed_factor
elif Input.is_action_pressed("controls_break") && player.current_speed <= player.MAX_SPEED:
player.current_speed -= player.speed_factor * player.brake_factor
elif player.current_speed > 0:
player.current_speed -= player.speed_factor * player.friction_brake_factor
elif player.current_speed < 0:
player.current_speed = 0
if Input.is_action_pressed("controls_thrust"):
player.thrust = 1
elif Input.is_action_pressed("controls_break"):
player.thrust = -1
else:
player.thrust = 0
get_node("hud/speed").set_text(str(player.current_speed)) get_node("hud/speed").set_text(str(player.current_speed))

2
scripts/player/human_inventory.gd

@ -22,7 +22,7 @@ func _physics_process(delta):
if preview.item: if preview.item:
preview.item.show() preview.item.show()
if Input.is_action_just_pressed("controls_add_road"): if Input.is_action_just_pressed("controls_add_road"):
route.rpc("add_road", roads[type][index], get_tree().get_network_unique_id())
route.rpc("add_road", roads[type][index], player.get_index())
if Input.is_action_just_pressed("controls_prev_road_type"): if Input.is_action_just_pressed("controls_prev_road_type"):
type -= 1 type -= 1
if type < 0: if type < 0:

29
scripts/player/player.gd

@ -2,8 +2,11 @@ extends BasePlayer
class_name Player class_name Player
var MAX_SPEED:float = 0.2
const MAX_SPEED:float = 0.2
const LANE_OFFSET = [-0.085, 0.085, -0.255, 0.255 ]
var thrust:int = 0
var current_speed:float = 0.0 var current_speed:float = 0.0
export var speed_factor:float = 0.001 export var speed_factor:float = 0.001
@ -25,7 +28,6 @@ var last_rotation:Vector3 = Vector3(0,0,0)
var torque_penalty:Vector3 var torque_penalty:Vector3
var force_penalty:Vector3 var force_penalty:Vector3
const LANE_OFFSET = [-0.085, 0.085, -0.255, 0.255 ]
func _ready(): func _ready():
@ -39,6 +41,29 @@ func _ready():
func _physics_process(delta): func _physics_process(delta):
if is_network_master(): if is_network_master():
if not is_out: if not is_out:
var max_speed = MAX_SPEED
if get_road() != null:
var road = get_road()
if is_in_group("first"):
max_speed *= road.get_first_speed_factor()
if road.get_creator() == get_index():
max_speed *= road.get_creator_speed_factor()
else:
max_speed *= road.get_chasers_speed_factor()
if thrust == 1:
current_speed += speed_factor
elif thrust == -1:
current_speed -= speed_factor * brake_factor
else:
current_speed -= speed_factor * friction_brake_factor
if current_speed >= max_speed:
current_speed = max_speed
elif current_speed < 0:
current_speed = 0
follow.set_offset(follow.get_offset() + current_speed) follow.set_offset(follow.get_offset() + current_speed)

22
scripts/road/road.gd

@ -4,8 +4,8 @@ class_name Road
export var end_rotation:Vector3 = Vector3(0,0,0) export var end_rotation:Vector3 = Vector3(0,0,0)
export var first_speed_factor:float = 1.0
export var creator_speed_factor:float = 1.0
export var first_speed_factor:float = 0.8
export var creator_speed_factor:float = 0.8
export var chasers_speed_factor:float = 1.0 export var chasers_speed_factor:float = 1.0
export var reset_index:int = 0 export var reset_index:int = 0
@ -14,7 +14,7 @@ export (PoolVector3Array) var speed_constrains = PoolVector3Array()
export (PoolVector3Array) var force_penalties = PoolVector3Array() export (PoolVector3Array) var force_penalties = PoolVector3Array()
export (PoolVector3Array) var torque_penalties = PoolVector3Array() export (PoolVector3Array) var torque_penalties = PoolVector3Array()
var creator:String = ""
var creator:int = -1
var preview:bool = false var preview:bool = false
@ -34,7 +34,7 @@ func get_creator():
func set_creator(new_creator): func set_creator(new_creator):
creator = str(new_creator)
creator = int(new_creator)
func set_color(new_color): func set_color(new_color):
@ -105,4 +105,16 @@ func get_force_penalty(index:int):
else: else:
return force_penalties[index] return force_penalties[index]
return Vector3(0,0,0)
return Vector3(0,0,0)
func get_first_speed_factor():
return first_speed_factor
func get_creator_speed_factor():
return creator_speed_factor
func get_chasers_speed_factor():
return chasers_speed_factor
Loading…
Cancel
Save