summaryrefslogtreecommitdiff
path: root/godot/scripts/machines/Cannon.gd
diff options
context:
space:
mode:
authorAnson Bridges <bridges.anson@gmail.com>2022-10-11 00:15:48 -0400
committerAnson Bridges <bridges.anson@gmail.com>2022-10-11 00:15:48 -0400
commite7fb9bacf3ebb5209f90f412757c35276af51e85 (patch)
tree2dfac9d1273bf5efa1da5cfe82b4d8e64ae0bf3a /godot/scripts/machines/Cannon.gd
parent7dbec964a375598d454e04719576eb6c469a5d7b (diff)
ai cannon-manning state machine
Diffstat (limited to 'godot/scripts/machines/Cannon.gd')
-rw-r--r--godot/scripts/machines/Cannon.gd27
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)