Система диалогов.
This commit is contained in:
parent
3c1619ee9f
commit
2a2399dc2c
8 changed files with 264 additions and 88 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue