Пример #1
0
        protected override void OnProcessOutputSchema(MutableObject newSchema)
        {
            var mut = new MutableObject
            {
                { "Teams", new List <int> {
                      0
                  } },
                { "CSID", 0 }
            };

            InfoTarget.SetValue(mut, newSchema);

            base.OnProcessOutputSchema(newSchema);
        }
Пример #2
0
        public override IEnumerator ReceivePayload(VisualPayload payload)
        {
            if (!SpoofData.GetFirstValue(payload.Data))
            {
                var binsetId = BinsetIdField.GetFirstValue(payload.Data);

                int        foundCsId;
                List <int> teams;

                if (binsetId > 0)
                {
                    var command = new GetBinsetInfoCommand(binsetId);

                    var commandIterator = CommandProcessor.Execute(command);
                    while (commandIterator.MoveNext())
                    {
                        yield return(null);
                    }


                    switch (command.Type)
                    {
                    case BinsetType.RefPatch:
                        teams = new List <int> {
                            8
                        };
                        break;

                    case BinsetType.Ref:
                        teams = new List <int> {
                            1, 2, 3, 4, 5, 6, 7, 8
                        };
                        break;

                    case BinsetType.Rcs:
                        teams = command.Submissions.Select(s => s.Team).Distinct().OrderBy(v => v).ToList();
                        break;

                    default:
                        throw new Exception("Unknown binset type!");
                    }

                    foundCsId = command.CsId;
                }
                else
                {
                    teams = new List <int> {
                        8
                    };
                    foundCsId = -1;
                }

                var mut = new MutableObject
                {
                    { "Teams", teams },
                    { "CSID", foundCsId }
                };

                InfoTarget.SetValue(mut, payload.Data);
            }
            else
            {
                InfoTarget.SetValue(new List <int> {
                    8
                }, payload.Data);
            }

            var routerIterator = Router.TransmitAll(payload);

            while (routerIterator.MoveNext())
            {
                yield return(null);
            }
        }