From 7a1d857de96174dfa5a0fa40f8c14acbd2f651c2 Mon Sep 17 00:00:00 2001 From: Anson Bridges Date: Sun, 25 Sep 2022 06:39:12 -0400 Subject: weapons, viewmodels, some performance fixes --- godot/scenes/weapons/rockets.gd | 68 +++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 29 deletions(-) (limited to 'godot/scenes/weapons/rockets.gd') diff --git a/godot/scenes/weapons/rockets.gd b/godot/scenes/weapons/rockets.gd index c519fd6..5270186 100644 --- a/godot/scenes/weapons/rockets.gd +++ b/godot/scenes/weapons/rockets.gd @@ -1,37 +1,47 @@ -extends Node +extends Resource -var weapon_name = "ROCKETS" -var player -onready var world = get_tree().get_root().get_node("GAMEWORLD") +var player_owner: RigidBody = null +var can_throw: bool = true +var rockets_scene: Spatial = null -var ammo_full : int = 50 -var ammo : int +var rockets_left: int = 5 -var reload_time :float= 1.0 -var cooldown_time : float = 0.0 +const name: String = "HANDS" -func _ready(): - ammo = ammo_full - player = get_parent() +var trfrm = Transform ( Vector3(1.501,-0.142,-2.418), Vector3(-2.367,-0.693,-1.429),Vector3(-0.516,2.761,-0.483),Vector3(-0.206,0.639,-0.045)) -func _process(delta): - if cooldown_time > 0.0: - cooldown_time -= delta +func _init(): + rockets_scene = preload("res://scenes/weapons/rockets.tscn").instance() + rockets_scene.set_visible(false) + +func init(owner): + player_owner = owner + player_owner.add_weapon_vm(rockets_scene, trfrm) + +func select() -> void: + player_owner.rpc("anim_event", {"VMANIMPLAY" : "rockets_idle_vm"}) + if rockets_left > 0: rockets_scene.set_visible(true) + +func deselect() -> bool: + if !can_throw and rockets_left > 0: + return false + rockets_scene.set_visible(false) + return true func attack1(): - if cooldown_time <= 0.0 and ammo >= 1: - ammo -= 1 - cooldown_time = reload_time - rpc("add_rocket_to_scene", player.head.global_transform.basis, get_tree().get_network_unique_id()) - -remotesync func add_rocket_to_scene(dir, id): - var rocket = preload("res://scenes/ballistics/Rocket.tscn").instance() - world.get_node("BALLISTICS").add_child(rocket, true) - rocket.shooter = player.name + " (" + world.players_info[player.get_network_master()][0] + ")" - rocket.shooter_id = id - rocket.global_transform.origin = player.head.global_transform.origin - rocket.global_transform.basis = Basis(-1*dir.z, dir.y, dir.x) - rocket.add_collision_exception_with(player) - -func attack2(): + if !can_throw: + return + can_throw = false + player_owner.rpc("anim_event", {"VMANIMPLAY" : "rockets_launch_vm"}) + rockets_scene.get_node("AnimationPlayer").play("throw_animation") + yield(player_owner.get_tree().create_timer(1.43), "timeout") + rockets_left -= 1 + player_owner.rpc("add_rocket_to_scene", rockets_scene.global_transform.origin, player_owner.head.global_transform.basis, player_owner.get_network_master()) + yield(player_owner.get_tree().create_timer(1.6), "timeout") + if rockets_left > 0: + can_throw = true + else: + rockets_scene.set_visible(false) + +func mouse_input(_m1: float, _m3: float, m2: float) -> void: pass -- cgit v1.2.3