private void OnNumberUnmarked(object sender, CardNumberUnmarkedEventArgs e) { var rowIndex = e.NumberVerticalIndex; var columnIndex = BingoLetterCaster.BingoLetterToInt(e.NumberColumnLetter); _markedNumbersMap[rowIndex, columnIndex] = UnmarkedNumber; }
public void ApplyBingoBallModel(BingoBall ball) { if (ball == null) { throw new ArgumentNullException("ball"); } _letterText.text = BingoLetterCaster.BingoLetterToString(ball.Letter); _numberText.text = ball.Number.ToString(CultureInfo.InvariantCulture); }
private void InitializeCardNumbersMap() { for (var rowIndex = 0; rowIndex < RowsCount; rowIndex++) { for (var columnIndex = 0; columnIndex < ColumnsCount; columnIndex++) { var cardNumberView = _cardNumberViewsMap[rowIndex, columnIndex]; var letter = BingoLetterCaster.IntToBingoLetter(columnIndex); var number = _numbersOnCard[rowIndex, columnIndex]; cardNumberView.Initialize(letter, rowIndex, number); cardNumberView.Marked += OnNumberMarked; cardNumberView.Unmarked += OnNumberUnmarked; } } }
/// <summary> /// Generates unique number according specified letter /// </summary> /// <param name="letter"></param> /// <returns></returns> public int GenerateUniqueNumberForLetter(BingoLetter letter) { if (!CanGenerateNumberForLetter(letter)) { throw new Exception("All numbers for letter " + letter + " were already generated"); } var letterIndex = BingoLetterCaster.BingoLetterToInt(letter); var numbersList = _bingoNumberListsArray[letterIndex]; var randomIndexForPickNumber = Random.Range(0, numbersList.Count); // Pick number by random index in numbersList var randomNumber = numbersList[randomIndexForPickNumber]; // Remove picked number from list (we don't want generate this number again in further calls // to GenerateUniqueNumberForLetter() method) numbersList.RemoveAt(randomIndexForPickNumber); return(randomNumber); }
/// <summary> /// Checks if it's possible to generate number for specified letter /// </summary> /// <param name="letter"></param> /// <returns></returns> public bool CanGenerateNumberForLetter(BingoLetter letter) { var letterIndex = BingoLetterCaster.BingoLetterToInt(letter); return(_bingoNumberListsArray[letterIndex].Count > 0); }
private BingoLetter GenerateRandomBingoLetter() { var randomLetterIndex = UnityEngine.Random.Range(0, 5); return(BingoLetterCaster.IntToBingoLetter(randomLetterIndex)); }