Fronter/Player.gd

146 lines
3.6 KiB
GDScript

extends Area2D
signal refund
signal shooting_speed_upgrade
export (PackedScene) var Laser
#Default ship strengths and costs
const SHOOTING_SPEED_UPGRADE_TIER1 = 50 #To be replaced
const BULLET_DELAY_TIER1 = 0.8
const BULLET_DELAY_TIER2 = 0.5
const BULLET_DELAY_TIER3 = 0.2
const BULLET_DELAY_TIER4 = 0.1
const BULLET_DELAY_TIER5 = 0.05
const BULLET_DELAY_TIER2_COST = 100
const BULLET_DELAY_TIER3_COST = 200
const BULLET_DELAY_TIER4_COST = 400
const BULLET_DELAY_TIER5_COST = 1000
const SHIP_SPEED_TIER1 = 150
const SHIP_SPEED_TIER2 = 200
const SHIP_SPEED_TIER3 = 300
const SHIP_SPEED_TIER4 = 500
const SHIP_SPEED_TIER5 = 800
#func upgradeBulletDelay():
# if (bullet_delay_tier == 1 && money >= BULLET_DELAY_TIER2_COST):
# bullet_delay = BULLET_DELAY_TIER2
# money -= BULLET_DELAY_TIER2_COST
# ship_value += BULLET_DELAY_TIER2_COST
#
var screensize
var ship_speed = SHIP_SPEED_TIER1
var bullet_delay = BULLET_DELAY_TIER1
var bullet_delay_tier = 1
var laser_penetration = 0
var double_laser = false
var ship_value = 0
var refund_percentage = 1
var money = 100
var shooting_speed_upgrade = 50
func _ready():
timer = Timer.new()
timer.set_one_shot(true)
timer.set_wait_time(bullet_delay)
timer.connect("timeout", self, "on_timeout_complete")
add_child(timer)
position.x = 100
position.y = 250
screensize = get_viewport_rect().size
$AnimatedSprite.play()
# Initialization here
pass
func refund():
bullet_delay = BULLET_DELAY_TIER1
ship_speed = SHIP_SPEED_TIER1
shooting_speed_upgrade = SHOOTING_SPEED_UPGRADE_TIER1
money += ship_value*refund_percentage
emit_signal("refund", ship_value*refund_percentage)
ship_value = 0
var timer = null
var can_shoot = true
var going_up = false
var going_down = false
var shoot_down = false
func on_timeout_complete():
can_shoot = true
func _process(delta):
var velocity = Vector2() # the player's movement vector
if (Input.is_action_pressed("ui_right")):
velocity.x += 1
if (Input.is_action_pressed("ui_left")):
velocity.x -= 1
if (Input.is_action_pressed("ui_down") || going_down == true):
velocity.y += 1
if (Input.is_action_pressed("ui_up") || going_up == true):
velocity.y -= 1
if (velocity.length() > 0):
velocity = velocity.normalized() * ship_speed
position += velocity * delta
position.x = clamp(position.x, 0, screensize.x)
position.y = clamp(position.y, 0, screensize.y)
if (Input.is_action_pressed("ui_select") && can_shoot == true && money >= shooting_speed_upgrade ):
emit_signal("shooting_speed_upgrade")
money -= shooting_speed_upgrade
ship_value += shooting_speed_upgrade
shooting_speed_upgrade *= 1.02
bullet_delay = bullet_delay * 0.95
can_shoot = false
timer.set_wait_time(bullet_delay)
timer.start()
if ((Input.is_action_pressed("ui_accept") || shoot_down == true) && can_shoot == true):
shoot()
func _on_Player_body_entered(body):
prints("hit")
func upPressed():
going_up = true
func upDepressed():
going_up = false
func downPressed():
going_down = true
func downDepressed():
going_down = false
func shootDown():
shoot_down = true
func shootUp():
shoot_down = false
func shoot():
var laser = Laser.instance()
get_node("../").add_child(laser)
laser.current_pen = laser_penetration
laser.position.y = position.y - 27
laser.position.x = position.x + 46
#MAYBE THE LASERS SHOULD BE THEIR OWN NODES
#Would allow for more simple additions in the future
if double_laser == true:
var laser2 = Laser.instance()
get_node("../").add_child(laser2)
laser2.position.y = position.y + 28
laser2.position.x = position.x + 46
laser2.current_pen = laser_penetration
can_shoot = false
timer.start()