Changed player to new one

This commit is contained in:
Marco 2025-03-02 11:58:30 +01:00
commit 1c1436a539
27 changed files with 323 additions and 87 deletions

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=35 format=3 uid="uid://c4pr2707hbeph"] [gd_scene load_steps=39 format=3 uid="uid://c4pr2707hbeph"]
[ext_resource type="Script" uid="uid://bw2hakslndaxm" path="res://Scripts/Components/FSM/PlayerStateMachine.cs" id="1_mpmil"] [ext_resource type="Script" uid="uid://bw2hakslndaxm" path="res://Scripts/Components/FSM/PlayerStateMachine.cs" id="1_mpmil"]
[ext_resource type="Script" uid="uid://chwqogny2v8t1" path="res://Scripts/Components/FSM/Player/Init.cs" id="2_i6wc8"] [ext_resource type="Script" uid="uid://chwqogny2v8t1" path="res://Scripts/Components/FSM/Player/Init.cs" id="2_i6wc8"]
@ -9,6 +9,7 @@
[ext_resource type="SpriteFrames" uid="uid://bc7mghjx75qip" path="res://Resources/Sprites/player.tres" id="4_s0ir4"] [ext_resource type="SpriteFrames" uid="uid://bc7mghjx75qip" path="res://Resources/Sprites/player.tres" id="4_s0ir4"]
[ext_resource type="Script" uid="uid://b4nixnxhj5qhw" path="res://Scripts/Components/Actors/PlayerWeaponProvider.cs" id="5_gp3hw"] [ext_resource type="Script" uid="uid://b4nixnxhj5qhw" path="res://Scripts/Components/Actors/PlayerWeaponProvider.cs" id="5_gp3hw"]
[ext_resource type="Script" uid="uid://b0khv2fcrgm6t" path="res://Scripts/Components/FSM/Player/Teleporting.cs" id="5_yifvs"] [ext_resource type="Script" uid="uid://b0khv2fcrgm6t" path="res://Scripts/Components/FSM/Player/Teleporting.cs" id="5_yifvs"]
[ext_resource type="Script" uid="uid://br2ev58gwuvu4" path="res://Scripts/Components/FSM/Player/UnTeleporting.cs" id="6_7n10g"]
[ext_resource type="PackedScene" uid="uid://crry0rgk7a8sm" path="res://Scenes/Weapons/BaseWeapon.tscn" id="6_8dcio"] [ext_resource type="PackedScene" uid="uid://crry0rgk7a8sm" path="res://Scenes/Weapons/BaseWeapon.tscn" id="6_8dcio"]
[ext_resource type="Script" uid="uid://bwtcgcvfw8urt" path="res://Scripts/Components/FSM/Player/Controlling.cs" id="6_82vrk"] [ext_resource type="Script" uid="uid://bwtcgcvfw8urt" path="res://Scripts/Components/FSM/Player/Controlling.cs" id="6_82vrk"]
[ext_resource type="Script" uid="uid://bo5sgbv1t8ril" path="res://Scripts/Components/Actors/PlayerAnimationProvider.cs" id="7_pmkfo"] [ext_resource type="Script" uid="uid://bo5sgbv1t8ril" path="res://Scripts/Components/Actors/PlayerAnimationProvider.cs" id="7_pmkfo"]
@ -21,11 +22,13 @@
[ext_resource type="Texture2D" uid="uid://bf37ce6jskdel" path="res://Sprites/SmallHitbox.png" id="13_pmkfo"] [ext_resource type="Texture2D" uid="uid://bf37ce6jskdel" path="res://Sprites/SmallHitbox.png" id="13_pmkfo"]
[ext_resource type="Script" uid="uid://dkmsw828qwikk" path="res://Scripts/Components/Actors/PlayerDamageReceiver.cs" id="14_igu66"] [ext_resource type="Script" uid="uid://dkmsw828qwikk" path="res://Scripts/Components/Actors/PlayerDamageReceiver.cs" id="14_igu66"]
[ext_resource type="Script" uid="uid://cqwvssstkrdmw" path="res://Scripts/Components/Actors/ActorResourceProvider.cs" id="15_5qlss"] [ext_resource type="Script" uid="uid://cqwvssstkrdmw" path="res://Scripts/Components/Actors/ActorResourceProvider.cs" id="15_5qlss"]
[ext_resource type="Texture2D" uid="uid://bc4tp44e00g0d" path="res://Sprites/Actors/Focus_Square.png" id="20_3ho10"]
[ext_resource type="Script" uid="uid://dv205x8msohpv" path="res://Scripts/Components/Actors/ActivationProvider.cs" id="22_12cwd"] [ext_resource type="Script" uid="uid://dv205x8msohpv" path="res://Scripts/Components/Actors/ActivationProvider.cs" id="22_12cwd"]
[ext_resource type="PackedScene" uid="uid://chkpk7erlqajg" path="res://Scenes/Selector.tscn" id="23_5tmtw"] [ext_resource type="PackedScene" uid="uid://chkpk7erlqajg" path="res://Scenes/Selector.tscn" id="23_5tmtw"]
[ext_resource type="AudioStream" uid="uid://myr6n2c1u503" path="res://SFX/581602__samsterbirdies__beep-error.mp3" id="24_5tmtw"] [ext_resource type="AudioStream" uid="uid://myr6n2c1u503" path="res://SFX/581602__samsterbirdies__beep-error.mp3" id="24_5tmtw"]
[sub_resource type="CircleShape2D" id="CircleShape2D_b3hxm"] [sub_resource type="CircleShape2D" id="CircleShape2D_b3hxm"]
radius = 5.0
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_0pqs8"] [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_0pqs8"]
particle_flag_disable_z = true particle_flag_disable_z = true
@ -66,6 +69,21 @@ animations = [{
"speed": 5.0 "speed": 5.0
}] }]
[sub_resource type="AtlasTexture" id="AtlasTexture_vwjki"]
atlas = ExtResource("20_3ho10")
region = Rect2(0, 0, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_g3wua"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_vwjki")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[sub_resource type="AtlasTexture" id="AtlasTexture_igu66"] [sub_resource type="AtlasTexture" id="AtlasTexture_igu66"]
atlas = ExtResource("13_pmkfo") atlas = ExtResource("13_pmkfo")
region = Rect2(0, 0, 4, 4) region = Rect2(0, 0, 4, 4)
@ -118,16 +136,23 @@ script = ExtResource("5_yifvs")
_animationProvider = NodePath("../AnimationProvider") _animationProvider = NodePath("../AnimationProvider")
State = 3 State = 3
[node name="Controlling" type="Node2D" parent="." node_paths=PackedStringArray("_animationProvider")] [node name="UnTeleporting" type="Node2D" parent="." node_paths=PackedStringArray("_animationProvider")]
script = ExtResource("6_82vrk") script = ExtResource("6_7n10g")
_animationProvider = NodePath("../AnimationProvider") _animationProvider = NodePath("../AnimationProvider")
State = 4 State = 4
[node name="Dead" type="Node2D" parent="." node_paths=PackedStringArray("_animationProvider")] [node name="Controlling" type="Node2D" parent="." node_paths=PackedStringArray("_animationProvider")]
script = ExtResource("4_0pqs8") script = ExtResource("6_82vrk")
_animationProvider = NodePath("../AnimationProvider") _animationProvider = NodePath("../AnimationProvider")
State = 5 State = 5
[node name="Dead" type="Node2D" parent="." node_paths=PackedStringArray("_animationProvider", "_inputProvider", "_healthProvider")]
script = ExtResource("4_0pqs8")
_animationProvider = NodePath("../AnimationProvider")
_inputProvider = NodePath("../InputProvider")
_healthProvider = NodePath("../DamageReceiver/HealthProvider")
State = 6
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_b3hxm") shape = SubResource("CircleShape2D_b3hxm")
@ -165,16 +190,22 @@ CrosshairDistance = 35.0
[node name="Crosshair" type="AnimatedSprite2D" parent="CrosshairProvider"] [node name="Crosshair" type="AnimatedSprite2D" parent="CrosshairProvider"]
sprite_frames = SubResource("SpriteFrames_n5ijo") sprite_frames = SubResource("SpriteFrames_n5ijo")
[node name="StrafeSpriteProvider" type="Node2D" parent="." node_paths=PackedStringArray("Hitbox", "Circle")] [node name="StrafeSpriteProvider" type="Node2D" parent="." node_paths=PackedStringArray("Hitbox", "Circle", "Square")]
show_behind_parent = true show_behind_parent = true
script = ExtResource("10_gp3hw") script = ExtResource("10_gp3hw")
Hitbox = NodePath("Hitbox") Hitbox = NodePath("Hitbox")
Circle = NodePath("MagicCircle") Circle = NodePath("MagicCircle")
Square = NodePath("MagicSquare")
RotationSpeed = 1.0
[node name="MagicCircle" type="AnimatedSprite2D" parent="StrafeSpriteProvider"] [node name="MagicCircle" type="AnimatedSprite2D" parent="StrafeSpriteProvider"]
modulate = Color(1, 1, 1, 0.501961) modulate = Color(1, 1, 1, 0.501961)
sprite_frames = SubResource("SpriteFrames_igu66") sprite_frames = SubResource("SpriteFrames_igu66")
[node name="MagicSquare" type="AnimatedSprite2D" parent="StrafeSpriteProvider"]
modulate = Color(1, 1, 1, 0.501961)
sprite_frames = SubResource("SpriteFrames_g3wua")
[node name="Hitbox" type="AnimatedSprite2D" parent="StrafeSpriteProvider"] [node name="Hitbox" type="AnimatedSprite2D" parent="StrafeSpriteProvider"]
z_index = 2 z_index = 2
sprite_frames = SubResource("SpriteFrames_5qlss") sprite_frames = SubResource("SpriteFrames_5qlss")

View file

@ -1,7 +1,6 @@
[gd_scene load_steps=24 format=4 uid="uid://dqyfnby0t7gu1"] [gd_scene load_steps=31 format=4 uid="uid://dqyfnby0t7gu1"]
[ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_c3v4x"] [ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_c3v4x"]
[ext_resource type="PackedScene" uid="uid://bghghp5ep4w2j" path="res://Scenes/player.tscn" id="2_w1v1g"]
[ext_resource type="Resource" uid="uid://cs3ihltcn2166" path="res://Resources/Items/IcicleGun.tres" id="3_6314l"] [ext_resource type="Resource" uid="uid://cs3ihltcn2166" path="res://Resources/Items/IcicleGun.tres" id="3_6314l"]
[ext_resource type="Script" uid="uid://mja0rk7n2kln" path="res://Scripts/Resources/MapStartDataResource.cs" id="4_u1i8n"] [ext_resource type="Script" uid="uid://mja0rk7n2kln" path="res://Scripts/Resources/MapStartDataResource.cs" id="4_u1i8n"]
[ext_resource type="Resource" uid="uid://dhbltvgsa3g88" path="res://Resources/Items/Spider_Bomb_Pickup.tres" id="4_yyg8m"] [ext_resource type="Resource" uid="uid://dhbltvgsa3g88" path="res://Resources/Items/Spider_Bomb_Pickup.tres" id="4_yyg8m"]
@ -20,8 +19,16 @@
[ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="14_q7rh4"] [ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="14_q7rh4"]
[ext_resource type="PackedScene" uid="uid://cd36ch65jijg0" path="res://Scenes/Activable/BulletEmitter.tscn" id="15_b3hxm"] [ext_resource type="PackedScene" uid="uid://cd36ch65jijg0" path="res://Scenes/Activable/BulletEmitter.tscn" id="15_b3hxm"]
[ext_resource type="PackedScene" uid="uid://r25rq6ijgm6m" path="res://Scenes/Items/Green_Keycard.tscn" id="16_dj0ui"] [ext_resource type="PackedScene" uid="uid://r25rq6ijgm6m" path="res://Scenes/Items/Green_Keycard.tscn" id="16_dj0ui"]
[ext_resource type="PackedScene" uid="uid://byms2dhliyux0" path="res://Scenes/Actors/teleporter.tscn" id="16_qmakk"]
[ext_resource type="Resource" uid="uid://bj331rcsq65es" path="res://Resources/Bullets/EmitterTestBullet.tres" id="16_u1i8n"] [ext_resource type="Resource" uid="uid://bj331rcsq65es" path="res://Resources/Bullets/EmitterTestBullet.tres" id="16_u1i8n"]
[ext_resource type="PackedScene" uid="uid://bj28qiai2x2ar" path="res://Scenes/Props/Barrel.tscn" id="17_qmakk"]
[ext_resource type="PackedScene" uid="uid://djf0y08ix66fn" path="res://Scenes/Interactable/Chest.tscn" id="18_v2gcl"]
[ext_resource type="Resource" uid="uid://cfq121rs3bsu8" path="res://Resources/Items/Cheat_Gun_Item.tres" id="19_1ajuh"]
[ext_resource type="PackedScene" uid="uid://crph24e6e0v0q" path="res://Scenes/Interactable/Control_Pad.tscn" id="20_0knpf"] [ext_resource type="PackedScene" uid="uid://crph24e6e0v0q" path="res://Scenes/Interactable/Control_Pad.tscn" id="20_0knpf"]
[ext_resource type="Resource" uid="uid://cj5aa7btaw6q0" path="res://Resources/Items/Blue_Keycard.tres" id="20_rff8l"]
[ext_resource type="Resource" uid="uid://dibquna7fww7t" path="res://Resources/Items/Red_Keycard.tres" id="21_cub4j"]
[ext_resource type="Resource" uid="uid://dau0s8ob7qnpc" path="res://Resources/Items/IceShotgun.tres" id="22_4gtx8"]
[ext_resource type="Resource" uid="uid://ct1fa2huvy34n" path="res://Resources/Items/Ammo1.tres" id="23_1ajuh"]
[sub_resource type="Resource" id="Resource_6wo78"] [sub_resource type="Resource" id="Resource_6wo78"]
script = ExtResource("4_u1i8n") script = ExtResource("4_u1i8n")
@ -31,7 +38,7 @@ StartingEquipment = Array[ExtResource("5_u1i8n")]([])
[node name="GameScene" type="Node2D"] [node name="GameScene" type="Node2D"]
process_mode = 3 process_mode = 3
script = ExtResource("1_c3v4x") script = ExtResource("1_c3v4x")
PlayerTemplate = ExtResource("2_w1v1g") PlayerTemplate = ExtResource("8_c3v4x")
SpawnMarkers = Dictionary[int, NodePath]({ SpawnMarkers = Dictionary[int, NodePath]({
0: NodePath("PlayerStartPosition") 0: NodePath("PlayerStartPosition")
}) })
@ -58,11 +65,9 @@ tile_set = ExtResource("5_6314l")
metadata/_edit_lock_ = true metadata/_edit_lock_ = true
[node name="Actors" type="Node2D" parent="Tilemaps"] [node name="Actors" type="Node2D" parent="Tilemaps"]
y_sort_enabled = true
metadata/_edit_lock_ = true metadata/_edit_lock_ = true
[node name="FSMPlayer" parent="Tilemaps/Actors" instance=ExtResource("8_c3v4x")]
position = Vector2(76, 295)
[node name="Ammo1" parent="Tilemaps/Actors" instance=ExtResource("10_6314l")] [node name="Ammo1" parent="Tilemaps/Actors" instance=ExtResource("10_6314l")]
position = Vector2(163, 302) position = Vector2(163, 302)
@ -84,6 +89,23 @@ Targets = [NodePath("../HorizontalForceField")]
[node name="GreenKeyCard" parent="Tilemaps/Actors" instance=ExtResource("16_dj0ui")] [node name="GreenKeyCard" parent="Tilemaps/Actors" instance=ExtResource("16_dj0ui")]
position = Vector2(154, 339) position = Vector2(154, 339)
[node name="Teleporter2" parent="Tilemaps/Actors" node_paths=PackedStringArray("Target") instance=ExtResource("16_qmakk")]
position = Vector2(119, 391)
IsEnabled = true
Target = NodePath("../Teleporter4")
[node name="Teleporter4" parent="Tilemaps/Actors" node_paths=PackedStringArray("Target") instance=ExtResource("16_qmakk")]
position = Vector2(183, 391)
IsEnabled = true
Target = NodePath("../Teleporter2")
[node name="Barrel" parent="Tilemaps/Actors" instance=ExtResource("17_qmakk")]
position = Vector2(59, 386)
[node name="Chest" parent="Tilemaps/Actors" instance=ExtResource("18_v2gcl")]
position = Vector2(56, 320)
LootTable = Array[ExtResource("5_u1i8n")]([ExtResource("19_1ajuh"), ExtResource("20_rff8l"), ExtResource("21_cub4j"), ExtResource("22_4gtx8"), ExtResource("3_6314l"), ExtResource("23_1ajuh"), ExtResource("23_1ajuh"), ExtResource("23_1ajuh")])
[node name="CameraController" type="Camera2D" parent="."] [node name="CameraController" type="Camera2D" parent="."]
process_mode = 1 process_mode = 1
script = ExtResource("9_dj0ui") script = ExtResource("9_dj0ui")

