Beispiel #1
0
 public VisitorListHelper(CrossBot bot)
 {
     BotRunner       = bot;
     Connection      = BotRunner.SwitchConnection;
     Config          = BotRunner.Config;
     LastVisitorDiff = new VisitorDifference(Visitors);
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }