Added shadows to enemies

This commit is contained in:
Pal
2025-12-01 21:05:33 -08:00
parent fe45f0bcf2
commit 3c369f79f7
88 changed files with 1413 additions and 1044 deletions

View File

@@ -1,4 +1,4 @@
<Project Sdk="Godot.NET.Sdk/4.4.0"> <Project Sdk="Godot.NET.Sdk/4.4.1">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading> <EnableDynamicLoading>true</EnableDynamicLoading>

View File

@@ -0,0 +1,38 @@
<Project Sdk="Godot.NET.Sdk/4.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
<WarningsAsErrors>CS9057</WarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Chickensoft.AutoInject" Version="2.5.0" />
<PackageReference Include="Chickensoft.GodotNodeInterfaces" Version="2.4.0" />
<PackageReference Include="Chickensoft.Introspection" Version="2.2.0" />
<PackageReference Include="Chickensoft.Introspection.Generator" Version="2.2.0" />
<PackageReference Include="Chickensoft.LogicBlocks" Version="5.16.0" />
<PackageReference Include="Chickensoft.LogicBlocks.DiagramGenerator" Version="5.16.0" />
<PackageReference Include="Chickensoft.SaveFileBuilder" Version="1.1.0" />
<PackageReference Include="Chickensoft.Serialization.Godot" Version="0.7.6" />
<PackageReference Include="GodotSharp.SourceGenerators" Version="2.6.0-250131-2115.Release" />
<PackageReference Include="SimpleInjector" Version="5.5.0" />
<PackageReference Include="SSH.NET" Version="2024.2.0" />
<PackageReference Include="System.IO.Abstractions" Version="22.0.11" />
<PackageReference Include="Zeroconf" Version="3.7.16" />
</ItemGroup>
<ItemGroup>
<None Include=".editorconfig" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Zennysoft.Game.Godot.Implementation\Zennysoft.Game.Implementation.csproj" />
<ProjectReference Include="..\Zennysoft.Game.Ma.Implementation\Zennysoft.Ma.Adapter.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="Godot.SourceGenerators" Version="4.4.0-dev.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="GodotSharp" Version="4.4.0-dev.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="GodotSharpEditor" Version="4.4.0-dev.2" />
</ItemGroup>
</Project>

View File

@@ -1,4 +1,8 @@
[gd_resource type="AudioBusLayout" load_steps=2 format=3 uid="uid://c2mk6c27y0mdf"] [gd_resource type="AudioBusLayout" load_steps=4 format=3 uid="uid://c2mk6c27y0mdf"]
[sub_resource type="AudioEffectLimiter" id="AudioEffectLimiter_j3pel"]
resource_name = "Limiter"
soft_clip_db = 1.0
[sub_resource type="AudioEffectReverb" id="AudioEffectReverb_j3pel"] [sub_resource type="AudioEffectReverb" id="AudioEffectReverb_j3pel"]
resource_name = "Reverb" resource_name = "Reverb"
@@ -7,8 +11,16 @@ damping = 0.9
dry = 0.99 dry = 0.99
wet = 0.05 wet = 0.05
[sub_resource type="AudioEffectLimiter" id="AudioEffectLimiter_g28q7"]
resource_name = "Limiter"
ceiling_db = -0.5
threshold_db = -0.6
soft_clip_db = 1.5
[resource] [resource]
bus/0/volume_db = -0.130497 bus/0/volume_db = -0.130497
bus/0/effect/0/effect = SubResource("AudioEffectLimiter_j3pel")
bus/0/effect/0/enabled = true
bus/1/name = &"AMBIENT" bus/1/name = &"AMBIENT"
bus/1/solo = false bus/1/solo = false
bus/1/mute = false bus/1/mute = false
@@ -23,6 +35,8 @@ bus/2/volume_db = 0.0
bus/2/send = &"Master" bus/2/send = &"Master"
bus/2/effect/0/effect = SubResource("AudioEffectReverb_j3pel") bus/2/effect/0/effect = SubResource("AudioEffectReverb_j3pel")
bus/2/effect/0/enabled = true bus/2/effect/0/enabled = true
bus/2/effect/1/effect = SubResource("AudioEffectLimiter_g28q7")
bus/2/effect/1/enabled = true
bus/3/name = &"MUSIC" bus/3/name = &"MUSIC"
bus/3/solo = false bus/3/solo = false
bus/3/mute = false bus/3/mute = false

View File

@@ -30,8 +30,8 @@ public partial class EnemyModelView2D : EnemyModelView, IEnemyModelView
public new void OnReady() public new void OnReady()
{ {
Hitbox.AreaEntered += Hitbox_AreaEntered; Hitbox.AreaEntered += Hitbox_AreaEntered;
base.OnReady(); base.OnReady();
} }
private void Hitbox_AreaEntered(Area3D area) => OnPlayerHit(new AttackEventArgs(AttackData)); private void Hitbox_AreaEntered(Area3D area) => OnPlayerHit(new AttackEventArgs(AttackData));
@@ -40,102 +40,102 @@ public partial class EnemyModelView2D : EnemyModelView, IEnemyModelView
public override void PlayHitAnimation() public override void PlayHitAnimation()
{ {
LoadShader("res://src/vfx/shaders/DamageHit.gdshader"); LoadShader("res://src/vfx/shaders/DamageHit.gdshader");
var tweener = GetTree().CreateTween(); var tweener = GetTree().CreateTween();
tweener.TweenMethod(Callable.From((float x) => SetShaderValue(x)), 0.0f, 1.0f, 1.0f); tweener.TweenMethod(Callable.From((float x) => SetShaderValue(x)), 0.0f, 1.0f, 1.0f);
} }
public override void PlayDeathAnimation() public override void PlayDeathAnimation()
{ {
LoadShader("res://src/vfx/shaders/PixelMelt.gdshader"); LoadShader("res://src/vfx/shaders/PixelMelt.gdshader");
var tweener = GetTree().CreateTween(); var tweener = GetTree().CreateTween();
tweener.TweenMethod(Callable.From((float x) => SetShaderValue(x)), 0.0f, 1.0f, 0.8f); tweener.TweenMethod(Callable.From((float x) => SetShaderValue(x)), 0.0f, 1.0f, 0.8f);
} }
private EnemyDirection GetEnemyDirection( private EnemyDirection GetEnemyDirection(
Basis enemyBasis, Basis enemyBasis,
Vector3 cameraDirection, Vector3 cameraDirection,
float rotateUpperThreshold, float rotateUpperThreshold,
float rotateLowerThreshold) float rotateLowerThreshold)
{ {
var enemyForwardDirection = enemyBasis.Z; var enemyForwardDirection = enemyBasis.Z;
var enemyLeftDirection = enemyBasis.X; var enemyLeftDirection = enemyBasis.X;
var leftDotProduct = enemyLeftDirection.Dot(cameraDirection); var leftDotProduct = enemyLeftDirection.Dot(cameraDirection);
var forwardDotProduct = enemyForwardDirection.Dot(cameraDirection); var forwardDotProduct = enemyForwardDirection.Dot(cameraDirection);
// Check if forward facing. If the dot product is -1, the enemy is facing the camera. // Check if forward facing. If the dot product is -1, the enemy is facing the camera.
if (forwardDotProduct < _lowerThreshold) if (forwardDotProduct < _lowerThreshold)
{ {
SetForward(); SetForward();
return EnemyDirection.Forward; return EnemyDirection.Forward;
} }
// Check if backward facing. If the dot product is 1, the enemy is facing the same direction as the camera. // Check if backward facing. If the dot product is 1, the enemy is facing the same direction as the camera.
else if (forwardDotProduct > rotateUpperThreshold) else if (forwardDotProduct > rotateUpperThreshold)
{ {
SetBack(); SetBack();
return EnemyDirection.Backward; return EnemyDirection.Backward;
} }
else else
{ {
// If the dot product of the perpendicular direction is positive (up to 1), the enemy is facing to the left (since it's mirrored). // If the dot product of the perpendicular direction is positive (up to 1), the enemy is facing to the left (since it's mirrored).
if (leftDotProduct < _lowerThreshold) if (leftDotProduct < _lowerThreshold)
{ {
SetRight(); SetRight();
return EnemyDirection.Left; return EnemyDirection.Left;
} }
// Check if side facing. If the dot product is close to zero in the positive or negative direction, its close to the threshold for turning. // Check if side facing. If the dot product is close to zero in the positive or negative direction, its close to the threshold for turning.
if (leftDotProduct > rotateUpperThreshold) if (leftDotProduct > rotateUpperThreshold)
{ {
SetLeft(); SetLeft();
return EnemyDirection.Right; return EnemyDirection.Right;
} }
} }
return _enemyDirection; return _enemyDirection;
} }
private void LoadShader(string shaderPath) private void LoadShader(string shaderPath)
{ {
var shader = GD.Load<Shader>(shaderPath); var shader = GD.Load<Shader>(shaderPath);
var sprites = FindChildren("*", "AnimatedSprite2D", true).Cast<AnimatedSprite2D>(); var sprites = FindChildren("*", "AnimatedSprite2D", true).Cast<AnimatedSprite2D>();
foreach (var sprite in sprites) foreach (var sprite in sprites)
{ {
sprite.Material = new ShaderMaterial(); sprite.Material = new ShaderMaterial();
var shaderMaterial = (ShaderMaterial)sprite.Material; var shaderMaterial = (ShaderMaterial)sprite.Material;
shaderMaterial.Shader = shader; shaderMaterial.Shader = shader;
} }
} }
private void SetShaderValue(float shaderValue) private void SetShaderValue(float shaderValue)
{ {
var sprites = FindChildren("*", "AnimatedSprite2D", true).Cast<AnimatedSprite2D>(); var sprites = FindChildren("*", "AnimatedSprite2D", true).Cast<AnimatedSprite2D>();
foreach (var sprite in sprites) foreach (var sprite in sprites)
{ {
var shaderMaterial = (ShaderMaterial)sprite.Material; var shaderMaterial = (ShaderMaterial)sprite.Material;
shaderMaterial.SetShaderParameter("progress", shaderValue); shaderMaterial.SetShaderParameter("progress", shaderValue);
} }
} }
private void SetForward() private void SetForward()
{ {
_enemyDirection = EnemyDirection.Forward; _enemyDirection = EnemyDirection.Forward;
} }
private void SetLeft() private void SetLeft()
{ {
_enemyDirection = EnemyDirection.Left; _enemyDirection = EnemyDirection.Left;
} }
private void SetRight() private void SetRight()
{ {
_enemyDirection = EnemyDirection.Right; _enemyDirection = EnemyDirection.Right;
} }
private void SetBack() private void SetBack()
{ {
_enemyDirection = EnemyDirection.Backward; _enemyDirection = EnemyDirection.Backward;
} }
} }

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=79 format=3 uid="uid://bimjnsu52y3xi"] [gd_scene load_steps=80 format=3 uid="uid://bimjnsu52y3xi"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_oh25a"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_oh25a"]
[ext_resource type="Texture2D" uid="uid://dd0ia6isdqg61" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 1.png" id="1_pbx41"] [ext_resource type="Texture2D" uid="uid://dd0ia6isdqg61" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 1.png" id="1_pbx41"]
@@ -59,6 +59,7 @@
[ext_resource type="Texture2D" uid="uid://b1cmx8l4ia3fv" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 14.png" id="54_jdvn0"] [ext_resource type="Texture2D" uid="uid://b1cmx8l4ia3fv" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 14.png" id="54_jdvn0"]
[ext_resource type="Texture2D" uid="uid://c7t4626rox02s" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 15.png" id="55_2eqor"] [ext_resource type="Texture2D" uid="uid://c7t4626rox02s" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 15.png" id="55_2eqor"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="60_x7uye"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="60_x7uye"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="61_djeua"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="62_8wbs7"] [ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="62_8wbs7"]
[sub_resource type="Resource" id="Resource_ivy74"] [sub_resource type="Resource" id="Resource_ivy74"]
@@ -715,3 +716,10 @@ anim_player = NodePath("../AnimationPlayer")
unique_name_in_owner = true unique_name_in_owner = true
autoplay = true autoplay = true
bus = &"SFX" bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.115, 0, 0, 0, -5.02681e-09, 0.115, 0, -0.115, -5.02681e-09, -0.00018537, -1.10125, 0.0453106)
transparency = 0.1
cast_shadow = 0
texture_filter = 0
texture = ExtResource("61_djeua")

View File

@@ -18,23 +18,23 @@ public partial class Michael : Enemy2D, IHavePatrolBehavior, IHaveEngagePlayerBe
public void OnReady() public void OnReady()
{ {
FollowBehavior.Init(NavigationAgent); FollowBehavior.Init(NavigationAgent);
PatrolBehavior.Init(NavigationAgent); PatrolBehavior.Init(NavigationAgent);
PatrolBehavior.HomePosition = GlobalPosition; PatrolBehavior.HomePosition = GlobalPosition;
PatrolBehavior.OnVelocityComputed += OnVelocityComputed; PatrolBehavior.OnVelocityComputed += OnVelocityComputed;
FollowBehavior.OnVelocityComputed += OnVelocityComputed; FollowBehavior.OnVelocityComputed += OnVelocityComputed;
EngagePlayerBehavior.TakeAction += EngagePlayerBehavior_TakeAction; EngagePlayerBehavior.TakeAction += EngagePlayerBehavior_TakeAction;
EngagePlayerBehavior.AcquireTarget += EngagePlayerBehavior_AcquireTarget; EngagePlayerBehavior.AcquireTarget += EngagePlayerBehavior_AcquireTarget;
PlayerDetector.BodyEntered += PlayerDetector_BodyEntered; PlayerDetector.BodyEntered += PlayerDetector_BodyEntered;
PlayerDetector.BodyExited += PlayerDetector_BodyExited; PlayerDetector.BodyExited += PlayerDetector_BodyExited;
SetPhysicsProcess(true); SetPhysicsProcess(true);
} }
public void OnResolved() public void OnResolved()
{ {
_enemyLogic.Input(new EnemyLogic.Input.Patrol()); _enemyLogic.Input(new EnemyLogic.Input.Patrol());
} }
public override void Move() => EnemyModelView.PlayIdleAnimation(); public override void Move() => EnemyModelView.PlayIdleAnimation();
} }

