NovemberGodotGame/fabigame/scripts/scene_manager.gd

99 lines
2.4 KiB
GDScript

extends Node
var bulletsFiredTotal := 0
var bulletsMadeTotal := 0
var bulletArray:Array = []
var timer:= Timer.new()
@onready var coins: Node = $"../Coins"
@onready var bad_guys: Node = $"../BadGuys"
@onready var player: CharacterBody2D = $"../CharacterBody2D"
@onready var ui: Control = $"../CanvasLayer/Control"
@onready var key_trigger: Area2D = $"../KeyTrigger"
var bullet = preload("res://scenes/bullet.tscn")
func _ready() -> void:
add_child(timer)
timer.wait_time = 1
timer.one_shot = false
timer.connect("timeout", GameController.timeOut)
timer.start()
var totalCoins = 0
var totalEnemies = 0
### coins loop
for n in coins.get_children():
totalCoins +=1
n.coinCollected.connect(GameController.coinCollected)
### enemies loop
for n in bad_guys.get_children():
totalEnemies +=1
n.playerDamage.connect(GameController.playerDamage)
### wire up GameController signals to Player
GameController.playerHurt.connect(hurtPlayer)
GameController.playerHurt.connect(ui.healthUpdate)
GameController.playerDeath.connect(killPlayer)
GameController.levelComplete.connect(changeLevel)
GameController.tick.connect(ui.timerUpdate)
GameController.playerOptions.connect(showKey)
key_trigger.keyCollect.connect(GameController.keyCollected)
key_trigger.keyCollect.connect(player.keyCollected)
player.playerDead.connect(deadPlayer)
GameController.coinsUpdate.connect(ui.coinsUpdate)
GameController.setTotalCoins(totalCoins)
GameController.sendOptions()
func bulletFactory():
print("Make a bullet at the factory")
var mybullet
#how many bullets have been made
if bulletArray.size() < 4:
#make a new bullet
mybullet = bullet.instantiate()
mybullet.connect("hit", onBulletHit)
owner.add_child(mybullet)
else:
mybullet = bulletArray.pop_back()
bulletArray.push_front(mybullet)
bulletsMadeTotal += 1
return mybullet
func onBulletHit(bullet, body):
print("Scene Manager knows a bullet hit something")
bullet.setSpeed(0)
if body.is_in_group("shootable"):
print("RIP")
body.queue_free()
func hurtPlayer(amt):
player.hurtPlayer(amt)
func killPlayer():
player.killPlayer()
func deadPlayer():
GameController.reset()
get_tree().reload_current_scene()
func showKey(key):
if key == true:
player.keyCollected()
else:
player.keyDrop()
func changeLevel(level):
print("Scene manager should change level")
GameController.reset()
get_tree().change_scene_to_file(level)