using System.Collections.Generic; using System.Linq; using YamlDotNet.Serialization; namespace Akari.Provider.WaveshareUART.Users { public class User { public string Name { get; private set; } public string Token { get; set; } public ushort Start { get; private set; } public ushort Position { get; private set; } [YamlIgnore()] public int Count => Position - Start; [YamlIgnore()] public IEnumerable ValidPositions => Enumerable.Range(Start, Count).Cast(); public User() { } public User(string name, string token, ushort start) { Name = name; Token = token; Start = start; Position = Start; } public bool IncrementPosition() { if (Count < UsersManager.RangeLength) { Position++; return true; } return false; } public bool IsFull() => Count >= UsersManager.RangeLength; public bool IsInRange(int position) => position >= Start && position < Position; public void ResetPosition() { Position = Start; } public override string ToString() => Name; } }