View file

@ -1,7 +1,7 @@
[gd_scene load_steps=121 format=4 uid="uid://bv451a8wgty4u"] [gd_scene load_steps=120 format=4 uid="uid://bv451a8wgty4u"]
[ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_8tmoj"] [ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_8tmoj"]
[ext_resource type="PackedScene" uid="uid://bghghp5ep4w2j" path="res://Scenes/player.tscn" id="2_8mh54"] [ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_ksslq"]
[ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="3_kgs2x"] [ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="3_kgs2x"]
[ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="4_p1fl3"] [ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="4_p1fl3"]
[ext_resource type="PackedScene" uid="uid://rp4jhx0tuh24" path="res://Scenes/fragola.tscn" id="4_s7wq6"] [ext_resource type="PackedScene" uid="uid://rp4jhx0tuh24" path="res://Scenes/fragola.tscn" id="4_s7wq6"]
@ -80,7 +80,6 @@
[ext_resource type="PackedScene" uid="uid://dfat0erkvb513" path="res://Scenes/Actors/Fairy_New.tscn" id="73_s4x1s"] [ext_resource type="PackedScene" uid="uid://dfat0erkvb513" path="res://Scenes/Actors/Fairy_New.tscn" id="73_s4x1s"]
[ext_resource type="PackedScene" uid="uid://c21m7w5ahpsd0" path="res://Scenes/Activable/Shroud.tscn" id="74_oaf68"] [ext_resource type="PackedScene" uid="uid://c21m7w5ahpsd0" path="res://Scenes/Activable/Shroud.tscn" id="74_oaf68"]
[ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="77_yot54"] [ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="77_yot54"]
[ext_resource type="AudioStream" uid="uid://blohh20jktoyo" path="res://SFX/270641__phantastonia__alarm2.wav" id="79_jn1m0"]
[ext_resource type="Resource" uid="uid://b0jpn0kkmciuq" path="res://Resources/Music/Overtime_Fairy_Dance.tres" id="82_ksslq"] [ext_resource type="Resource" uid="uid://b0jpn0kkmciuq" path="res://Resources/Music/Overtime_Fairy_Dance.tres" id="82_ksslq"]
[ext_resource type="PackedScene" uid="uid://cvctgw8eo2f7e" path="res://Scenes/Items/SpiderBomb_Pickup.tscn" id="83_jn1m0"] [ext_resource type="PackedScene" uid="uid://cvctgw8eo2f7e" path="res://Scenes/Items/SpiderBomb_Pickup.tscn" id="83_jn1m0"]
@ -470,13 +469,13 @@ metadata/_custom_type_script = "uid://dslyrfcej3g2n"
[node name="GameScene" type="Node2D"] [node name="GameScene" type="Node2D"]
process_mode = 3 process_mode = 3
script = ExtResource("1_8tmoj") script = ExtResource("1_8tmoj")
PlayerTemplate = ExtResource("2_8mh54") PlayerTemplate = ExtResource("2_ksslq")
SpawnMarkers = Dictionary[int, NodePath]({ SpawnMarkers = Dictionary[int, NodePath]({
0: NodePath("Factory Tilemaps/LevelProps/StartPosition"), 0: NodePath("Factory Tilemaps/LevelProps/StartPosition"),
2: NodePath("Factory Tilemaps/LevelProps/BossDebugTeleporterDestination"), 2: NodePath("Factory Tilemaps/LevelProps/BossDebugTeleporterDestination"),
255: NodePath("Factory Tilemaps/Debug Room/DebugRoomStartPosition") 255: NodePath("Factory Tilemaps/Debug Room/DebugRoomStartPosition")
}) })
StartingEquipment = [ExtResource("4_swym2"), ExtResource("5_nqier")] StartingEquipment = Array[ExtResource("6_8tdlb")]([ExtResource("4_swym2"), ExtResource("5_nqier")])
MapStartData = SubResource("Resource_6sau4") MapStartData = SubResource("Resource_6sau4")
metadata/_edit_lock_ = true metadata/_edit_lock_ = true
@ -1156,7 +1155,6 @@ script = ExtResource("18_dvo37")
process_mode = 1 process_mode = 1
position = Vector2(-4, 0) position = Vector2(-4, 0)
script = ExtResource("25_rpwvt") script = ExtResource("25_rpwvt")
AlarmSound = ExtResource("79_jn1m0")
[node name="HUD" parent="." instance=ExtResource("22_krk0o")] [node name="HUD" parent="." instance=ExtResource("22_krk0o")]

View file

@ -1,6 +1,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Threading.Tasks; using System.Threading.Tasks;
using Cirno.Scripts.Components.FSM;
using Godot; using Godot;
namespace Cirno.Scripts.Activables; namespace Cirno.Scripts.Activables;
@ -10,16 +11,19 @@ public partial class LevelTeleporter : Teleporter
[Export] [Export]
public string LevelPath {get; private set;} public string LevelPath {get; private set;}
protected override async Task Teleport(PlayerMovement player) protected override async Task Teleport(PlayerStateMachine player)
{ {
if (string.IsNullOrWhiteSpace(LevelPath)) return; if (string.IsNullOrWhiteSpace(LevelPath)) return;
player.RequestMovementDisable(true); //player.RequestMovementDisable(true);
player.SetState((int)PlayerState.Cutscene);
await TweenPlayer(player); await TweenPlayer(player);
_particles.Emitting = true; _particles.Emitting = true;
await player.Teleport(); //await player.Teleport();
player.SetState((int)PlayerState.UnTeleporting);
await Task.Delay((int)(0.6f * 1000));
await Task.Delay((int)(TeleportAnimationLength * 1000)); await Task.Delay((int)(TeleportAnimationLength * 1000));

View file

@ -36,7 +36,8 @@ public partial class PlayerMover : ChainActivable
private async Task MovePlayer() private async Task MovePlayer()
{ {
_gameManager.Player.RequestMovementDisable(true); //_gameManager.Player.RequestMovementDisable(true);
_gameManager.Player.SetState((int)PlayerState.Cutscene);
Tween tween = GetTree().CreateTween(); Tween tween = GetTree().CreateTween();
tween.SetEase(EaseType); tween.SetEase(EaseType);
@ -46,7 +47,8 @@ public partial class PlayerMover : ChainActivable
// Wait for the tween to finish // Wait for the tween to finish
await ToSignal(tween, "finished"); await ToSignal(tween, "finished");
_gameManager.Player.RequestMovementDisable(false); //_gameManager.Player.RequestMovementDisable(false);
_gameManager.Player.SetState((int)PlayerState.Cutscene);
ActivateTargets(); ActivateTargets();
} }

View file

@ -2,6 +2,7 @@
using System.Collections; using System.Collections;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Cirno.Scripts.Components.FSM;
using Godot; using Godot;
using GTweensGodot.Extensions; using GTweensGodot.Extensions;
@ -115,7 +116,7 @@ private AudioStreamPlayer2D _teleportEndSound;
private void _on_body_entered(CharacterBody2D area) private void _on_body_entered(CharacterBody2D area)
{ {
if (area is not PlayerMovement player) return; if (area is not PlayerStateMachine player) return;
if (!IsPrimed) if (!IsPrimed)
{ {
@ -132,10 +133,11 @@ private AudioStreamPlayer2D _teleportEndSound;
_ = Teleport(player); _ = Teleport(player);
} }
protected virtual async Task Teleport(PlayerMovement player) protected virtual async Task Teleport(PlayerStateMachine player)
{ {
if (Target is null) return; if (Target is null) return;
player.RequestMovementDisable(true); //player.RequestMovementDisable(true);
player.SetState((int)PlayerState.Cutscene);
await TweenPlayer(player); await TweenPlayer(player);
@ -144,16 +146,22 @@ private AudioStreamPlayer2D _teleportEndSound;
//_particles.Emitting = true; //_particles.Emitting = true;
FireParticles(); FireParticles();
await player.Teleport(); //await player.Teleport();
player.SetState((int)PlayerState.Teleporting);
await Task.Delay((int)(0.6f * 1000));
await Task.Delay((int)(TeleportAnimationLength * 1000)); await Task.Delay((int)(TeleportAnimationLength * 1000));
Target.PrepareForReceiving(); Target.PrepareForReceiving();
player.GlobalPosition = Target.GlobalPosition + TeleportOffset; player.GlobalPosition = Target.GlobalPosition + TeleportOffset;
Target.PlayTeleportEndSound(); Target.PlayTeleportEndSound();
await player.UnTeleport(); //await player.UnTeleport();
player.RequestMovementDisable(false); player.SetState((int)PlayerState.UnTeleporting);
await Task.Delay((int)(0.6f * 1000));
//player.RequestMovementDisable(false);
player.SetState((int)PlayerState.Active);
} }
public void PlayTeleportStartSound() public void PlayTeleportStartSound()
@ -166,7 +174,7 @@ private AudioStreamPlayer2D _teleportEndSound;
_teleportEndSound?.Play(); _teleportEndSound?.Play();
} }
protected async Task TweenPlayer(PlayerMovement player) protected async Task TweenPlayer(PlayerStateMachine player)
{ {
await player.TweenGlobalPosition(GlobalPosition + new Vector2(0, -4f), TeleportAnimationLength).PlayAsync(CancellationToken.None); await player.TweenGlobalPosition(GlobalPosition + new Vector2(0, -4f), TeleportAnimationLength).PlayAsync(CancellationToken.None);

View file

@ -77,7 +77,8 @@ public partial class EnemyPossessionMovement : ActorFreeMovement
public void AssumeControl() public void AssumeControl()
{ {
GameManager.Instance.CameraTargetObject(_parent); GameManager.Instance.CameraTargetObject(_parent);
GameManager.Instance.Player.RequestMovementDisable(true); //GameManager.Instance.Player.RequestMovementDisable(true);
GameManager.Instance.Player.SetState((int)PlayerState.Controlling);
_previousAiState = _actorAi.Ai; _previousAiState = _actorAi.Ai;
_actorAi.Ai = AiState.Controlled; _actorAi.Ai = AiState.Controlled;
@ -92,7 +93,8 @@ public partial class EnemyPossessionMovement : ActorFreeMovement
_actorAi.Ai = _previousAiState; _actorAi.Ai = _previousAiState;
GameManager.Instance.CameraTargetPlayer(); GameManager.Instance.CameraTargetPlayer();
GameManager.Instance.Player.RequestMovementDisable(false); //GameManager.Instance.Player.RequestMovementDisable(false);
GameManager.Instance.Player.SetState((int)PlayerState.Active);
DamageReceiver.BulletGroup = BulletOwner.Enemy; DamageReceiver.BulletGroup = BulletOwner.Enemy;

View file

@ -6,33 +6,33 @@ public partial class KeyboardInputProvider : InputProvider
{ {
[ExportCategory("Movement")] [ExportCategory("Movement")]
[Export] [Export]
public string LeftAxisName { get; private set; } = "left"; public StringName LeftAxisName { get; private set; } = "left";
[Export] [Export]
public string RightAxisName { get; private set; } = "right"; public StringName RightAxisName { get; private set; } = "right";
[Export] [Export]
public string UpAxisName { get; private set; } = "up"; public StringName UpAxisName { get; private set; } = "up";
[Export] [Export]
public string DownAxisName { get; private set; } = "down"; public StringName DownAxisName { get; private set; } = "down";
[ExportCategory("Aiming")] [ExportCategory("Aiming")]
[Export] [Export]
public string LeftAimName { get; private set; } = "aim_left"; public StringName LeftAimName { get; private set; } = "aim_left";
[Export] [Export]
public string RightAimName { get; private set; } = "aim_right"; public StringName RightAimName { get; private set; } = "aim_right";
[Export] [Export]
public string UpAimName { get; private set; } = "aim_up"; public StringName UpAimName { get; private set; } = "aim_up";
[Export] [Export]
public string DownAimName { get; private set; } = "aim_down"; public StringName DownAimName { get; private set; } = "aim_down";
[ExportCategory("Action Names")] [ExportCategory("Action Names")]
[Export] private string _shootActionName = "shoot"; [Export] private StringName _shootActionName = "shoot";
[Export] private string _useActionName = "Use"; [Export] private StringName _useActionName = "Use";
[Export] private string _scanActionName = "scan"; [Export] private StringName _scanActionName = "scan";
[Export] private string _strafeActionName = "strafe"; [Export] private StringName _strafeActionName = "strafe";
[Export] private string _nextWeaponActionName = "next_weapon"; [Export] private StringName _nextWeaponActionName = "next_weapon";
[Export] private string _previousWeaponActionName = "previous_weapon"; [Export] private StringName _previousWeaponActionName = "previous_weapon";
[Export] private string _inventoryActionName = "inventory"; [Export] private StringName _inventoryActionName = "inventory";
[Export] private string _pauseActionName = "pause"; [Export] private StringName _pauseActionName = "pause";
public override Vector2 GetMovementInput() public override Vector2 GetMovementInput()
{ {

View file

@ -16,22 +16,34 @@ public partial class PlayerAnimationProvider : Node2D
[ExportCategory("Animation Names")] [ExportCategory("Animation Names")]
[Export] [Export]
public string WalkRightAnimationName {get; private set;} = "walk_right"; public StringName WalkRightAnimationName {get; private set;} = "walk_right";
[Export] [Export]
public string WalkLeftAnimationName {get; private set;} = "walk_left"; public StringName WalkLeftAnimationName {get; private set;} = "walk_left";
[Export] [Export]
public string WalkDownAnimationName {get; private set;} = "walk_down"; public StringName WalkDownAnimationName {get; private set;} = "walk_down";
[Export] [Export]
public string WalkUpAnimationName {get; private set;} = "walk_up"; public StringName WalkUpAnimationName {get; private set;} = "walk_up";
[ExportCategory("Shaders")] [ExportCategory("Shaders")]
[Export] public ShaderMaterial BlinkMaterial {get; private set;} [Export] public ShaderMaterial BlinkMaterial {get; private set;}
[Export] public StringName BlinkShaderPropertyName { get; private set; } = new StringName("blink_intensity"); [Export] public StringName BlinkShaderPropertyName { get; private set; } = new("blink_intensity");
[Export] public StringName TeleportProgressPropertyName { get; private set; } = new("teleport_progress");
[Export] public StringName ScanlineDensityPropertyName { get; private set; } = new("scanline_density");
private GTween _blinkTween; private GTween _blinkTween;
public void ShowSprite()
{
_animatedSprite.Show();
}
public void HideSprite()
{
_animatedSprite.Hide();
}
public void SetAnimation(Vector2 velocity) public void SetAnimation(Vector2 velocity)
{ {
if (velocity.X == 0 && velocity.Y == 0) if (velocity.X == 0 && velocity.Y == 0)
@ -78,6 +90,38 @@ public partial class PlayerAnimationProvider : Node2D
_blinkTween.Play(); _blinkTween.Play();
} }
public void PlayTeleportAnimation()
{
if (BlinkMaterial == null) return;
_animatedSprite.Material = BlinkMaterial;
var material = ((ShaderMaterial)_animatedSprite.Material);
_blinkTween?.Kill();
_blinkTween = GTweenSequenceBuilder.New()
.Append(material.TweenPropertyFloat(TeleportProgressPropertyName, 0f, 0f))
.Append(material.TweenPropertyFloat(ScanlineDensityPropertyName, 0f, 0f))
.Append(material.TweenPropertyFloat(ScanlineDensityPropertyName,50f,0.5f))
.Join(material.TweenPropertyFloat(TeleportProgressPropertyName, 1f,0.5f))
.Build();
_blinkTween.Play();
}
public void PlayUnteleportAnimation()
{
if (BlinkMaterial == null) return;
_animatedSprite.Material = BlinkMaterial;
var material = ((ShaderMaterial)_animatedSprite.Material);
_blinkTween?.Kill();
_blinkTween = GTweenSequenceBuilder.New()
.Append(material.TweenPropertyFloat(TeleportProgressPropertyName, 1f, 0f))
.Append(material.TweenPropertyFloat(ScanlineDensityPropertyName, 50f, 0f))
.Append(material.TweenPropertyFloat(ScanlineDensityPropertyName,0f,0.5f))
.Join(material.TweenPropertyFloat(TeleportProgressPropertyName, 0f,0.5f))
.Build();
_blinkTween.Play();
}
private void SetShaderTeleportProgress(float value) private void SetShaderTeleportProgress(float value)
{ {
((ShaderMaterial)_animatedSprite.Material).SetShaderParameter("teleport_progress", value); ((ShaderMaterial)_animatedSprite.Material).SetShaderParameter("teleport_progress", value);
@ -103,4 +147,6 @@ public partial class PlayerAnimationProvider : Node2D
{ {
_shieldParticles.Emitting = true; _shieldParticles.Emitting = true;
} }
} }

View file

@ -8,9 +8,21 @@ public partial class PlayerHitboxSpriteProvider : Node2D
public AnimatedSprite2D Hitbox { get; private set; } public AnimatedSprite2D Hitbox { get; private set; }
[Export] [Export]
public AnimatedSprite2D Circle { get; private set; } public AnimatedSprite2D Circle { get; private set; }
[Export]
public AnimatedSprite2D Square { get; private set; }
[Export] public float RotationSpeed { get; private set; } = 10f;
public override void _Process(double delta)
{
if (!Visible) return;
Circle.Rotate((float)(RotationSpeed * delta));
Square.Rotate((float)(-RotationSpeed * delta));
}
public void SetVisibility(bool isVisible) public void SetVisibility(bool isVisible)
{ {
if (isVisible == Visible) return;
if (isVisible) if (isVisible)
{ {
Show(); Show();

View file

@ -78,7 +78,7 @@ public partial class Active : PlayerFSMState
// enable sprite // enable sprite
// enable crosshair // enable crosshair
_crosshairProvider.Show(); _crosshairProvider.Show();
_animationProvider.ShowSprite();
_damageReceiver.Enabled = true; _damageReceiver.Enabled = true;
_activationProvider.Enabled = true; _activationProvider.Enabled = true;
} }

View file

@ -14,12 +14,12 @@ public partial class Cutscene : PlayerFSMState
public override void ExitState() public override void ExitState()
{ {
_animationProvider.SetAnimation(Vector2.Zero);
} }
public override void ProcessState(double delta) public override void ProcessState(double delta)
{ {
_animationProvider.SetAnimation(_stateMachine.Velocity);
} }
public override void PhysicsProcessState(double delta) public override void PhysicsProcessState(double delta)

View file

@ -9,7 +9,7 @@ public partial class Teleporting : PlayerFSMState
public override void EnterState() public override void EnterState()
{ {
_animationProvider.PlayTeleportAnimation();
} }
public override void ExitState() public override void ExitState()

View file

@ -0,0 +1,29 @@
using Godot;
namespace Cirno.Scripts.Components.FSM.Player;
public partial class UnTeleporting : PlayerFSMState
{
[Export]
private PlayerAnimationProvider _animationProvider;
public override void EnterState()
{
_animationProvider.PlayUnteleportAnimation();
}
public override void ExitState()
{
}
public override void ProcessState(double delta)
{
}
public override void PhysicsProcessState(double delta)
{
}
}

View file

@ -0,0 +1 @@
uid://br2ev58gwuvu4

View file

@ -3,6 +3,7 @@ using System;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Cirno.Scripts; using Cirno.Scripts;
using Cirno.Scripts.Components.FSM;
using Cirno.Scripts.Resources; using Cirno.Scripts.Resources;
using Godot.Collections; using Godot.Collections;
using Cirno.Scripts.Utils; using Cirno.Scripts.Utils;
@ -12,11 +13,11 @@ public partial class GameManager : Node2D
public static GameManager Instance { get; private set; } public static GameManager Instance { get; private set; }
private Hud _hud; private Hud _hud;
private PlayerMovement _player; private PlayerStateMachine _player;
public GameState GameState { get; private set; } public GameState GameState { get; private set; }
public PlayerMovement Player => _player; public PlayerStateMachine Player => _player;
private Node2D _cameraTarget; private Node2D _cameraTarget;
@ -132,17 +133,17 @@ public partial class GameManager : Node2D
if (_player != null && _hud != null) if (_player != null && _hud != null)
{ {
_player.HealthChanged += (newHealth, maxHealth) => _hud.UpdateHealth(newHealth, maxHealth); // _player.HealthChanged += (newHealth, maxHealth) => _hud.UpdateHealth(newHealth, maxHealth);
//
_player.ShieldChanged += (newShield, maxShield) => _hud.UpdateShield(newShield, maxShield); // _player.ShieldChanged += (newShield, maxShield) => _hud.UpdateShield(newShield, maxShield);
//
_player.InteractableAreaEntered += (interactable) => _hud.UpdateInteractable(interactable); // _player.InteractableAreaEntered += (interactable) => _hud.UpdateInteractable(interactable);
//
_player.Death += () => // _player.Death += () =>
{ // {
// Show Game Over // // Show Game Over
_hud.ShowGameOver(); // _hud.ShowGameOver();
}; // };
} }
else else
{ {
@ -159,7 +160,7 @@ public partial class GameManager : Node2D
if (_player != null) return; if (_player != null) return;
//_player = this.CreateChild<PlayerMovement>(PlayerTemplate, PlayerSpawnMarker.Position ); //_player = this.CreateChild<PlayerMovement>(PlayerTemplate, PlayerSpawnMarker.Position );
_player = PlayerTemplate.Instantiate<PlayerMovement>(); _player = PlayerTemplate.Instantiate<PlayerStateMachine>();
this.CallDeferred("add_child", _player); this.CallDeferred("add_child", _player);
_player.Transform = this.GlobalTransform; _player.Transform = this.GlobalTransform;

View file

@ -88,7 +88,8 @@ public partial class Hud : CanvasLayer
public void HideGameOver() public void HideGameOver()
{ {
_gameOverPanel.Hide();
_playerDead = false;
} }
public void UpdateHealth(float newHealth, float maxHealth) public void UpdateHealth(float newHealth, float maxHealth)

View file

@ -585,6 +585,7 @@ public enum PlayerState
Active, Active,
Cutscene, Cutscene,
Teleporting, Teleporting,
UnTeleporting,
Controlling, Controlling,
Dead, Dead,
} }

View file

@ -30,16 +30,18 @@ public partial class ControlEnemyEvent : EventResource
if (_parent.GetNode<Node2D>(Target) is Enemy enemy) if (_parent.GetNode<Node2D>(Target) is Enemy enemy)
{ {
_gameManager.CameraTargetObject(enemy); _gameManager.CameraTargetObject(enemy);
_gameManager.Player.RequestMovementDisable(true); GameManager.Instance.Player.SetState((int)PlayerState.Controlling);
// _gameManager.Player.RequestMovementDisable(true);
enemy.AssumeControl(); enemy.AssumeControl();
if (_gameManager.Player.WingsSprite != null) // TODO: Do this on the enemy as a module instead
{ // if (_gameManager.Player.WingsSprite != null)
var sprite = new Sprite2D(); // {
sprite.SetTexture(_gameManager.Player.WingsSprite); // var sprite = new Sprite2D();
//sprite.GlobalPosition = enemy.GlobalPosition; // sprite.SetTexture(_gameManager.Player.WingsSprite);
sprite.SetZIndex(1); // //sprite.GlobalPosition = enemy.GlobalPosition;
enemy.CallDeferred("add_child", sprite); // sprite.SetZIndex(1);
} // enemy.CallDeferred("add_child", sprite);
// }
} }
_isComplete = true; _isComplete = true;

View file

@ -35,7 +35,8 @@ public partial class MovePlayerEvent : EventResource
protected async Task MovePlayer() protected async Task MovePlayer()
{ {
_gameManager.Player.RequestMovementDisable(true); GameManager.Instance.Player.SetState((int)PlayerState.Cutscene);
//_gameManager.Player.RequestMovementDisable(true);
Tween tween = _gameManager.GetTree().CreateTween(); Tween tween = _gameManager.GetTree().CreateTween();
tween.SetEase(EaseType); tween.SetEase(EaseType);
@ -45,7 +46,8 @@ public partial class MovePlayerEvent : EventResource
// Wait for the tween to finish // Wait for the tween to finish
await ToSignal(tween, "finished"); await ToSignal(tween, "finished");
_gameManager.Player.RequestMovementDisable(false); GameManager.Instance.Player.SetState((int)PlayerState.Active);
//_gameManager.Player.RequestMovementDisable(false);
_isComplete = true; _isComplete = true;
} }

View file

@ -18,7 +18,7 @@ public partial class UpdateCheckPointEvent : EventResource
public override void Start(Node2D parent) public override void Start(Node2D parent)
{ {
_gameManager.LastCheckpointPosition = parent.GetNode<Node2D>(Target).GlobalPosition; _gameManager.LastCheckpointPosition = parent.GetNode<Node2D>(Target).GlobalPosition;
_gameManager.Player.LastCheckPointPosition = parent.GetNode<Node2D>(Target).GlobalPosition; // _gameManager.Player.LastCheckPointPosition = parent.GetNode<Node2D>(Target).GlobalPosition;
} }
public override void UpdateEvent(double delta) public override void UpdateEvent(double delta)

BIN
Sprites/Actors/Focus_Circle.aseprite (Stored with Git LFS)

Binary file not shown.

BIN
Sprites/Actors/Focus_Circle.png (Stored with Git LFS)

Binary file not shown.

BIN
Sprites/Actors/Focus_Circle_Square.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://n68m6gxcl41m"
path="res://.godot/imported/Focus_Circle_Square.png-8eda7cd14725156c59a96412942992f8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Sprites/Actors/Focus_Circle_Square.png"
dest_files=["res://.godot/imported/Focus_Circle_Square.png-8eda7cd14725156c59a96412942992f8.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=1

BIN
Sprites/Actors/Focus_Square.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bc4tp44e00g0d"
path="res://.godot/imported/Focus_Square.png-b4bb48d5fd73952480ca8cfacec16844.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Sprites/Actors/Focus_Square.png"
dest_files=["res://.godot/imported/Focus_Square.png-b4bb48d5fd73952480ca8cfacec16844.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=1