GameManger and Lives

pull/11/head
Sascha 2023-10-15 15:52:34 +07:00
parent e0a437cef6
commit 51315cfe1d
4 changed files with 53 additions and 11 deletions

@ -0,0 +1,6 @@
<Project Sdk="Godot.NET.Sdk/4.2.0-dev.6">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
</Project>

@ -3,11 +3,11 @@
[ext_resource type="PackedScene" uid="uid://tlr55u0gn20l" path="res://Packed-Scenes/player_ship.tscn" id="1_njb5h"]
[ext_resource type="Texture2D" uid="uid://cg6n1hh3lj7rn" path="res://Textures/tile_nebula_green_dff.png" id="2_43vix"]
[ext_resource type="Script" path="res://Scripts/Background.cs" id="3_imgbw"]
[ext_resource type="Script" path="res://Scripts/Asteroids.cs" id="4_pf4xb"]
[ext_resource type="PackedScene" uid="uid://6dn1gjqffnt" path="res://Packed-Scenes/asteroid_01.tscn" id="5_do6ba"]
[ext_resource type="PackedScene" uid="uid://cvlxm2yrohsca" path="res://Packed-Scenes/asteroid_02.tscn" id="6_tqoe7"]
[ext_resource type="PackedScene" uid="uid://brqqgidqchi88" path="res://Packed-Scenes/asteroid_03.tscn" id="7_v6ul2"]
[ext_resource type="AudioStream" uid="uid://bthqgu8sulv77" path="res://Sounds/music_background.wav" id="8_4ms0p"]
[ext_resource type="Script" path="res://Scripts/GameManager.cs" id="9_rsrr5"]
[node name="SpaceShooter" type="Node3D"]
@ -33,19 +33,37 @@ region_enabled = true
region_rect = Rect2(0, 0, 810, 1380)
script = ExtResource("3_imgbw")
[node name="Asteroids" type="Node3D" parent="." node_paths=PackedStringArray("labelAsteroids")]
script = ExtResource("4_pf4xb")
asteroids = [ExtResource("5_do6ba"), ExtResource("6_tqoe7"), ExtResource("7_v6ul2")]
labelAsteroids = NodePath("../LabelAsteroids")
[node name="Asteroids" type="Node3D" parent="."]
[node name="BackgroundMusic" type="AudioStreamPlayer" parent="."]
stream = ExtResource("8_4ms0p")
volume_db = -20.0
autoplay = true
[node name="LabelAsteroids" type="RichTextLabel" parent="."]
[node name="GameManager" type="Node" parent="." node_paths=PackedStringArray("labelAsteroids", "labelLifes")]
script = ExtResource("9_rsrr5")
asteroids = Array[PackedScene]([ExtResource("5_do6ba"), ExtResource("6_tqoe7"), ExtResource("7_v6ul2")])
spawnRate = 0.5
labelAsteroids = NodePath("../Control/LabelAsteroids")
labelLifes = NodePath("../Control/LabelLives")
[node name="Control" type="Control" parent="."]
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="LabelAsteroids" type="RichTextLabel" parent="Control"]
layout_mode = 2
offset_left = 20.0
offset_top = 20.0
offset_right = 260.0
offset_bottom = 40.0
text = "Asteroids: 0"
[node name="LabelLives" type="RichTextLabel" parent="Control"]
layout_mode = 2
offset_left = 20.0
offset_top = 47.0
offset_right = 260.0
offset_bottom = 67.0
text = "Lives: 3"

@ -21,6 +21,7 @@ public partial class Asteroid : Node3D {
RotationDegrees += rotation * (float)delta;
if (Position.Z > 7) {
GD.Print($"Asteroid {Name} below screen!");
GameManager.Instance.RemoveLife();
QueueFree();
}
}

@ -1,15 +1,26 @@
using Godot;
using System;
using Godot.Collections;
public partial class Asteroids : Node3D {
public partial class GameManager : Node
{
[Export] private Array<PackedScene> asteroids;
[Export] private float spawnRate = 1f;
[Export] private RichTextLabel labelAsteroids;
private float spawnTimer;
[Export] private RichTextLabel labelAsteroids;
[Export] private RichTextLabel labelLifes;
private int asteroidNumber;
public override void _Ready() => spawnTimer = spawnRate;
private int lives = 3;
public static GameManager Instance { get; private set; }
public override void _Ready() {
Instance = this;
spawnTimer = spawnRate;
labelLifes.Text = $"Lives: {lives}";
labelAsteroids.Text = $"Asteroids: {asteroidNumber}";
}
public override void _Process(double delta) {
spawnTimer -= (float)delta;
@ -25,4 +36,10 @@ public partial class Asteroids : Node3D {
spawnTimer = spawnRate;
labelAsteroids.Text = $"Asteroids: {asteroidNumber}";
}
public void RemoveLife() {
lives--;
labelLifes.Text = $"Lives: {lives}";
if (lives <= 0 ) { GD.Print("GAME OVER!");}
}
}