diff options
Diffstat (limited to 'godot/scripts/machines/Cannon.gd')
| -rw-r--r-- | godot/scripts/machines/Cannon.gd | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/godot/scripts/machines/Cannon.gd b/godot/scripts/machines/Cannon.gd index 6c0b350..b66903a 100644 --- a/godot/scripts/machines/Cannon.gd +++ b/godot/scripts/machines/Cannon.gd @@ -21,6 +21,22 @@ export var max_yaw = 15 onready var muzzle: Spatial = get_node("YawJoint/PitchJoint/Muzzle") onready var status: Label3D = get_node("StatusNotifier") +onready var steer_area: Area = get_node("SteerArea") + +const ammo_type = "cannonball" + +var load_time: float = 3.0 +var load_progress: float = 0.0 + +func increase_load(delta) -> float: + if loaded: return -1.0 + load_progress += delta + if load_progress >= load_time: + rpc("load_cannonball") + return load_progress/load_time + +func reset_load(): + load_progress = 0 remote func update_aim(pitch_z, yaw_y): $YawJoint/PitchJoint.rotation_degrees.z = pitch_z @@ -39,12 +55,13 @@ func mp_init(init_info): func _ready(): if get_parent().name != "MACHINES": #if cannon is aboard ship add_collision_exception_with(get_parent().get_parent()) - mode = RigidBody.MODE_KINEMATIC + mode = RigidBody.MODE_STATIC + print("kinematic") world_ballistics = world.get_node("BALLISTICS") if loaded: controllable = true func on_new_control(): - if is_network_master(): world.cam.attach(self, "STATIC", "./YawJoint/PitchJoint/CameraPoint") + if is_network_master() and get_network_master() != 1: world.cam.attach(self, "STATIC", "./YawJoint/PitchJoint/CameraPoint") func _physics_process(delta): if in_use and is_network_master(): #aim @@ -78,9 +95,11 @@ remotesync func fire(): add_collision_exception_with(cball) cball.global_transform.origin = muzzle.global_transform.origin cball.linear_velocity = muzzle.global_transform.basis.x*ball_speed - cball.shooter = user.name + " (" + world.players_info[user.get_network_master()][0] + ")" + cball.set_network_master(1) + cball.shooter = user.name + if user.get_network_master() != 1: cball.shooter += " (" + world.players_info[user.get_network_master()][0] + ")" cball.shooter_id = user.get_network_master() - if mode == RigidBody.MODE_KINEMATIC: + if mode == RigidBody.MODE_STATIC: get_parent().get_parent().apply_impulse($YawJoint/PitchJoint.global_transform.origin - get_parent().global_transform.origin, -1*cball.mass*ball_speed*muzzle.global_transform.basis.x) else: if is_network_master(): apply_impulse($YawJoint/PitchJoint.global_transform.origin - global_transform.origin, -1*cball.mass*ball_speed*muzzle.global_transform.basis.x) |
