Сигналы NPC

This commit is contained in:
Евгений Титаренко 2024-08-25 11:26:01 +03:00
parent eeac3ad3de
commit 8e4304ebc6
2 changed files with 14 additions and 41 deletions

View file

@ -1,40 +0,0 @@
using Godot;
using System;
public partial class Node2d : CharacterBody2D
{
public const float Speed = 300.0f;
public const float JumpVelocity = -400.0f;
public override void _PhysicsProcess(double delta)
{
Vector2 velocity = Velocity;
// Add the gravity.
if (!IsOnFloor())
{
velocity += GetGravity() * (float)delta;
}
// Handle Jump.
if (Input.IsActionJustPressed("ui_accept") && IsOnFloor())
{
velocity.Y = JumpVelocity;
}
// Get the input direction and handle the movement/deceleration.
// As good practice, you should replace UI actions with custom gameplay actions.
Vector2 direction = Input.GetVector("ui_left", "ui_right", "ui_up", "ui_down");
if (direction != Vector2.Zero)
{
velocity.X = direction.X * Speed;
}
else
{
velocity.X = Mathf.MoveToward(Velocity.X, 0, Speed);
}
Velocity = velocity;
MoveAndSlide();
}
}

View file

@ -5,6 +5,9 @@ using Godot.Collections;
[Tool]
public partial class NPC : Node2D
{
[Signal]
public delegate void DialogEndedEventHandler();
[Export] public string NPCName;
[Export] public SpriteFrames Frames;
[Export] public string DefaultDialogLine;
@ -24,7 +27,17 @@ public partial class NPC : Node2D
public bool IsDialogEnded => _currentDialogLine == DialogLines.Count;
//Возвращаем строку диалога и увеличиваем счетчик текущей строки если диалог законче, и возвращаем строку по-умолчанию, если диалог законен.
public string Message => IsDialogEnded ? DefaultDialogLine : DialogLines[_currentDialogLine++];
public string Message
{
get
{
if (_currentDialogLine + 1 == DialogLines.Count)
{
EmitSignal(SignalName.DialogEnded);
}
return IsDialogEnded ? DefaultDialogLine : DialogLines[_currentDialogLine++];
}
}
public override void _Ready()
{