diff options
Diffstat (limited to 'godot/scripts/GameBase.gd')
| -rw-r--r-- | godot/scripts/GameBase.gd | 15 |
1 files changed, 14 insertions, 1 deletions
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() |
