/// <summary> /// Method to instantiate a letterbutton /// </summary> /// <param name="letter"></param> /// <param name="isFirstLetter"></param> /// <param name="isSecondLetter"></param> /// <param name="row"></param> /// <param name="index"></param> /// <returns></returns> public LetterBlock InstantiateLetterButton(char letter, bool isFirstLetter = false, bool isSecondLetter = false, int row = 1, int?index = null) { LetterBlock block; block = (isFirstLetter || isSecondLetter) ? FixedLettersBlockObject : PlayerLetterBlockObject; return(Spawn(block, this, lttrBlock => { lttrBlock.IsFirstLetter = isFirstLetter; lttrBlock.IsSecondLetter = isSecondLetter; lttrBlock.OnLetterTouched += LetterTouched; //Todo //lttrBlock.OnLetterDragged += LetterDragged; lttrBlock.GetComponentsInChildren <Text>()[0].text = letter.ToString().ToUpper(); if (letter != '?') { lttrBlock.GetComponentsInChildren <Text>()[1].text = TheLetterManager.CharactersValues.First(x => x.Key == char.ToLower(letter)).Value.ToString(); } else { lttrBlock.GetComponentsInChildren <Text>()[1].text = ""; } GameObject parentRow = GetRightRow(row); lttrBlock.transform.SetParent(parentRow.transform, false); if (index != null) { lttrBlock.transform.SetSiblingIndex((int)index); } PlayerLetters.Add(new LetterPosition(row, lttrBlock.transform.GetSiblingIndex(), lttrBlock)); })); }
/// <summary> /// Method to add a char to a letterBlock /// </summary> /// <param name="row"></param> /// <param name="index"></param> /// <returns>LetterBlock</returns> public LetterBlock AddLetter(int row, int index) { List <char> myLetters = GetPlayerLetters().Select(p => char.ToLower(p?.LetterBlock?.GetLetter() ?? default)).ToList(); char[] letters = TheLetterManager.GetLetters(1, myLetters); LetterBlock block = InstantiateLetterButton(letters[0], false, false, row, index); PlayerLetters.Add(new LetterPosition(row, index, block)); return(block); }
/// <summary> /// Method that is called when a letter is touched /// </summary> /// <param name="block"></param> public void LetterTouched(LetterBlock block) { bool canMove = GameInstance.instance.IsMultiplayer ? (bool)PhotonNetwork.LocalPlayer.CustomProperties["CanMove"] : Player.CanMove; if (!canMove) { return; } // Wanneer hij in de lijst placedLetters staat, moet deze terug naar beneden gezet worden, anders naar boven if (PlacedLetters.Select(x => x.LetterBlock).Contains(block)) { RemoveLetterFromWritingBoardToPlayerBoard(block); CheckWordAndSetSubmitButtonState(); return; } // When firstletter isn't placed yet, make sure second letter does nothing if (block == SecondLetterBlock && !PlacedLetters.Select(x => x.LetterBlock).Contains(FirstLetterBlock)) { return; } // Wanneer er meer dan 12 zijn, niks doen if (PlacedLetters.Count(x => x.LetterBlock != null) >= 12) { return; } // Find the block in de playerletters LetterPosition letterBlock = PlayerLetters.FirstOrDefault(x => x.LetterBlock == block); // Find the first empty block in PlacedLetters LetterPosition EmptyLetterBlock = PlacedLetters.FirstOrDefault(x => x.LetterBlock == null); // De geklikte letter toevoegen aan EmptyLetterBlock en values overnemen EmptyLetterBlock.AddLetter(block, letterBlock.GetCurrentIndex(), letterBlock.GetRow()); // Het lege object vinden om te kunnen destroyen Transform t = WritingBoard.transform.GetChild(EmptyLetterBlock.GetCurrentIndex()); Destroy(t.gameObject); // Het geklikte blokje verplaatsen naar de plaats van het lege object //block.transform.localScale -= new Vector3(0.1f, 0, 0); block.transform.SetParent(WritingBoard.transform, false); block.transform.SetSiblingIndex(EmptyLetterBlock.GetCurrentIndex()); // Een lege placeholder plaatsen waar de letter vandaan is gehaald GameObject ph = Instantiate(PlaceHolderObject); GameObject parentRow = GetRightRow(letterBlock.GetRow()); ph.transform.SetParent(parentRow.transform, false); ph.transform.SetSiblingIndex(letterBlock.GetCurrentIndex()); CheckWordAndSetSubmitButtonState(); }
/// <summary> /// Gets the letters to play with /// </summary> /// <returns>List of LetterPosition</returns> public List <LetterPosition> GetPlayerLetters() { List <LetterPosition> playerLetters = new List <LetterPosition>(); for (int row = 1; row <= 3; row++) { GameObject r = GetRightRow(row); LetterBlock[] b = r.GetComponentsInChildren <LetterBlock>(); foreach (LetterBlock block in b) { LetterPosition pos = PlayerLetters.FirstOrDefault(p => p.LetterBlock == block); playerLetters.Add(new LetterPosition(pos.GetRow(), pos.GetOldIndex(), block)); } } return(playerLetters); }
/// <summary> /// Currently not in use! To shuffle all the letters /// </summary> private void ShufflePlayerLetters() { Vector3 acceleration = Input.acceleration; _lowPassValue = Vector3.Lerp(_lowPassValue, acceleration, _lowPassFilterFactor); Vector3 deltaAcceleration = acceleration - _lowPassValue; _shuffleTimeRemaining -= Time.deltaTime; if (deltaAcceleration.sqrMagnitude >= _shakeDetectionThreshold && _shuffleTimeRemaining <= 0) { _shuffleTimeRemaining = 1; List <LetterBlock> letters = PlayerLetters.Select(x => x.LetterBlock).OrderBy(a => Random.Range(0, 100)).ToList(); for (int i = 0; i < PlayerLetters.Count; i++) { PlayerLetters[i].AddLetter(letters[i], PlayerLetters[i].GetOldIndex(), PlayerLetters[i].GetRow()); } } }
public MatchLabel(int div, int round, int matchNo, PlayerLetters letter) : this(div, round, matchNo) { Letter = letter; }
/// <summary> /// Method that will be called when a word will be placed /// </summary> /// <param name="points"></param> private void PlaceWordInGameBoard(long points = 0) { if (GameInstance.instance.IsMultiplayer) { //bestWords = Player.BestWordsThisGame.Select(w => w.word).ToList(); List <string> bestWords = Player.BestWordsThisGame.Select(w => w.word).ToList(); string w1 = bestWords.ElementAtOrDefault(0); string w2 = bestWords.ElementAtOrDefault(1); string w3 = bestWords.ElementAtOrDefault(2); long playerPoints = (long)PhotonNetwork.LocalPlayer.CustomProperties["Points"]; Hashtable hash = new Hashtable { { "Points", playerPoints + points }, { "BestWords1", w1 }, { "BestWords2", w2 }, { "BestWords3", w3 } }; PhotonNetwork.LocalPlayer.SetCustomProperties(hash); _gameBoard.CallRPC(points, PlacedLetters, PhotonNetwork.LocalPlayer.UserId); } else { //Instantiate wordHolder GameObject wordHolder = Instantiate(GameBoardWordHolder); int i = 0; // Walk through all the letters placed foreach (LetterPosition letterPos in PlacedLetters) { LetterBlock block = letterPos.LetterBlock; if (block == null) { continue; } i++; block.transform.SetParent(wordHolder.transform, false); block.GetComponent <Button>().interactable = false; // Replace placeholder with letter on playerBoard int row = letterPos.GetRow(); int index = letterPos.GetOldIndex(); int currentIndex = letterPos.GetCurrentIndex(); PlayerLetters.Remove(letterPos); if (!block.IsFirstLetter && !block.IsSecondLetter) { // Placeholders verwijderen GameObject parentRow = GetRightRow(row); Transform placeHolder = parentRow.transform.GetChild(index); DestroyImmediate(placeHolder.gameObject); } // Lege gameobjecten toevoegen aan writeboard GameObject emptyBlock = Instantiate(EmptyLetterBlockObject); emptyBlock.transform.SetParent(WritingBoard.transform, false); emptyBlock.transform.SetSiblingIndex(currentIndex); // Nieuwe playerletters aanmaken if (!block.IsFirstLetter && !block.IsSecondLetter) { AddLetter(row, index); } } int nrOfLetters = i; for (; i < 12; i++) { GameObject emptyPlaceHolder = Instantiate(PlaceHolderObject); emptyPlaceHolder.transform.SetParent(wordHolder.transform, false); } wordHolder.transform.SetParent(GameBoardWordContainer.transform, false); Vector3 pos = new Vector3(); pos.y = wordHolder.transform.position.y - 25; pos.x = wordHolder.transform.GetChild(nrOfLetters - 1).transform.position.x; ShowScoreGainedText(points, pos); } }