mirror of
https://github.com/mx42/my-gd-game.git
synced 2026-01-14 13:29:52 +01:00
feat: initial commit
This commit is contained in:
58
scenes/level.gd
Normal file
58
scenes/level.gd
Normal file
@@ -0,0 +1,58 @@
|
||||
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.autoplay = "true";
|
||||
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 _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);
|
||||
if health <= 0:
|
||||
get_tree().change_scene_to_file("res://scenes/game_over.tscn");
|
||||
else:
|
||||
$ShipHit.play();
|
||||
|
||||
func _on_player_laser(pos: Vector2) -> void:
|
||||
var laser = laser_scene.instantiate();
|
||||
$Lasers.add_child(laser);
|
||||
laser.position = pos;
|
||||
Reference in New Issue
Block a user