public void UpdateAvailableNumbers(int number, bool numberState, bool selectCube) { // Update available numbers map/array int prevCount = CountAvailableNumbersForCube(); AvailableNumbersForCube[number - 1] = numberState; int newCount = CountAvailableNumbersForCube(); // Only notify board if the available numbers changed if (prevCount != newCount) { // If the cube is newly selected if (selectCube) { OnAvailableNumbersUpdateSelect.Invoke(CubeIndices, prevCount, newCount); } // Remaining cases - where you simply adjust count map from propagation // NB - should only adjust count map if the number is not yet set/selected else if (CubeNumber == 0) { OnAvailableNumbersUpdatePropagate.Invoke(CubeIndices, prevCount, newCount); } } }
public void AddOnAvailableNumbersUpdateEventListener(UnityAction <Vector2Int, int, int> onAvailableNumbersUpdateCallback, bool select, bool deselect) { if ((select) && (OnAvailableNumbersUpdateSelect != null)) { OnAvailableNumbersUpdateSelect.AddListener(onAvailableNumbersUpdateCallback); } else if (OnAvailableNumbersUpdatePropagate != null) { OnAvailableNumbersUpdatePropagate.AddListener(onAvailableNumbersUpdateCallback); } }