protected override void OnProcessOutputSchema(MutableObject newSchema) { foreach (var entry in ScoreEntries.GetEntries(newSchema)) { RcsPatchingTarget.SetValue(true, entry); NdsPatchingTarget.SetValue(false, entry); } base.OnProcessOutputSchema(newSchema); }
public override IEnumerator ReceivePayload(VisualPayload payload) { // construct offlines dictionary var offlines = new Dictionary <IntPair, CsOfflineReason>(); foreach (var entry in CsOfflineScope.GetEntries(payload.Data)) { var teamId = OfflineTeamId.GetValue(entry); var csId = OfflineCsId.GetValue(entry); var offlineReason = OfflineReason.GetValue(entry); offlines[new IntPair(csId, teamId)] = offlineReason; } // check each score entry against the offlines dictionary foreach (var entry in ScoreEntries.GetEntries(payload.Data)) { var teamId = ScoreTeamId.GetValue(entry); var csId = ScoreCsId.GetValue(entry); var idPair = new IntPair(csId, teamId); bool patchingRcs = false; bool patchingNds = false; if (offlines.ContainsKey(idPair)) { var reason = offlines[idPair]; patchingRcs = reason == CsOfflineReason.Rcs || reason == CsOfflineReason.Both; patchingNds = reason == CsOfflineReason.Ids || reason == CsOfflineReason.Both; } RcsPatchingTarget.SetValue(patchingRcs, entry); NdsPatchingTarget.SetValue(patchingNds, entry); } var iterator = Router.TransmitAll(payload); while (iterator.MoveNext()) { yield return(null); } }