public VisitorListHelper(CrossBot bot) { BotRunner = bot; Connection = BotRunner.SwitchConnection; Config = BotRunner.Config; LastVisitorDiff = new VisitorDifference(Visitors); }
public async Task <IReadOnlyCollection <VisitorDifference.Difference> > UpdateNames(CancellationToken token) { var formattedList = "The following visitors are on the island:\n"; VisitorCount = 0; for (uint i = 0; i < VisitorListSize; ++i) { ulong offset = OffsetHelper.OnlineSessionVisitorAddress - (i * OffsetHelper.OnlineSessionVisitorSize); var bytes = await Connection.ReadBytesAsync((uint)offset, VisitorNameSize, token).ConfigureAwait(false); Visitors[i] = Encoding.UTF8.GetString(bytes).TrimEnd('\0'); string VisitorInformation = "Available slot"; if (!string.IsNullOrWhiteSpace(Visitors[i])) { VisitorCount++; VisitorInformation = Visitors[i]; } formattedList += $"#{i + 1}: {VisitorInformation}\n"; } VisitorFormattedString = formattedList; VisitorDifference currentVisitors = new VisitorDifference(Visitors); var toRet = LastVisitorDiff.GetDifferenceWith(currentVisitors); LastVisitorDiff = currentVisitors; return(toRet); }
public List <Difference> GetDifferenceWith(VisitorDifference other) { List <Difference> diffs = new List <Difference>(); foreach (var visitor in other.Visitors) { if (visitor != string.Empty && !Visitors.Contains(visitor)) { diffs.Add(new Difference(visitor, true)); } } foreach (var currentVisitor in Visitors) { if (currentVisitor != string.Empty && !other.Visitors.Contains(currentVisitor)) { diffs.Add(new Difference(currentVisitor, false)); } } return(diffs); }