/// <summary> /// Place word in gameboard /// </summary> /// <param name="word"></param> /// <param name="firstLetterIndex"></param> /// <param name="secondLetterIndex"></param> public void PlacedInBoard(string word, int firstLetterIndex, int secondLetterIndex) { // Insantiate wordHolder GameObject wordHolder = Instantiate(LetterManager.GameBoardWordHolder); for (int i = 0; i < 12; i++) { LetterBlock block = null; if (i < word.Length) { block = LetterManager.InstantiateLetterButton(word[i], i == firstLetterIndex, i == secondLetterIndex); } if (block != null) { block.GetComponent <Image>().material = block.IsWalkingLetter() ? FixedLetterOtherPlayerMaterial : PlayerLetterOtherPlayerMaterial; block.transform.SetParent(wordHolder.transform, false); block.GetComponent <Button>().interactable = false; } else { GameObject emptyPlaceHolder = Instantiate(LetterManager.PlaceHolderObject); emptyPlaceHolder.transform.SetParent(wordHolder.transform, false); } } wordHolder.transform.SetParent(LetterManager.GameBoardWordContainer.transform, false); }
internal LetterPosition(int row, int index, LetterBlock letterBlock) { Id = 1; Row = row; CurrentIndex = index; LetterBlock = letterBlock; }
/// <summary> /// Method to remove the letters from the writingboard and place them back to the playerboard /// </summary> /// <param name="block"></param> private void RemoveLetterFromWritingBoardToPlayerBoard(LetterBlock block) { // Het weghalen van de letter LetterPosition letterClicked = PlacedLetters.FirstOrDefault(x => x.LetterBlock == block); int row = letterClicked.GetRow(); int oldIndex = letterClicked.GetOldIndex(); int currentIndex = letterClicked.GetCurrentIndex(); letterClicked.RemoveLetter(); // Placeholder verwijderen GameObject parentRow = GetRightRow(row); Transform placeHolder = parentRow.transform.GetChild(oldIndex); DestroyImmediate(placeHolder.gameObject); // Nieuw, leeg block toevoegen in writingBoard GameObject emptyBlock = Instantiate(EmptyLetterBlockObject); //block.transform.localScale += new Vector3(0.1f, 0, 0); emptyBlock.transform.SetParent(WritingBoard.transform, false); emptyBlock.transform.SetSiblingIndex(currentIndex); block.transform.SetParent(parentRow.transform, false); block.transform.SetSiblingIndex(oldIndex); }
/// <summary> /// Method to change the fixed letters after a word is placed /// </summary> /// <param name="madeWord"></param> /// <param name="isBot"></param> public void ChangeFixedLetters(string madeWord, bool isBot = false) { TheLetterManager.SecondLetter = TheLetterManager.FirstLetter; var lastIndex = madeWord.Length; TheLetterManager.FirstLetter = madeWord[lastIndex - 1]; if (isBot) { FirstLetterBlock.GetComponentInChildren <Text>().text = TheLetterManager.FirstLetter.ToString().ToUpper(); SecondLetterBlock.GetComponentInChildren <Text>().text = TheLetterManager.SecondLetter.ToString().ToUpper(); FirstLetterBlock.GetComponentsInChildren <Text>()[1].text = TheLetterManager.CharactersValues .First(x => x.Key == char.ToLower(TheLetterManager.FirstLetter)).Value.ToString(); SecondLetterBlock.GetComponentsInChildren <Text>()[1].text = TheLetterManager.CharactersValues .First(x => x.Key == char.ToLower(TheLetterManager.SecondLetter)).Value.ToString(); RemoveAllLetters(); } else { GameObject parentRow = GetRightRow(1); Transform placeHolder = parentRow.transform.GetChild(0); DestroyImmediate(placeHolder.gameObject); FirstLetterBlock = InstantiateLetterButton('?', true, false, 1, 0); parentRow = GetRightRow(1); placeHolder = parentRow.transform.GetChild(1); DestroyImmediate(placeHolder.gameObject); SecondLetterBlock = InstantiateLetterButton('?', false, true, 1, 1); if (GameInstance.instance.IsMultiplayer) { _gameBoard.CallRPCPlaceLtrz(TheLetterManager.FirstLetter.ToString(), true, false, 1, 0, 1); _gameBoard.CallRPCPlaceLtrz(TheLetterManager.SecondLetter.ToString(), false, true, 1, 1, 1); } } }
public void ChangeWalkingLetters(char FirstLetter, char SecondLetter) { foreach (Player player in Players) { LetterBlock firstLetter = player.LetterManager.InstantiateLetterButton(FirstLetter, true, false, 0, 0); LetterBlock secondLetter = player.LetterManager.InstantiateLetterButton(SecondLetter, false, true, 0, 1); } }
public void Take(LetterBlock block) { _block = block; _letter = block.Letter(); _thaum = block.Thaum(); _block.transform.SetParent(this.transform); _hasBlock = true; }
/// <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> /// Instantiate the starting letters (orange ones) /// </summary> private void InitStartingLetters() { FirstLetterBlock = InstantiateLetterButton(TheLetterManager.FirstLetter, true, false, 1, 0); SecondLetterBlock = InstantiateLetterButton(TheLetterManager.SecondLetter, false, true, 1, 1); if (GameInstance.instance.IsMultiplayer) { _gameBoard.CallRPCPlaceLtrz("?", true, false, 1, 0); _gameBoard.CallRPCPlaceLtrz("?", false, true, 1, 1); } }
/// <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(); }
private void LetterBlock_MouseDown(object sender, MouseButtonEventArgs e) { IsClicked = !IsClicked; if (IsClicked) { LetterBlock.CaptureMouse(); } else { LetterBlock.ReleaseMouseCapture(); } }
public void AddLetter(LetterBlock letter, int oldIndex, int row) { LetterBlock = letter; Row = row; OldIndex = oldIndex; }
public void RemoveLetter() { LetterBlock = null; SetRow(0); }
/// <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); } }