Wave generation
This commit is contained in:
@ -13,22 +13,42 @@ func _ready() -> void:
|
|||||||
get_node("CanvasLayer/SidePanel").Update_Lifes(20)
|
get_node("CanvasLayer/SidePanel").Update_Lifes(20)
|
||||||
get_node("CanvasLayer/SidePanel").Update_Coins(2000)
|
get_node("CanvasLayer/SidePanel").Update_Coins(2000)
|
||||||
|
|
||||||
|
#the meaning of the columns inside my wave generation matris:
|
||||||
|
# Number of enemies need to be spawned, chance of spawn an enemy, chance of forkman, chance of gobline, chance of ork
|
||||||
|
var waves = [
|
||||||
|
[10, 0.2, 0.8, 0.2, 0.0], #wave 1
|
||||||
|
[20, 0.4, 0.5, 0.5, 0.0], #wave 2
|
||||||
|
[30, 0.5, 0.4, 0.4, 0.1], #wave 3
|
||||||
|
[40, 0.8, 0.3, 0.2, 0.5], #wave 4
|
||||||
|
[50, 0.9, 0.1, 0.2, 0.7], #wave 5
|
||||||
|
]
|
||||||
|
|
||||||
func _on_timer_timeout() -> void:
|
func _on_timer_timeout() -> void:
|
||||||
spawnMonster()
|
spawnMonster()
|
||||||
|
|
||||||
func spawnMonster():
|
func spawnMonster():
|
||||||
var path = PathFollow2D.new()
|
for w in waves:
|
||||||
var monster = enemies.pick_random().instantiate()
|
if w[0] > 0:
|
||||||
path.add_child(monster)
|
if randf() < w[1]: #chance of generating any kind of enemy
|
||||||
|
w[0] -= 1
|
||||||
path_2d.add_child(path)
|
var chosen = randf()
|
||||||
|
var sum = 0.0
|
||||||
|
for i in range(2,5):
|
||||||
|
sum += w[i]
|
||||||
|
if chosen < sum:
|
||||||
|
var monster = enemies[i-2].instantiate()
|
||||||
|
var path = PathFollow2D.new()
|
||||||
|
path.add_child(monster)
|
||||||
|
path_2d.add_child(path)
|
||||||
|
break
|
||||||
|
break
|
||||||
|
|
||||||
func decrease_life(damage) -> void:
|
func decrease_life(damage) -> void:
|
||||||
get_node("CanvasLayer/SidePanel").Update_Lifes(-damage)
|
get_node("CanvasLayer/SidePanel").Update_Lifes(-damage)
|
||||||
if get_node("CanvasLayer/SidePanel").get_Lifes() <= 0:
|
if get_node("CanvasLayer/SidePanel").get_Lifes() <= 0:
|
||||||
game_over()
|
game_over()
|
||||||
|
|
||||||
|
|
||||||
func game_over()-> void:
|
func game_over()-> void:
|
||||||
get_node("Timer").stop()
|
get_node("Timer").stop()
|
||||||
var enemy = get_node("Path2D").get_children()
|
var enemy = get_node("Path2D").get_children()
|
||||||
|
@ -1549,7 +1549,7 @@ texture = ExtResource("65_ef8wx")
|
|||||||
curve = SubResource("Curve2D_6abe5")
|
curve = SubResource("Curve2D_6abe5")
|
||||||
|
|
||||||
[node name="Timer" type="Timer" parent="."]
|
[node name="Timer" type="Timer" parent="."]
|
||||||
wait_time = 1.5
|
wait_time = 0.5
|
||||||
autostart = true
|
autostart = true
|
||||||
|
|
||||||
[node name="TrapArea" type="Area2D" parent="."]
|
[node name="TrapArea" type="Area2D" parent="."]
|
||||||
|
@ -83,6 +83,7 @@ collision_mask = 2
|
|||||||
shape = SubResource("CircleShape2D_be2t6")
|
shape = SubResource("CircleShape2D_be2t6")
|
||||||
|
|
||||||
[node name="Timer" type="Timer" parent="."]
|
[node name="Timer" type="Timer" parent="."]
|
||||||
|
wait_time = 0.5
|
||||||
autostart = true
|
autostart = true
|
||||||
|
|
||||||
[node name="Area2D" type="Area2D" parent="."]
|
[node name="Area2D" type="Area2D" parent="."]
|
||||||
|
Reference in New Issue
Block a user