initial commit
This commit is contained in:
+201
@@ -0,0 +1,201 @@
|
||||
extends Node2D
|
||||
|
||||
@onready var spawntimer = $spawntimer
|
||||
@onready var player = $Player
|
||||
@onready var healthBar = $hud/healthbar
|
||||
@onready var healthWhite = $hud/healthwhite
|
||||
@onready var healthBg = $hud/healthbg
|
||||
@onready var healthLabel = $hud/healthlabel
|
||||
@onready var slowdown = $hud/slowdown
|
||||
@onready var upgradesHUD = $hud/upgrades
|
||||
@onready var ff = $hud/ff
|
||||
@onready var beep = $hud/beep
|
||||
@onready var beep2 = $hud/beep2
|
||||
|
||||
@onready var waveBg = $hud/wavebg
|
||||
@onready var waveBar = $hud/wavebar
|
||||
@onready var waveLabel = $hud/wavetimerlabel
|
||||
@onready var waveCountLabel = $hud/wavelabel
|
||||
|
||||
@onready var tilemap = $navigation/TileMapLayer
|
||||
#func _ready() -> void:
|
||||
#
|
||||
|
||||
@onready var shooter = preload("res://assets/scenes/shooter.tscn")
|
||||
@onready var upgradeUI = preload("res://assets/scenes/upgradeUI.tscn")
|
||||
|
||||
var healthLast = 0
|
||||
var baked := false
|
||||
var rooms = []
|
||||
|
||||
var ticks := 0
|
||||
var tickToDel := 0
|
||||
|
||||
var currentWave := 1
|
||||
var waveTimer := 15.0
|
||||
var untilNewWave := 15.0
|
||||
|
||||
var upgradeUnlocksPerTick = {0: [], 1: [], 2: [], 3: [], 4: [], 5: [], 6: [], 7: [], 8: [], 9: []}
|
||||
|
||||
# up, down, left, right
|
||||
#var roomRules := [
|
||||
#[
|
||||
#[0, 1, 2, 3, 4, 5, 6, 7, 10], [], [1, 2, 3, 5, 6, 7], [1, 2, 3, 4, 5, 6]
|
||||
#],
|
||||
#[
|
||||
#
|
||||
#],
|
||||
#[
|
||||
#
|
||||
#],
|
||||
#[
|
||||
#
|
||||
#]
|
||||
#]
|
||||
|
||||
@onready var patterns: Array[TileMapPattern] = []
|
||||
|
||||
func wfc():
|
||||
pass
|
||||
|
||||
func appendUpgrade(upgradeID : String):
|
||||
print(upgradeUnlocksPerTick)
|
||||
Globals.unlockedUpgrades[upgradeID] = Globals.unlockedUpgrades.get(upgradeID, 0) + 1
|
||||
upgradeUnlocksPerTick[ticks].append(upgradeID)
|
||||
#TextureRect.new().texture.resource_path
|
||||
|
||||
var modified := false
|
||||
for icon in upgradesHUD.get_children():
|
||||
if icon.upgradeID == upgradeID:
|
||||
#icon.amount += 1
|
||||
modified = true
|
||||
break
|
||||
|
||||
if not modified:
|
||||
var instantiated = upgradeUI.instantiate()
|
||||
instantiated.get_node("texture").texture = load(str("res://assets/images/upgrades/", upgradeID, ".png"))
|
||||
instantiated.timer = Globals.UPGRADE_TIMERSTART
|
||||
instantiated.upgradeID = upgradeID
|
||||
#instantiated.get_node("animations").play("init")
|
||||
upgradesHUD.add_child(instantiated)
|
||||
|
||||
$newupgrade/title.text = upgradeID.capitalize().to_lower()
|
||||
$newupgrade/icon.texture = load(str("res://assets/images/upgrades/", upgradeID, ".png"))
|
||||
$newupgrade/text.text = Globals.upgradeDescriptions[upgradeID]
|
||||
|
||||
$newupgrade/animations.stop()
|
||||
$newupgrade/animations.play("newUpgrade")
|
||||
|
||||
func _ready():
|
||||
#appendUpgrade("rollback")
|
||||
|
||||
for i in range(11):
|
||||
patterns.append(tilemap.tile_set.get_pattern(i))
|
||||
|
||||
for y in range(-10,10):
|
||||
for x in range(-10,10):
|
||||
if randi_range(1, 100) < 50:
|
||||
tilemap.set_pattern(Vector2i(x * 5, y * 5), patterns[randi_range(0, 7)])
|
||||
else:
|
||||
tilemap.set_pattern(Vector2i(x * 5, y * 5), patterns[8])
|
||||
|
||||
#tilemap.set_pattern(Vector2i(-12, -12), patterns[9])
|
||||
#tilemap.set_pattern(Vector2i(4, -12), patterns[9])
|
||||
#tilemap.set_pattern(Vector2i(-12, 4), patterns[9])
|
||||
#tilemap.set_pattern(Vector2i(4, 4), patterns[9])
|
||||
|
||||
$navigation.bake_navigation_polygon()
|
||||
|
||||
var timer := 0.0
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
waveTimer -= delta
|
||||
|
||||
if not baked:
|
||||
timer += delta
|
||||
$bakewait/Label.text = "baking collisions"
|
||||
for i in range(int(timer)):
|
||||
$bakewait/Label.text += "."
|
||||
|
||||
if timer >= 4: timer = 0
|
||||
|
||||
return
|
||||
|
||||
|
||||
$bg.global_position = player.global_position - $bg.size / 2
|
||||
|
||||
timer += delta / player.speedScale
|
||||
|
||||
if player.transitioning:
|
||||
beep.pitch_scale = 1
|
||||
elif player.health < 15:
|
||||
beep.pitch_scale = 1 + 2 - (player.health / 15) * 2
|
||||
else:
|
||||
beep.pitch_scale = 1
|
||||
|
||||
if player.newHealth == -1 and not player.transitioning:
|
||||
player.health -= delta * player.speedScale * player.damageScale
|
||||
if healthLast != int(player.health):
|
||||
beep.play()
|
||||
$hud/AnimationPlayer.play("secondBig")
|
||||
healthBar.size.x += (healthBg.size.x * (int(player.health) / 30.0) - healthBar.size.x) * 2 * delta
|
||||
waveBar.size.x += (waveBg.size.x * (int(waveTimer) / untilNewWave) - waveBar.size.x) * 3 * delta
|
||||
#healthWhite.size.x = healthBg.size.x * (int(player.health + 1) / 30.0)
|
||||
healthBar.color.r = 1 - (int(player.health) / 30.0)
|
||||
healthBar.color.g = (int(player.health) / 30.0)
|
||||
|
||||
healthLabel.text = str(int(player.health), "s")
|
||||
waveLabel.text = str(int(waveTimer), "s")
|
||||
|
||||
beep2.global_position = player.global_position
|
||||
|
||||
if waveTimer < 0:
|
||||
untilNewWave *= 1.2
|
||||
waveTimer = untilNewWave
|
||||
currentWave += 1
|
||||
|
||||
spawntimer.wait_time *= 0.9
|
||||
|
||||
appendUpgrade(Globals.availableUpgrades.pick_random())
|
||||
|
||||
waveCountLabel.text = str("wave ", currentWave)
|
||||
beep2.play()
|
||||
|
||||
healthLast = int(player.health)
|
||||
slowdown.material.set_shader_parameter('saturation', player.grayscaleVal)
|
||||
#a
|
||||
|
||||
|
||||
func _on_navigation_bake_finished() -> void:
|
||||
$bakewait.queue_free()
|
||||
baked = true
|
||||
timer = 0
|
||||
|
||||
|
||||
func _on_spawntimer_timeout() -> void:
|
||||
var newEnemy = shooter.instantiate()
|
||||
newEnemy.health = 100 * pow(currentWave, 0.7)
|
||||
newEnemy.maxHealth = 100 * pow(currentWave, 0.7)
|
||||
newEnemy.wave = currentWave
|
||||
newEnemy.global_position = player.global_position + Vector2(randi_range(-500, 500), randi_range(-100, 100))
|
||||
get_node("enemies").add_child(newEnemy)
|
||||
|
||||
|
||||
func _on_player_transition_start(seconds: Variant) -> void:
|
||||
for enemy in get_node("enemies").get_children():
|
||||
enemy.moveback(max(seconds, enemy.ticks / 20))
|
||||
print("moveback1")
|
||||
|
||||
print(upgradeUnlocksPerTick, "\n", max(ticks - int(seconds) - 1,tickToDel))
|
||||
for upgrade in upgradeUnlocksPerTick[max(ticks - int(seconds) - 1,tickToDel)]:
|
||||
appendUpgrade(upgrade)
|
||||
|
||||
|
||||
func _on_upgradetick_timeout() -> void:
|
||||
ticks += 1
|
||||
if upgradeUnlocksPerTick.get(ticks, [67]) == [67]: upgradeUnlocksPerTick[ticks] = []
|
||||
|
||||
if ticks > 60:
|
||||
upgradeUnlocksPerTick.erase(tickToDel)
|
||||
tickToDel += 1
|
||||
|
||||
Reference in New Issue
Block a user