View File

@@ -56,6 +56,7 @@ shape = SubResource("CapsuleShape3D_0h5s2")
[node name="EnemyModelView" parent="." instance=ExtResource("3_wrps7")] [node name="EnemyModelView" parent="." instance=ExtResource("3_wrps7")]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0799522, 0, 0)
[node name="PlayerDetector" type="Area3D" parent="."] [node name="PlayerDetector" type="Area3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=141 format=3 uid="uid://bjg8wyvp8q6oc"] [gd_scene load_steps=142 format=3 uid="uid://bjg8wyvp8q6oc"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_o4cc2"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_o4cc2"]
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_3eot4"] [ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_3eot4"]
@@ -75,6 +75,7 @@
[ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="74_fxhv6"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="74_fxhv6"]
[ext_resource type="Texture2D" uid="uid://duygq1qfer5oa" path="res://src/vfx/Enemy/michael_attack.png" id="74_mip6u"] [ext_resource type="Texture2D" uid="uid://duygq1qfer5oa" path="res://src/vfx/Enemy/michael_attack.png" id="74_mip6u"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="74_pxi1p"] [ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="74_pxi1p"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="76_fxhv6"]
[sub_resource type="Resource" id="Resource_gby04"] [sub_resource type="Resource" id="Resource_gby04"]
script = ExtResource("2_3eot4") script = ExtResource("2_3eot4")
@@ -1246,3 +1247,11 @@ sprite_frames = SubResource("SpriteFrames_suy1t")
unique_name_in_owner = true unique_name_in_owner = true
autoplay = true autoplay = true
bus = &"SFX" bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.38, 0, 0, 0, -1.66103e-08, 0.38, 0, -0.38, -1.66103e-08, 0.00393164, -1.31885, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("76_fxhv6")

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=420 format=3 uid="uid://bup8c4x1na3aw"] [gd_scene load_steps=421 format=3 uid="uid://bup8c4x1na3aw"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_718m1"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_718m1"]
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_krqul"] [ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_krqul"]
@@ -193,6 +193,7 @@
[ext_resource type="Texture2D" uid="uid://cvivq23738fvf" path="res://src/enemy/enemy_types/03. filth_eater/animations/Filth Side Attacks Frames/ATTACK 2 SIDE/frame_072_delay-0.01s.png" id="189_uqsli"] [ext_resource type="Texture2D" uid="uid://cvivq23738fvf" path="res://src/enemy/enemy_types/03. filth_eater/animations/Filth Side Attacks Frames/ATTACK 2 SIDE/frame_072_delay-0.01s.png" id="189_uqsli"]
[ext_resource type="Texture2D" uid="uid://bxijhjyqvfrip" path="res://src/enemy/enemy_types/03. filth_eater/animations/Filth Side Attacks Frames/ATTACK 2 SIDE/frame_073_delay-0.01s.png" id="190_wg32o"] [ext_resource type="Texture2D" uid="uid://bxijhjyqvfrip" path="res://src/enemy/enemy_types/03. filth_eater/animations/Filth Side Attacks Frames/ATTACK 2 SIDE/frame_073_delay-0.01s.png" id="190_wg32o"]
[ext_resource type="AudioStream" uid="uid://dl818xjlcm7vu" path="res://src/audio/sfx/ENEMY_FILTH_ATTACK.ogg" id="193_4h5gj"] [ext_resource type="AudioStream" uid="uid://dl818xjlcm7vu" path="res://src/audio/sfx/ENEMY_FILTH_ATTACK.ogg" id="193_4h5gj"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="193_e5pq0"]
[ext_resource type="PackedScene" uid="uid://diaxvpmwgl65u" path="res://src/enemy/TwoAttacksEnemyAnimationTree.tscn" id="193_krqul"] [ext_resource type="PackedScene" uid="uid://diaxvpmwgl65u" path="res://src/enemy/TwoAttacksEnemyAnimationTree.tscn" id="193_krqul"]
[ext_resource type="Texture2D" uid="uid://d0q5jru1am4v0" path="res://src/vfx/Enemy/FILTH_BLAST.png" id="194_pyy2h"] [ext_resource type="Texture2D" uid="uid://d0q5jru1am4v0" path="res://src/vfx/Enemy/FILTH_BLAST.png" id="194_pyy2h"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="194_u5xjp"] [ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="194_u5xjp"]
@@ -3338,6 +3339,14 @@ rotation = 0.0174533
sprite_frames = SubResource("SpriteFrames_673a4") sprite_frames = SubResource("SpriteFrames_673a4")
animation = &"idle_back_walk" animation = &"idle_back_walk"
[node name="Shadow" type="Sprite3D" parent="Sprite3D"]
transform = Transform3D(0.93, 0, 0, 0, -4.06516e-08, 0.93, 0, -0.93, -4.06516e-08, 0.00393164, -0.670112, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("193_e5pq0")
[node name="Hitbox" type="Area3D" parent="."] [node name="Hitbox" type="Area3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0) transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0)

View File

@@ -23,30 +23,30 @@ public partial class Sara : Enemy2D, IHavePatrolBehavior, IHaveEngagePlayerBehav
public void OnReady() public void OnReady()
{ {
FollowBehavior.Init(NavigationAgent); FollowBehavior.Init(NavigationAgent);
PatrolBehavior.Init(NavigationAgent); PatrolBehavior.Init(NavigationAgent);
PatrolBehavior.HomePosition = GlobalPosition; PatrolBehavior.HomePosition = GlobalPosition;
PatrolBehavior.OnVelocityComputed += OnVelocityComputed; PatrolBehavior.OnVelocityComputed += OnVelocityComputed;
FollowBehavior.OnVelocityComputed += OnVelocityComputed; FollowBehavior.OnVelocityComputed += OnVelocityComputed;
EngagePlayerBehavior.TakeAction += EngagePlayerBehavior_TakeAction; EngagePlayerBehavior.TakeAction += EngagePlayerBehavior_TakeAction;
EngagePlayerBehavior.AcquireTarget += EngagePlayerBehavior_AcquireTarget; EngagePlayerBehavior.AcquireTarget += EngagePlayerBehavior_AcquireTarget;
PlayerDetector.BodyEntered += PlayerDetector_BodyEntered; PlayerDetector.BodyEntered += PlayerDetector_BodyEntered;
PlayerDetector.BodyExited += PlayerDetector_BodyExited; PlayerDetector.BodyExited += PlayerDetector_BodyExited;
SetPhysicsProcess(true); SetPhysicsProcess(true);
} }
public void OnResolved() public void OnResolved()
{ {
_enemyLogic.Input(new EnemyLogic.Input.Patrol()); _enemyLogic.Input(new EnemyLogic.Input.Patrol());
} }
public override void Move() => EnemyModelView.PlayIdleAnimation(); public override void Move() => EnemyModelView.PlayIdleAnimation();
public override void PerformAction() public override void PerformAction()
{ {
var rng = new RandomNumberGenerator(); var rng = new RandomNumberGenerator();
var options = new List<Action>() { EnemyModelView.PlayPrimaryAttackAnimation, EnemyModelView.PlaySecondaryAttackAnimation }; var options = new List<Action>() { EnemyModelView.PlayPrimaryAttackAnimation, EnemyModelView.PlaySecondaryAttackAnimation };
var selection = rng.RandWeighted([PrimaryAttackChance, SecondaryAttackChance]); var selection = rng.RandWeighted([PrimaryAttackChance, SecondaryAttackChance]);
options[(int)selection].Invoke(); options[(int)selection].Invoke();
} }
} }

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=14 format=3 uid="uid://bksq62muhk3h5"] [gd_scene load_steps=15 format=3 uid="uid://bksq62muhk3h5"]
[ext_resource type="Script" uid="uid://jjulhqd5g3bd" path="res://src/enemy/enemy_types/04. sara/Sara.cs" id="1_3ejdn"] [ext_resource type="Script" uid="uid://jjulhqd5g3bd" path="res://src/enemy/enemy_types/04. sara/Sara.cs" id="1_3ejdn"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_8ymq6"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_8ymq6"]
@@ -8,6 +8,7 @@
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_lxgpb"] [ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_lxgpb"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_ddchx"] [ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_ddchx"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_746fv"] [ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_746fv"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="10_746fv"]
[ext_resource type="AudioStream" uid="uid://bemrovoemoq5u" path="res://src/audio/sfx/ENEMY_APSARA_AGGRO.ogg" id="10_ddchx"] [ext_resource type="AudioStream" uid="uid://bemrovoemoq5u" path="res://src/audio/sfx/ENEMY_APSARA_AGGRO.ogg" id="10_ddchx"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
@@ -119,3 +120,11 @@ bus = &"SFX"
unique_name_in_owner = true unique_name_in_owner = true
stream = ExtResource("10_ddchx") stream = ExtResource("10_ddchx")
bus = &"SFX" bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.925, 0, 0, 0, -4.0433e-08, 0.925, 0, -0.925, -4.0433e-08, 0.00393164, -1.00089, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("10_746fv")

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=172 format=3 uid="uid://c5xijwxkg4pf6"] [gd_scene load_steps=173 format=3 uid="uid://c5xijwxkg4pf6"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_ueqp5"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_ueqp5"]
[ext_resource type="Texture2D" uid="uid://bgkx485uy065" path="res://src/enemy/enemy_types/05. ballos/animations/WALK BACK/1.png" id="3_b3ny6"] [ext_resource type="Texture2D" uid="uid://bgkx485uy065" path="res://src/enemy/enemy_types/05. ballos/animations/WALK BACK/1.png" id="3_b3ny6"]
@@ -99,6 +99,7 @@
[ext_resource type="AnimationNodeStateMachine" uid="uid://clybvwx3itfeo" path="res://src/enemy/animation_state_machines/SecondaryAttackStateMachine.tres" id="97_i3hgg"] [ext_resource type="AnimationNodeStateMachine" uid="uid://clybvwx3itfeo" path="res://src/enemy/animation_state_machines/SecondaryAttackStateMachine.tres" id="97_i3hgg"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="97_ktg2j"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="97_ktg2j"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://cy2ngl55c0rws" path="res://src/enemy/animation_state_machines/WalkingStateMachine.tres" id="98_ktg2j"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cy2ngl55c0rws" path="res://src/enemy/animation_state_machines/WalkingStateMachine.tres" id="98_ktg2j"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="100_ktg2j"]
[sub_resource type="ViewportTexture" id="ViewportTexture_h1kaf"] [sub_resource type="ViewportTexture" id="ViewportTexture_h1kaf"]
viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport") viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport")
@@ -1533,3 +1534,11 @@ unique_name_in_owner = true
stream = ExtResource("94_i3hgg") stream = ExtResource("94_i3hgg")
autoplay = true autoplay = true
bus = &"SFX" bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(1.265, 0, 0, 0, -5.52949e-08, 1.265, 0, -1.265, -5.52949e-08, 0.00393164, -1.31885, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("100_ktg2j")

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=1238 format=3 uid="uid://dcm53j3rncxdm"] [gd_scene load_steps=1239 format=3 uid="uid://dcm53j3rncxdm"]
[ext_resource type="Script" uid="uid://ckxqmb4tu4rml" path="res://src/enemy/enemy_types/06. chariot/ChariotModelView.cs" id="1_behrq"] [ext_resource type="Script" uid="uid://ckxqmb4tu4rml" path="res://src/enemy/enemy_types/06. chariot/ChariotModelView.cs" id="1_behrq"]
[ext_resource type="Texture2D" uid="uid://2gwychj1wbtx" path="res://src/enemy/enemy_types/06. chariot/animations/APPEAR/F/0051.png" id="2_1844k"] [ext_resource type="Texture2D" uid="uid://2gwychj1wbtx" path="res://src/enemy/enemy_types/06. chariot/animations/APPEAR/F/0051.png" id="2_1844k"]
@@ -979,6 +979,7 @@
[ext_resource type="AnimationNodeStateMachine" uid="uid://cy2ngl55c0rws" path="res://src/enemy/animation_state_machines/WalkingStateMachine.tres" id="976_vxyya"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cy2ngl55c0rws" path="res://src/enemy/animation_state_machines/WalkingStateMachine.tres" id="976_vxyya"]
[ext_resource type="Script" uid="uid://cqm6u7qa8japr" path="res://src/system/Projectile.cs" id="978_jrkfh"] [ext_resource type="Script" uid="uid://cqm6u7qa8japr" path="res://src/system/Projectile.cs" id="978_jrkfh"]
[ext_resource type="Texture2D" uid="uid://f32ew15v8v30" path="res://src/vfx/Enemy/chariot_projectile.png" id="979_p70s4"] [ext_resource type="Texture2D" uid="uid://f32ew15v8v30" path="res://src/vfx/Enemy/chariot_projectile.png" id="979_p70s4"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="980_jrkfh"]
[sub_resource type="ViewportTexture" id="ViewportTexture_vr4bf"] [sub_resource type="ViewportTexture" id="ViewportTexture_vr4bf"]
viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport") viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport")
@@ -8098,3 +8099,11 @@ libraries = {
unique_name_in_owner = true unique_name_in_owner = true
autoplay = true autoplay = true
bus = &"SFX" bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(1.08, 0, 0, 0, -4.72083e-08, 1.08, 0, -1.08, -4.72083e-08, 0.00393164, -1.92335, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("980_jrkfh")

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=504 format=3 uid="uid://byd7cwxq1be6f"] [gd_scene load_steps=505 format=3 uid="uid://byd7cwxq1be6f"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_6dej3"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_6dej3"]
[ext_resource type="Texture2D" uid="uid://dnd6d5cx7x7i8" path="res://src/enemy/enemy_types/07. chinthe/animations/CHINTHE - RERENDER/BACK/0400.png" id="2_3sdh3"] [ext_resource type="Texture2D" uid="uid://dnd6d5cx7x7i8" path="res://src/enemy/enemy_types/07. chinthe/animations/CHINTHE - RERENDER/BACK/0400.png" id="2_3sdh3"]
@@ -396,6 +396,7 @@
[ext_resource type="Texture2D" uid="uid://csdrkeer8xklt" path="res://src/enemy/enemy_types/07. chinthe/animations/CHINTHE - RERENDER/FRONT/0354.png" id="390_ksvn0"] [ext_resource type="Texture2D" uid="uid://csdrkeer8xklt" path="res://src/enemy/enemy_types/07. chinthe/animations/CHINTHE - RERENDER/FRONT/0354.png" id="390_ksvn0"]
[ext_resource type="AudioStream" uid="uid://dr7w0i4v8qqip" path="res://src/audio/sfx/enemy_chinthe_land.ogg" id="391_5lbxl"] [ext_resource type="AudioStream" uid="uid://dr7w0i4v8qqip" path="res://src/audio/sfx/enemy_chinthe_land.ogg" id="391_5lbxl"]
[ext_resource type="AudioStream" uid="uid://bq4te4d8m0uiw" path="res://src/audio/sfx/enemy_chinthe_mainattack.ogg" id="392_li182"] [ext_resource type="AudioStream" uid="uid://bq4te4d8m0uiw" path="res://src/audio/sfx/enemy_chinthe_mainattack.ogg" id="392_li182"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="392_sgkk0"]
[ext_resource type="AudioStream" uid="uid://b0w77kgmtd3g5" path="res://src/audio/sfx/enemy_chinthe_teleport.ogg" id="393_sgkk0"] [ext_resource type="AudioStream" uid="uid://b0w77kgmtd3g5" path="res://src/audio/sfx/enemy_chinthe_teleport.ogg" id="393_sgkk0"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="394_ldtka"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="394_ldtka"]
[ext_resource type="Texture2D" uid="uid://c7pf2dib2ilhs" path="res://src/vfx/Enemy/CHINTHE_BLAST.png" id="395_ymova"] [ext_resource type="Texture2D" uid="uid://c7pf2dib2ilhs" path="res://src/vfx/Enemy/CHINTHE_BLAST.png" id="395_ymova"]
@@ -3522,6 +3523,14 @@ sprite_frames = SubResource("SpriteFrames_22ecf")
animation = &"idle_front_walk" animation = &"idle_front_walk"
offset = Vector2(500, 500) offset = Vector2(500, 500)
[node name="Shadow" type="Sprite3D" parent="Sprite3D"]
transform = Transform3D(0.5, 0, 0, 0, -2.18557e-08, 0.5, 0, -0.5, -2.18557e-08, 0.00393164, -0.943969, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("392_sgkk0")
[node name="Hitbox" type="Area3D" parent="."] [node name="Hitbox" type="Area3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0) transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0)

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=299 format=3 uid="uid://c2i8ylr3y0bri"] [gd_scene load_steps=300 format=3 uid="uid://c2i8ylr3y0bri"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_h27bt"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_h27bt"]
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_yyynn"] [ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_yyynn"]
@@ -266,6 +266,7 @@
[ext_resource type="AnimationNodeStateMachine" uid="uid://cy2ngl55c0rws" path="res://src/enemy/animation_state_machines/WalkingStateMachine.tres" id="263_312rt"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cy2ngl55c0rws" path="res://src/enemy/animation_state_machines/WalkingStateMachine.tres" id="263_312rt"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="263_sroq1"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="263_sroq1"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://clybvwx3itfeo" path="res://src/enemy/animation_state_machines/SecondaryAttackStateMachine.tres" id="264_dcx20"] [ext_resource type="AnimationNodeStateMachine" uid="uid://clybvwx3itfeo" path="res://src/enemy/animation_state_machines/SecondaryAttackStateMachine.tres" id="264_dcx20"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="267_evddb"]
[sub_resource type="Resource" id="Resource_f45wt"] [sub_resource type="Resource" id="Resource_f45wt"]
script = ExtResource("2_yyynn") script = ExtResource("2_yyynn")
@@ -2059,3 +2060,11 @@ bus = &"SFX"
unique_name_in_owner = true unique_name_in_owner = true
autoplay = true autoplay = true
bus = &"SFX" bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.835, 0, 0, 0, -3.6499e-08, 0.835, 0, -0.835, -3.6499e-08, 0.00393164, -1.31885, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("267_evddb")

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=299 format=3 uid="uid://72lbcmp4bcx4"] [gd_scene load_steps=300 format=3 uid="uid://72lbcmp4bcx4"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_a8qtn"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_a8qtn"]
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_xa3ug"] [ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_xa3ug"]
@@ -261,6 +261,7 @@
[ext_resource type="Texture2D" uid="uid://dg7l1crtk7m3s" path="res://src/enemy/enemy_types/08b. Ambassador (red)/animations/SIDE/0197.png" id="259_ymdu4"] [ext_resource type="Texture2D" uid="uid://dg7l1crtk7m3s" path="res://src/enemy/enemy_types/08b. Ambassador (red)/animations/SIDE/0197.png" id="259_ymdu4"]
[ext_resource type="Texture2D" uid="uid://by2vqyh68egwr" path="res://src/enemy/enemy_types/08b. Ambassador (red)/animations/SIDE/0199.png" id="260_jtq5d"] [ext_resource type="Texture2D" uid="uid://by2vqyh68egwr" path="res://src/enemy/enemy_types/08b. Ambassador (red)/animations/SIDE/0199.png" id="260_jtq5d"]
[ext_resource type="AudioStream" uid="uid://bgumf0x52xmby" path="res://src/audio/sfx/enemy_ambassador_kick.ogg" id="261_qerwx"] [ext_resource type="AudioStream" uid="uid://bgumf0x52xmby" path="res://src/audio/sfx/enemy_ambassador_kick.ogg" id="261_qerwx"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="261_xxvov"]
[ext_resource type="PackedScene" uid="uid://diaxvpmwgl65u" path="res://src/enemy/TwoAttacksEnemyAnimationTree.tscn" id="262_a3dro"] [ext_resource type="PackedScene" uid="uid://diaxvpmwgl65u" path="res://src/enemy/TwoAttacksEnemyAnimationTree.tscn" id="262_a3dro"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="263_qerwx"] [ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="263_qerwx"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="264_xxvov"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="264_xxvov"]
@@ -1976,6 +1977,14 @@ scale = Vector2(0.25, 0.25)
sprite_frames = SubResource("SpriteFrames_6drt6") sprite_frames = SubResource("SpriteFrames_6drt6")
animation = &"idle_front" animation = &"idle_front"
[node name="Shadow" type="Sprite3D" parent="Sprite3D"]
transform = Transform3D(0.29, 0, 0, 0, -1.26763e-08, 0.29, 0, -0.29, -1.26763e-08, 0.00393164, -0.492758, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("261_xxvov")
[node name="Hitbox" type="Area3D" parent="."] [node name="Hitbox" type="Area3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0) transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0)

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=300 format=3 uid="uid://lc5koiqn1sca"] [gd_scene load_steps=301 format=3 uid="uid://lc5koiqn1sca"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_s0qsg"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_s0qsg"]
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_84ebe"] [ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_84ebe"]
@@ -267,6 +267,7 @@
[ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="264_5tr5n"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="264_5tr5n"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://clybvwx3itfeo" path="res://src/enemy/animation_state_machines/SecondaryAttackStateMachine.tres" id="265_yj1cx"] [ext_resource type="AnimationNodeStateMachine" uid="uid://clybvwx3itfeo" path="res://src/enemy/animation_state_machines/SecondaryAttackStateMachine.tres" id="265_yj1cx"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://cy2ngl55c0rws" path="res://src/enemy/animation_state_machines/WalkingStateMachine.tres" id="266_jq47d"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cy2ngl55c0rws" path="res://src/enemy/animation_state_machines/WalkingStateMachine.tres" id="266_jq47d"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="268_yj1cx"]
[sub_resource type="Resource" id="Resource_f45wt"] [sub_resource type="Resource" id="Resource_f45wt"]
script = ExtResource("2_84ebe") script = ExtResource("2_84ebe")
@@ -2063,3 +2064,11 @@ bus = &"SFX"
unique_name_in_owner = true unique_name_in_owner = true
autoplay = true autoplay = true
bus = &"SFX" bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.665, 0, 0, 0, -2.90681e-08, 0.665, 0, -0.665, -2.90681e-08, 0.00393164, -1.31885, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("268_yj1cx")

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=387 format=3 uid="uid://dxwwfbt2mtmer"] [gd_scene load_steps=388 format=3 uid="uid://dxwwfbt2mtmer"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_yke7o"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_yke7o"]
[ext_resource type="Texture2D" uid="uid://cob5mo4lrbkrp" path="res://src/enemy/enemy_types/11. Palan/animations/B/frame_000_delay-0.01s.png" id="2_lf0wi"] [ext_resource type="Texture2D" uid="uid://cob5mo4lrbkrp" path="res://src/enemy/enemy_types/11. Palan/animations/B/frame_000_delay-0.01s.png" id="2_lf0wi"]
@@ -211,6 +211,7 @@
[ext_resource type="Script" uid="uid://cqm6u7qa8japr" path="res://src/system/Projectile.cs" id="208_0yqqu"] [ext_resource type="Script" uid="uid://cqm6u7qa8japr" path="res://src/system/Projectile.cs" id="208_0yqqu"]
[ext_resource type="Texture2D" uid="uid://bn83xiolaxr6j" path="res://src/vfx/Enemy/PALANQUIN ATTACK 1.png" id="208_1bumx"] [ext_resource type="Texture2D" uid="uid://bn83xiolaxr6j" path="res://src/vfx/Enemy/PALANQUIN ATTACK 1.png" id="208_1bumx"]
[ext_resource type="Texture2D" uid="uid://dy8vmgvihf313" path="res://src/vfx/Enemy/sunlance.png" id="211_r6aec"] [ext_resource type="Texture2D" uid="uid://dy8vmgvihf313" path="res://src/vfx/Enemy/sunlance.png" id="211_r6aec"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="212_lid5r"]
[sub_resource type="ViewportTexture" id="ViewportTexture_h1kaf"] [sub_resource type="ViewportTexture" id="ViewportTexture_h1kaf"]
viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport") viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport")
@@ -3025,3 +3026,11 @@ libraries = {
unique_name_in_owner = true unique_name_in_owner = true
autoplay = true autoplay = true
bus = &"SFX" bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(1.445, 0, 0, 0, -6.3163e-08, 1.445, 0, -1.445, -6.3163e-08, 0.00393164, -1.53476, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("212_lid5r")

View File

@@ -17,25 +17,25 @@ public partial class ShieldOfHeaven : Enemy2D, IHavePatrolBehavior, IHaveEngageP
public void OnReady() public void OnReady()
{ {
FollowBehavior.Init(NavigationAgent); FollowBehavior.Init(NavigationAgent);
PatrolBehavior.Init(NavigationAgent); PatrolBehavior.Init(NavigationAgent);
PatrolBehavior.HomePosition = GlobalPosition; PatrolBehavior.HomePosition = GlobalPosition;
PatrolBehavior.OnVelocityComputed += OnVelocityComputed; PatrolBehavior.OnVelocityComputed += OnVelocityComputed;
FollowBehavior.OnVelocityComputed += OnVelocityComputed; FollowBehavior.OnVelocityComputed += OnVelocityComputed;
EngagePlayerBehavior.TakeAction += EngagePlayerBehavior_TakeAction; EngagePlayerBehavior.TakeAction += EngagePlayerBehavior_TakeAction;
EngagePlayerBehavior.AcquireTarget += EngagePlayerBehavior_AcquireTarget; EngagePlayerBehavior.AcquireTarget += EngagePlayerBehavior_AcquireTarget;
PlayerDetector.BodyEntered += PlayerDetector_BodyEntered; PlayerDetector.BodyEntered += PlayerDetector_BodyEntered;
PlayerDetector.BodyExited += PlayerDetector_BodyExited; PlayerDetector.BodyExited += PlayerDetector_BodyExited;
SetPhysicsProcess(true); SetPhysicsProcess(true);
} }
public override void _ExitTree() public override void _ExitTree()
{ {
PatrolBehavior.OnVelocityComputed -= OnVelocityComputed; PatrolBehavior.OnVelocityComputed -= OnVelocityComputed;
FollowBehavior.OnVelocityComputed -= OnVelocityComputed; FollowBehavior.OnVelocityComputed -= OnVelocityComputed;
EngagePlayerBehavior.TakeAction -= EngagePlayerBehavior_TakeAction; EngagePlayerBehavior.TakeAction -= EngagePlayerBehavior_TakeAction;
EngagePlayerBehavior.AcquireTarget -= EngagePlayerBehavior_AcquireTarget; EngagePlayerBehavior.AcquireTarget -= EngagePlayerBehavior_AcquireTarget;
PlayerDetector.BodyEntered -= PlayerDetector_BodyEntered; PlayerDetector.BodyEntered -= PlayerDetector_BodyEntered;
PlayerDetector.BodyExited -= PlayerDetector_BodyExited; PlayerDetector.BodyExited -= PlayerDetector_BodyExited;
} }
} }

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=13 format=3 uid="uid://5s7c4dsb1wwk"] [gd_scene load_steps=14 format=3 uid="uid://5s7c4dsb1wwk"]
[ext_resource type="Script" uid="uid://cjdivu0v1kfhy" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.cs" id="1_oxa5b"] [ext_resource type="Script" uid="uid://cjdivu0v1kfhy" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.cs" id="1_oxa5b"]
[ext_resource type="PackedScene" uid="uid://drkaq6grim1fb" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldModelView.tscn" id="3_r2swr"] [ext_resource type="PackedScene" uid="uid://drkaq6grim1fb" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldModelView.tscn" id="3_r2swr"]
@@ -8,6 +8,7 @@
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_uwf0x"] [ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_uwf0x"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_8rh66"] [ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_8rh66"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_m1i5i"] [ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_m1i5i"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="9_cacc5"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.226425 radius = 0.226425
@@ -112,3 +113,11 @@ bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"] [node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true unique_name_in_owner = true
bus = &"SFX" bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(1.955, 0, 0, 0, -8.54558e-08, 1.955, 0, -1.955, -8.54558e-08, 0.00393164, -2.8107, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("9_cacc5")

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=68 format=3 uid="uid://dobiqowi8mhfi"] [gd_scene load_steps=69 format=3 uid="uid://dobiqowi8mhfi"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_7w22e"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_7w22e"]
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_ca1o5"] [ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_ca1o5"]
@@ -49,6 +49,7 @@
[ext_resource type="Texture2D" uid="uid://cssrkfehdhgp5" path="res://src/enemy/enemy_types/13. gold sproingy/animations/GOLD_SPROING_SIDE/Layer 13.png" id="30_lcdw8"] [ext_resource type="Texture2D" uid="uid://cssrkfehdhgp5" path="res://src/enemy/enemy_types/13. gold sproingy/animations/GOLD_SPROING_SIDE/Layer 13.png" id="30_lcdw8"]
[ext_resource type="Texture2D" uid="uid://dl12u2wcp0fkb" path="res://src/enemy/enemy_types/13. gold sproingy/animations/GOLD_SPROING_SIDE/Layer 14.png" id="31_ie1nt"] [ext_resource type="Texture2D" uid="uid://dl12u2wcp0fkb" path="res://src/enemy/enemy_types/13. gold sproingy/animations/GOLD_SPROING_SIDE/Layer 14.png" id="31_ie1nt"]
[ext_resource type="Texture2D" uid="uid://bcu6ei8kbcv2w" path="res://src/enemy/enemy_types/13. gold sproingy/animations/GOLD_SPROING_SIDE/Layer 15.png" id="32_u2p8a"] [ext_resource type="Texture2D" uid="uid://bcu6ei8kbcv2w" path="res://src/enemy/enemy_types/13. gold sproingy/animations/GOLD_SPROING_SIDE/Layer 15.png" id="32_u2p8a"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="51_smvnd"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="60_uwoec"] [ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="60_uwoec"]
[sub_resource type="Resource" id="Resource_ivy74"] [sub_resource type="Resource" id="Resource_ivy74"]
@@ -668,3 +669,11 @@ anim_player = NodePath("../AnimationPlayer")
unique_name_in_owner = true unique_name_in_owner = true
autoplay = true autoplay = true
bus = &"SFX" bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.29, 0, 0, 0, -1.26763e-08, 0.29, 0, -0.29, -1.26763e-08, 0.00393164, -1.31885, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("51_smvnd")

View File

@@ -25,14 +25,14 @@ public partial class DemonWallArm : EnemyModelView
public new void OnReady() public new void OnReady()
{ {
Hitbox.AreaEntered += Hitbox_AreaEntered; Hitbox.AreaEntered += Hitbox_AreaEntered;
base.OnReady(); base.OnReady();
} }
private void Hitbox_AreaEntered(Area3D area) private void Hitbox_AreaEntered(Area3D area)
{ {
var target = area.GetOwner(); var target = area.GetOwner();
if (target is IPlayer player) if (target is IPlayer player)
base.OnPlayerHit(new AttackEventArgs(AttackData)); base.OnPlayerHit(new AttackEventArgs(AttackData));
} }
} }

