Exemple #1
0
        /// <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);
     }
 }
Exemple #6
0
    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();
        }
Exemple #10
0
    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);
            }
        }