Files
my-gd-game/scenes/level.gd
2025-01-22 19:05:53 +01:00

59 lines
1.7 KiB
GDScript

extends Node2D
var meteor_scene: PackedScene = load("res://scenes/meteor.tscn");
var laser_scene: PackedScene = load("res://scenes/laser.tscn");
@export var health: int = 3
func _ready() -> void:
var rng := RandomNumberGenerator.new()
var window_size = get_viewport().get_visible_rect().size;
$Borders/Left/Coll.shape.size.y = window_size[1];
$Borders/Right/Coll.shape.size.y = window_size[1];
$Borders/Top/Coll.shape.size.x = window_size[0];
$Borders/Bot/Coll.shape.size.x = window_size[0];
$Borders/Right.position.x = window_size[0] + 30;
$Borders/Bot.position.y = window_size[1];
Global.enemy_level = 0;
Global.ship_level = 0;
Global.score = 0;
Global.meteor_base_speed = 400;
Global.meteor_base_timer = 0.25;
Global.player_base_speed = 500;
Global.player_shoot_cooldown = 0.5;
for _n in range(4, 15):
var star = $Stars/base.duplicate();
$Stars.add_child(star);
star.global_position = Vector2(
rng.randi_range(0, window_size[0]),
rng.randi_range(0, window_size[1]),
);
star.speed_scale = rng.randf_range(0.5, 1.5);
var s = rng.randf_range(0.5, 1.5);
star.scale = Vector2(s, s);
get_tree().call_group("ui", "set_health", health);
func _process(_delta: float) -> void:
if health <= 0:
get_tree().change_scene_to_file("res://scenes/game_over.tscn");
func _on_meteor_timer_timeout() -> void:
$MeteorTimer.wait_time = Global.meteor_base_timer;
var meteor = meteor_scene.instantiate();
$Meteors.add_child(meteor);
meteor.connect("collision", _on_meteor_collision);
func _on_meteor_collision() -> void:
health -= 1;
get_tree().call_group("ui", "set_health", health);
$ShipHit.play();
func _on_player_laser(pos: Vector2) -> void:
var laser = laser_scene.instantiate();
$Lasers.add_child(laser);
laser.position = pos;