From 0e419ed9dcb98d93f1f41ecc143d47aa20a11033 Mon Sep 17 00:00:00 2001 From: Lurkars Date: Sun, 21 Jul 2019 21:30:06 +0200 Subject: [PATCH] player improvements, road speed logic --- resources/ui/i18n.de.translation | Bin 3372 -> 3372 bytes resources/ui/i18n.en.translation | Bin 3101 -> 3101 bytes scripts/player/bot_controls.gd | 22 ++++++++++++---------- scripts/player/bot_inventory.gd | 2 +- scripts/player/human_controls.gd | 14 ++++++-------- scripts/player/human_inventory.gd | 2 +- scripts/player/player.gd | 29 +++++++++++++++++++++++++++-- scripts/road/road.gd | 22 +++++++++++++++++----- 8 files changed, 64 insertions(+), 27 deletions(-) diff --git a/resources/ui/i18n.de.translation b/resources/ui/i18n.de.translation index 9456630bfe4d9a8b5a31fe73c79492c5837dc4b9..fc9d2e70027cae9220e97c825ad7c26e6e4429a8 100644 GIT binary patch literal 3372 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 E0BpXU*8l(j literal 3101 zcmbtXdr(wW7(XBotg9&ICc5ITBm)J5??+2IK2ekvfzf>Aa$zqB>;w1iVyH2RPlVJg z-#Q~HTE0UaaTuM{ipE~_RL~lm#!_pN!E!{WOTTaT9J|BtUw8cZec$hV&vVYbu9;bx zlNo=yK?VUNdjlEMC1pvrM{+3+$y?}lf%<<>IKuk@9$9hwJbALs;m(sBHm}>J1k*@UCvCK5dxS1381F~52fhEbpw~g(_@4^7#PX<@mx-U zOyhb6mkS_sxK6P}&`W^jzy=M!3HnZMzpLTj)95Fl*8`ViUX#g`OUTl@9M|>wDD@+vzHPOMD?}vmhYZqJOs|aXOQb0HP&#%(^*m-@o^ga^_j?7 zn!JD657%P(=|1(U-rqU^`KbpjCT`37WGHyCpQ7*j(~YHr;YdBw+)pmdIa$N=(~QFJ z)CbYgzk?TjhepfOletZPQ2o%2U)%C3blO|md%^GjCAH}_7@g1gN$ZMonve3*SL;bx zPMxibK7YRT<#76*i2nciZgAx}*i@V9i2WJ&;iADW!WQ)xv<)0x2V2A~tXT749c-%E z2N3-wPpe4^MP1s5C=KtkcdWSzC+bamUm9ngzTyH$^AOT48`Y!m>l}af`?r!-U|rM^ z^5(T?_fk$_i~h^+1v{x%vI);yKP_FR*^jyfRR>bRi~SPkbNOoU{5B*L`7EbPjy`}P z<`(>kwF`H@j(D1dAov~|03|V`S@Y0cE|{#-pNnIf4jlD zs~tAIKiYjYJh$}5c5oEm7ZCmX&9Fh&%v7~=gB^EAe*o4)}s@?6~b;|>QFsW)wZzBew_ z-vLK6M{Dw~)?GT0gZR$pYgzAIQx2Ybpcqka=7Gr3b{KSSw1@KH`-fhEE$R!u_T=WY zC>YcOosE3IO{qsd{P9D4=Nlf*A2J1gG#AyXiz-`Wg{1rxYpe9GJqk(riHj_{xG$gU zWQ%;qg5B$l$U}JvbmoJAmEdxvyka&ZgE61s1(g}X!cwNGY=)~;aunK4Gcrm?nk2g& zKc*Bjo0k~t(^u(LR^%>pv4(V&CB+%iQYy0ssLY&b)yf2mHqjw_yk;~|ESKfFC6Ary8rm*|TcUV=#?-6m*v&*-Cl*I&yEdjLt()ZuSqGEm$BaZgK%lr zA5Z8Aik}kvk#1KAnY|Y~9kbQGP^>f8qlAg-wS=*TpX9`U*@_=?a&) LJzkcH{}}uW7ABi- diff --git a/scripts/player/bot_controls.gd b/scripts/player/bot_controls.gd index 772a709..3f82b46 100644 --- a/scripts/player/bot_controls.gd +++ b/scripts/player/bot_controls.gd @@ -3,7 +3,7 @@ extends Spatial var player:Player var overspeed_rate:float = 0.8 -var underspeed_rate:float = 0.8 +var underspeed_rate:float = 0.3 func _ready(): @@ -27,16 +27,18 @@ func _physics_process(delta): if constrain.x <= distance && constrain.y >= distance: has_constrain = true 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 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): diff --git a/scripts/player/bot_inventory.gd b/scripts/player/bot_inventory.gd index 546c307..22958b9 100644 --- a/scripts/player/bot_inventory.gd +++ b/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): type = rand.randi_range(0,roads.size() -2) # TODO: remove special, loop need fixes! 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): diff --git a/scripts/player/human_controls.gd b/scripts/player/human_controls.gd index f5d4cb8..92b7686 100644 --- a/scripts/player/human_controls.gd +++ b/scripts/player/human_controls.gd @@ -17,14 +17,12 @@ func _physics_process(delta): camera.set_speed(10) get_node("hud/reset").set_text("") 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)) diff --git a/scripts/player/human_inventory.gd b/scripts/player/human_inventory.gd index ce3128a..e205f13 100644 --- a/scripts/player/human_inventory.gd +++ b/scripts/player/human_inventory.gd @@ -22,7 +22,7 @@ func _physics_process(delta): if preview.item: preview.item.show() 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"): type -= 1 if type < 0: diff --git a/scripts/player/player.gd b/scripts/player/player.gd index eba1899..f23972b 100644 --- a/scripts/player/player.gd +++ b/scripts/player/player.gd @@ -2,8 +2,11 @@ extends BasePlayer 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 export var speed_factor:float = 0.001 @@ -25,7 +28,6 @@ var last_rotation:Vector3 = Vector3(0,0,0) var torque_penalty:Vector3 var force_penalty:Vector3 -const LANE_OFFSET = [-0.085, 0.085, -0.255, 0.255 ] func _ready(): @@ -39,6 +41,29 @@ func _ready(): func _physics_process(delta): if is_network_master(): 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) diff --git a/scripts/road/road.gd b/scripts/road/road.gd index 5995b33..e761e13 100644 --- a/scripts/road/road.gd +++ b/scripts/road/road.gd @@ -4,8 +4,8 @@ class_name Road 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 reset_index:int = 0 @@ -14,7 +14,7 @@ export (PoolVector3Array) var speed_constrains = PoolVector3Array() export (PoolVector3Array) var force_penalties = PoolVector3Array() export (PoolVector3Array) var torque_penalties = PoolVector3Array() -var creator:String = "" +var creator:int = -1 var preview:bool = false @@ -34,7 +34,7 @@ func get_creator(): func set_creator(new_creator): - creator = str(new_creator) + creator = int(new_creator) func set_color(new_color): @@ -105,4 +105,16 @@ func get_force_penalty(index:int): else: return force_penalties[index] - return Vector3(0,0,0) \ No newline at end of file + 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 \ No newline at end of file