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;
///
/// When Condition is Equal to 0, Port is Disabled
///
public int Condition { get; set; }
///
/// Each time the port is used, there is 1/Quality chance to damage the Condition
///
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();
///
/// Determine whether this port can be connected with given port
///
public abstract IBaseCable MakeCable(IBasePort other);
public virtual void Init()
{
}
}