This repository has been archived on 2022-01-09. You can view files and clone it, but cannot push or open issues/pull-requests.
liblast/Game/Classes/Weapon/Weapon.gd

71 lines
1.7 KiB
GDScript

extends Spatial
signal damage_dealt(kill)
signal ammo_changed(weapon)
export(bool) var Hitscan = true
export(int) var Damage = 100
export(float) var Delay = 0.1
export(bool) var Automatic = false
export(int) var Rounds = 10
onready var camera = get_parent().get_parent().get_parent()
onready var player = camera.get_parent()
onready var ejector = find_node("Ejector")
onready var muzzle = find_node("Muzzle")
onready var current_rounds = Rounds
var currently_fireing = false
var cached_fire = false
#onready var sound_shoot = $SoundShoot
var casing = preload("res://Assets/Weapons/Handgun/Casing.tscn")
var tracer = preload("res://Assets/Effects/BulletTracer.tscn")
var trigger_held_primary = false setget set_trigger_held_primary, get_trigger_held_primary
var trigger_held_secondary = false
var is_reloading = false
#var is_active = false #TODO - for reimplementing weapins switching
func set_trigger_held_primary(active:bool):
trigger_held_primary = active
func get_trigger_held_primary():
return trigger_held_primary
func _ready():
$Sounds.global_transform.origin = camera.global_transform.origin
func switched_to_weapon():
emit_signal("ammo_changed", self)
sync func dry_fire():
pass
func reload():
rpc("play_reload_animation")
is_reloading = true
cached_fire = false
yield($Model/AnimationPlayer, "animation_finished")
#if not cached_fire:
currently_fireing = false
is_reloading = false
current_rounds = Rounds
emit_signal("ammo_changed", self)
func reset():
currently_fireing = false
current_rounds = Rounds
emit_signal("ammo_changed", self)
sync func play_reload_animation():
$Model/AnimationPlayer.play("Reload", 0.5, 1)
$Sounds/Reload.play()