2022-11-10 20:29:53 -08:00
|
|
|
using Godot;
|
2022-11-25 11:59:55 -08:00
|
|
|
using SupaLidlGame.Utils;
|
2022-11-10 20:29:53 -08:00
|
|
|
|
2023-06-03 18:21:46 -07:00
|
|
|
namespace SupaLidlGame.Characters;
|
|
|
|
|
|
|
|
public partial class Player : Character
|
2022-11-10 20:29:53 -08:00
|
|
|
{
|
2023-06-03 18:21:46 -07:00
|
|
|
private AnimatedSprite2D _sprite;
|
|
|
|
private string _spriteAnim;
|
2022-11-19 21:21:12 -08:00
|
|
|
|
2023-06-03 18:21:46 -07:00
|
|
|
[Export]
|
|
|
|
public PlayerCamera Camera { get; set; }
|
2022-11-25 11:59:55 -08:00
|
|
|
|
2023-06-03 18:21:46 -07:00
|
|
|
public string Animation
|
|
|
|
{
|
|
|
|
get => _sprite.Animation;
|
|
|
|
set
|
2022-11-19 21:21:12 -08:00
|
|
|
{
|
2023-06-03 18:21:46 -07:00
|
|
|
// the Player.Animation property might be set before this node is
|
|
|
|
// even ready, so if _sprite is null, then we just hold the new
|
|
|
|
// animation in a temp value, which will be assigned once this node
|
|
|
|
// is ready
|
|
|
|
if (_sprite is null)
|
2022-11-19 21:21:12 -08:00
|
|
|
{
|
2023-06-03 18:21:46 -07:00
|
|
|
_spriteAnim = value;
|
|
|
|
return;
|
2022-11-19 21:21:12 -08:00
|
|
|
}
|
|
|
|
|
2023-06-03 18:21:46 -07:00
|
|
|
_sprite.Play(value);
|
2022-11-19 21:21:12 -08:00
|
|
|
}
|
2023-06-03 18:21:46 -07:00
|
|
|
}
|
2022-11-19 21:21:12 -08:00
|
|
|
|
2023-06-03 18:21:46 -07:00
|
|
|
public override void _Ready()
|
|
|
|
{
|
|
|
|
_sprite = GetNode<AnimatedSprite2D>("Sprite");
|
|
|
|
if (_spriteAnim != default)
|
2022-11-19 21:21:12 -08:00
|
|
|
{
|
2023-06-03 18:21:46 -07:00
|
|
|
_sprite.Animation = _spriteAnim;
|
2022-11-25 09:11:46 -08:00
|
|
|
}
|
2023-06-03 18:21:46 -07:00
|
|
|
}
|
2022-11-25 09:11:46 -08:00
|
|
|
|
2023-06-03 18:21:46 -07:00
|
|
|
public override void ModifyVelocity()
|
|
|
|
{
|
|
|
|
if (StateMachine.CurrentState is SupaLidlGame.State.Character.PlayerRollState)
|
2022-11-25 09:11:46 -08:00
|
|
|
{
|
2023-06-03 18:21:46 -07:00
|
|
|
Velocity *= 2;
|
2022-11-25 09:11:46 -08:00
|
|
|
}
|
|
|
|
|
2023-06-03 18:21:46 -07:00
|
|
|
base.ModifyVelocity();
|
|
|
|
}
|
|
|
|
|
|
|
|
public override void Stun(float time)
|
|
|
|
{
|
|
|
|
base.Stun(time);
|
|
|
|
Camera.Shake(2, 0.8f);
|
|
|
|
// TODO: implement visual effects for stun
|
|
|
|
}
|
|
|
|
|
|
|
|
public override void Die()
|
|
|
|
{
|
|
|
|
GD.Print("died");
|
|
|
|
//base.Die();
|
2022-11-13 15:42:04 -08:00
|
|
|
}
|
2022-11-10 20:29:53 -08:00
|
|
|
}
|