Compare commits
2 Commits
c755485855
...
68b1455c53
| Author | SHA1 | Date | |
|---|---|---|---|
| 68b1455c53 | |||
| 9615e1e251 |
@@ -2,5 +2,5 @@
|
|||||||
|
|
||||||
public interface IHealthPack
|
public interface IHealthPack
|
||||||
{
|
{
|
||||||
public double RestoreAmount { get; }
|
public int RestoreAmount { get; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,4 +47,8 @@ public partial class DimmableAudioStreamPlayer3D : AudioStreamPlayer3D, IDimmabl
|
|||||||
FADE_DURATION
|
FADE_DURATION
|
||||||
).SetTrans(Tween.TransitionType.Circ).SetEase(ease);
|
).SetTrans(Tween.TransitionType.Circ).SetEase(ease);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void _EnterTree() => FadeIn();
|
||||||
|
|
||||||
|
public override void _ExitTree() => FadeOut();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,8 +32,6 @@ public interface IGameRepo : IDisposable
|
|||||||
|
|
||||||
event Action<EquipableItem>? UnequippedItem;
|
event Action<EquipableItem>? UnequippedItem;
|
||||||
|
|
||||||
event Action<IHealthPack>? RestorativePickedUp;
|
|
||||||
|
|
||||||
event Action<IEnemy>? EnemyDied;
|
event Action<IEnemy>? EnemyDied;
|
||||||
|
|
||||||
void Pause();
|
void Pause();
|
||||||
@@ -56,8 +54,6 @@ public interface IGameRepo : IDisposable
|
|||||||
|
|
||||||
public void OnPlayerAttackedWall();
|
public void OnPlayerAttackedWall();
|
||||||
|
|
||||||
public void OnRestorativePickedUp(IHealthPack restorative);
|
|
||||||
|
|
||||||
public void CloseInventory();
|
public void CloseInventory();
|
||||||
|
|
||||||
public void GameEnded();
|
public void GameEnded();
|
||||||
@@ -85,7 +81,6 @@ public class GameRepo : IGameRepo
|
|||||||
public event Action? PlayerAttackedEnemy;
|
public event Action? PlayerAttackedEnemy;
|
||||||
public event Action<EquipableItem>? EquippedItem;
|
public event Action<EquipableItem>? EquippedItem;
|
||||||
public event Action<EquipableItem>? UnequippedItem;
|
public event Action<EquipableItem>? UnequippedItem;
|
||||||
public event Action<IHealthPack>? RestorativePickedUp;
|
|
||||||
public event Action<IEnemy>? EnemyDied;
|
public event Action<IEnemy>? EnemyDied;
|
||||||
public IAutoProp<bool> IsPaused => _isPaused;
|
public IAutoProp<bool> IsPaused => _isPaused;
|
||||||
private readonly AutoProp<bool> _isPaused;
|
private readonly AutoProp<bool> _isPaused;
|
||||||
@@ -151,11 +146,6 @@ public class GameRepo : IGameRepo
|
|||||||
PlayerAttackedWall?.Invoke();
|
PlayerAttackedWall?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnRestorativePickedUp(IHealthPack restorative)
|
|
||||||
{
|
|
||||||
RestorativePickedUp?.Invoke(restorative);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void CloseInventory()
|
public void CloseInventory()
|
||||||
{
|
{
|
||||||
CloseInventoryEvent?.Invoke();
|
CloseInventoryEvent?.Invoke();
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ public partial class PlayerLogic
|
|||||||
{
|
{
|
||||||
public readonly record struct PhysicsTick(double Delta);
|
public readonly record struct PhysicsTick(double Delta);
|
||||||
|
|
||||||
public readonly record struct Moved(Vector3 GlobalPosition, Transform3D GlobalTransform);
|
|
||||||
|
|
||||||
public readonly record struct Enable;
|
public readonly record struct Enable;
|
||||||
|
|
||||||
public readonly record struct Attack;
|
public readonly record struct Attack;
|
||||||
|
|||||||
@@ -79,6 +79,10 @@ folder_colors={
|
|||||||
|
|
||||||
import/blender/enabled=false
|
import/blender/enabled=false
|
||||||
|
|
||||||
|
[global_group]
|
||||||
|
|
||||||
|
DimmableAudio=""
|
||||||
|
|
||||||
[importer_defaults]
|
[importer_defaults]
|
||||||
|
|
||||||
texture={
|
texture={
|
||||||
|
|||||||
@@ -2,4 +2,5 @@
|
|||||||
|
|
||||||
public partial class AmbientSFXPlayer : DimmableAudioStreamPlayer
|
public partial class AmbientSFXPlayer : DimmableAudioStreamPlayer
|
||||||
{
|
{
|
||||||
|
public override void _EnterTree() => FadeIn();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,4 +2,5 @@
|
|||||||
|
|
||||||
public partial class AmbientSFXPlayer3D : DimmableAudioStreamPlayer3D
|
public partial class AmbientSFXPlayer3D : DimmableAudioStreamPlayer3D
|
||||||
{
|
{
|
||||||
|
public override void _EnterTree() => FadeIn();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ using Zennysoft.Ma.Adapter;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Zennysoft.Game.Implementation;
|
using Zennysoft.Game.Implementation;
|
||||||
|
using Zennysoft.Ma.Adapter.Entity;
|
||||||
|
|
||||||
[Meta(typeof(IAutoNode))]
|
[Meta(typeof(IAutoNode))]
|
||||||
public partial class Game : Node3D, IGame
|
public partial class Game : Node3D, IGame
|
||||||
@@ -172,9 +173,10 @@ public partial class Game : Node3D, IGame
|
|||||||
|
|
||||||
OnLoadLevelRequest += LoadLevel;
|
OnLoadLevelRequest += LoadLevel;
|
||||||
|
|
||||||
GameRepo.RestorativePickedUp += GameEventDepot_RestorativePickedUp;
|
|
||||||
GameRepo.CloseInventoryEvent += ExitInventoryAction;
|
GameRepo.CloseInventoryEvent += ExitInventoryAction;
|
||||||
|
|
||||||
|
GameRepo.EnemyDied += GameRepo_EnemyDied;
|
||||||
|
|
||||||
_player.Inventory.BroadcastMessage += BroadcastMessage;
|
_player.Inventory.BroadcastMessage += BroadcastMessage;
|
||||||
|
|
||||||
_map.FloorLoaded += OnFloorLoadFinished;
|
_map.FloorLoaded += OnFloorLoadFinished;
|
||||||
@@ -189,6 +191,11 @@ public partial class Game : Node3D, IGame
|
|||||||
InGameUI.PlayerInfoUI.Activate();
|
InGameUI.PlayerInfoUI.Activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void GameRepo_EnemyDied(IEnemy obj)
|
||||||
|
{
|
||||||
|
DropRestorative(obj.GlobalPosition);
|
||||||
|
}
|
||||||
|
|
||||||
private void BroadcastMessage(string obj)
|
private void BroadcastMessage(string obj)
|
||||||
{
|
{
|
||||||
InGameUI.InventoryMessageUI.DisplayMessage(obj);
|
InGameUI.InventoryMessageUI.DisplayMessage(obj);
|
||||||
@@ -383,7 +390,6 @@ public partial class Game : Node3D, IGame
|
|||||||
private void FloorClearMenu_Exit()
|
private void FloorClearMenu_Exit()
|
||||||
{
|
{
|
||||||
_player.Deactivate();
|
_player.Deactivate();
|
||||||
_map.ClearMap();
|
|
||||||
InGameUI.Hide();
|
InGameUI.Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -405,7 +411,7 @@ public partial class Game : Node3D, IGame
|
|||||||
var restorativeScene = GD.Load<PackedScene>("res://src/items/restorative/Restorative.tscn");
|
var restorativeScene = GD.Load<PackedScene>("res://src/items/restorative/Restorative.tscn");
|
||||||
var restorative = restorativeScene.Instantiate<Restorative>();
|
var restorative = restorativeScene.Instantiate<Restorative>();
|
||||||
AddChild(restorative);
|
AddChild(restorative);
|
||||||
restorative.GlobalPosition = vector;
|
restorative.GlobalPosition = new Vector3(vector.X, 2f, vector.Z) + (-_player.GetGlobalBasis().Z);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UseTeleportPrompt_CloseTeleportPrompt()
|
private void UseTeleportPrompt_CloseTeleportPrompt()
|
||||||
@@ -428,8 +434,6 @@ public partial class Game : Node3D, IGame
|
|||||||
GameRepo.Resume();
|
GameRepo.Resume();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GameEventDepot_RestorativePickedUp(IHealthPack obj) => _player.VTComponent.Restore((int)obj.RestoreAmount);
|
|
||||||
|
|
||||||
private void IsPaused_Sync(bool isPaused) => GetTree().Paused = isPaused;
|
private void IsPaused_Sync(bool isPaused) => GetTree().Paused = isPaused;
|
||||||
|
|
||||||
private void FinishedLoadingSaveFile() => EmitSignal(SignalName.SaveFileLoaded);
|
private void FinishedLoadingSaveFile() => EmitSignal(SignalName.SaveFileLoaded);
|
||||||
@@ -607,7 +611,6 @@ public partial class Game : Node3D, IGame
|
|||||||
|
|
||||||
OnLoadLevelRequest -= LoadLevel;
|
OnLoadLevelRequest -= LoadLevel;
|
||||||
|
|
||||||
GameRepo.RestorativePickedUp -= GameEventDepot_RestorativePickedUp;
|
|
||||||
GameRepo.CloseInventoryEvent -= ExitInventoryAction;
|
GameRepo.CloseInventoryEvent -= ExitInventoryAction;
|
||||||
|
|
||||||
_player.Inventory.BroadcastMessage -= BroadcastMessage;
|
_player.Inventory.BroadcastMessage -= BroadcastMessage;
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
using Chickensoft.AutoInject;
|
using Chickensoft.AutoInject;
|
||||||
using Chickensoft.Introspection;
|
using Chickensoft.Introspection;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
using System.Linq;
|
||||||
using Zennysoft.Game.Abstractions;
|
using Zennysoft.Game.Abstractions;
|
||||||
|
using Zennysoft.Ma.Adapter;
|
||||||
|
|
||||||
namespace Zennysoft.Game.Ma;
|
namespace Zennysoft.Game.Ma;
|
||||||
|
|
||||||
@@ -10,7 +12,10 @@ public partial class Restorative : Node3D, IHealthPack
|
|||||||
{
|
{
|
||||||
public override void _Notification(int what) => this.Notify(what);
|
public override void _Notification(int what) => this.Notify(what);
|
||||||
|
|
||||||
|
[Dependency] protected IPlayer _player => this.DependOn(() => GetParent().GetChildren().OfType<IPlayer>().Single());
|
||||||
|
|
||||||
[Node] public Area3D Pickup { get; set; } = default!;
|
[Node] public Area3D Pickup { get; set; } = default!;
|
||||||
|
|
||||||
public double RestoreAmount => 4;
|
[Export]
|
||||||
|
public int RestoreAmount { get; set; } = 4;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,22 @@
|
|||||||
[gd_scene load_steps=3 format=3 uid="uid://dofju2wfj12y4"]
|
[gd_scene load_steps=4 format=3 uid="uid://dofju2wfj12y4"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://qjvotbwutcb5" path="res://src/items/restorative/Restorative.cs" id="1_3beyl"]
|
[ext_resource type="Script" uid="uid://qjvotbwutcb5" path="res://src/items/restorative/Restorative.cs" id="1_3beyl"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://d07kcaqe682l1" path="res://src/items/ammo/textures/AirGeo.png" id="2_6y0d4"]
|
||||||
|
|
||||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_o8f22"]
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_o8f22"]
|
||||||
radius = 0.13613
|
radius = 0.120977
|
||||||
height = 1.09613
|
height = 1.09613
|
||||||
|
|
||||||
[node name="Restorative" type="Node3D"]
|
[node name="Restorative" type="Node3D"]
|
||||||
script = ExtResource("1_3beyl")
|
script = ExtResource("1_3beyl")
|
||||||
|
|
||||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.363669, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.205191, 0)
|
||||||
pixel_size = 0.025
|
pixel_size = 0.025
|
||||||
billboard = 2
|
billboard = 2
|
||||||
texture_filter = 0
|
texture_filter = 0
|
||||||
render_priority = 100
|
render_priority = 100
|
||||||
|
texture = ExtResource("2_6y0d4")
|
||||||
|
|
||||||
[node name="Pickup" type="Area3D" parent="."]
|
[node name="Pickup" type="Area3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -22,5 +24,5 @@ collision_layer = 4
|
|||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.348749, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.190116, 0)
|
||||||
shape = SubResource("CapsuleShape3D_o8f22")
|
shape = SubResource("CapsuleShape3D_o8f22")
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ public interface IMap : INode3D
|
|||||||
|
|
||||||
Task LoadFloor(string sceneName);
|
Task LoadFloor(string sceneName);
|
||||||
|
|
||||||
void ClearMap();
|
|
||||||
|
|
||||||
IDungeonFloor CurrentFloor { get; }
|
IDungeonFloor CurrentFloor { get; }
|
||||||
|
|
||||||
(Vector3 Rotation, Vector3 Position) GetPlayerSpawnPosition();
|
(Vector3 Rotation, Vector3 Position) GetPlayerSpawnPosition();
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Godot;
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Zennysoft.Game.Abstractions;
|
||||||
|
|
||||||
namespace Zennysoft.Game.Ma;
|
namespace Zennysoft.Game.Ma;
|
||||||
|
|
||||||
@@ -32,11 +33,35 @@ public partial class Map : Node3D, IMap
|
|||||||
|
|
||||||
public event Action FloorLoaded;
|
public event Action FloorLoaded;
|
||||||
|
|
||||||
|
private string _sceneName;
|
||||||
|
|
||||||
public void OnResolved()
|
public void OnResolved()
|
||||||
{
|
{
|
||||||
|
AnimationPlayer.AnimationFinished += AnimationPlayer_AnimationFinished;
|
||||||
this.Provide();
|
this.Provide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void AnimationPlayer_AnimationFinished(StringName animName)
|
||||||
|
{
|
||||||
|
if (animName == "fade_out")
|
||||||
|
{
|
||||||
|
await LoadNewFloor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task LoadNewFloor()
|
||||||
|
{
|
||||||
|
CurrentFloor?.CallDeferred(MethodName.QueueFree, []);
|
||||||
|
SpawnPointCreated?.Invoke((Vector3.Forward, new Vector3(-999, -999, -999)));
|
||||||
|
var newFloor = await LoadNewFloor(_sceneName);
|
||||||
|
AddChild(newFloor);
|
||||||
|
InitializeFloor(newFloor);
|
||||||
|
var floor = MapOrder.GetChildren().OfType<FloorNode>().ElementAt(CurrentFloorNumber.Value);
|
||||||
|
if (CurrentFloor is DungeonFloor dungeonFloor && floor is DungeonFloorNode dungeonFloorNode)
|
||||||
|
dungeonFloor.SpawnEnemies(dungeonFloorNode);
|
||||||
|
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, ("fade_in"));
|
||||||
|
}
|
||||||
|
|
||||||
public void InitializeMapData()
|
public void InitializeMapData()
|
||||||
{
|
{
|
||||||
CurrentFloorNumber.OnNext(-1);
|
CurrentFloorNumber.OnNext(-1);
|
||||||
@@ -65,21 +90,10 @@ public partial class Map : Node3D, IMap
|
|||||||
public async Task LoadFloor(string sceneName)
|
public async Task LoadFloor(string sceneName)
|
||||||
{
|
{
|
||||||
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, "fade_out");
|
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, "fade_out");
|
||||||
ClearMap();
|
_sceneName = sceneName;
|
||||||
var newFloor = await LoadNewFloor(sceneName);
|
var dimmableAudio = GetTree().GetNodesInGroup("DimmableAudio").OfType<IDimmableAudioStreamPlayer>();
|
||||||
AddChild(newFloor);
|
foreach (var node in dimmableAudio)
|
||||||
InitializeFloor(newFloor);
|
node.FadeOut();
|
||||||
var floor = MapOrder.GetChildren().OfType<FloorNode>().ElementAt(CurrentFloorNumber.Value);
|
|
||||||
if (CurrentFloor is DungeonFloor dungeonFloor && floor is DungeonFloorNode dungeonFloorNode)
|
|
||||||
dungeonFloor.SpawnEnemies(dungeonFloorNode);
|
|
||||||
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, ("fade_in"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClearMap()
|
|
||||||
{
|
|
||||||
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, "fade_out");
|
|
||||||
CurrentFloor?.CallDeferred(MethodName.QueueFree, []);
|
|
||||||
SpawnPointCreated?.Invoke((Vector3.Forward, new Vector3(-999, -999, -999)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeFloor(Node newFloor)
|
private void InitializeFloor(Node newFloor)
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ using Chickensoft.AutoInject;
|
|||||||
using Chickensoft.Introspection;
|
using Chickensoft.Introspection;
|
||||||
using Godot;
|
using Godot;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Zennysoft.Game.Abstractions;
|
|
||||||
using Zennysoft.Ma.Adapter;
|
using Zennysoft.Ma.Adapter;
|
||||||
|
|
||||||
namespace Zennysoft.Game.Ma;
|
namespace Zennysoft.Game.Ma;
|
||||||
@@ -22,8 +21,6 @@ public partial class Altar : SpecialFloor, IDungeonFloor
|
|||||||
|
|
||||||
[Node] private Area3D NoExitArea { get; set; } = default!;
|
[Node] private Area3D NoExitArea { get; set; } = default!;
|
||||||
|
|
||||||
[Node] private Node DimmableAudio { get; set; } = default!;
|
|
||||||
|
|
||||||
[Export] public Resource Dialogue { get; set; } = default!;
|
[Export] public Resource Dialogue { get; set; } = default!;
|
||||||
|
|
||||||
public void OnResolved()
|
public void OnResolved()
|
||||||
@@ -32,16 +29,6 @@ public partial class Altar : SpecialFloor, IDungeonFloor
|
|||||||
Exit.AreaEntered += Exit_AreaEntered;
|
Exit.AreaEntered += Exit_AreaEntered;
|
||||||
NoExitArea.AreaEntered += NoExitArea_AreaEntered;
|
NoExitArea.AreaEntered += NoExitArea_AreaEntered;
|
||||||
FloorIsLoaded = true;
|
FloorIsLoaded = true;
|
||||||
var dimmableAudio = DimmableAudio.GetChildren().OfType<IDimmableAudioStreamPlayer>();
|
|
||||||
foreach (var dimmable in dimmableAudio)
|
|
||||||
dimmable.FadeIn();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void FadeOutAudio()
|
|
||||||
{
|
|
||||||
var dimmableAudio = DimmableAudio.GetChildren().OfType<IDimmableAudioStreamPlayer>();
|
|
||||||
foreach (var dimmable in dimmableAudio)
|
|
||||||
dimmable.FadeOut();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _player_PointUpFinished()
|
private void _player_PointUpFinished()
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1557,7 +1557,7 @@ billboard = 2
|
|||||||
sprite_frames = SubResource("SpriteFrames_ypixh")
|
sprite_frames = SubResource("SpriteFrames_ypixh")
|
||||||
autoplay = "default"
|
autoplay = "default"
|
||||||
|
|
||||||
[node name="FLAME1" type="AudioStreamPlayer3D" parent="VFX/Flame1"]
|
[node name="FLAME1" type="AudioStreamPlayer3D" parent="VFX/Flame1" groups=["DimmableAudio"]]
|
||||||
transform = Transform3D(1.62602, 0, 0, 0, 2.24719, 0, 0, 0, 2.24719, -0.237626, -1.0051, -0.623936)
|
transform = Transform3D(1.62602, 0, 0, 0, 2.24719, 0, 0, 0, 2.24719, -0.237626, -1.0051, -0.623936)
|
||||||
stream = ExtResource("23_fbuno")
|
stream = ExtResource("23_fbuno")
|
||||||
autoplay = true
|
autoplay = true
|
||||||
@@ -1581,7 +1581,7 @@ billboard = 2
|
|||||||
sprite_frames = SubResource("SpriteFrames_ypixh")
|
sprite_frames = SubResource("SpriteFrames_ypixh")
|
||||||
autoplay = "default"
|
autoplay = "default"
|
||||||
|
|
||||||
[node name="FLAME2" type="AudioStreamPlayer3D" parent="VFX/Flame2"]
|
[node name="FLAME2" type="AudioStreamPlayer3D" parent="VFX/Flame2" groups=["DimmableAudio"]]
|
||||||
transform = Transform3D(1.62602, 0, 0, 0, 2.24719, 0, 0, 0, 2.24719, -0.237626, -1.0051, -0.623936)
|
transform = Transform3D(1.62602, 0, 0, 0, 2.24719, 0, 0, 0, 2.24719, -0.237626, -1.0051, -0.623936)
|
||||||
stream = ExtResource("23_fbuno")
|
stream = ExtResource("23_fbuno")
|
||||||
autoplay = true
|
autoplay = true
|
||||||
|
|||||||
@@ -3267,7 +3267,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -350.758, -3.90238, 113.556)
|
|||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1.51515, 0, 0, 0, 1.51515, 0, 0, 0, 1.51515, 137.047, -0.658938, -5.82563)
|
transform = Transform3D(1.51515, 0, 0, 0, 1.51515, 0, 0, 0, 1.51515, 137.047, -0.658938, -5.82563)
|
||||||
|
|
||||||
[node name="Interior" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio"]
|
[node name="Interior" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio" groups=["DimmableAudio"]]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.4453, 0, 5.97604)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.4453, 0, 5.97604)
|
||||||
stream = ExtResource("2_wbbo3")
|
stream = ExtResource("2_wbbo3")
|
||||||
@@ -3278,7 +3278,7 @@ max_distance = 100.0
|
|||||||
bus = &"AMBIENT"
|
bus = &"AMBIENT"
|
||||||
script = ExtResource("66_q7hpd")
|
script = ExtResource("66_q7hpd")
|
||||||
|
|
||||||
[node name="Interior2" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio"]
|
[node name="Interior2" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio" groups=["DimmableAudio"]]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -231.692, 6.43338, -92.712)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -231.692, 6.43338, -92.712)
|
||||||
stream = ExtResource("2_wbbo3")
|
stream = ExtResource("2_wbbo3")
|
||||||
@@ -3289,7 +3289,7 @@ max_distance = 54.99
|
|||||||
bus = &"AMBIENT"
|
bus = &"AMBIENT"
|
||||||
script = ExtResource("66_q7hpd")
|
script = ExtResource("66_q7hpd")
|
||||||
|
|
||||||
[node name="Ocean" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio"]
|
[node name="Ocean" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio" groups=["DimmableAudio"]]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -210.527, -9.55156, -81.5173)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -210.527, -9.55156, -81.5173)
|
||||||
stream = ExtResource("3_pvi8n")
|
stream = ExtResource("3_pvi8n")
|
||||||
@@ -3301,7 +3301,7 @@ bus = &"AMBIENT"
|
|||||||
attenuation_filter_cutoff_hz = 20500.0
|
attenuation_filter_cutoff_hz = 20500.0
|
||||||
script = ExtResource("66_q7hpd")
|
script = ExtResource("66_q7hpd")
|
||||||
|
|
||||||
[node name="Ocean2" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio"]
|
[node name="Ocean2" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio" groups=["DimmableAudio"]]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 109.176, -130.646, -48.6352)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 109.176, -130.646, -48.6352)
|
||||||
stream = ExtResource("3_pvi8n")
|
stream = ExtResource("3_pvi8n")
|
||||||
@@ -3314,7 +3314,7 @@ bus = &"AMBIENT"
|
|||||||
attenuation_filter_db = -34.0
|
attenuation_filter_db = -34.0
|
||||||
script = ExtResource("66_q7hpd")
|
script = ExtResource("66_q7hpd")
|
||||||
|
|
||||||
[node name="Ocean3" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio"]
|
[node name="Ocean3" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio" groups=["DimmableAudio"]]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -329.209, -9.13597, -39.3283)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -329.209, -9.13597, -39.3283)
|
||||||
stream = ExtResource("3_pvi8n")
|
stream = ExtResource("3_pvi8n")
|
||||||
@@ -3328,7 +3328,7 @@ attenuation_filter_cutoff_hz = 691.0
|
|||||||
attenuation_filter_db = -34.0
|
attenuation_filter_db = -34.0
|
||||||
script = ExtResource("66_q7hpd")
|
script = ExtResource("66_q7hpd")
|
||||||
|
|
||||||
[node name="Waterfall" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio"]
|
[node name="Waterfall" type="AudioStreamPlayer3D" parent="Node3D/Audio/DimmableAudio" groups=["DimmableAudio"]]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -107.057, 0, -48.0532)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -107.057, 0, -48.0532)
|
||||||
stream = ExtResource("3_c2gp5")
|
stream = ExtResource("3_c2gp5")
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=119 format=4 uid="uid://cihbmyo0ltq4m"]
|
[gd_scene load_steps=120 format=4 uid="uid://cihbmyo0ltq4m"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bfybovehfclqr" path="res://src/map/dungeon/models/Area 1/Exit/A1-Exit_FLOOR1.jpg" id="2_m7ked"]
|
[ext_resource type="Texture2D" uid="uid://bfybovehfclqr" path="res://src/map/dungeon/models/Area 1/Exit/A1-Exit_FLOOR1.jpg" id="2_m7ked"]
|
||||||
[ext_resource type="Script" uid="uid://bd824eigybu51" path="res://src/map/dungeon/code/ExitRoom.cs" id="2_umdkt"]
|
[ext_resource type="Script" uid="uid://bd824eigybu51" path="res://src/map/dungeon/code/ExitRoom.cs" id="2_umdkt"]
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
[ext_resource type="Texture2D" uid="uid://cu2xk2pn7yki7" path="res://src/map/dungeon/models/Area 1/Exit/A1-Exit_brick3.png" id="16_bastv"]
|
[ext_resource type="Texture2D" uid="uid://cu2xk2pn7yki7" path="res://src/map/dungeon/models/Area 1/Exit/A1-Exit_brick3.png" id="16_bastv"]
|
||||||
[ext_resource type="Texture2D" uid="uid://pyy25p14q8g5" path="res://src/map/dungeon/models/Area 1/Exit/A1-Exit_COLUM2N.png" id="17_7wx2a"]
|
[ext_resource type="Texture2D" uid="uid://pyy25p14q8g5" path="res://src/map/dungeon/models/Area 1/Exit/A1-Exit_COLUM2N.png" id="17_7wx2a"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cxwyge2s1yswu" path="res://src/map/Placeables/A1-Socket.tscn" id="18_tgauh"]
|
[ext_resource type="PackedScene" uid="uid://cxwyge2s1yswu" path="res://src/map/Placeables/A1-Socket.tscn" id="18_tgauh"]
|
||||||
|
[ext_resource type="Script" uid="uid://b83kye8yinfxs" path="res://src/audio/AmbientSFXPlayer3D.cs" id="22_23ip1"]
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tio5r"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tio5r"]
|
||||||
resource_name = "Material.024"
|
resource_name = "Material.024"
|
||||||
@@ -1352,7 +1353,7 @@ billboard = 2
|
|||||||
sprite_frames = SubResource("SpriteFrames_s0p2a")
|
sprite_frames = SubResource("SpriteFrames_s0p2a")
|
||||||
autoplay = "default"
|
autoplay = "default"
|
||||||
|
|
||||||
[node name="FLAME1" type="AudioStreamPlayer3D" parent="VFX/Flame1"]
|
[node name="FLAME1" type="AudioStreamPlayer3D" parent="VFX/Flame1" groups=["DimmableAudio"]]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
transform = Transform3D(1.62602, 0, 0, 0, 2.24719, 0, 0, 0, 2.24719, -0.237626, -1.0051, -0.623936)
|
transform = Transform3D(1.62602, 0, 0, 0, 2.24719, 0, 0, 0, 2.24719, -0.237626, -1.0051, -0.623936)
|
||||||
stream = ExtResource("6_54fgm")
|
stream = ExtResource("6_54fgm")
|
||||||
@@ -1360,6 +1361,7 @@ autoplay = true
|
|||||||
max_distance = 25.0
|
max_distance = 25.0
|
||||||
bus = &"AMBIENT"
|
bus = &"AMBIENT"
|
||||||
parameters/looping = true
|
parameters/looping = true
|
||||||
|
script = ExtResource("22_23ip1")
|
||||||
|
|
||||||
[node name="OmniLight3D2" type="OmniLight3D" parent="VFX/Flame1"]
|
[node name="OmniLight3D2" type="OmniLight3D" parent="VFX/Flame1"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.180455, -0.538921, -0.0176468)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.180455, -0.538921, -0.0176468)
|
||||||
@@ -1376,7 +1378,7 @@ billboard = 2
|
|||||||
sprite_frames = SubResource("SpriteFrames_s0p2a")
|
sprite_frames = SubResource("SpriteFrames_s0p2a")
|
||||||
autoplay = "default"
|
autoplay = "default"
|
||||||
|
|
||||||
[node name="FLAME2" type="AudioStreamPlayer3D" parent="VFX/Flame2"]
|
[node name="FLAME2" type="AudioStreamPlayer3D" parent="VFX/Flame2" groups=["DimmableAudio"]]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
transform = Transform3D(1.62602, 0, 0, 0, 2.24719, 0, 0, 0, 2.24719, -0.237626, -1.0051, -0.623936)
|
transform = Transform3D(1.62602, 0, 0, 0, 2.24719, 0, 0, 0, 2.24719, -0.237626, -1.0051, -0.623936)
|
||||||
stream = ExtResource("6_54fgm")
|
stream = ExtResource("6_54fgm")
|
||||||
@@ -1384,6 +1386,7 @@ autoplay = true
|
|||||||
max_distance = 25.0
|
max_distance = 25.0
|
||||||
bus = &"AMBIENT"
|
bus = &"AMBIENT"
|
||||||
parameters/looping = true
|
parameters/looping = true
|
||||||
|
script = ExtResource("22_23ip1")
|
||||||
|
|
||||||
[node name="OmniLight3D2" type="OmniLight3D" parent="VFX/Flame2"]
|
[node name="OmniLight3D2" type="OmniLight3D" parent="VFX/Flame2"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.180455, -0.538921, -0.0176468)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.180455, -0.538921, -0.0176468)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
|||||||
|
|
||||||
#region Exports
|
#region Exports
|
||||||
[ExportGroup("Movement")]
|
[ExportGroup("Movement")]
|
||||||
[Export(PropertyHint.Range, "0, 100, 0.1")]
|
[Export(PropertyHint.Range, "0, 60, 0.1")]
|
||||||
public float RotationSpeed { get; set; } = 1.5f;
|
public float RotationSpeed { get; set; } = 1.5f;
|
||||||
|
|
||||||
[Export(PropertyHint.Range, "0, 100, 0.1")]
|
[Export(PropertyHint.Range, "0, 100, 0.1")]
|
||||||
@@ -296,7 +296,6 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
|||||||
public void OnPhysicsProcess(double delta)
|
public void OnPhysicsProcess(double delta)
|
||||||
{
|
{
|
||||||
PlayerLogic.Input(new PlayerLogic.Input.PhysicsTick(delta));
|
PlayerLogic.Input(new PlayerLogic.Input.PhysicsTick(delta));
|
||||||
PlayerLogic.Input(new PlayerLogic.Input.Moved(GlobalPosition, GlobalTransform));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Equip(EquipableItem equipable)
|
public void Equip(EquipableItem equipable)
|
||||||
@@ -700,20 +699,25 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
|||||||
var transform = Transform;
|
var transform = Transform;
|
||||||
transform.Basis = new Basis(Vector3.Up, Settings.RotationSpeed * -rawInput.X * delta) * transform.Basis;
|
transform.Basis = new Basis(Vector3.Up, Settings.RotationSpeed * -rawInput.X * delta) * transform.Basis;
|
||||||
var moveDirection = new Vector3(strafeRightInput - strafeLeftInput, 0, rawInput.Z).Normalized();
|
var moveDirection = new Vector3(strafeRightInput - strafeLeftInput, 0, rawInput.Z).Normalized();
|
||||||
var velocity = Basis * moveDirection * Settings.MoveSpeed * Settings.Acceleration;
|
|
||||||
|
if (moveDirection.Length() > 0.25f)
|
||||||
|
{
|
||||||
|
var rng = new RandomNumberGenerator();
|
||||||
|
rng.Randomize();
|
||||||
|
WalkSFX.PitchScale = rng.RandfRange(0.5f, 1.5f);
|
||||||
|
if (!WalkSFX.Playing)
|
||||||
|
WalkSFX.Play();
|
||||||
|
}
|
||||||
|
else if (WalkSFX.Playing)
|
||||||
|
WalkSFX.Stop();
|
||||||
|
|
||||||
|
var velocity = (Basis * moveDirection * Settings.MoveSpeed * Settings.Acceleration);
|
||||||
if (_debugSprint)
|
if (_debugSprint)
|
||||||
velocity *= 2;
|
velocity *= 2;
|
||||||
_knockbackStrength *= 0.9f;
|
_knockbackStrength *= 0.9f;
|
||||||
Transform = Transform with { Basis = transform.Basis };
|
Transform = Transform with { Basis = transform.Basis };
|
||||||
Velocity = velocity + (_knockbackDirection * _knockbackStrength);
|
Velocity = velocity + (_knockbackDirection * _knockbackStrength);
|
||||||
var rng = new RandomNumberGenerator();
|
|
||||||
rng.Randomize();
|
|
||||||
|
|
||||||
WalkSFX.PitchScale = rng.RandfRange(0.5f, 1.5f);
|
|
||||||
if (!WalkSFX.Playing && !Velocity.IsZeroApprox())
|
|
||||||
WalkSFX.Play();
|
|
||||||
else if (Velocity.IsZeroApprox())
|
|
||||||
WalkSFX.Stop();
|
|
||||||
MoveAndSlide();
|
MoveAndSlide();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -766,7 +770,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
|||||||
_playerEffectService.Instakill(enemy);
|
_playerEffectService.Instakill(enemy);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CollisionDetector_AreaEntered(Area3D area)
|
private async void CollisionDetector_AreaEntered(Area3D area)
|
||||||
{
|
{
|
||||||
if (area.GetParent() is InventoryItem inventoryItem)
|
if (area.GetParent() is InventoryItem inventoryItem)
|
||||||
{
|
{
|
||||||
@@ -788,6 +792,9 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
|||||||
}
|
}
|
||||||
if (area.GetParent() is Restorative restorative)
|
if (area.GetParent() is Restorative restorative)
|
||||||
{
|
{
|
||||||
|
await ToSignal(GetTree().CreateTimer(0.2f), "timeout");
|
||||||
|
VTComponent.Restore(restorative.RestoreAmount);
|
||||||
|
SfxDatabase.Instance.Play(SoundEffect.HealVT);
|
||||||
restorative.QueueFree();
|
restorative.QueueFree();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1356,7 +1356,7 @@ tracks/3/keys = {
|
|||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_jhq84"]
|
[sub_resource type="Animation" id="Animation_jhq84"]
|
||||||
resource_name = "Rondo"
|
resource_name = "Rondo"
|
||||||
length = 1.23334
|
length = 1.26667
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
@@ -1376,10 +1376,10 @@ tracks/1/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:frame")
|
|||||||
tracks/1/interp = 1
|
tracks/1/interp = 1
|
||||||
tracks/1/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
"times": PackedFloat32Array(0, 1.23333),
|
"times": PackedFloat32Array(0, 1.26667),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [0, 37]
|
"values": [0, 38]
|
||||||
}
|
}
|
||||||
tracks/2/type = "value"
|
tracks/2/type = "value"
|
||||||
tracks/2/imported = false
|
tracks/2/imported = false
|
||||||
@@ -7929,6 +7929,9 @@ animations = [{
|
|||||||
}, {
|
}, {
|
||||||
"duration": 1.0,
|
"duration": 1.0,
|
||||||
"texture": SubResource("AtlasTexture_y8v4x")
|
"texture": SubResource("AtlasTexture_y8v4x")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": null
|
||||||
}],
|
}],
|
||||||
"loop": false,
|
"loop": false,
|
||||||
"name": &"Rondo",
|
"name": &"Rondo",
|
||||||
|
|||||||
Reference in New Issue
Block a user