private void HandleBInteractEnded() { Audio.PlayGameSoundAtTransform(KMSoundOverride.SoundEffect.BigButtonRelease, BSelectable.transform); B.Released(); logger.DEBUG("B->RELEASED"); if (moduleState != ModuleStateE.ACTIVE) { return; } Signal solution; switch (BombInfo.GetStrikes()) { case 0: solution = solutionSignalsNoStrikes.Get(inputSignal); break; case 1: solution = solutionSignalsOneStrike.Get(inputSignal); break; default: solution = solutionSignalsTwoStrikes.Get(inputSignal); break; } if (generatorSignal == solution) { logger.DEBUG(string.Format("PASS! INPUT:{0} GENERATOR:{1} SOLUTION:{2} ", inputSignal.ToString(), generatorSignal.ToString(), solution.ToString())); moduleState = ModuleStateE.DISARMED; logger.DEBUG(string.Format("STATE:{0}", moduleState.ToString())); BombModule.HandlePass(); } else { logger.DEBUG(string.Format("STRIKE! INPUT:{0} GENERATOR:{1} SOLUTION:{2}", inputSignal.ToString(), generatorSignal.ToString(), solution.ToString())); BombModule.HandleStrike(); } }
// room shown, lights not yet on public void Awake() { moduleState = ModuleStateE.AWAKE; logger.DEBUG(string.Format("STATE:{0}", moduleState.ToString())); }
// timer starts, light is on public void Activate() { moduleState = ModuleStateE.ACTIVE; logger.DEBUG(string.Format("STATE:{0}", moduleState.ToString())); }
// bomb generation (loading screen) public void Start() { moduleState = ModuleStateE.START; logger.DEBUG(string.Format("STATE:{0}", moduleState.ToString())); string seedStr = string.Format("{0}{1}", BombInfo.GetSerialNumber(), moduleId); byte[] seedBytes = new MD5CryptoServiceProvider().ComputeHash(ASCIIEncoding.ASCII.GetBytes(seedStr)); int seedInt = System.BitConverter.ToInt32(seedBytes, 0); Random.InitState(seedInt); logger.DEBUG(string.Format("Seed: {0}", seedInt)); BombModule.OnActivate += Activate; S1 = new Switch(S1Obj, Switch.StateE.DOWN); S1Selectable = S1Obj.GetComponent <KMSelectable>(); S1Selectable.OnInteract += delegate() { HandleS1Interact(); return(false); }; S2 = new Switch(S2Obj, Switch.StateE.DOWN); S2Selectable = S2Obj.GetComponent <KMSelectable>(); S2Selectable.OnInteract += delegate() { HandleS2Interact(); return(false); }; S3 = new Switch(S3Obj, Switch.StateE.DOWN); S3Selectable = S3Obj.GetComponent <KMSelectable>(); S3Selectable.OnInteract += delegate() { HandleS3Interact(); return(false); }; CS = new Selector(CSObj, Selector.StateE.LEFT); CSSelectable = CSObj.GetComponent <KMSelectable>(); CSSelectable.OnInteract += delegate() { HandleCSInteract(); return(false); }; B = new Button(BObj); BSelectable = BObj.GetComponent <KMSelectable>(); BSelectable.OnInteract += delegate() { HandleBInteract(); return(false); }; BSelectable.OnInteractEnded += delegate() { HandleBInteractEnded(); }; S1Mapping = new SwitchStateMapping(); logger.DEBUG(string.Format("S1 Mapping: {0}", S1Mapping.ToString())); S2Mapping = new SwitchStateMapping(); logger.DEBUG(string.Format("S2 Mapping: {0}", S2Mapping.ToString())); S3Mapping = new SwitchStateMapping(); logger.DEBUG(string.Format("S3 Mapping: {0}", S3Mapping.ToString())); switchMapping = new SwitchMapping(); logger.DEBUG(string.Format("SwitchMapping: {0}", switchMapping.ToString())); inputSignal = new Signal(); logger.DEBUG(string.Format("INPUT: {0}", inputSignal.ToString())); solutionSignalsNoStrikes = new SolutionSignals(SolutionSignalsNoStrikesJson); solutionSignalsOneStrike = new SolutionSignals(SolutionSignalsOneStrikeJson); solutionSignalsTwoStrikes = new SolutionSignals(SolutionSignalsTwoStrikesJson); Triple switchesMapped = switchMapping.Map(new Triple(S1Mapping.Map(S1.State), S2Mapping.Map(S2.State), S3Mapping.Map(S3.State))); generatorSignal = new Signal( (Signal.CoefficientE)switchesMapped.OBJ1, (Signal.CoefficientE)switchesMapped.OBJ2, (Signal.CoefficientE)switchesMapped.OBJ3); logger.DEBUG(string.Format("GENERATOR: {0}", generatorSignal.ToString())); scope = new Scope(scopeObj, (CS.State == Selector.StateE.LEFT) ? Scope.ChannelE.A : Scope.ChannelE.B, inputSignal, generatorSignal, false, SignalTextureOffsetsJson); GameInfo.OnLightsChange += HandleLightChange; }