38 lines
1.1 KiB
C#
38 lines
1.1 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 abstract void SetStatusConnected();
|
|
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()
|
|
{
|
|
}
|
|
|
|
}
|