View File

@@ -27,23 +27,23 @@ public partial class Altar : Node3D, IDungeonFloor
public override void _Ready() public override void _Ready()
{ {
Show(); Show();
Exit.AreaEntered += Exit_AreaEntered; Exit.AreaEntered += Exit_AreaEntered;
NoExitArea.AreaEntered += NoExitArea_AreaEntered; NoExitArea.AreaEntered += NoExitArea_AreaEntered;
FloorIsLoaded = true; FloorIsLoaded = true;
} }
private void NoExitArea_AreaEntered(Area3D area) private void NoExitArea_AreaEntered(Area3D area)
{ {
DialogueController.ShowDialogue(Dialogue, "no_exit"); DialogueController.ShowDialogue(Dialogue, "no_exit");
//if (area.GetOwner() is IPlayer player) //if (area.GetOwner() is IPlayer player)
// player.Deactivate(); // player.Deactivate();
} }
private void Exit_AreaEntered(Area3D area) private void Exit_AreaEntered(Area3D area)
{ {
if (area.GetOwner() is IPlayer) if (area.GetOwner() is IPlayer)
ExitReached(); ExitReached();
} }
public void ExitReached() => Game.FloorExitReached(); public void ExitReached() => Game.FloorExitReached();

View File

@@ -35,45 +35,45 @@ public partial class BossRoomA : Node3D, IBossRoom, IDungeonFloor
public void OnReady() public void OnReady()
{ {
ActivateTrap.BodyEntered += ActivateTrap_BodyEntered; ActivateTrap.BodyEntered += ActivateTrap_BodyEntered;
_exit.AreaEntered += Exit_AreaEntered; _exit.AreaEntered += Exit_AreaEntered;
OxFace.HealthComponent.HealthReachedZero += CheckForBossFightEnd; OxFace.HealthComponent.HealthReachedZero += CheckForBossFightEnd;
HorseFace.HealthComponent.HealthReachedZero += CheckForBossFightEnd; HorseFace.HealthComponent.HealthReachedZero += CheckForBossFightEnd;
} }
private void ActivateTrap_BodyEntered(Node3D body) private void ActivateTrap_BodyEntered(Node3D body)
{ {
ActivateTrap.BodyEntered -= ActivateTrap_BodyEntered; ActivateTrap.BodyEntered -= ActivateTrap_BodyEntered;
StartBossFight(); StartBossFight();
} }
public void StartBossFight() public void StartBossFight()
{ {
OxFaceStatue.Hide(); OxFaceStatue.Hide();
HorseHeadStatue.Hide(); HorseHeadStatue.Hide();
OxFace.StartFight(); OxFace.StartFight();
HorseFace.StartFight(); HorseFace.StartFight();
} }
private void CheckForBossFightEnd() private void CheckForBossFightEnd()
{ {
if (OxFace.HealthComponent.CurrentHP.Value <= 0 && HorseFace.HealthComponent.CurrentHP.Value <= 0) if (OxFace.HealthComponent.CurrentHP.Value <= 0 && HorseFace.HealthComponent.CurrentHP.Value <= 0)
OnBossFightEnded(); OnBossFightEnded();
} }
public void OnBossFightEnded() public void OnBossFightEnded()
{ {
GateCollision.CallDeferred(MethodName.QueueFree); GateCollision.CallDeferred(MethodName.QueueFree);
LOCKEDGATE.Hide(); LOCKEDGATE.Hide();
} }
public void ExitReached() public void ExitReached()
=> Game.FloorExitReached(); => Game.FloorExitReached();
private void Exit_AreaEntered(Area3D area) private void Exit_AreaEntered(Area3D area)
{ {
if (area.GetOwner() is IPlayer) if (area.GetOwner() is IPlayer)
ExitReached(); ExitReached();
} }
public void InitializeDungeon() public void InitializeDungeon()

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dlpcuirysjp77"
path="res://.godot/imported/02_ALTAR_FLOOR_ZER0_VER_OW_DARKEST_METAL.png-28db5fdfd504ec79e984b7d43831cf12.ctex"
metadata={
"vram_texture": false
}
generator_parameters={
"md5": "4da9381ca1fc26de61546f73fb816d84"
}
[deps]
source_file="res://src/map/dungeon/models/Special Floors & Rooms/Altar/02_ALTAR_FLOOR_ZER0_VER_OW_DARKEST_METAL.png"
dest_files=["res://.godot/imported/02_ALTAR_FLOOR_ZER0_VER_OW_DARKEST_METAL.png-28db5fdfd504ec79e984b7d43831cf12.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -8,7 +8,7 @@ metadata={
"vram_texture": false "vram_texture": false
} }
generator_parameters={ generator_parameters={
"md5": "7b53babe76d0484b408a519f8fc329b5" "md5": "9635fa0f67978d0bbc3cd49048bec1c6"
} }
[deps] [deps]

View File

@@ -81,8 +81,9 @@ collision_mask = 16
shape = SubResource("CylinderShape3D_nwuwj") shape = SubResource("CylinderShape3D_nwuwj")
[node name="Shadow" type="Sprite3D" parent="."] [node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.825, 0, 0, 0, -3.60619e-08, 0.825, 0, -0.825, -3.60619e-08, -0.00469795, -2.65632, 0) transform = Transform3D(1.385, 0, 0, 0, -6.05403e-08, 1.385, 0, -1.385, -6.05403e-08, -0.00469795, -2.65632, 0)
transparency = 0.1 transparency = 0.1
cast_shadow = 0 cast_shadow = 0
modulate = Color(1, 1, 1, 0.669)
texture_filter = 0 texture_filter = 0
texture = ExtResource("7_lsxy3") texture = ExtResource("7_lsxy3")

View File

@@ -85,8 +85,9 @@ collision_mask = 2068
shape = SubResource("CylinderShape3D_nwuwj") shape = SubResource("CylinderShape3D_nwuwj")
[node name="Shadow" type="Sprite3D" parent="."] [node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.825, 0, 0, 0, -3.60619e-08, 0.825, 0, -0.825, -3.60619e-08, 0.94821, -1.76158, 0) transform = Transform3D(1.075, 0, 0, 0, -4.69897e-08, 1.075, 0, -1.075, -4.69897e-08, 0.94821, -1.76158, 0)
transparency = 0.1 transparency = 0.1
cast_shadow = 0 cast_shadow = 0
modulate = Color(1, 1, 1, 0.625)
texture_filter = 0 texture_filter = 0
texture = ExtResource("7_xlatl") texture = ExtResource("7_xlatl")

