Система диалогов.

This commit is contained in:
Евгений Титаренко 2024-08-19 18:06:14 +03:00
parent 3c1619ee9f
commit 2a2399dc2c
8 changed files with 264 additions and 88 deletions

View file

@ -7,15 +7,31 @@ public partial class NPC : Node2D
{
[Export] public string NPCName;
[Export] public SpriteFrames Frames;
[Export] public string DefaultDialogLine;
[Export] public Array<string> DialogLines = new Array<string>();
public bool Flip
{
get => _sprite.FlipH;
set => _sprite.FlipH = value;
}
private AnimatedSprite2D _sprite;
private int _currentDialogLine;
//Диалог закончен, если больше нет строк диалога.
public bool IsDialogEnded => _currentDialogLine == DialogLines.Count;
//Возвращаем строку диалога и увеличиваем счетчик текущей строки если диалог законче, и возвращаем строку по-умолчанию, если диалог законен.
public string Message => IsDialogEnded ? DefaultDialogLine : DialogLines[_currentDialogLine++];
public override void _Ready()
{
_sprite = (AnimatedSprite2D)FindChild("AnimatedSprite2D");
if (Frames is not null) _sprite.SpriteFrames = Frames;
_sprite.Play("default");
_currentDialogLine = 0;
}
public override void _Process(double delta)
@ -30,18 +46,6 @@ public partial class NPC : Node2D
}
}
public void test()
{
if (_sprite.Animation == "walk")
{
_sprite.Play("default");
}
else
{
_sprite.Play("walk");
}
}
private void _on_interactable_player_near_by(Player player)
{
player.InteractableObjects.Add(this);