void IStateChange.OnStateChanged() { List <VirtualClick> pressedHandlers = GetPressedVirtualButtonHandler(); // Nothing is selected --> reset currentselectedButton if (pressedHandlers.Count == 0) { if (currentSelectedButton != null) { currentSelectedButton.elapsedTime = VirtualClick.TIME_DELAY; currentSelectedButton = null; } vibrateEnabled = false; coinHandler.RemoveCoin(); } // If one is selected and the cooldown is over else if (pressedHandlers.Count == 1 && coolDown <= 0 && !isGameFinished) { currentSelectedButton = pressedHandlers[0]; UpdateMaterial(currentSelectedButton.buttonModel, selectedMaterial); coinHandler.SetCoinPosition(clickHandler.IndexOf(currentSelectedButton)); } // More than one is selected --> indicate error else if (pressedHandlers.Count > 1 && !isGameFinished) { coinHandler.RemoveCoin(); if (currentSelectedButton != null) { currentSelectedButton.elapsedTime = VirtualClick.TIME_DELAY; currentSelectedButton = null; vibrateEnabled = false; } foreach (var vc in pressedHandlers) { UpdateMaterial(vc.buttonModel, errorMaterial); } } }