Files
Enigmos/Ports/BasePort.cs
2024-07-13 09:29:45 +01:00

47 lines
1.3 KiB
C#

using Godot;
using Nocturnis.Enigmos.Cables;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Ports;
namespace Enigmos.Ports;
public abstract partial class BasePort : TextureButton, IBasePort
{
public virtual Vector2 PositionToBoard => Position + PivotOffset + Module?.PositionToBoard ?? Vector2.Zero;
/// <summary>
/// When Condition is Equal to 0, Port is Disabled
/// </summary>
public int Condition { get; set; }
/// <summary>
/// Each time the port is used, there is 1/Quality chance to damage the Condition
/// </summary>
public int Quality { get; set; }
public IBaseModule Module { get; set; }
public abstract bool IsMatch(IBasePort oth);
public IBasePort ConnectedPort { get; set; }
public bool Connected => ConnectedPort != null;
public abstract void SetStatusPending();
public virtual void SetStatusConnected()
{
PostConnect();
}
public abstract void SetStatusNormal();
/// <summary>
/// Determine whether this port can be connected with given port
/// </summary>
public abstract IBaseCable MakeCable(IBasePort other);
public virtual void Init()
{
}
public void Connect() => this.ExtConnect();
public virtual void PostConnect()
{
}
}