looping music , transition speed up, enemy spped up
This commit is contained in:
Binary file not shown.
@@ -13,7 +13,7 @@ dest_files=["res://.godot/imported/An-Imitation-of-Heaven.ogg-12654ddfdf5a8cd77d
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
|
||||
Binary file not shown.
@@ -13,7 +13,7 @@ dest_files=["res://.godot/imported/BossTheme.ogg-459b51256339e59464889a466918555
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://uwia12i7yykb"]
|
||||
[gd_scene load_steps=7 format=3 uid="uid://uwia12i7yykb"]
|
||||
|
||||
[ext_resource type="Script" path="res://Player/Base/Projectile.cs" id="1_4uor3"]
|
||||
[ext_resource type="Texture2D" uid="uid://bunon01jmxhbx" path="res://Textures/Projectiles/Layer 2.png" id="1_a70u8"]
|
||||
@@ -14,13 +14,21 @@ point_count = 10
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_g5fdd"]
|
||||
size = Vector3(0.553759, 1.22067, 1.58866)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8nabx"]
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_color = Color(0.47451, 0.0196078, 0.0862745, 1)
|
||||
emission = Color(0.905882, 0.254902, 0, 1)
|
||||
emission_energy_multiplier = 19.32
|
||||
subsurf_scatter_strength = 0.07
|
||||
backlight = Color(1, 0, 0, 1)
|
||||
|
||||
[node name="Path3D" type="Path3D"]
|
||||
curve = SubResource("Curve3D_n05rs")
|
||||
script = ExtResource("1_4uor3")
|
||||
_projectileSpeed = 5.0
|
||||
|
||||
[node name="PathFollow3D" type="PathFollow3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1, 1, 10)
|
||||
transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 1, 1, 10)
|
||||
progress = 27.0
|
||||
|
||||
[node name="RigidBody3D" type="RigidBody3D" parent="PathFollow3D"]
|
||||
@@ -39,6 +47,8 @@ shape = SubResource("BoxShape3D_g5fdd")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="PathFollow3D/RigidBody3D/CollisionShape3D"]
|
||||
transform = Transform3D(-2.18557e-08, 0, 0.5, 0, 0.5, 0, -0.5, 0, -2.18557e-08, 0, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_8nabx")
|
||||
modulate = Color(0.901961, 0.12549, 0.34902, 1)
|
||||
axis = 1
|
||||
texture = ExtResource("1_a70u8")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Godot;
|
||||
using Godot;
|
||||
|
||||
public partial class PyramidAttack : Node3D
|
||||
{
|
||||
@@ -9,26 +9,26 @@ public partial class PyramidAttack : Node3D
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
_animationPlayer.AnimationFinished += Delete;
|
||||
_animationPlayer.AnimationFinished += Delete;
|
||||
}
|
||||
public void OnPlayerHit(Node node)
|
||||
{
|
||||
SetPhysicsProcess(false);
|
||||
SetPhysicsProcess(false);
|
||||
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, this);
|
||||
}
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, this);
|
||||
}
|
||||
|
||||
QueueFree();
|
||||
isDeleted = true;
|
||||
QueueFree();
|
||||
isDeleted = true;
|
||||
}
|
||||
|
||||
public void Delete(StringName name)
|
||||
{
|
||||
if (!isDeleted)
|
||||
QueueFree();
|
||||
isDeleted = true;
|
||||
if (!isDeleted)
|
||||
QueueFree();
|
||||
isDeleted = true;
|
||||
}
|
||||
}
|
||||
@@ -16,46 +16,46 @@ public partial class GodCircuit : Node3D
|
||||
|
||||
private void OnHit(Node3D node)
|
||||
{
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, node);
|
||||
}
|
||||
else
|
||||
{
|
||||
var hpComponent = GetNode<HealthPoints>("HP Component");
|
||||
if (hpComponent.CurrentHP > 0)
|
||||
{
|
||||
GD.Print("Hit");
|
||||
_animationPlayer.Play("OnHit");
|
||||
hpComponent.TakeDamage(1);
|
||||
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, node);
|
||||
}
|
||||
else
|
||||
{
|
||||
var hpComponent = GetNode<HealthPoints>("HP Component");
|
||||
if (hpComponent.CurrentHP > 0)
|
||||
{
|
||||
GD.Print("Hit");
|
||||
_animationPlayer.Play("OnHit");
|
||||
hpComponent.TakeDamage(1);
|
||||
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
|
||||
|
||||
if (hpComponent.CurrentHP <= 0)
|
||||
{
|
||||
EmitSignal(SignalName.DestroyRemainingOrbs);
|
||||
_animationPlayer.Play("OnDeath");
|
||||
_animationPlayer.AnimationFinished += OnGameFinished;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (hpComponent.CurrentHP <= 0)
|
||||
{
|
||||
EmitSignal(SignalName.DestroyRemainingOrbs);
|
||||
_animationPlayer.Play("OnDeath");
|
||||
_animationPlayer.AnimationFinished += OnGameFinished;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnBossOrbDestroyed()
|
||||
{
|
||||
var hpComponent = GetNode<HealthPoints>("HP Component");
|
||||
_animationPlayer.Play("OnHit");
|
||||
hpComponent.TakeDamage(60);
|
||||
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
|
||||
var hpComponent = GetNode<HealthPoints>("HP Component");
|
||||
_animationPlayer.Play("OnHit");
|
||||
hpComponent.TakeDamage(60);
|
||||
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
|
||||
|
||||
if (hpComponent.CurrentHP <= 0)
|
||||
hpComponent.CurrentHP = 1;
|
||||
if (hpComponent.CurrentHP <= 0)
|
||||
hpComponent.CurrentHP = 1;
|
||||
}
|
||||
|
||||
private void OnGameFinished(StringName animationName)
|
||||
{
|
||||
GD.Print("On game ending");
|
||||
EmitSignal(SignalName.OnGameEnding);
|
||||
QueueFree();
|
||||
GD.Print("On game ending");
|
||||
EmitSignal(SignalName.OnGameEnding);
|
||||
QueueFree();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,22 +4,22 @@ using System.Linq;
|
||||
public partial class MeleeEnemy : BasicEnemy
|
||||
{
|
||||
[Export]
|
||||
private float _speed = 0.4f;
|
||||
private float _speed = 0.8f;
|
||||
private bool _targetingPlayer = false;
|
||||
[Export]
|
||||
private double _distanceToPlayer = 3;
|
||||
private double _distanceToPlayer = 4;
|
||||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
var players = GetTree().GetNodesInGroup("Player").Cast<Character>();
|
||||
if (players.Any())
|
||||
{
|
||||
var target = players.OrderBy(x => Position.DistanceTo(x.Position)).FirstOrDefault();
|
||||
if (_targetingPlayer || Position.DistanceTo(target.Position) < _distanceToPlayer)
|
||||
{
|
||||
Position = Position.MoveToward(target.Position, _speed * (float)delta);
|
||||
_targetingPlayer = true;
|
||||
}
|
||||
}
|
||||
var players = GetTree().GetNodesInGroup("Player").Cast<Character>();
|
||||
if (players.Any())
|
||||
{
|
||||
var target = players.OrderBy(x => Position.DistanceTo(x.Position)).FirstOrDefault();
|
||||
if (_targetingPlayer || Position.DistanceTo(target.Position) < _distanceToPlayer)
|
||||
{
|
||||
Position = Position.MoveToward(target.Position, _speed * (float)delta);
|
||||
_targetingPlayer = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,138 +23,138 @@ public partial class GameManager : Node
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
for (var i = 0; i < main.NumberOfPlayers; i++)
|
||||
{
|
||||
var player = PlayerScenes[i].Instantiate();
|
||||
var castedPlayer = (Player)player;
|
||||
castedPlayer.PlayerNumber = i + 1;
|
||||
Players = Players.Append(castedPlayer);
|
||||
GetTree().Root.AddChild(player);
|
||||
}
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
for (var i = 0; i < main.NumberOfPlayers; i++)
|
||||
{
|
||||
var player = PlayerScenes[i].Instantiate();
|
||||
var castedPlayer = (Player)player;
|
||||
castedPlayer.PlayerNumber = i + 1;
|
||||
Players = Players.Append(castedPlayer);
|
||||
GetTree().Root.AddChild(player);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnAllEnemiesDefeated()
|
||||
{
|
||||
OnLevelClear();
|
||||
OnLevelClear();
|
||||
}
|
||||
|
||||
public void OnHandleCharacterSelectUI(Player player)
|
||||
{
|
||||
EmitSignal(SignalName.ReselectCharacter, player);
|
||||
EmitSignal(SignalName.ReselectCharacter, player);
|
||||
}
|
||||
|
||||
public void SetToNextCharacter(Player player)
|
||||
{
|
||||
player.CharacterIndex = (++player.CharacterIndex) % player.CharactersLeftOnStage.Count();
|
||||
GD.Print(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
|
||||
player.CharacterIndex = (++player.CharacterIndex) % player.CharactersLeftOnStage.Count();
|
||||
GD.Print(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
|
||||
}
|
||||
|
||||
public void SetToPreviousCharacter(Player player)
|
||||
{
|
||||
player.CharacterIndex = player.CharacterIndex == 0 ? player.CharactersLeftOnStage.Count() - 1 : --player.CharacterIndex;
|
||||
player.CharacterIndex = player.CharacterIndex == 0 ? player.CharactersLeftOnStage.Count() - 1 : --player.CharacterIndex;
|
||||
}
|
||||
|
||||
public void ResetPlayerPosition(Player player)
|
||||
{
|
||||
player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter);
|
||||
GD.Print(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
|
||||
player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter);
|
||||
GD.Print(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
|
||||
}
|
||||
|
||||
public void OnCharacterSelected(Player player)
|
||||
{
|
||||
var sfxPlayer = GetTree().Root.GetNode<AudioStreamPlayer>("Main/SFXPlayer");
|
||||
var audioStream = ResourceLoader.Load<AudioStream>("Audio/SFX/Select.wav");
|
||||
sfxPlayer.Stream = audioStream;
|
||||
sfxPlayer.Play();
|
||||
if (player.CharactersLeftOnStage.Any())
|
||||
{
|
||||
var character = player.CharactersLeftOnStage[player.CharacterIndex];
|
||||
var instance = (Character)character.Instantiate();
|
||||
instance.Initialize(player);
|
||||
player.SelectedCharacter = instance;
|
||||
player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter);
|
||||
GetTree().Root.AddChild(player.SelectedCharacter);
|
||||
}
|
||||
var sfxPlayer = GetTree().Root.GetNode<AudioStreamPlayer>("Main/SFXPlayer");
|
||||
var audioStream = ResourceLoader.Load<AudioStream>("Audio/SFX/Select.wav");
|
||||
sfxPlayer.Stream = audioStream;
|
||||
sfxPlayer.Play();
|
||||
if (player.CharactersLeftOnStage.Any())
|
||||
{
|
||||
var character = player.CharactersLeftOnStage[player.CharacterIndex];
|
||||
var instance = (Character)character.Instantiate();
|
||||
instance.Initialize(player);
|
||||
player.SelectedCharacter = instance;
|
||||
player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter);
|
||||
GetTree().Root.AddChild(player.SelectedCharacter);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveCharacter(Player player)
|
||||
{
|
||||
ResetPlayerPosition(player);
|
||||
ResetPlayerPosition(player);
|
||||
|
||||
player.CharactersLeftOnStage.RemoveAt(player.CharacterIndex);
|
||||
if (player.SelectedCharacter is not null)
|
||||
GetTree().Root.RemoveChild(player.SelectedCharacter);
|
||||
player.CharactersLeftOnStage.RemoveAt(player.CharacterIndex);
|
||||
if (player.SelectedCharacter is not null)
|
||||
GetTree().Root.RemoveChild(player.SelectedCharacter);
|
||||
|
||||
player.CharacterIndex = 0;
|
||||
if (player.CharactersLeftOnStage.Any())
|
||||
EmitSignal(SignalName.ReselectCharacter, player);
|
||||
player.CharacterIndex = 0;
|
||||
if (player.CharactersLeftOnStage.Any())
|
||||
EmitSignal(SignalName.ReselectCharacter, player);
|
||||
|
||||
if (!player.CharactersExited.Any() && !player.CharactersLeftOnStage.Any())
|
||||
SetGameOver(player, true);
|
||||
if (!player.CharactersExited.Any() && !player.CharactersLeftOnStage.Any())
|
||||
SetGameOver(player, true);
|
||||
|
||||
if (Players.All(x => !x.CharactersLeftOnStage.Any()) && Players.Any(x => x.CharactersExited.Any()))
|
||||
OnLevelClear();
|
||||
if (Players.All(x => !x.CharactersLeftOnStage.Any()) && Players.Any(x => x.CharactersExited.Any()))
|
||||
OnLevelClear();
|
||||
}
|
||||
|
||||
public void RemoveCharacterAndAddToExit(Player player)
|
||||
{
|
||||
ResetPlayerPosition(player);
|
||||
player.CharactersExited.Add(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
|
||||
RemoveCharacter(player);
|
||||
ResetPlayerPosition(player);
|
||||
player.CharactersExited.Add(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
|
||||
RemoveCharacter(player);
|
||||
}
|
||||
|
||||
public void SetGameOver(Player player, bool isGameOver)
|
||||
{
|
||||
player.GameOver = isGameOver;
|
||||
if (isGameOver)
|
||||
EmitSignal(SignalName.OnPlayerGameOver, player);
|
||||
GD.Print($"Game over for {player.Name}");
|
||||
player.GameOver = isGameOver;
|
||||
if (isGameOver)
|
||||
EmitSignal(SignalName.OnPlayerGameOver, player);
|
||||
GD.Print($"Game over for {player.Name}");
|
||||
}
|
||||
|
||||
public void ReloadGameScene()
|
||||
{
|
||||
GD.Print("Reloading scene");
|
||||
var players = GetTree().Root.GetChildren().OfType<Player>();
|
||||
foreach (var player in players)
|
||||
player.QueueFree();
|
||||
var levels = GetTree().Root.GetChildren().OfType<Level>();
|
||||
foreach (var level in levels)
|
||||
level.QueueFree();
|
||||
GetTree().ReloadCurrentScene();
|
||||
GD.Print("Reloading scene");
|
||||
var players = GetTree().Root.GetChildren().OfType<Player>();
|
||||
foreach (var player in players)
|
||||
player.QueueFree();
|
||||
var levels = GetTree().Root.GetChildren().OfType<Level>();
|
||||
foreach (var level in levels)
|
||||
level.QueueFree();
|
||||
GetTree().ReloadCurrentScene();
|
||||
}
|
||||
|
||||
public void OnLevelClear()
|
||||
{
|
||||
var enemies = GetTree().GetNodesInGroup("Enemy").Where(x => !x.IsQueuedForDeletion());
|
||||
foreach (var enemy in enemies)
|
||||
enemy.QueueFree();
|
||||
var enemies = GetTree().GetNodesInGroup("Enemy").Where(x => !x.IsQueuedForDeletion());
|
||||
foreach (var enemy in enemies)
|
||||
enemy.QueueFree();
|
||||
|
||||
var playerCharacters = GetTree().GetNodesInGroup("Player");
|
||||
var playerCharacters = GetTree().GetNodesInGroup("Player");
|
||||
|
||||
EmitSignal(SignalName.ClearPlayerBG, 0);
|
||||
EmitSignal(SignalName.ClearPlayerBG, 1);
|
||||
EmitSignal(SignalName.ClearPlayerBG, 0);
|
||||
EmitSignal(SignalName.ClearPlayerBG, 1);
|
||||
|
||||
foreach (var player in Players)
|
||||
{
|
||||
player.CharactersLeftOnStage.AddRange(player.CharactersExited);
|
||||
player.CharactersExited.Clear();
|
||||
player.CharacterIndex = 0;
|
||||
}
|
||||
foreach (var player in Players)
|
||||
{
|
||||
player.CharactersLeftOnStage.AddRange(player.CharactersExited);
|
||||
player.CharactersExited.Clear();
|
||||
player.CharacterIndex = 0;
|
||||
}
|
||||
|
||||
|
||||
foreach (var character in playerCharacters)
|
||||
character.GetParent().RemoveChild(character);
|
||||
foreach (var character in playerCharacters)
|
||||
character.GetParent().RemoveChild(character);
|
||||
|
||||
var projectiles = GetTree().GetNodesInGroup("Projectile").Where(x => !x.IsQueuedForDeletion());
|
||||
foreach (var projectile in projectiles)
|
||||
projectile.QueueFree();
|
||||
var projectiles = GetTree().GetNodesInGroup("Projectile").Where(x => !x.IsQueuedForDeletion());
|
||||
foreach (var projectile in projectiles)
|
||||
projectile.QueueFree();
|
||||
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
if (_levelIndex < main.Levels.Count)
|
||||
{
|
||||
_levelIndex++;
|
||||
main.LoadNextLevel(_levelIndex);
|
||||
}
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
if (_levelIndex < main.Levels.Count)
|
||||
{
|
||||
_levelIndex++;
|
||||
main.LoadNextLevel(_levelIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,64 +15,64 @@ public partial class Main : Node
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
Input.MouseMode = Input.MouseModeEnum.Captured;
|
||||
Input.MouseMode = Input.MouseModeEnum.Captured;
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
_fpsCounter.Text = $"FPS: {Engine.GetFramesPerSecond()}";
|
||||
_fpsCounter.Text = $"FPS: {Engine.GetFramesPerSecond()}";
|
||||
}
|
||||
|
||||
public void LoadLevel(int indexToLoad, int numberOfPlayers)
|
||||
{
|
||||
var sceneToLoad = Levels.ElementAt(indexToLoad);
|
||||
CallDeferred(nameof(DeferredGoToScene), sceneToLoad);
|
||||
var sceneToLoad = Levels.ElementAt(indexToLoad);
|
||||
CallDeferred(nameof(DeferredGoToScene), sceneToLoad);
|
||||
|
||||
NumberOfPlayers = numberOfPlayers;
|
||||
NumberOfPlayers = numberOfPlayers;
|
||||
|
||||
var gameManager = GameManager.Instantiate();
|
||||
AddChild(gameManager);
|
||||
var gameManagerInstance = (GameManager)gameManager;
|
||||
var gameManager = GameManager.Instantiate();
|
||||
AddChild(gameManager);
|
||||
var gameManagerInstance = (GameManager)gameManager;
|
||||
|
||||
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
|
||||
bgmPlayer.ProcessMode = ProcessModeEnum.Always;
|
||||
bgmPlayer.SetBGMFromFilepath("Audio/BGM/An-Imitation-of-Heaven.ogg");
|
||||
bgmPlayer.PlayBGM();
|
||||
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
|
||||
bgmPlayer.ProcessMode = ProcessModeEnum.Always;
|
||||
bgmPlayer.SetBGMFromFilepath("Audio/BGM/An-Imitation-of-Heaven.ogg");
|
||||
bgmPlayer.PlayBGM();
|
||||
|
||||
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
|
||||
animationNode.Play($"Level{indexToLoad + 1}");
|
||||
animationNode.AnimationFinished += EnableCharacterSelect;
|
||||
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
|
||||
animationNode.Play($"Level{indexToLoad + 1}");
|
||||
animationNode.AnimationFinished += EnableCharacterSelect;
|
||||
}
|
||||
|
||||
public void LoadNextLevel(int currentSceneIndex)
|
||||
{
|
||||
if (currentSceneIndex < Levels.Count())
|
||||
{
|
||||
var currentScene = Levels.ToList().ElementAt(currentSceneIndex);
|
||||
CallDeferred(nameof(DeferredGoToScene), Levels.ElementAt(currentSceneIndex));
|
||||
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
|
||||
animationNode.Play($"Level{currentSceneIndex + 1}");
|
||||
animationNode.AnimationFinished += EnableCharacterSelect;
|
||||
}
|
||||
if (currentSceneIndex < Levels.Count())
|
||||
{
|
||||
var currentScene = Levels.ToList().ElementAt(currentSceneIndex);
|
||||
CallDeferred(nameof(DeferredGoToScene), Levels.ElementAt(currentSceneIndex));
|
||||
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
|
||||
animationNode.Play($"Level{currentSceneIndex + 1}");
|
||||
animationNode.AnimationFinished += EnableCharacterSelect;
|
||||
}
|
||||
}
|
||||
private void DeferredGoToScene(PackedScene sceneToAdd)
|
||||
{
|
||||
if (GetTree().GetFirstNodeInGroup("Level") != null)
|
||||
GetTree().GetFirstNodeInGroup("Level").QueueFree();
|
||||
var nextScene = GD.Load<PackedScene>(sceneToAdd.ResourcePath);
|
||||
var newScene = nextScene.Instantiate();
|
||||
GetTree().Root.AddChild(newScene);
|
||||
if (GetTree().GetFirstNodeInGroup("Level") != null)
|
||||
GetTree().GetFirstNodeInGroup("Level").QueueFree();
|
||||
var nextScene = GD.Load<PackedScene>(sceneToAdd.ResourcePath);
|
||||
var newScene = nextScene.Instantiate();
|
||||
GetTree().Root.AddChild(newScene);
|
||||
}
|
||||
|
||||
|
||||
private void EnableCharacterSelect(StringName animationName)
|
||||
{
|
||||
GD.Print("On animation finished: Enable characters");
|
||||
var gameManagerInstance = GetNode<GameManager>("GameManager");
|
||||
foreach (var player in gameManagerInstance.Players)
|
||||
gameManagerInstance.OnHandleCharacterSelectUI(player);
|
||||
GetTree().Paused = true;
|
||||
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
|
||||
animationNode.AnimationFinished -= EnableCharacterSelect;
|
||||
GD.Print("On animation finished: Enable characters");
|
||||
var gameManagerInstance = GetNode<GameManager>("GameManager");
|
||||
foreach (var player in gameManagerInstance.Players)
|
||||
gameManagerInstance.OnHandleCharacterSelectUI(player);
|
||||
GetTree().Paused = true;
|
||||
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
|
||||
animationNode.AnimationFinished -= EnableCharacterSelect;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1581,115 +1581,120 @@ font_size = 48
|
||||
process_mode = 3
|
||||
script = ExtResource("1_sy7dk")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(-0.866025, -0.460996, 0.193605, 0, 0.38721, 0.921992, -0.5, 0.798468, -0.335334, -1.92253e-07, 8.79646, 3.32992e-07)
|
||||
light_energy = 2.15
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_irs6p")
|
||||
|
||||
[node name="FINAL STAGE" type="Node3D" parent="."]
|
||||
|
||||
[node name="Plane2" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(1.05, 0, 0, 0, 1.05, 0, 0, 0, 1.05, 0, -0.157619, 0)
|
||||
transform = Transform3D(1.05, 0, 0, 0, 1.05, 0, 0, 0, 1.05, 0, -0.294859, 0)
|
||||
mesh = SubResource("ArrayMesh_1cd5a")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(1.05, 0, 0, 0, 1.05, 0, 0, 0, 1.05, -0.490494, -0.153552, 0.221301)
|
||||
transform = Transform3D(1.05, 0, 0, 0, 1.05, 0, 0, 0, 1.05, -0.490494, -0.290792, 0.221301)
|
||||
mesh = SubResource("PlaneMesh_4a7et")
|
||||
|
||||
[node name="Plane_001" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(1.76127, 0, 0, 0, 1.31527, 0, 0, 0, 1.32888, -9.8024, 0.0936406, 1.09295)
|
||||
transparency = 0.87
|
||||
transform = Transform3D(1.426, 0, 0, 0, 1.065, 0, 0, 0, 1.076, -9.8024, 0.0936406, 1.09295)
|
||||
transparency = 0.95
|
||||
lod_bias = 0.001
|
||||
mesh = SubResource("ArrayMesh_jj1lx")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_uuft2")
|
||||
|
||||
[node name="Plane_002" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(1.70598, 0, 0, 0, 1.32727, 0, 0, 0, 1.12196, 5.21738, -0.170723, 8.07196)
|
||||
transparency = 0.9
|
||||
transform = Transform3D(1.331, 0, 0, 0, 1.035, 0, 0, 0, 0.875, 5.21738, -0.170723, 8.07196)
|
||||
transparency = 0.94
|
||||
mesh = SubResource("ArrayMesh_6sa8k")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_sxvv8")
|
||||
|
||||
[node name="Plane_003" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(1.4161, 0, 0, 0, 1.1281, 0, 0, 0, 1.13659, 6.57477, 0.080187, 3.00044)
|
||||
transparency = 0.92
|
||||
transform = Transform3D(0.976, 0, 0, 0, 0.777, 0, 0, 0, 0.784, 6.57477, 0.080187, 3.00044)
|
||||
transparency = 0.96
|
||||
mesh = SubResource("ArrayMesh_if341")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_hi8rh")
|
||||
|
||||
[node name="Plane_006" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.782305, 0, 0, 0, 0.782305, 0, 0, 0, 0.782305, 7.25218, 0.0936406, -2.70961)
|
||||
transparency = 0.88
|
||||
transform = Transform3D(0.737, 0, 0, 0, 0.737, 0, 0, 0, 0.737, 7.25218, 0.0936406, -2.70961)
|
||||
transparency = 0.93
|
||||
mesh = SubResource("ArrayMesh_5pdhi")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_at5gw")
|
||||
|
||||
[node name="Plane_007" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(-0.00267086, 0, -0.493997, 0, 0.74, 0, 0.733995, 0, -0.00179756, 2.07265, 0.0936406, -10.5126)
|
||||
transparency = 0.84
|
||||
transform = Transform3D(-0.00341681, 0, -0.631996, 0, 0.946, 0, 0.938994, 0, -0.00229971, 2.07265, 0.0936406, -10.5126)
|
||||
transparency = 0.95
|
||||
mesh = SubResource("ArrayMesh_e3acl")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_ipjtq")
|
||||
|
||||
[node name="Plane_008" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(-0.00729558, 0, -1.6545, 0, 2.00609, 0, 2.00494, 0, -0.0060204, 5.70975, 0.0936406, -8.83716)
|
||||
transparency = 0.93
|
||||
transform = Transform3D(-0.00509429, 0, -1.15599, 0, 1.401, 0, 1.39999, 0, -0.00420643, 5.70975, 0.0936406, -8.83716)
|
||||
transparency = 0.98
|
||||
mesh = SubResource("ArrayMesh_7xb3t")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_x5h2p")
|
||||
|
||||
[node name="Plane_009" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(-0.00414093, 0, -0.599996, 0, 1.149, 0, 1.13799, 0, -0.00218327, -1.12123, 0.0936406, -8.84041)
|
||||
transparency = 0.94
|
||||
transform = Transform3D(-0.00459578, 0, -0.665996, 0, 1.276, 0, 1.26299, 0, -0.00242343, -1.12223, 0.0936406, -8.56601)
|
||||
transparency = 0.97
|
||||
mesh = SubResource("ArrayMesh_hffpl")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_nwkjv")
|
||||
|
||||
[node name="Plane_010" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.996694, 0, -1.16924, 0, 1.5364, 0, 1.16924, 0, 0.996694, -10.1032, 0.0936406, -6.11157)
|
||||
transparency = 0.88
|
||||
transform = Transform3D(0.831011, 0, -0.974875, 0, 1.281, 0, 0.974875, 0, 0.831011, -10.1032, 0.0936406, -6.11157)
|
||||
transparency = 0.97
|
||||
mesh = SubResource("ArrayMesh_q55ea")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_iucbo")
|
||||
|
||||
[node name="Plane_011" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.839756, 0, -1.64877, 0, 1.61483, 0, 0.985134, 0, 1.40546, -5.09668, 0.0936406, -10.7682)
|
||||
transparency = 0.93
|
||||
transform = Transform3D(0.648072, 0, -1.2732, 0, 1.247, 0, 0.760266, 0, 1.08531, -5.09668, 0.0936406, -10.7682)
|
||||
transparency = 0.96
|
||||
mesh = SubResource("ArrayMesh_jepii")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_satv7")
|
||||
|
||||
[node name="Plane_012" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.325048, 0, -0.381319, 0, 0.501059, 0, 0.381319, 0, 0.325048, -8.94753, 0.0936406, -9.6698)
|
||||
transparency = 0.88
|
||||
transparency = 0.95
|
||||
mesh = SubResource("ArrayMesh_m64ug")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_e4460")
|
||||
|
||||
[node name="Plane_013" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(-0.80569, 0, 0.822408, 0, 1.1513, 0, -0.822408, 0, -0.80569, 6.57162, 0.550828, 8.08738)
|
||||
transparency = 0.83
|
||||
transform = Transform3D(-0.700509, 0, 0.715045, 0, 1.001, 0, -0.715045, 0, -0.700509, 6.57162, 0.550828, 8.08738)
|
||||
transparency = 0.94
|
||||
mesh = SubResource("ArrayMesh_o5ifk")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_e5602")
|
||||
|
||||
[node name="Plane_014" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.847765, 0, 0.00547652, 0, 1.07735, 0, -0.0055289, 0, 0.839733, -2.15445, 0.108412, -7.12627)
|
||||
transparency = 0.92
|
||||
transform = Transform3D(0.782983, 0, 0.00506076, 0, 0.994, 0, -0.00510642, 0, 0.775984, -2.15445, 0.108412, -7.12627)
|
||||
transparency = 0.95
|
||||
mesh = SubResource("ArrayMesh_uaau6")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_ifinj")
|
||||
|
||||
[node name="Plane_015" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(-0.500363, 0, 0.510746, 0, 0.715, 0, -0.510746, 0, -0.500363, 7.96881, 0.0936406, 5.10934)
|
||||
transparency = 0.92
|
||||
transform = Transform3D(-0.594837, 0, 0.607181, 0, 0.85, 0, -0.607181, 0, -0.594837, 7.96881, 0.0936406, 5.10934)
|
||||
transparency = 0.96
|
||||
mesh = SubResource("ArrayMesh_72amh")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_8emtn")
|
||||
|
||||
[node name="Plane_016" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.252723, 0, 0.545494, 0, 0.81, 0, -0.745319, 0, 0.184966, -2.31715, 0.0936406, 9.9053)
|
||||
transform = Transform3D(0.426113, 0, 0.919471, 0, 1.36642, 0, -1.25667, 0, 0.311774, -2.31715, 0.0936406, 9.9053)
|
||||
material_override = SubResource("StandardMaterial3D_malkk")
|
||||
transparency = 0.9
|
||||
transparency = 0.98
|
||||
mesh = SubResource("ArrayMesh_u3atd")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_62ota")
|
||||
@@ -1697,7 +1702,7 @@ surface_material_override/0 = SubResource("StandardMaterial3D_62ota")
|
||||
[node name="Plane_017" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.548434, 0, 0.836587, 0, 1.18259, 0, -1.61742, 0, 0.28367, -8.88136, 0.0936406, 7.99206)
|
||||
material_override = SubResource("StandardMaterial3D_3klqc")
|
||||
transparency = 0.88
|
||||
transparency = 0.96
|
||||
cast_shadow = 0
|
||||
mesh = SubResource("ArrayMesh_03cjj")
|
||||
skeleton = NodePath("")
|
||||
@@ -1706,43 +1711,43 @@ surface_material_override/0 = SubResource("StandardMaterial3D_6xsl2")
|
||||
[node name="Plane_018" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.229544, 0, 0.676962, 0, 0.71482, 0, -0.676962, 0, 0.229544, -6.35837, 0.0936406, 7.19496)
|
||||
material_override = SubResource("StandardMaterial3D_0cgf3")
|
||||
transparency = 0.71
|
||||
transparency = 0.89
|
||||
mesh = SubResource("ArrayMesh_2jxy6")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_55sfs")
|
||||
|
||||
[node name="Plane_019" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.609319, 0, 0, 0, 1.00247, 0, 0, 0, 1.00301, 7.71373, -0.0781053, -4.8116)
|
||||
transparency = 0.9
|
||||
transparency = 0.96
|
||||
mesh = SubResource("ArrayMesh_xqoh3")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_vduif")
|
||||
|
||||
[node name="Plane_020" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.709, 0, 0, 0, 0.709, 0, 0, 0, 0.709, -9.65187, 0.0223779, 4.51508)
|
||||
transform = Transform3D(0.854489, 0, 0, 0, 0.854489, 0, 0, 0, 0.854489, -9.65187, 0.0223779, 4.51508)
|
||||
material_override = SubResource("StandardMaterial3D_opsem")
|
||||
transparency = 0.78
|
||||
transparency = 0.93
|
||||
cast_shadow = 0
|
||||
mesh = SubResource("ArrayMesh_u43pa")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Plane_021" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(1.446, 0, 0, 0, 0.878, 0, 0, 0, 0.898, -11.9204, 0.152895, -1.42975)
|
||||
transparency = 0.87
|
||||
transform = Transform3D(1.64617, 0, 0, 0, 1, 0, 0, 0, 1.02218, -11.9204, 0.152895, -1.42975)
|
||||
transparency = 0.94
|
||||
mesh = SubResource("ArrayMesh_d75vr")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_qjd1n")
|
||||
|
||||
[node name="Plane_022" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(1.13978, 0, 0, 0, 1.13978, 0, 0, 0, 1.13978, -7.62331, 0.184806, -3.66903)
|
||||
transparency = 0.89
|
||||
transparency = 0.91
|
||||
mesh = SubResource("ArrayMesh_og6cu")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_6og7m")
|
||||
|
||||
[node name="Plane_023" type="MeshInstance3D" parent="FINAL STAGE"]
|
||||
transform = Transform3D(0.408435, -0.0138221, 1.8297, 0.0145542, 1.98837, 0.0043401, -1.02222, 0.0227874, 0.731131, 2.36517, 0.234488, -8.05808)
|
||||
transparency = 0.87
|
||||
transparency = 0.91
|
||||
mesh = SubResource("ArrayMesh_ammp5")
|
||||
skeleton = NodePath("")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_hrk61")
|
||||
@@ -1829,7 +1834,7 @@ max_polyphony = 15
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.260435, 0, -1.52945)
|
||||
script = ExtResource("8_7itwt")
|
||||
|
||||
[node name="Pyramid" type="RigidBody3D" parent="BossOrbs" node_paths=PackedStringArray("_hp", "_animationPlayer")]
|
||||
[node name="Pyramid" type="RigidBody3D" parent="BossOrbs" node_paths=PackedStringArray("_hp")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.064761, 0.75105, -2.67492)
|
||||
collision_layer = 128
|
||||
collision_mask = 196
|
||||
@@ -1842,7 +1847,6 @@ freeze_mode = 1
|
||||
script = ExtResource("34_ditjx")
|
||||
_hp = NodePath("HP Component")
|
||||
_attack = ExtResource("34_isrj4")
|
||||
_animationPlayer = NodePath("AnimationPlayer")
|
||||
|
||||
[node name="PyramidSprite" type="Sprite3D" parent="BossOrbs/Pyramid"]
|
||||
transform = Transform3D(0.08, 0, 0, 0, 0.08, 0, 0, 0, 0.08, 0, 0, 0)
|
||||
@@ -1865,7 +1869,7 @@ libraries = {
|
||||
wait_time = 15.0
|
||||
autostart = true
|
||||
|
||||
[node name="Orb" type="RigidBody3D" parent="BossOrbs" node_paths=PackedStringArray("_hp", "_animationPlayer")]
|
||||
[node name="Orb" type="RigidBody3D" parent="BossOrbs" node_paths=PackedStringArray("_hp")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.75045, 0.241416, 1.28096)
|
||||
collision_layer = 0
|
||||
collision_mask = 68
|
||||
@@ -1878,7 +1882,6 @@ freeze_mode = 1
|
||||
script = ExtResource("34_ditjx")
|
||||
_hp = NodePath("HP Component")
|
||||
_attack = ExtResource("37_jd5dy")
|
||||
_animationPlayer = NodePath("AnimationPlayer")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="BossOrbs/Orb"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.473554, 0, 0.565499)
|
||||
@@ -1901,7 +1904,7 @@ libraries = {
|
||||
wait_time = 13.0
|
||||
autostart = true
|
||||
|
||||
[node name="Hedron" type="RigidBody3D" parent="BossOrbs" node_paths=PackedStringArray("_hp", "_animationPlayer")]
|
||||
[node name="Hedron" type="RigidBody3D" parent="BossOrbs" node_paths=PackedStringArray("_hp")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.88775, 0.704458, 1.45723)
|
||||
collision_layer = 0
|
||||
collision_mask = 68
|
||||
@@ -1914,7 +1917,6 @@ freeze_mode = 1
|
||||
script = ExtResource("34_ditjx")
|
||||
_hp = NodePath("HP Component")
|
||||
_attack = ExtResource("40_sb1e4")
|
||||
_animationPlayer = NodePath("AnimationPlayer")
|
||||
|
||||
[node name="HedronSprite" type="Sprite3D" parent="BossOrbs/Hedron"]
|
||||
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
|
||||
|
||||
@@ -311,7 +311,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.39414, 0, 0)
|
||||
shape = SubResource("BoxShape3D_krx21")
|
||||
|
||||
[node name="CollisionShape3D3" type="CollisionShape3D" parent="Collisions"]
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 2.43488, -8.5122)
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.26573e-07, 2.47963, -11.4078)
|
||||
shape = SubResource("BoxShape3D_xkc5v")
|
||||
|
||||
[node name="CollisionShape3D4" type="CollisionShape3D" parent="Collisions"]
|
||||
|
||||
@@ -9,23 +9,23 @@ public partial class Level : Node3D
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
|
||||
_enemies = GetNode("Enemies").GetChildren().OfType<BasicEnemy>().ToList();
|
||||
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
|
||||
_enemies = GetNode("Enemies").GetChildren().OfType<BasicEnemy>().ToList();
|
||||
}
|
||||
|
||||
public void OnEnemyDefeated(BasicEnemy enemy)
|
||||
{
|
||||
if (_enemies.Contains(enemy))
|
||||
{
|
||||
GD.Print("On enemy defeated " + enemy.Name);
|
||||
_enemies.Remove(enemy);
|
||||
if (!_enemies.Any())
|
||||
_gameManager.OnAllEnemiesDefeated();
|
||||
}
|
||||
if (_enemies.Contains(enemy))
|
||||
{
|
||||
GD.Print("On enemy defeated " + enemy.Name);
|
||||
_enemies.Remove(enemy);
|
||||
if (!_enemies.Any())
|
||||
_gameManager.OnAllEnemiesDefeated();
|
||||
}
|
||||
}
|
||||
|
||||
public void GameEnding()
|
||||
{
|
||||
QueueFree();
|
||||
QueueFree();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,21 +8,21 @@ public partial class OrbAttack : Projectile
|
||||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
var pathFollow = GetNode<PathFollow3D>("PathFollow3D");
|
||||
if (pathFollow.ProgressRatio <= 0.98f)
|
||||
{
|
||||
pathFollow.Progress += Speed * (float)delta;
|
||||
}
|
||||
else
|
||||
{
|
||||
ExplodeAttack();
|
||||
}
|
||||
var pathFollow = GetNode<PathFollow3D>("PathFollow3D");
|
||||
if (pathFollow.ProgressRatio <= 0.98f)
|
||||
{
|
||||
pathFollow.Progress += Speed * (float)delta;
|
||||
}
|
||||
else
|
||||
{
|
||||
ExplodeAttack();
|
||||
}
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
if (!IsQueuedForDeletion())
|
||||
_sprite.RotateY(25);
|
||||
if (!IsQueuedForDeletion())
|
||||
_sprite.RotateY(25);
|
||||
}
|
||||
|
||||
private void ExplodeAttack()
|
||||
|
||||
@@ -29,9 +29,9 @@ public partial class Player : Node3D
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
foreach (var character in PlayableCharacterScenes)
|
||||
{
|
||||
CharactersLeftOnStage.Add(character);
|
||||
}
|
||||
foreach (var character in PlayableCharacterScenes)
|
||||
{
|
||||
CharactersLeftOnStage.Add(character);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Godot;
|
||||
using Godot;
|
||||
|
||||
public partial class Projectile : Node3D
|
||||
{
|
||||
@@ -18,44 +18,44 @@ public partial class Projectile : Node3D
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
Speed = _projectileSpeed;
|
||||
Speed = _projectileSpeed;
|
||||
}
|
||||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
var pathFollow = GetNode<PathFollow3D>("PathFollow3D");
|
||||
pathFollow.Progress += Speed * (float)delta;
|
||||
if (pathFollow.ProgressRatio > 0.98f)
|
||||
Delete();
|
||||
var pathFollow = GetNode<PathFollow3D>("PathFollow3D");
|
||||
pathFollow.Progress += Speed * (float)delta;
|
||||
if (pathFollow.ProgressRatio > 0.98f)
|
||||
Delete();
|
||||
}
|
||||
|
||||
public void OnProjectileHit(Node node)
|
||||
{
|
||||
if (node is BasicEnemy basicEnemy)
|
||||
basicEnemy.Call(BasicEnemy.MethodName.OnEnemyHit, node);
|
||||
Delete();
|
||||
if (node is BasicEnemy basicEnemy)
|
||||
basicEnemy.Call(BasicEnemy.MethodName.OnEnemyHit, node);
|
||||
Delete();
|
||||
}
|
||||
|
||||
public void OnPlayerHit(Node node)
|
||||
{
|
||||
SetPhysicsProcess(false);
|
||||
SetPhysicsProcess(false);
|
||||
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, this);
|
||||
}
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, this);
|
||||
}
|
||||
|
||||
QueueFree();
|
||||
QueueFree();
|
||||
}
|
||||
|
||||
public void Delete()
|
||||
{
|
||||
if (!isDeleted)
|
||||
{
|
||||
isDeleted = true;
|
||||
QueueFree();
|
||||
}
|
||||
if (!isDeleted)
|
||||
{
|
||||
isDeleted = true;
|
||||
QueueFree();
|
||||
}
|
||||
}
|
||||
|
||||
public float Speed { get; private set; }
|
||||
|
||||
@@ -12,48 +12,48 @@ public partial class MainMenu : Node2D
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
GetParent().GetNode<TextureRect>("MainMenu/UIAnimations/LoreSplash").Show();
|
||||
_animationPlayer = GetTree().Root.GetNode<AnimationPlayer>("/root/Main/MainMenu/UIAnimations/AnimationPlayer");
|
||||
_animationPlayer.Play("IntroLore");
|
||||
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
|
||||
bgmPlayer.SetBGMFromFilepath("Audio/BGM/TitleTheme.ogg");
|
||||
bgmPlayer.PlayBGM();
|
||||
_player1Input = new Player1Input();
|
||||
_player2Input = new Player2Input();
|
||||
_animationPlayer.AnimationFinished += OnIntroAnimationFinished;
|
||||
GetParent().GetNode<TextureRect>("MainMenu/UIAnimations/LoreSplash").Show();
|
||||
_animationPlayer = GetTree().Root.GetNode<AnimationPlayer>("/root/Main/MainMenu/UIAnimations/AnimationPlayer");
|
||||
_animationPlayer.Play("IntroLore");
|
||||
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
|
||||
bgmPlayer.SetBGMFromFilepath("Audio/BGM/TitleTheme.ogg");
|
||||
bgmPlayer.PlayBGM();
|
||||
_player1Input = new Player1Input();
|
||||
_player2Input = new Player2Input();
|
||||
_animationPlayer.AnimationFinished += OnIntroAnimationFinished;
|
||||
}
|
||||
|
||||
public override void _UnhandledInput(InputEvent @event)
|
||||
{
|
||||
if (_animationPlayer.IsPlaying() && (Input.IsActionJustReleased(_player1Input.Fire()) || Input.IsActionJustReleased(_player2Input.Fire())))
|
||||
{
|
||||
_animationPlayer.Seek(10);
|
||||
GetNode<TextureButton>("NewGame/1Player").GrabFocus();
|
||||
}
|
||||
if (_animationPlayer.IsPlaying() && (Input.IsActionJustReleased(_player1Input.Fire()) || Input.IsActionJustReleased(_player2Input.Fire())))
|
||||
{
|
||||
_animationPlayer.Seek(10);
|
||||
GetNode<TextureButton>("NewGame/1Player").GrabFocus();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnIntroAnimationFinished(StringName animationName)
|
||||
{
|
||||
GetNode<TextureButton>("NewGame/1Player").GrabFocus();
|
||||
GetNode<TextureButton>("NewGame/1Player").GrabFocus();
|
||||
}
|
||||
|
||||
|
||||
private void OneSinglePlayerPressed()
|
||||
{
|
||||
Hide();
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
main.LoadLevel(0, 1);
|
||||
Hide();
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
main.LoadLevel(0, 1);
|
||||
}
|
||||
|
||||
private void OnTwoPlayerPressed()
|
||||
{
|
||||
Hide();
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
main.LoadLevel(0, 2);
|
||||
Hide();
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
main.LoadLevel(0, 2);
|
||||
}
|
||||
|
||||
private void OnQuitButtonPressed()
|
||||
{
|
||||
GetTree().Quit();
|
||||
GetTree().Quit();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
[sub_resource type="Animation" id="Animation_exerv"]
|
||||
resource_name = "Level1"
|
||||
length = 7.0
|
||||
length = 3.8
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -37,7 +37,7 @@ tracks/0/path = NodePath("CenterContainer/Screenshot2023-09-02At11_51_34:rotatio
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -49,7 +49,7 @@ tracks/1/path = NodePath("CenterContainer/RestoreTheChirality,OfLove&:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -61,7 +61,7 @@ tracks/2/path = NodePath("CenterContainer/ThereAreTearsAtTheHeartOf:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -85,7 +85,7 @@ tracks/4/path = NodePath(".:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -145,7 +145,7 @@ tracks/9/path = NodePath("CenterContainer/Scene1/AstralChainGehenna:visible")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -157,7 +157,7 @@ tracks/10/path = NodePath("CenterContainer/Scene1/Link001_1:visible")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -165,7 +165,7 @@ tracks/10/keys = {
|
||||
|
||||
[sub_resource type="Animation" id="Animation_27l6u"]
|
||||
resource_name = "Level10"
|
||||
length = 7.0
|
||||
length = 3.6
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -173,7 +173,7 @@ tracks/0/path = NodePath("CenterContainer/Screenshot2023-09-02At11_51_34:rotatio
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -185,7 +185,7 @@ tracks/1/path = NodePath("CenterContainer/RestoreTheChirality,OfLove&:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -197,7 +197,7 @@ tracks/2/path = NodePath("CenterContainer/ThereAreTearsAtTheHeartOf:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -221,7 +221,7 @@ tracks/4/path = NodePath(".:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -257,7 +257,7 @@ tracks/7/path = NodePath("CenterContainer/Scene10/TheGodCircuit:visible")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -269,7 +269,7 @@ tracks/8/path = NodePath("CenterContainer/Scene10/TowerOfGeddon:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -277,7 +277,7 @@ tracks/8/keys = {
|
||||
|
||||
[sub_resource type="Animation" id="Animation_re236"]
|
||||
resource_name = "Level2"
|
||||
length = 7.0
|
||||
length = 3.6
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -285,7 +285,7 @@ tracks/0/path = NodePath("CenterContainer/Screenshot2023-09-02At11_51_34:rotatio
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -297,7 +297,7 @@ tracks/1/path = NodePath("CenterContainer/RestoreTheChirality,OfLove&:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -309,7 +309,7 @@ tracks/2/path = NodePath("CenterContainer/ThereAreTearsAtTheHeartOf:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -333,7 +333,7 @@ tracks/4/path = NodePath(".:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -369,7 +369,7 @@ tracks/7/path = NodePath("CenterContainer/Scene2/AstralChainDa\'at:visible")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -381,7 +381,7 @@ tracks/8/path = NodePath("CenterContainer/Scene2/Link002_2y:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -389,7 +389,7 @@ tracks/8/keys = {
|
||||
|
||||
[sub_resource type="Animation" id="Animation_l2c80"]
|
||||
resource_name = "Level3"
|
||||
length = 7.0
|
||||
length = 3.6
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -397,7 +397,7 @@ tracks/0/path = NodePath("CenterContainer/Screenshot2023-09-02At11_51_34:rotatio
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -409,7 +409,7 @@ tracks/1/path = NodePath("CenterContainer/RestoreTheChirality,OfLove&:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -421,7 +421,7 @@ tracks/2/path = NodePath("CenterContainer/ThereAreTearsAtTheHeartOf:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -445,7 +445,7 @@ tracks/4/path = NodePath(".:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -481,7 +481,7 @@ tracks/7/path = NodePath("CenterContainer/Scene3/AstralChainGallu:visible")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -493,7 +493,7 @@ tracks/8/path = NodePath("CenterContainer/Scene3/Link003_33:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -501,7 +501,7 @@ tracks/8/keys = {
|
||||
|
||||
[sub_resource type="Animation" id="Animation_o54ud"]
|
||||
resource_name = "Level4"
|
||||
length = 7.0
|
||||
length = 3.6
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -509,7 +509,7 @@ tracks/0/path = NodePath("CenterContainer/Screenshot2023-09-02At11_51_34:rotatio
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -521,7 +521,7 @@ tracks/1/path = NodePath("CenterContainer/RestoreTheChirality,OfLove&:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -533,7 +533,7 @@ tracks/2/path = NodePath("CenterContainer/ThereAreTearsAtTheHeartOf:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -557,7 +557,7 @@ tracks/4/path = NodePath(".:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -593,7 +593,7 @@ tracks/7/path = NodePath("CenterContainer/Scene4/AstralChainNaraku:visible")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -605,7 +605,7 @@ tracks/8/path = NodePath("CenterContainer/Scene4/Link00404:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -613,7 +613,7 @@ tracks/8/keys = {
|
||||
|
||||
[sub_resource type="Animation" id="Animation_3237l"]
|
||||
resource_name = "Level5"
|
||||
length = 7.0
|
||||
length = 3.6
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -621,7 +621,7 @@ tracks/0/path = NodePath("CenterContainer/Screenshot2023-09-02At11_51_34:rotatio
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -633,7 +633,7 @@ tracks/1/path = NodePath("CenterContainer/RestoreTheChirality,OfLove&:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -645,7 +645,7 @@ tracks/2/path = NodePath("CenterContainer/ThereAreTearsAtTheHeartOf:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -669,7 +669,7 @@ tracks/4/path = NodePath(".:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -705,7 +705,7 @@ tracks/7/path = NodePath("CenterContainer/Scene5/AstralChainMictlān:visible")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -717,7 +717,7 @@ tracks/8/path = NodePath("CenterContainer/Scene5/Link005_5a:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -725,7 +725,7 @@ tracks/8/keys = {
|
||||
|
||||
[sub_resource type="Animation" id="Animation_6rk0m"]
|
||||
resource_name = "Level6"
|
||||
length = 7.0
|
||||
length = 3.6
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -733,7 +733,7 @@ tracks/0/path = NodePath("CenterContainer/Screenshot2023-09-02At11_51_34:rotatio
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -745,7 +745,7 @@ tracks/1/path = NodePath("CenterContainer/RestoreTheChirality,OfLove&:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -757,7 +757,7 @@ tracks/2/path = NodePath("CenterContainer/ThereAreTearsAtTheHeartOf:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -781,7 +781,7 @@ tracks/4/path = NodePath(".:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -817,7 +817,7 @@ tracks/7/path = NodePath("CenterContainer/Scene6/AstralChainXibalba:visible")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -829,7 +829,7 @@ tracks/8/path = NodePath("CenterContainer/Scene6/Link006_666:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -837,7 +837,7 @@ tracks/8/keys = {
|
||||
|
||||
[sub_resource type="Animation" id="Animation_urb4e"]
|
||||
resource_name = "Level7"
|
||||
length = 7.0
|
||||
length = 3.6
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -845,7 +845,7 @@ tracks/0/path = NodePath("CenterContainer/Screenshot2023-09-02At11_51_34:rotatio
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -857,7 +857,7 @@ tracks/1/path = NodePath("CenterContainer/RestoreTheChirality,OfLove&:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -869,7 +869,7 @@ tracks/2/path = NodePath("CenterContainer/ThereAreTearsAtTheHeartOf:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -893,7 +893,7 @@ tracks/4/path = NodePath(".:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -929,7 +929,7 @@ tracks/7/path = NodePath("CenterContainer/Scene7/AstralChainMetnal:visible")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -941,7 +941,7 @@ tracks/8/path = NodePath("CenterContainer/Scene7/Link007_7:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -949,7 +949,7 @@ tracks/8/keys = {
|
||||
|
||||
[sub_resource type="Animation" id="Animation_81npe"]
|
||||
resource_name = "Level8"
|
||||
length = 7.0
|
||||
length = 3.6
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -957,7 +957,7 @@ tracks/0/path = NodePath("CenterContainer/Screenshot2023-09-02At11_51_34:rotatio
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -969,7 +969,7 @@ tracks/1/path = NodePath("CenterContainer/RestoreTheChirality,OfLove&:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -981,7 +981,7 @@ tracks/2/path = NodePath("CenterContainer/ThereAreTearsAtTheHeartOf:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -1005,7 +1005,7 @@ tracks/4/path = NodePath(".:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -1041,7 +1041,7 @@ tracks/7/path = NodePath("CenterContainer/Scene8/AstralChainAsphodel:visible")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -1053,7 +1053,7 @@ tracks/8/path = NodePath("CenterContainer/Scene8/Link008_08_8:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -1061,7 +1061,7 @@ tracks/8/keys = {
|
||||
|
||||
[sub_resource type="Animation" id="Animation_osfo3"]
|
||||
resource_name = "Level9"
|
||||
length = 7.0
|
||||
length = 3.6
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -1069,7 +1069,7 @@ tracks/0/path = NodePath("CenterContainer/Screenshot2023-09-02At11_51_34:rotatio
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -1081,7 +1081,7 @@ tracks/1/path = NodePath("CenterContainer/RestoreTheChirality,OfLove&:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -1093,7 +1093,7 @@ tracks/2/path = NodePath("CenterContainer/ThereAreTearsAtTheHeartOf:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 3.14159]
|
||||
@@ -1117,7 +1117,7 @@ tracks/4/path = NodePath(".:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -1153,7 +1153,7 @@ tracks/7/path = NodePath("CenterContainer/Scene9/AstralChainDuat:visible")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@@ -1165,7 +1165,7 @@ tracks/8/path = NodePath("CenterContainer/Scene9/Link00999:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 7),
|
||||
"times": PackedFloat32Array(0, 3.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
|
||||
110
UI/StageGUI.cs
110
UI/StageGUI.cs
@@ -26,76 +26,76 @@ public partial class StageGUI : Control
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
|
||||
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
|
||||
}
|
||||
|
||||
public void OnCharacterSelect(Player player)
|
||||
{
|
||||
if (player.GameOver)
|
||||
return;
|
||||
if (player.GameOver)
|
||||
return;
|
||||
|
||||
player.IsSelectingCharacter = true;
|
||||
ChangeBG(player);
|
||||
player.IsSelectingCharacter = true;
|
||||
ChangeBG(player);
|
||||
}
|
||||
|
||||
public override void _Input(InputEvent @event)
|
||||
{
|
||||
var playersSelecting = _gameManager.Players.Where(x => x.IsSelectingCharacter);
|
||||
foreach (var player in playersSelecting)
|
||||
{
|
||||
if (Input.IsActionJustPressed(player.PlayerInput.Right()))
|
||||
{
|
||||
_gameManager.SetToNextCharacter(player);
|
||||
ChangeBG(player);
|
||||
}
|
||||
if (Input.IsActionJustPressed(player.PlayerInput.Left()))
|
||||
{
|
||||
_gameManager.SetToPreviousCharacter(player);
|
||||
ChangeBG(player);
|
||||
}
|
||||
var playersSelecting = _gameManager.Players.Where(x => x.IsSelectingCharacter);
|
||||
foreach (var player in playersSelecting)
|
||||
{
|
||||
if (Input.IsActionJustPressed(player.PlayerInput.Right()))
|
||||
{
|
||||
_gameManager.SetToNextCharacter(player);
|
||||
ChangeBG(player);
|
||||
}
|
||||
if (Input.IsActionJustPressed(player.PlayerInput.Left()))
|
||||
{
|
||||
_gameManager.SetToPreviousCharacter(player);
|
||||
ChangeBG(player);
|
||||
}
|
||||
|
||||
if (Input.IsActionJustPressed(player.PlayerInput.Fire()))
|
||||
{
|
||||
GD.Print("Selected character");
|
||||
player.IsSelectingCharacter = false;
|
||||
EmitSignal(SignalName.OnCharacterSelectionMade, player);
|
||||
GetTree().Paused = false;
|
||||
if (_audioStreamPlayer != null)
|
||||
_audioStreamPlayer.Play();
|
||||
}
|
||||
}
|
||||
if (Input.IsActionJustPressed(player.PlayerInput.Fire()))
|
||||
{
|
||||
GD.Print("Selected character");
|
||||
player.IsSelectingCharacter = false;
|
||||
EmitSignal(SignalName.OnCharacterSelectionMade, player);
|
||||
GetTree().Paused = false;
|
||||
if (_audioStreamPlayer != null)
|
||||
_audioStreamPlayer.Play();
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var player in _gameManager.Players)
|
||||
{
|
||||
if (player.GameOver)
|
||||
EmitSignal(SignalName.OnPlayerGameOver, player);
|
||||
}
|
||||
foreach (var player in _gameManager.Players)
|
||||
{
|
||||
if (player.GameOver)
|
||||
EmitSignal(SignalName.OnPlayerGameOver, player);
|
||||
}
|
||||
|
||||
if (!_gameManager.IsGameOverScreenOn && _gameManager.Players.All(x => x.GameOver))
|
||||
{
|
||||
EmitSignal(SignalName.OnGameOver, new Array<Player>(_gameManager.Players));
|
||||
}
|
||||
if (!_gameManager.IsGameOverScreenOn && _gameManager.Players.All(x => x.GameOver))
|
||||
{
|
||||
EmitSignal(SignalName.OnGameOver, new Array<Player>(_gameManager.Players));
|
||||
}
|
||||
}
|
||||
|
||||
private void ChangeBG(Player player)
|
||||
{
|
||||
var instance = player.CharactersLeftOnStage.ElementAt(player.CharacterIndex).Instantiate();
|
||||
var name = instance.Name;
|
||||
GD.Print(name);
|
||||
switch (name)
|
||||
{
|
||||
case "Capricorn":
|
||||
EmitSignal(SignalName.CapricornSelected, player);
|
||||
break;
|
||||
case "Scorpio":
|
||||
EmitSignal(SignalName.ScorpioSelected, player);
|
||||
break;
|
||||
case "Pisces":
|
||||
EmitSignal(SignalName.PiscesSelected, player);
|
||||
break;
|
||||
case "Sagittarius":
|
||||
EmitSignal(SignalName.SagittariusSelected, player);
|
||||
break;
|
||||
}
|
||||
var instance = player.CharactersLeftOnStage.ElementAt(player.CharacterIndex).Instantiate();
|
||||
var name = instance.Name;
|
||||
GD.Print(name);
|
||||
switch (name)
|
||||
{
|
||||
case "Capricorn":
|
||||
EmitSignal(SignalName.CapricornSelected, player);
|
||||
break;
|
||||
case "Scorpio":
|
||||
EmitSignal(SignalName.ScorpioSelected, player);
|
||||
break;
|
||||
case "Pisces":
|
||||
EmitSignal(SignalName.PiscesSelected, player);
|
||||
break;
|
||||
case "Sagittarius":
|
||||
EmitSignal(SignalName.SagittariusSelected, player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://o7uu4efxf36e" path="res://Textures/Portraits/scorpio-bg-char.png" id="7_tgrf5"]
|
||||
[ext_resource type="AudioStream" uid="uid://cdps3mfvdxdud" path="res://Audio/SFX/select.wav" id="8_3x5jr"]
|
||||
|
||||
[node name="StageGUI" type="Control" node_paths=PackedStringArray("_audioStreamPlayer")]
|
||||
[node name="StageGUI" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -17,7 +17,6 @@ anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_wr2m0")
|
||||
_audioStreamPlayer = NodePath("AudioStreamPlayer")
|
||||
metadata/_edit_horizontal_guides_ = [-342.0]
|
||||
|
||||
[node name="SidebarLeft" type="TextureRect" parent="."]
|
||||
|
||||
Reference in New Issue
Block a user