68 lines
1.6 KiB
GDScript
68 lines
1.6 KiB
GDScript
extends Node2D
|
|
|
|
export(PackedScene) var zombie_scene
|
|
export(PackedScene) var relic_scene
|
|
|
|
var relics = []
|
|
var relic_left = 0
|
|
var debug = 1
|
|
|
|
func add_zombie():
|
|
var zombie = zombie_scene.instance()
|
|
zombie.set_player($Player)
|
|
zombie.position = $TileMap.random_valid_safe_position($Player.position, "ground")
|
|
zombie.connect("hit", self, 'player_got_hit')
|
|
add_child(zombie)
|
|
|
|
func add_relics():
|
|
relic_left += 1
|
|
var relic = relic_scene.instance()
|
|
var relic_position = Vector2.ZERO
|
|
var found_position = 0
|
|
|
|
# avoid spawning a relic too close to another one
|
|
while found_position == 0:
|
|
found_position = 1
|
|
relic_position = $TileMap.random_valid_position("ground")
|
|
for r in relics:
|
|
if r.position.distance_to(relic_position) < 10*32:
|
|
found_position = 0
|
|
break
|
|
|
|
relic.position = relic_position
|
|
relic.connect("relic", self, 'score_increase')
|
|
relics.append(relic)
|
|
add_child(relic)
|
|
|
|
func _ready():
|
|
VisualServer.set_default_clear_color(Color(0.0,0.0,0.0,1.0))
|
|
randomize()
|
|
$Darkness.visible = true
|
|
|
|
for tile in $TileMap.add_light_campfire():
|
|
var light = preload("res://Campfire_Light.tscn").instance()
|
|
light.position = tile
|
|
add_child(light)
|
|
|
|
for i in 8:
|
|
add_relics()
|
|
$Player.relic_left(relic_left)
|
|
var random_pos = $TileMap.random_valid_position("ground")
|
|
$Player.position = random_pos
|
|
|
|
func _on_SpawnEnemy_timeout():
|
|
add_zombie()
|
|
|
|
func player_got_hit():
|
|
$Player.player_die()
|
|
|
|
func score_increase():
|
|
print("found a relic")
|
|
relic_left -= 1
|
|
$Player.relic_left(relic_left)
|
|
$Player.light_increase()
|
|
print("still " + str(relic_left) + " to find")
|
|
|
|
func _on_Player_restart():
|
|
get_tree().change_scene(get_tree().current_scene.filename)
|