summaryrefslogtreecommitdiff
path: root/godot/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'godot/scripts')
-rw-r--r--godot/scripts/CharacterAIManager.gd2
-rw-r--r--godot/scripts/GameBase.gd15
-rw-r--r--godot/scripts/cameras/PlayerCamGDS.gd31
-rw-r--r--godot/scripts/characters/player_controller_new.gd4
-rw-r--r--godot/scripts/machines/Cannon.gd1
-rw-r--r--godot/scripts/vehicles/Airplane.gd3
6 files changed, 50 insertions, 6 deletions
diff --git a/godot/scripts/CharacterAIManager.gd b/godot/scripts/CharacterAIManager.gd
index 61d38ae..ef5c026 100644
--- a/godot/scripts/CharacterAIManager.gd
+++ b/godot/scripts/CharacterAIManager.gd
@@ -30,7 +30,7 @@ func _physics_process(_delta):
var bodies = cur_req["char"].get_node("AISearchArea").get_overlapping_bodies()
for body in bodies:
if body.name.begins_with(cur_req_args["objtype"]):
- var path: PoolVector3Array = NavigationServer.map_get_path(WORLD_MAP_RID, cur_req["char"].global_transform.origin, body.global_transform.origin, cur_req_args["optimize"])
+ #var path: PoolVector3Array = NavigationServer.map_get_path(WORLD_MAP_RID, cur_req["char"].global_transform.origin, body.global_transform.origin, cur_req_args["optimize"])
cur_req["char"].ai_set_path_target(body.global_transform.origin)
#cur_req["char"].ai_set_path_array(path)
cur_req["char"].ai_set_look_status(body, "TRACK")
diff --git a/godot/scripts/GameBase.gd b/godot/scripts/GameBase.gd
index abc269f..e77d070 100644
--- a/godot/scripts/GameBase.gd
+++ b/godot/scripts/GameBase.gd
@@ -8,7 +8,7 @@ var local_server_tree = null
var player_name : String
var player_team : String
var player_char = null
-onready var cam = $PLAYERCAM
+onready var cam: ClippedCamera = $PLAYERCAM
onready var hud = $HUD
var players_info = {} #dictionary of id : name, team, ping, etc.
@@ -17,6 +17,17 @@ var is_chatting: bool = false
var winddir = Vector3(1,0,0)
+signal screen_shake(location, strength, time)
+
+func _ready():
+ connect("screen_shake", self, "shake_cam")
+
+func shake_cam(loc, strength, time):
+ var dist: float = (cam.global_transform.origin - loc).length()
+ if dist < 30:
+ strength = strength*exp(-dist/10)
+ cam.shake(strength, time)
+
func _process(delta):
$HUD/Health.text = str(player_char.health) if player_char != null else ""
if is_local:
@@ -89,11 +100,13 @@ func client_disconnect():
player_char.deselect_character()
client.close_connection()
if is_local:
+ local_server_tree.get_root().get_node("GAMEWORLD/Server").stop_server()
local_server_tree.free()
back_to_main()
func _connection_lost():
if is_local:
+ local_server_tree.get_root().get_node("GAMEWORLD/Server").stop_server()
local_server_tree.free()
back_to_main()
diff --git a/godot/scripts/cameras/PlayerCamGDS.gd b/godot/scripts/cameras/PlayerCamGDS.gd
index 382ec06..77ca552 100644
--- a/godot/scripts/cameras/PlayerCamGDS.gd
+++ b/godot/scripts/cameras/PlayerCamGDS.gd
@@ -14,10 +14,41 @@ var arm: SpringArm = null
var mouse_axis: Vector2
var mouse_sensitivity: float = 12.0
+var shake_amount:float = 0.0
+const shake_limit:float = 0.2
+onready var shake_timer:Timer = Timer.new()
+onready var shake_tween: Tween = Tween.new()
+
func _ready():
+ add_child(shake_timer)
+ add_child(shake_tween)
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
+ shake_timer.connect("timeout", self, "_on_shake_timer_timeout")
current = true
+func _process(_delta):
+ if mode == "STATIC":
+ transform.origin = Vector3(rand_range(-shake_amount, shake_amount), rand_range(-shake_amount, shake_amount), rand_range(-shake_amount, shake_amount))
+ if mode == "FIRSTPERSON":
+ head.transform.origin = Vector3(rand_range(-shake_amount, shake_amount), rand_range(-shake_amount, shake_amount), rand_range(-shake_amount, shake_amount))
+
+func shake(new_shake, shake_time=0.4):
+ shake_amount += new_shake
+ if shake_amount > shake_limit:
+ shake_amount = shake_limit
+
+ shake_tween.stop_all()
+ set_process(true)
+ shake_timer.start(shake_time)
+
+
+func _on_shake_timer_timeout():
+ shake_amount = 0
+ set_process(false)
+ shake_tween.interpolate_property(head, "translation", head.transform.origin, Vector3.ZERO,
+ 0.1, Tween.TRANS_QUAD, Tween.EASE_IN_OUT)
+ shake_tween.start()
+
func _input(event: InputEvent):
if event is InputEventMouseMotion and Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
mouse_axis = event.relative
diff --git a/godot/scripts/characters/player_controller_new.gd b/godot/scripts/characters/player_controller_new.gd
index d78b6e3..62f5ef6 100644
--- a/godot/scripts/characters/player_controller_new.gd
+++ b/godot/scripts/characters/player_controller_new.gd
@@ -266,10 +266,10 @@ func _integrate_forces(state: PhysicsDirectBodyState) -> void:
for i in range(player_state.get_contact_count()):
var contact_angle_from_up : float = Vector3.UP.angle_to(player_state.get_contact_local_normal(i))
if contact_angle_from_up > FLOOR_MAX_ANGLE and !is_on_floor:
- friction = 0
+ physics_material_override.friction = 0
break
if i == player_state.get_contact_count() - 1:
- friction = 1
+ physics_material_override.friction = 1
rpc("set_phys_transform", transform, linear_velocity)
if global_transform.origin.y < -30:
diff --git a/godot/scripts/machines/Cannon.gd b/godot/scripts/machines/Cannon.gd
index b66903a..6b988a0 100644
--- a/godot/scripts/machines/Cannon.gd
+++ b/godot/scripts/machines/Cannon.gd
@@ -82,6 +82,7 @@ func attack1():
rpc("fire")
remotesync func fire():
+ world.emit_signal("screen_shake", global_transform.origin, 0.05, 0.2)
loaded = false
controllable = false
status.set_visible(true)
diff --git a/godot/scripts/vehicles/Airplane.gd b/godot/scripts/vehicles/Airplane.gd
index 705820d..2de4792 100644
--- a/godot/scripts/vehicles/Airplane.gd
+++ b/godot/scripts/vehicles/Airplane.gd
@@ -102,11 +102,10 @@ remotesync func trigger_boost():
remotesync func end_boost():
$"%RocketTrail".emitting = false
- print("stopped boosting")
boosting = false
countdown = boost_length
-func _process(delta):
+func _process(_delta):
if is_network_master():
if boosting and countdown <= 0:
rpc("end_boost")