Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Method that will be called when a word is placed
        /// </summary>
        private void PlaceWord()
        {
            if (!PlaceBtn.IsActive())
            {
                ShowPlayerWhyInactive();
                return;
            }

            // Alleen wanneer mag versturen
            bool canMove = GameInstance.instance.IsMultiplayer ? (bool)PhotonNetwork.LocalPlayer.CustomProperties["CanMove"] : Player.CanMove;

            if (!canMove || !PlacedLetters.Any(x => x.LetterBlock != null))
            {
                return;
            }

            string madeWord = "";

            foreach (LetterBlock block in PlacedLetters.Select(x => x.LetterBlock).ToList())
            {
                if (block == null)
                {
                    continue;
                }
                madeWord += block.GetLetter();
            }
            if (!TheLetterManager.CheckWord(madeWord, out long points, PlacedLetters, Player))
            {
                return;
            }
            int bestWordIndex = Player.BestWordsThisGame.Count(word => word.points > points);

            Player.BestWordsThisGame.Insert(bestWordIndex, new Word(madeWord, points));
            if (DoubleWordValue)
            {
                points *= 2;
            }
            if (TripleWordValue)
            {
                points *= 3;
            }
            DoubleWordValue      = false;
            TripleWordValue      = false;
            Player.EarnedPoints += points;

            if (madeWord.Count() == 12)
            {
                Player.WordsWithTwelveLetters++;
            }

            //TheLetterManager.PlaceWordInGameBoard(PlacedLetters.Select(x => x.LetterBlock).ToList()); Verplaatsen naar TheLetterManager
            DynamicUi.PlayerManagerClass.NextTurn();
            PlaceWordInGameBoard(points);
            RemoveAllLettersFromPlayerBoard();
            ChangeFixedLetters(madeWord);
            GameBoardWordContainer.transform.parent.transform.parent.GetComponent <GameboardScroll>().ScrollDownBar();
            Player.IncreaseWordCount();
            SetPlaceBtnActivity(false);
            BoosterText.text = "";
        }
Ejemplo n.º 3
0
 /// <summary>
 /// To init all the positions of the placed letters
 /// </summary>
 private void InitPlacedLetterPositions()
 {
     for (int i = 0; i < 12; i++)
     {
         GameObject elbi = Instantiate(EmptyLetterBlockObject);
         elbi.transform.SetParent(WritingBoard.transform, false);
         PlacedLetters.Add(new LetterPosition(0, i, null));
     }
 }
Ejemplo n.º 4
0
        /// <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();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Method that will be called after each touch on a letter
        /// </summary>
        /// <param name="placeBtnClick"></param>
        private void CheckWordAndSetSubmitButtonState(bool placeBtnClick = false)
        {
            string madeWord = "";

            if (PlacedLetters.All(x => x.LetterBlock == null))
            {
                if (placeBtnClick)
                {
                    Player.InfoText = I2.Loc.LocalizationManager.GetTranslation("no_letters_placed");
                }
                return;
            }
            bool containsFirstLetter  = false;
            bool containsSecondLetter = false;

            foreach (LetterBlock block in PlacedLetters.Select(x => x.LetterBlock))
            {
                if (block == null)
                {
                    continue;
                }
                madeWord += block.GetLetter();
                if (block.IsFirstLetter)
                {
                    containsFirstLetter = true;
                }
                if (block.IsSecondLetter)
                {
                    containsSecondLetter = true;
                }
            }
            if (!containsFirstLetter || !containsSecondLetter)
            {
                if (placeBtnClick)
                {
                    Player.InfoText = I2.Loc.LocalizationManager.GetTranslation("not_both_fixed_letters");
                }
            }
            else if (TheLetterManager.Exists(madeWord.ToLower()) && containsFirstLetter && containsSecondLetter)
            {
                SetPlaceBtnActivity(true);
            }
            else
            {
                if (placeBtnClick)
                {
                    Player.InfoText = I2.Loc.LocalizationManager.GetTranslation("info_word_does_not_exists");
                }
                SetPlaceBtnActivity(false);
            }
        }