protected override void HandleEvent(CaptureActivationEvent @event) { var onAvWorkstation = _antivirusWorkstationMatcherGroup.MatchingEntityKeys.Contains(@event.SubsystemEntityId); var systematicityModifier = 0; var actionModifier = 0; switch (@event.ActivationResult) { case CaptureActivationEvent.CaptureActivationResult.NoVirusPresent: systematicityModifier -= 1; break; case CaptureActivationEvent.CaptureActivationResult.GenomeAlreadyCaptured: break; case CaptureActivationEvent.CaptureActivationResult.SimpleGenomeCaptured: systematicityModifier += onAvWorkstation ? 2 : 1; break; case CaptureActivationEvent.CaptureActivationResult.ComplexGenomeCaptured: systematicityModifier += onAvWorkstation ? 3 : 2; break; } if (PlayerScoreMatcherGroup.TryGetMatchingEntity(@event.PlayerEntityId, out var playerTuple)) { playerTuple.Component2.Systematicity += systematicityModifier; playerTuple.Component2.ActionCompleted(ActivationEventScoring.GetMultiplier(@event.ActivationResult)); } }
protected override void HandleEvent(AnalyserActivationEvent @event) { if (PlayerScoreMatcherGroup.TryGetMatchingEntity(@event.PlayerEntityId, out var playerTuple)) { var avWorkstationInfected = _malwareMatcherGroup.MatchingEntities.Any(mw => mw.Component2.Value == @event.LocationEntityId); switch (@event.ActivationResult) { case AnalyserActivationEvent.AnalyserActivationResult.Error: // TODO: log break; case AnalyserActivationEvent.AnalyserActivationResult.NoSamplePresent: case AnalyserActivationEvent.AnalyserActivationResult.OutputContainerFull: playerTuple.Component2.ResourceManagement -= 1; break; case AnalyserActivationEvent.AnalyserActivationResult.AnalysisComplete: playerTuple.Component2.ResourceManagement += 1; // one extra if the workstation is infected playerTuple.Component2.Systematicity += 1 + (avWorkstationInfected ? 1 : 0); break; } playerTuple.Component2.ActionCompleted(ActivationEventScoring.GetMultiplier(@event.ActivationResult)); } }
protected override void HandleEvent(TransferActivationEvent @event) { if (PlayerScoreMatcherGroup.TryGetMatchingEntity(@event.PlayerEntityId, out var playerTuple)) { switch (@event.ActivationResult) { case TransferActivationEvent.TransferActivationResult.NoItemsPresent: break; case TransferActivationEvent.TransferActivationResult.PulledItem: case TransferActivationEvent.TransferActivationResult.PushedItem: case TransferActivationEvent.TransferActivationResult.SwappedItems: playerTuple.Component2.ResourceManagement += 1; break; } playerTuple.Component2.ActionCompleted(ActivationEventScoring.GetMultiplier(@event.ActivationResult)); } }
protected override void HandleEvent(AntivirusActivationEvent @event) { var onAvWorkstation = _antivirusWorkstationMatcherGroup.MatchingEntityKeys.Contains(@event.SubsystemEntityId); var resourceManagementModifier = 0; var systematicityModifier = 0; var actionModifier = 0; switch (@event.ActivationResult) { case AntivirusActivationEvent.AntivirusActivationResult.Error: // TODO: log break; case AntivirusActivationEvent.AntivirusActivationResult.NoVirusPresent: case AntivirusActivationEvent.AntivirusActivationResult.IncorrectGenome: resourceManagementModifier -= 1; systematicityModifier -= 1; break; case AntivirusActivationEvent.AntivirusActivationResult.SoloExtermination: resourceManagementModifier += 1; systematicityModifier += onAvWorkstation ? 2 : 1; break; case AntivirusActivationEvent.AntivirusActivationResult.CoopExtermination: resourceManagementModifier += 2; systematicityModifier += onAvWorkstation ? 3 : 2; break; } if (PlayerScoreMatcherGroup.TryGetMatchingEntity(@event.PlayerEntityId, out var playerTuple)) { playerTuple.Component2.ResourceManagement += resourceManagementModifier; playerTuple.Component2.Systematicity += systematicityModifier; playerTuple.Component2.ActionCompleted(ActivationEventScoring.GetMultiplier(@event.ActivationResult)); } }
protected override void HandleEvent(ScannerActivationEvent @event) { if (PlayerScoreMatcherGroup.TryGetMatchingEntity(@event.PlayerEntityId, out var playerTuple)) { var useOnAntivirusWorkstation = _antivirusWorkstationMatcherGroup.MatchingEntityKeys.Contains(@event.SubsystemEntityId); switch (@event.ActivationResult) { case ScannerActivationEvent.ScannerActivationResult.VirusAlreadyVisisble: playerTuple.Component2.Systematicity -= 1; break; case ScannerActivationEvent.ScannerActivationResult.NoVirusPresent: break; case ScannerActivationEvent.ScannerActivationResult.VirusRevealed: playerTuple.Component2.Systematicity += 1 + (useOnAntivirusWorkstation ? 1 : 0); break; } playerTuple.Component2.ActionCompleted(ActivationEventScoring.GetMultiplier(@event.ActivationResult)); } }