View File

@@ -86,5 +86,6 @@ shape = SubResource("CylinderShape3D_nwuwj")
transform = Transform3D(0.825, 0, 0, 0, -3.60619e-08, 0.825, 0, -0.825, -3.60619e-08, -0.00469795, -1.76158, 0) transform = Transform3D(0.825, 0, 0, 0, -3.60619e-08, 0.825, 0, -0.825, -3.60619e-08, -0.00469795, -1.76158, 0)
transparency = 0.1 transparency = 0.1
cast_shadow = 0 cast_shadow = 0
modulate = Color(1, 1, 1, 0.785)
texture_filter = 0 texture_filter = 0
texture = ExtResource("7_fytn6") texture = ExtResource("7_fytn6")

View File

@@ -54,6 +54,7 @@ transform = Transform3D(0.825, 0, 0, 0, -3.60619e-08, 0.825, 0, -0.825, -3.60619
transparency = 0.1 transparency = 0.1
cast_shadow = 0 cast_shadow = 0
offset = Vector2(13, 0) offset = Vector2(13, 0)
modulate = Color(1, 1, 1, 0.575)
texture_filter = 0 texture_filter = 0
texture = ExtResource("7_p8o3h") texture = ExtResource("7_p8o3h")

View File

@@ -86,5 +86,6 @@ shape = SubResource("CylinderShape3D_nwuwj")
transform = Transform3D(0.825, 0, 0, 0, -3.60619e-08, 0.825, 0, -0.825, -3.60619e-08, -0.00018537, -2.2047, 0.0453106) transform = Transform3D(0.825, 0, 0, 0, -3.60619e-08, 0.825, 0, -0.825, -3.60619e-08, -0.00018537, -2.2047, 0.0453106)
transparency = 0.1 transparency = 0.1
cast_shadow = 0 cast_shadow = 0
modulate = Color(1, 1, 1, 0.63)
texture_filter = 0 texture_filter = 0
texture = ExtResource("7_kvk3a") texture = ExtResource("7_kvk3a")

View File

@@ -150,8 +150,9 @@ collision_mask = 2068
shape = SubResource("CylinderShape3D_nwuwj") shape = SubResource("CylinderShape3D_nwuwj")
[node name="Shadow" type="Sprite3D" parent="."] [node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.825, 0, 0, 0, -3.60619e-08, 0.825, 0, -0.825, -3.60619e-08, -0.00337198, -2.13394, 0) transform = Transform3D(1.185, 0, 0, 0, -5.1798e-08, 1.185, 0, -1.185, -5.1798e-08, -0.00337198, -2.30884, 0)
transparency = 0.1 transparency = 0.1
cast_shadow = 0 cast_shadow = 0
modulate = Color(1, 1, 1, 0.663)
texture_filter = 0 texture_filter = 0
texture = ExtResource("11_vbqit") texture = ExtResource("11_vbqit")

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=50 format=3 uid="uid://jds3hr41coal"] [gd_scene load_steps=51 format=3 uid="uid://jds3hr41coal"]
[ext_resource type="Script" uid="uid://dcqssoikr3pl7" path="res://src/npc/Npc.cs" id="1_f3624"] [ext_resource type="Script" uid="uid://dcqssoikr3pl7" path="res://src/npc/Npc.cs" id="1_f3624"]
[ext_resource type="Resource" uid="uid://lao0opxww3ib" path="res://src/dialog/Dialogue.dialogue" id="2_3udpp"] [ext_resource type="Resource" uid="uid://lao0opxww3ib" path="res://src/dialog/Dialogue.dialogue" id="2_3udpp"]
@@ -37,6 +37,7 @@
[ext_resource type="Texture2D" uid="uid://wf1fy2oq6pwu" path="res://src/npc/Ran/animations/Layer 33.png" id="36_6n1aa"] [ext_resource type="Texture2D" uid="uid://wf1fy2oq6pwu" path="res://src/npc/Ran/animations/Layer 33.png" id="36_6n1aa"]
[ext_resource type="Texture2D" uid="uid://dm1jtlih2wgey" path="res://src/npc/Ran/animations/Layer 34.png" id="37_jmakl"] [ext_resource type="Texture2D" uid="uid://dm1jtlih2wgey" path="res://src/npc/Ran/animations/Layer 34.png" id="37_jmakl"]
[ext_resource type="Texture2D" uid="uid://c0e8nly838i80" path="res://src/npc/Ran/animations/Layer 35.png" id="38_10y76"] [ext_resource type="Texture2D" uid="uid://c0e8nly838i80" path="res://src/npc/Ran/animations/Layer 35.png" id="38_10y76"]
[ext_resource type="Texture2D" uid="uid://dafpnwkwcukp4" path="res://src/vfx/shadow_test_1.png" id="39_bww12"]
[ext_resource type="Texture2D" uid="uid://d3jn2tx8ifapd" path="res://src/npc/Ran/animations/Layer 36.png" id="39_vht5v"] [ext_resource type="Texture2D" uid="uid://d3jn2tx8ifapd" path="res://src/npc/Ran/animations/Layer 36.png" id="39_vht5v"]
[sub_resource type="ViewportTexture" id="ViewportTexture_3udpp"] [sub_resource type="ViewportTexture" id="ViewportTexture_3udpp"]
@@ -311,3 +312,11 @@ autoplay = "idle"
[node name="AnimationTree" type="AnimationTree" parent="."] [node name="AnimationTree" type="AnimationTree" parent="."]
tree_root = SubResource("AnimationNodeStateMachine_3udpp") tree_root = SubResource("AnimationNodeStateMachine_3udpp")
anim_player = NodePath("../AnimationPlayer") anim_player = NodePath("../AnimationPlayer")
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(3.455, 0, 0, 0, -1.51023e-07, 3.455, 0, -3.455, -1.51023e-07, 0.00393164, -1.50972, 0.0077811)
transparency = 0.1
cast_shadow = 0
modulate = Color(1, 1, 1, 0.591)
texture_filter = 0
texture = ExtResource("39_bww12")

View File

@@ -106,9 +106,10 @@ sprite_frames = SubResource("SpriteFrames_02w3f")
autoplay = "default" autoplay = "default"
[node name="Shadow" type="Sprite3D" parent="AnimatedSprite3D"] [node name="Shadow" type="Sprite3D" parent="AnimatedSprite3D"]
transform = Transform3D(0.825, 0, 0, 0, -3.60619e-08, 0.825, 0, -0.825, -3.60619e-08, 0.013224, -1.44129, 0.0211143) transform = Transform3D(1.05, 0, 0, 0, -4.5897e-08, 1.05, 0, -1.05, -4.5897e-08, 0.013224, -1.44129, 0.0211143)
transparency = 0.1 transparency = 0.1
cast_shadow = 0 cast_shadow = 0
modulate = Color(1, 1, 1, 0.553)
texture_filter = 0 texture_filter = 0
texture = ExtResource("7_gb32p") texture = ExtResource("7_gb32p")

View File

@@ -84,8 +84,9 @@ collision_mask = 2068
shape = SubResource("CylinderShape3D_nwuwj") shape = SubResource("CylinderShape3D_nwuwj")
[node name="Shadow" type="Sprite3D" parent="."] [node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.825, 0, 0, 0, -3.60619e-08, 0.825, 0, -0.825, -3.60619e-08, 0, -2, 0) transform = Transform3D(0.98, 0, 0, 0, -4.28372e-08, 0.98, 0, -0.98, -4.28372e-08, 0, -2, 0)
transparency = 0.1 transparency = 0.1
cast_shadow = 0 cast_shadow = 0
modulate = Color(1, 1, 1, 0.635)
texture_filter = 0 texture_filter = 0
texture = ExtResource("7_8crcx") texture = ExtResource("7_8crcx")

View File

@@ -107,182 +107,182 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
public void Initialize() public void Initialize()
{ {
var container = new SimpleInjector.Container(); var container = new SimpleInjector.Container();
container.Register<IPlayerLogic, PlayerLogic>(Lifestyle.Singleton); container.Register<IPlayerLogic, PlayerLogic>(Lifestyle.Singleton);
PlayerLogic = container.GetInstance<IPlayerLogic>(); PlayerLogic = container.GetInstance<IPlayerLogic>();
PlayerLogic.Set(this as IPlayer); PlayerLogic.Set(this as IPlayer);
PlayerLogic.Set(Settings); PlayerLogic.Set(Settings);
Inventory = new Inventory(); Inventory = new Inventory();
HealthComponent = new HealthComponent(InitialHP); HealthComponent = new HealthComponent(InitialHP);
VTComponent = new VTComponent(InitialVT); VTComponent = new VTComponent(InitialVT);
AttackComponent = new AttackComponent(InitialAttack); AttackComponent = new AttackComponent(InitialAttack);
DefenseComponent = new DefenseComponent(InitialDefense); DefenseComponent = new DefenseComponent(InitialDefense);
ExperiencePointsComponent = new ExperiencePointsComponent(); ExperiencePointsComponent = new ExperiencePointsComponent();
LuckComponent = new LuckComponent(InitialLuck); LuckComponent = new LuckComponent(InitialLuck);
EquipmentComponent = new EquipmentComponent(); EquipmentComponent = new EquipmentComponent();
_itemReroller = new ItemReroller(ItemDatabase.Instance); _itemReroller = new ItemReroller(ItemDatabase.Instance);
Settings = new PlayerLogic.Settings() { RotationSpeed = RotationSpeed, MoveSpeed = MoveSpeed, Acceleration = Acceleration }; Settings = new PlayerLogic.Settings() { RotationSpeed = RotationSpeed, MoveSpeed = MoveSpeed, Acceleration = Acceleration };
PlayerBinding = PlayerLogic.Bind(); PlayerBinding = PlayerLogic.Bind();
PlayerBinding PlayerBinding
.Handle((in PlayerLogic.Output.ThrowItem output) => .Handle((in PlayerLogic.Output.ThrowItem output) =>
{ {
}) })
.Handle((in PlayerLogic.Output.Move output) => .Handle((in PlayerLogic.Output.Move output) =>
{ {
Move(output.delta); Move(output.delta);
}); });
PlayerLogic.Start(); PlayerLogic.Start();
this.Provide(); this.Provide();
} }
public void ResetPlayerData() public void ResetPlayerData()
{ {
foreach (var item in Inventory.Items) foreach (var item in Inventory.Items)
Inventory.Remove(item); Inventory.Remove(item);
HealthComponent.Reset(); HealthComponent.Reset();
VTComponent.Reset(); VTComponent.Reset();
AttackComponent.Reset(); AttackComponent.Reset();
DefenseComponent.Reset(); DefenseComponent.Reset();
ExperiencePointsComponent.Reset(); ExperiencePointsComponent.Reset();
LuckComponent.Reset(); LuckComponent.Reset();
EquipmentComponent.Reset(); EquipmentComponent.Reset();
HealthTimer.Timeout += OnHealthTimerTimeout; HealthTimer.Timeout += OnHealthTimerTimeout;
} }
#region Initialization #region Initialization
public void OnReady() public void OnReady()
{ {
Hitbox.AreaEntered += Hitbox_AreaEntered; Hitbox.AreaEntered += Hitbox_AreaEntered;
CollisionDetector.AreaEntered += CollisionDetector_AreaEntered; CollisionDetector.AreaEntered += CollisionDetector_AreaEntered;
HealthComponent.HealthReachedZero += Die; HealthComponent.HealthReachedZero += Die;
HealthTimer.WaitTime = _healthTimerWaitTime; HealthTimer.WaitTime = _healthTimerWaitTime;
SetProcessInput(false); SetProcessInput(false);
SetPhysicsProcess(false); SetPhysicsProcess(false);
} }
#endregion #endregion
public void Activate() public void Activate()
{ {
SetProcessInput(true); SetProcessInput(true);
SetPhysicsProcess(true); SetPhysicsProcess(true);
SetHealthTimerStatus(HealthTimerIsActive); SetHealthTimerStatus(HealthTimerIsActive);
} }
public void Deactivate() public void Deactivate()
{ {
Velocity = Vector3.Zero; Velocity = Vector3.Zero;
SetProcessInput(false); SetProcessInput(false);
SetPhysicsProcess(false); SetPhysicsProcess(false);
SetHealthTimerStatus(false); SetHealthTimerStatus(false);
} }
private void SetHealthTimerStatus(bool isActive) private void SetHealthTimerStatus(bool isActive)
{ {
if (isActive) if (isActive)
HealthTimer.Start(); HealthTimer.Start();
else else
HealthTimer.Stop(); HealthTimer.Stop();
} }
public void TeleportPlayer(Transform3D newTransform) public void TeleportPlayer(Transform3D newTransform)
{ {
Transform = newTransform; Transform = newTransform;
} }
public void TakeDamage(AttackData damage) public void TakeDamage(AttackData damage)
{ {
_camera3D.AddShake(1.0f); _camera3D.AddShake(1.0f);
TakeDamageAnimationPlayer.Play("take_damage"); TakeDamageAnimationPlayer.Play("take_damage");
var damageReceived = DamageCalculator.CalculateDamage(damage, DefenseComponent.CurrentDefense.Value + EquipmentComponent.BonusDefense, EquipmentComponent.ElementalResistance); var damageReceived = DamageCalculator.CalculateDamage(damage, DefenseComponent.CurrentDefense.Value + EquipmentComponent.BonusDefense, EquipmentComponent.ElementalResistance);
HealthComponent.Damage(damageReceived); HealthComponent.Damage(damageReceived);
SfxDatabase.Instance.Play(SoundEffect.TakeDamage); SfxDatabase.Instance.Play(SoundEffect.TakeDamage);
} }
public void Knockback(float impulse) public void Knockback(float impulse)
{ {
_knockbackStrength = impulse; _knockbackStrength = impulse;
_knockbackDirection = GlobalBasis.Z.Normalized(); _knockbackDirection = GlobalBasis.Z.Normalized();
} }
public void LevelUp() public void LevelUp()
{ {
var rng = new RandomNumberGenerator(); var rng = new RandomNumberGenerator();
rng.Randomize(); rng.Randomize();
var hpIncrease = rng.RandiRange(3, 6); var hpIncrease = rng.RandiRange(3, 6);
HealthComponent.RaiseMaximumHP(hpIncrease); HealthComponent.RaiseMaximumHP(hpIncrease);
ExperiencePointsComponent.LevelUp(); ExperiencePointsComponent.LevelUp();
} }
public void Die() public void Die()
{ {
PlayerFXAnimations.Play("death"); PlayerFXAnimations.Play("death");
HealthTimer.WaitTime = _healthTimerWaitTime; HealthTimer.WaitTime = _healthTimerWaitTime;
HealthTimer.Timeout -= OnHealthTimerTimeout; HealthTimer.Timeout -= OnHealthTimerTimeout;
SetProcessInput(false); SetProcessInput(false);
SetPhysicsProcess(false); SetPhysicsProcess(false);
PlayerDied?.Invoke(); PlayerDied?.Invoke();
} }
public override void _Input(InputEvent @event) public override void _Input(InputEvent @event)
{ {
if (@event.IsActionPressed(GameInputs.Attack)) if (@event.IsActionPressed(GameInputs.Attack))
Attack(); Attack();
if (@event.IsActionPressed(GameInputs.Sprint)) if (@event.IsActionPressed(GameInputs.Sprint))
Settings.MoveSpeed *= 2; Settings.MoveSpeed *= 2;
if (@event.IsActionReleased(GameInputs.Sprint)) if (@event.IsActionReleased(GameInputs.Sprint))
Settings.MoveSpeed /= 2; Settings.MoveSpeed /= 2;
} }
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)); PlayerLogic.Input(new PlayerLogic.Input.Moved(GlobalPosition, GlobalTransform));
} }
public void Equip(EquipableItem equipable) public void Equip(EquipableItem equipable)
{ {
if (equipable.ItemTag == ItemTag.MysteryItem) if (equipable.ItemTag == ItemTag.MysteryItem)
{ {
var rerolledItem = _itemReroller.RerollItem(equipable, Inventory); var rerolledItem = _itemReroller.RerollItem(equipable, Inventory);
Equip(rerolledItem); Equip(rerolledItem);
return; return;
} }
HealthComponent.RaiseMaximumHP(equipable.BonusHP, false); HealthComponent.RaiseMaximumHP(equipable.BonusHP, false);
VTComponent.RaiseMaximumVT(equipable.BonusVT, false); VTComponent.RaiseMaximumVT(equipable.BonusVT, false);
EquipmentComponent.Equip(equipable); EquipmentComponent.Equip(equipable);
} }
public void Unequip(EquipableItem equipable) public void Unequip(EquipableItem equipable)
{ {
HealthComponent.SetMaximumHealth(HealthComponent.MaximumHP.Value - equipable.BonusHP); HealthComponent.SetMaximumHealth(HealthComponent.MaximumHP.Value - equipable.BonusHP);
VTComponent.SetMaximumVT(VTComponent.MaximumVT.Value - equipable.BonusVT); VTComponent.SetMaximumVT(VTComponent.MaximumVT.Value - equipable.BonusVT);
EquipmentComponent.Unequip(equipable); EquipmentComponent.Unequip(equipable);
} }
private static Vector3 GlobalInputVector private static Vector3 GlobalInputVector
{ {
get get
{ {
var rawInput = Input.GetVector(GameInputs.MoveLeft, GameInputs.MoveRight, GameInputs.MoveUp, GameInputs.MoveDown); var rawInput = Input.GetVector(GameInputs.MoveLeft, GameInputs.MoveRight, GameInputs.MoveUp, GameInputs.MoveDown);
var input = new Vector3 var input = new Vector3
{ {
X = rawInput.X, X = rawInput.X,
Z = rawInput.Y Z = rawInput.Y
}; };
return input with { Y = 0f }; return input with { Y = 0f };
} }
} }
private static float LeftStrafeInputVector => Input.GetActionStrength(GameInputs.StrafeLeft); private static float LeftStrafeInputVector => Input.GetActionStrength(GameInputs.StrafeLeft);
@@ -291,143 +291,143 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
private void Attack() private void Attack()
{ {
if (PlayerIsHittingGeometry()) if (PlayerIsHittingGeometry())
AnimationPlayer.Play("hit_wall"); AnimationPlayer.Play("hit_wall");
else if (!AnimationPlayer.IsPlaying()) else if (!AnimationPlayer.IsPlaying())
PlayAttackAnimation(); PlayAttackAnimation();
} }
private void ThrowItem() private void ThrowItem()
{ {
var itemScene = GD.Load<PackedScene>("res://src/items/throwable/ThrowableItem.tscn"); var itemScene = GD.Load<PackedScene>("res://src/items/throwable/ThrowableItem.tscn");
var throwItem = itemScene.Instantiate<ThrowableItem>(); var throwItem = itemScene.Instantiate<ThrowableItem>();
GetTree().Root.AddChildEx(throwItem); GetTree().Root.AddChildEx(throwItem);
throwItem.GlobalPosition = CurrentPosition + new Vector3(0, 3.5f, 0); throwItem.GlobalPosition = CurrentPosition + new Vector3(0, 3.5f, 0);
throwItem.GlobalRotation = GlobalRotation; throwItem.GlobalRotation = GlobalRotation;
} }
private void PlayAttackAnimation() private void PlayAttackAnimation()
{ {
SfxDatabase.Instance.Play(((Weapon)EquipmentComponent.EquippedWeapon.Value).SoundEffect); SfxDatabase.Instance.Play(((Weapon)EquipmentComponent.EquippedWeapon.Value).SoundEffect);
var attackSpeed = ((Weapon)EquipmentComponent.EquippedWeapon.Value).AttackSpeed; var attackSpeed = ((Weapon)EquipmentComponent.EquippedWeapon.Value).AttackSpeed;
AnimationPlayer.SetSpeedScale((float)attackSpeed); AnimationPlayer.SetSpeedScale((float)attackSpeed);
AnimationPlayer.Play("attack"); AnimationPlayer.Play("attack");
} }
private void OnExitTree() private void OnExitTree()
{ {
PlayerLogic.Stop(); PlayerLogic.Stop();
PlayerBinding.Dispose(); PlayerBinding.Dispose();
Hitbox.AreaEntered -= Hitbox_AreaEntered; Hitbox.AreaEntered -= Hitbox_AreaEntered;
CollisionDetector.AreaEntered -= CollisionDetector_AreaEntered; CollisionDetector.AreaEntered -= CollisionDetector_AreaEntered;
HealthComponent.HealthReachedZero -= Die; HealthComponent.HealthReachedZero -= Die;
HealthTimer.Timeout -= OnHealthTimerTimeout; HealthTimer.Timeout -= OnHealthTimerTimeout;
} }
private void Move(float delta) private void Move(float delta)
{ {
var rawInput = GlobalInputVector; var rawInput = GlobalInputVector;
var strafeLeftInput = LeftStrafeInputVector; var strafeLeftInput = LeftStrafeInputVector;
var strafeRightInput = RightStrafeInputVector; var strafeRightInput = RightStrafeInputVector;
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; var velocity = Basis * moveDirection * Settings.MoveSpeed * Settings.Acceleration;
_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);
if (!WalkSFX.Playing && !Velocity.IsZeroApprox()) if (!WalkSFX.Playing && !Velocity.IsZeroApprox())
WalkSFX.Play(); WalkSFX.Play();
else if (Velocity.IsZeroApprox()) else if (Velocity.IsZeroApprox())
WalkSFX.Stop(); WalkSFX.Stop();
MoveAndSlide(); MoveAndSlide();
} }
private void OnPlayerPositionUpdated(Vector3 globalPosition) => GlobalPosition = globalPosition; private void OnPlayerPositionUpdated(Vector3 globalPosition) => GlobalPosition = globalPosition;
private void OnHealthTimerTimeout() private void OnHealthTimerTimeout()
{ {
if (VTComponent.CurrentVT.Value > 0) if (VTComponent.CurrentVT.Value > 0)
{ {
if (((Accessory)EquipmentComponent.EquippedAccessory.Value).AccessoryTag == AccessoryTag.HalfVTConsumption) if (((Accessory)EquipmentComponent.EquippedAccessory.Value).AccessoryTag == AccessoryTag.HalfVTConsumption)
reduceOnTick = !reduceOnTick; reduceOnTick = !reduceOnTick;
HealthComponent.Heal(1); HealthComponent.Heal(1);
if (reduceOnTick) if (reduceOnTick)
VTComponent.Reduce(1); VTComponent.Reduce(1);
} }
else else
HealthComponent.Damage(1); HealthComponent.Damage(1);
} }
private void Hitbox_AreaEntered(Area3D area) private void Hitbox_AreaEntered(Area3D area)
{ {
var target = area.GetOwner(); var target = area.GetOwner();
if (target is IEnemy enemy) if (target is IEnemy enemy)
HitEnemy(enemy); HitEnemy(enemy);
} }
private void HitEnemy(IEnemy enemy) private void HitEnemy(IEnemy enemy)
{ {
var ignoreElementalResistance = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponTag == WeaponTag.IgnoreAffinity; var ignoreElementalResistance = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponTag == WeaponTag.IgnoreAffinity;
var ignoreDefense = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponTag == WeaponTag.IgnoreDefense; var ignoreDefense = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponTag == WeaponTag.IgnoreDefense;
var isCriticalHit = BattleExtensions.IsCriticalHit(LuckComponent.Luck.Value + EquipmentComponent.BonusLuck); var isCriticalHit = BattleExtensions.IsCriticalHit(LuckComponent.Luck.Value + EquipmentComponent.BonusLuck);
var totalDamage = AttackComponent.CurrentAttack.Value + EquipmentComponent.BonusAttack; var totalDamage = AttackComponent.CurrentAttack.Value + EquipmentComponent.BonusAttack;
var element = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponElement; var element = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponElement;
if (isCriticalHit) if (isCriticalHit)
{ {
totalDamage += (int)(totalDamage * 0.5f); totalDamage += (int)(totalDamage * 0.5f);
SfxDatabase.Instance.Play(SoundEffect.Crit); SfxDatabase.Instance.Play(SoundEffect.Crit);
} }
var baseAttack = new AttackData(totalDamage, element, ignoreDefense, ignoreElementalResistance); var baseAttack = new AttackData(totalDamage, element, ignoreDefense, ignoreElementalResistance);
var damageDealt = DamageCalculator.CalculateDamage(baseAttack, enemy.DefenseComponent.CurrentDefense.Value, ElementalResistanceSet.None); var damageDealt = DamageCalculator.CalculateDamage(baseAttack, enemy.DefenseComponent.CurrentDefense.Value, ElementalResistanceSet.None);
enemy.HealthComponent.Damage(damageDealt); enemy.HealthComponent.Damage(damageDealt);
if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.Knockback && enemy is IKnockbackable knockbackable) if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.Knockback && enemy is IKnockbackable knockbackable)
knockbackable.Knockback(0.3f, -CurrentBasis.Z.Normalized()); knockbackable.Knockback(0.3f, -CurrentBasis.Z.Normalized());
if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.SelfDamage) if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.SelfDamage)
HealthComponent.Damage(5); HealthComponent.Damage(5);
} }
private void CollisionDetector_AreaEntered(Area3D area) private void CollisionDetector_AreaEntered(Area3D area)
{ {
if (area.GetParent() is InventoryItem inventoryItem) if (area.GetParent() is InventoryItem inventoryItem)
{ {
var isAdded = Inventory.PickUpItem(inventoryItem); var isAdded = Inventory.PickUpItem(inventoryItem);
if (isAdded) if (isAdded)
inventoryItem.QueueFree(); inventoryItem.QueueFree();
} }
if (area.GetParent() is DroppedItem droppedItem) if (area.GetParent() is DroppedItem droppedItem)
{ {
var isAdded = Inventory.PickUpItem(droppedItem.Item); var isAdded = Inventory.PickUpItem(droppedItem.Item);
if (isAdded) if (isAdded)
droppedItem.QueueFree(); droppedItem.QueueFree();
} }
if (area.GetParent() is ThrownItem thrownItem) if (area.GetParent() is ThrownItem thrownItem)
{ {
var isAdded = Inventory.PickUpItem(thrownItem.ItemThatIsThrown); var isAdded = Inventory.PickUpItem(thrownItem.ItemThatIsThrown);
if (isAdded) if (isAdded)
thrownItem.QueueFree(); thrownItem.QueueFree();
} }
if (area.GetParent() is Restorative restorative) if (area.GetParent() is Restorative restorative)
{ {
restorative.QueueFree(); restorative.QueueFree();
} }
} }
private bool PlayerIsHittingGeometry() private bool PlayerIsHittingGeometry()
{ {
var collisions = WallCheck.GetCollidingBodies(); var collisions = WallCheck.GetCollidingBodies();
return collisions.Count > 0; return collisions.Count > 0;
} }
private void WallCheck_BodyEntered(Node body) private void WallCheck_BodyEntered(Node body)
{ {
GD.Print("Hit wall"); GD.Print("Hit wall");
AnimationPlayer.Stop(); AnimationPlayer.Stop();
} }
} }

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://holv8bks3o5g"
path="res://.godot/imported/BOD_B.TTF-c1bc2d8021d5a561a66516e20372bd6b.fontdata"
[deps]
source_file="res://src/ui/fonts/BOD_B.TTF"
dest_files=["res://.godot/imported/BOD_B.TTF-c1bc2d8021d5a561a66516e20372bd6b.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://kanchroaxc6"
path="res://.godot/imported/BOD_BI.TTF-189448d8cc7a748bf609986cc08a1db0.fontdata"
[deps]
source_file="res://src/ui/fonts/BOD_BI.TTF"
dest_files=["res://.godot/imported/BOD_BI.TTF-189448d8cc7a748bf609986cc08a1db0.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://dn7lus3sgvvd1"
path="res://.godot/imported/BOD_BLAI.TTF-1f79464d61c8112a88b9a4b163b8aef6.fontdata"
[deps]
source_file="res://src/ui/fonts/BOD_BLAI.TTF"
dest_files=["res://.godot/imported/BOD_BLAI.TTF-1f79464d61c8112a88b9a4b163b8aef6.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bll7nec5gg8e6"
path="res://.godot/imported/BOD_BLAR.TTF-2f71d9f113ce7703df7981c959d1156e.fontdata"
[deps]
source_file="res://src/ui/fonts/BOD_BLAR.TTF"
dest_files=["res://.godot/imported/BOD_BLAR.TTF-2f71d9f113ce7703df7981c959d1156e.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://v3s2v2r3ferw"
path="res://.godot/imported/BOD_CB.TTF-1fbb8817d82ad798195b69be73e5a717.fontdata"
[deps]
source_file="res://src/ui/fonts/BOD_CB.TTF"
dest_files=["res://.godot/imported/BOD_CB.TTF-1fbb8817d82ad798195b69be73e5a717.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bxukmc24hf4xw"
path="res://.godot/imported/BOD_CBI.TTF-8e30d1d899fb6a60a92707df230c0fc7.fontdata"
[deps]
source_file="res://src/ui/fonts/BOD_CBI.TTF"
dest_files=["res://.godot/imported/BOD_CBI.TTF-8e30d1d899fb6a60a92707df230c0fc7.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bcda52ngp12o6"
path="res://.godot/imported/BOD_CI.TTF-e2607effa44e74648fda54443ea220d8.fontdata"
[deps]
source_file="res://src/ui/fonts/BOD_CI.TTF"
dest_files=["res://.godot/imported/BOD_CI.TTF-e2607effa44e74648fda54443ea220d8.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bvbvbodvli0lc"
path="res://.godot/imported/BOD_CR.TTF-c1e56b0a0b0c546801de9c714c93a059.fontdata"
[deps]
source_file="res://src/ui/fonts/BOD_CR.TTF"
dest_files=["res://.godot/imported/BOD_CR.TTF-c1e56b0a0b0c546801de9c714c93a059.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://dmqrdbprkp7v8"
path="res://.godot/imported/BOD_I.TTF-a74f4361742791f951f99890ba399467.fontdata"
[deps]
source_file="res://src/ui/fonts/BOD_I.TTF"
dest_files=["res://.godot/imported/BOD_I.TTF-a74f4361742791f951f99890ba399467.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://gosyy1xs8n8y"
path="res://.godot/imported/BOD_R.TTF-6e51b0687610cd886bb77fa41341fc6a.fontdata"
[deps]
source_file="res://src/ui/fonts/BOD_R.TTF"
dest_files=["res://.godot/imported/BOD_R.TTF-6e51b0687610cd886bb77fa41341fc6a.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bfhr8a8o7pe2x"
path="res://.godot/imported/LSANSD.TTF-b7c2aa130e4f27158f88e9329958006d.fontdata"
[deps]
source_file="res://src/ui/fonts/LSANSD.TTF"
dest_files=["res://.godot/imported/LSANSD.TTF-b7c2aa130e4f27158f88e9329958006d.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://cbe64f1sx5jvl"
path="res://.godot/imported/LSANSDI.TTF-bb1ba106911dd2c5e1b9f13adfa8dbf3.fontdata"
[deps]
source_file="res://src/ui/fonts/LSANSDI.TTF"
dest_files=["res://.godot/imported/LSANSDI.TTF-bb1ba106911dd2c5e1b9f13adfa8dbf3.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://cke424xtk2s0o"
path="res://.godot/imported/ebrima.ttf-3354fe06c708555fba8daee8ce82c147.fontdata"
[deps]
source_file="res://src/ui/fonts/ebrima.ttf"
dest_files=["res://.godot/imported/ebrima.ttf-3354fe06c708555fba8daee8ce82c147.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://cplk3hcd0bjrd"
path="res://.godot/imported/ebrimabd.ttf-4e4b601eae26fc218b9e3454fd728f74.fontdata"
[deps]
source_file="res://src/ui/fonts/ebrimabd.ttf"
dest_files=["res://.godot/imported/ebrimabd.ttf-4e4b601eae26fc218b9e3454fd728f74.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://tfskthaq7tmi"
path="res://.godot/imported/georgia.ttf-4d2ef5e2598ad4cdc23a1a478b2d9b96.fontdata"
[deps]
source_file="res://src/ui/fonts/georgia.ttf"
dest_files=["res://.godot/imported/georgia.ttf-4d2ef5e2598ad4cdc23a1a478b2d9b96.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://0syyay37admf"
path="res://.godot/imported/georgiab.ttf-20beb0eb7cf573cd4efb2152a608c12c.fontdata"
[deps]
source_file="res://src/ui/fonts/georgiab.ttf"
dest_files=["res://.godot/imported/georgiab.ttf-20beb0eb7cf573cd4efb2152a608c12c.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://beh6d5lo5ihq0"
path="res://.godot/imported/georgiai.ttf-97e1796f41b719aad3444c7b17527dc5.fontdata"
[deps]
source_file="res://src/ui/fonts/georgiai.ttf"
dest_files=["res://.godot/imported/georgiai.ttf-97e1796f41b719aad3444c7b17527dc5.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

View File

@@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bwof1h2w3o8bg"
path="res://.godot/imported/georgiaz.ttf-cf98b866f7d659752d001e8e4ce6b7b0.fontdata"
[deps]
source_file="res://src/ui/fonts/georgiaz.ttf"
dest_files=["res://.godot/imported/georgiaz.ttf-cf98b866f7d659752d001e8e4ce6b7b0.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cag76xxh7mw85"
path="res://.godot/imported/SCREEN_RENDERS_Gallery_720_16_9.png-a507e1c4fdd29451bb802ff7ccfe9f38.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/ui/rendered_assets/SCREEN_RENDERS_Gallery_720_16_9.png"
dest_files=["res://.godot/imported/SCREEN_RENDERS_Gallery_720_16_9.png-a507e1c4fdd29451bb802ff7ccfe9f38.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dif6p5hc6b5mq"
path="res://.godot/imported/SCREEN_RENDERS_Gameover_720_16_9.png-b63cc1aa9031ce463872e8e1aadab53c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/ui/rendered_assets/SCREEN_RENDERS_Gameover_720_16_9.png"
dest_files=["res://.godot/imported/SCREEN_RENDERS_Gameover_720_16_9.png-b63cc1aa9031ce463872e8e1aadab53c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d2krh4u2v06k5"
path="res://.godot/imported/SCREEN_RENDERS_Loading_720_16_9.png-4c6397db52c482bd39e566c2148ee3dd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/ui/rendered_assets/SCREEN_RENDERS_Loading_720_16_9.png"
dest_files=["res://.godot/imported/SCREEN_RENDERS_Loading_720_16_9.png-4c6397db52c482bd39e566c2148ee3dd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://vtecp7jh15kg"
path="res://.godot/imported/SCREEN_RENDERS_Next_Floor_720_16_9.png-d2482b3cdfba59c16134c0f1c57f06eb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/ui/rendered_assets/SCREEN_RENDERS_Next_Floor_720_16_9.png"
dest_files=["res://.godot/imported/SCREEN_RENDERS_Next_Floor_720_16_9.png-d2482b3cdfba59c16134c0f1c57f06eb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 852 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b8ftp11t0q58p"
path="res://.godot/imported/SCREEN_RENDERS_Options_720_16_9.png-fc945b3fd6f8f58f3b892c7efd4c41cf.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/ui/rendered_assets/SCREEN_RENDERS_Options_720_16_9.png"
dest_files=["res://.godot/imported/SCREEN_RENDERS_Options_720_16_9.png-fc945b3fd6f8f58f3b892c7efd4c41cf.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dsf5l6g8n1tkw"
path="res://.godot/imported/SCREEN_RENDERS_Viewer_720_16_9.png-f95ab2fbd8aa713a0a9e7c58cd19f46c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/ui/rendered_assets/SCREEN_RENDERS_Viewer_720_16_9.png"
dest_files=["res://.godot/imported/SCREEN_RENDERS_Viewer_720_16_9.png-f95ab2fbd8aa713a0a9e7c58cd19f46c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0