script: ship
extends Area2D
var armor = 4 setget setarmor
const scnlaser = preload("res://scenes/lasership.tscn")
const scnexplosion = preload("res://scenes/explosion.tscn")
const scn_flash = preload("res://scenes/flash.tscn")
signal armor_changed
func ready():
setprocess(true)
addtogroup("ship")
yield(utils.create_timer(0.5), "timeout")
shoot()
pass
func process(delta):
# tracking mouse
var motion = (utils.mousepos.x - get_pos().x) * 0.2
translate(Vector2(motion, 0))
# clamping to view
var pos = get_pos()
pos.x = clamp(pos.x, 0+16, utils.view_size.width-16)
set_pos(pos)
pass
func shoot():
while true:
var pos_left = get_node("cannons/left" ).get_global_pos()
var pos_right = get_node("cannons/right").get_global_pos()
create_laser(pos_left )
create_laser(pos_right)
yield(utils.create_timer(0.25), "timeout")
pass
func setarmor(newvalue):
if newvalue < armor:
utils.mainnode.addchild(scnflash.instance())
armor = new_value
emit_signal("armor_changed", armor)
if armor <= 0:
create_explosion()
queue_free()
pass
func createlaser(pos):
var laser = scnlaser.instance()
laser.setpos(pos)
utils.mainnode.add_child(laser)
pass
func createexplosion():
var explosion = scnexplosion.instance()
explosion.setpos(getpos())
utils.mainnode.addchild(explosion)
pass