summaryrefslogtreecommitdiff
path: root/godot/scripts/characters/player_controller_new.gd
diff options
context:
space:
mode:
Diffstat (limited to 'godot/scripts/characters/player_controller_new.gd')
-rw-r--r--godot/scripts/characters/player_controller_new.gd84
1 files changed, 43 insertions, 41 deletions
diff --git a/godot/scripts/characters/player_controller_new.gd b/godot/scripts/characters/player_controller_new.gd
index aa739a6..bc41842 100644
--- a/godot/scripts/characters/player_controller_new.gd
+++ b/godot/scripts/characters/player_controller_new.gd
@@ -1,15 +1,15 @@
extends RigidBody
# Game
-export var team = "RED"
-export (int) var health = 100
-var weapon = null
-var world
+export var team: String = "RED"
+export var health: int = 100
+var weapon: Node = null
+var world: Spatial = null
# Camera
-export(float) var mouse_sensitivity = 12.0
-export(float) var FOV = 90.0
-var mouse_axis := Vector2()
+export var mouse_sensitivity:float = 12.0
+export var FOV:float = 90.0
+var mouse_axis: Vector2 = Vector2.ZERO
onready var head: Spatial = $Neck/Head
onready var neck: Spatial = $Neck
@@ -18,31 +18,31 @@ var velocity := Vector3()
var direction := Vector3()
var move_axis := Vector2()
var floorspeed := Vector3()
-var jumping = false
-var can_jump = true
-onready var nav = $NavigationAgent
+var jumping:bool = false
+var can_jump:bool = true
+onready var nav: NavigationAgent = $NavigationAgent
# Walk
const FLOOR_MAX_ANGLE: float = deg2rad(46.0)
-export(float) var jump_height = 400.0
-var in_water : bool = false
-var swim_speed : float = 450.0
-var climb_speed : float = 5.0
+export var jump_height: float = 300.0
+var in_water: bool = false
+var swim_speed: float = 450.0
+var climb_speed: float = 5.0
# Control
-var controlling_machine = false #whether character is riding/controlling something
-var machine = null
-export var is_player = false #whether character is currently controlled by a player
-var ladder_m = null
+var controlling_machine: bool = false #whether character is riding/controlling something
+var machine: RigidBody = null
+export var is_player: bool = false #whether character is currently controlled by a player
+var ladder_m: Spatial = null
#physics
-var player_state : PhysicsDirectBodyState
-var is_on_floor:bool
-var floor_normal : Vector3 = Vector3.UP
-var acceleration = 80.0
-export(int) var walk_speed = 5
-var c_friction = 4.0
-var air_control = 0.3
+var player_state: PhysicsDirectBodyState = null
+var is_on_floor:bool = false
+var floor_normal: Vector3 = Vector3.UP
+var acceleration:float = 80.0
+export var walk_speed:float = 5.0
+var c_friction:float = 4.0
+var air_control:float = 0.3
# Called when the node enters the scene tree
func _ready() -> void:
@@ -55,15 +55,15 @@ func _ready() -> void:
$"%UseRay".add_exception($AreaDetect)
$"%MeleeRay".add_exception($AreaDetect)
-func get_init_info():
+func get_init_info() -> Dictionary:
return {"linear_velocity" : linear_velocity, "angular_velocity" : angular_velocity, "controlling_machine" : controlling_machine, "team" : team, "health" : health, "nametag" : $Nametag.text}
-func mp_init(init_info):
+func mp_init(init_info: Dictionary):
for variable in init_info.keys():
set(variable, init_info[variable])
$Nametag.text = init_info["nametag"]
-remote func set_phys_transform(trfrm, lvel):
+remote func set_phys_transform(trfrm: Transform, lvel: Vector3):
transform = trfrm
linear_velocity = lvel
@@ -110,7 +110,7 @@ func initiate_use():
_:
pass
-remotesync func set_net_owner(owner_id):
+remotesync func set_net_owner(owner_id: int):
$Nametag.text = ""
set_network_master(owner_id)
if owner_id != 1:
@@ -132,7 +132,7 @@ func deselect_character():
if world.client_id != 1: world.cam.attach(world, "STATIC", "./DEFAULTCAM")
rpc("set_net_owner", 1)
-func take_control_of_machine(slave_machine):
+func take_control_of_machine(slave_machine: RigidBody):
machine = slave_machine
controlling_machine = true
@@ -169,7 +169,9 @@ func on_floor_test() -> bool:
return false
#modify simulated physics results
-func _integrate_forces(state) -> void:
+func _integrate_forces(state: PhysicsDirectBodyState) -> void:
+ if !is_network_master():
+ return
player_state = state
velocity = state.get_linear_velocity()
$normal_vis.look_at($normal_vis.global_transform.origin + global_transform.basis.z, floor_normal)
@@ -180,12 +182,12 @@ func _integrate_forces(state) -> void:
break
if i == player_state.get_contact_count() - 1:
friction = 1
- if is_network_master():
- rpc("set_phys_transform", transform, linear_velocity)
- if global_transform.origin.y < -30:
- rpc("damage", 500000, "drown", [1, "Davy Jones"])
+
+ rpc("set_phys_transform", transform, linear_velocity)
+ if global_transform.origin.y < -30:
+ rpc("damage", 500000, "drown", [1, "Davy Jones"])
-func walk(_delta:float) -> void:
+func walk(_delta: float) -> void:
# Input
direction = Vector3()
var aim: Basis = head.get_global_transform().basis
@@ -224,7 +226,7 @@ func jump():
yield(get_tree().create_timer(0.05),"timeout")
can_jump = true
-func swim(_delta):
+func swim(_delta: float):
#drag and buoyancy
add_central_force(Vector3.UP*weight*1.0)
add_central_force(-1*linear_velocity*100)
@@ -242,7 +244,7 @@ func enter_water():
func exit_water():
in_water = false
-func mount_ladder(target_ladder):
+func mount_ladder(target_ladder: Spatial):
var ladder_tracker = Spatial.new()
ladder_tracker.name = name
target_ladder.add_child(ladder_tracker)
@@ -258,7 +260,7 @@ func mount_ladder(target_ladder):
set_gravity_scale(0.0)
#called each frame while climbing ladder
-func climb_ladder(delta):
+func climb_ladder(delta: float):
var new_ladder_pos = ladder_m.global_transform.origin + ladder_m.global_transform.basis.y.normalized() * move_axis.x * delta * climb_speed
var prog = ladder_m.get_parent().get_climb_scalar(new_ladder_pos)
if prog >= 0.0 and prog <= 1.0:
@@ -274,7 +276,7 @@ func leave_ladder():
ladder_m.queue_free()
ladder_m = null
-remotesync func damage(dmg_amt, _type, shooter, extra = ""):
+remotesync func damage(dmg_amt: int, _type: String, shooter: Array, extra: String):
health -= dmg_amt
if health <= 0 and is_network_master():
if shooter[0] != get_network_master() and shooter[0] != 1: world.rpc_id(shooter[0], "game_killsound")
@@ -291,5 +293,5 @@ remotesync func remove_dead_character():
deselect_character()
queue_free()
-remotesync func net_apply_impulse(impulse_v):
+remotesync func net_apply_impulse(impulse_v: Vector3):
apply_central_impulse(impulse_v)