bool IsGoodLetter(LetterController letter, int letterIndex)
    {
        if (GameplayController.Instance.CurrentSegment.MonsterRequiredLetters.Length <= letterIndex)
        {
            return(false);
        }

        switch (GameplayController.Instance.CurrentLevel.monsterInputType)
        {
        case MonsterInputType.Letter:
        case MonsterInputType.LetterInWord:
        case MonsterInputType.SoundLetter:
            //			if (letter.value == GameplayController.Instance.CurrentSegment.MonsterRequiredLetters[0]) { // correct letter
            if (letter.stone.value == GameplayController.Instance.CurrentSegment.MonsterRequiredLetters[0])               // correct letter
            {
                return(true);
            }
            else                 // bad letter
            {
                return(false);
            }

        case MonsterInputType.Word:
        case MonsterInputType.SoundWord:
            //return (letter.value == GameplayController.Instance.CurrentSegment.MonsterRequiredLetters [requiredLetterIndex]);

            return(letter.stone.value == GameplayController.Instance.CurrentSegment.MonsterRequiredLetters [letterIndex]);

/*		case MonsterInputType.SoundWord:
 *                      return (letter.stone.value == GameplayController.Instance.CurrentSegment.MonsterRequiredLetters [letterIndex]);
 */
        }
        return(false);
    }
Exemple #2
0
    void roolBackLetter()
    {
        collectLetters = null;
        if (this.stone != null)
        {
            //text.text = ArabicSupport.ArabicFixer.Fix (this.stone.value, true, true);
            //text.text = RTL.Fix (this.stone.value);
            text.text = this.stone.FixValue;
        }
        if (State != LetterState.Idle)
        {
            if (stone.spawnIds.Length > 1)
            {
                transform.position = mLastPosition;
            }
            else
            {
                transform.position = mTargetPosition = mInitPosition;
            }
        }

        isDragable = false;
        SetVisible(true);

        mMagnetLetter = null;

        if (GameplayController.Instance.CurrentLevel.monsterInputType == MonsterInputType.Word || GameplayController.Instance.CurrentLevel.monsterInputType == MonsterInputType.SoundWord)
        {
            numSubLetters = 0;
            //transform.localScale = mTargetScale = mInitScale;
            mTargetScale = mInitScale;
        }
    }
Exemple #3
0
    public static LetterController Create(LetterController prefab, Vector3 position, Transform parent, char letter)
    {
        LetterController letterController = Instantiate(prefab, position, Quaternion.identity, parent);

        letterController.letter = letter;
        return(letterController);
    }
Exemple #4
0
    public void SpawnWords()
    {
        if (WordSet == null)
        {
            Debug.LogError("WordSet is null !!!");
            return;
        }

        ClearTable();

        // Find center
        _bounds = WordSet.GetBound();

        Vector3 boundsCenter = _bounds.center;

        boundsCenter.x = Mathf.Round(boundsCenter.x);
        boundsCenter.y = Mathf.Round(boundsCenter.y);
        boundsCenter.z = 0;

        _bounds.center = boundsCenter;

        // Spawn new words
        foreach (SWord sWord in WordSet.Words)
        {
            SpawnWord(sWord);
        }

        // PostProcess
        WordManager.GetWordsFormChilds();
        LetterController.ConnectAdjacentLetters();
    }
Exemple #5
0
 // Удаление (убирание в пул) буквы
 public static void ReturnLetterInPool(LetterController letterController)
 {
     letterController.gameObject.SetActive(false);
     letterController.transform.SetParent(Instance.letterPoolPosition.transform);
     letterController.transform.position = Instance.letterPoolPosition.transform.position;
     letterControllersPool.Enqueue(letterController);
 }
Exemple #6
0
    public void Rotate()
    {
        WordManager
            .GetComponentsInChildren<Word>()
            .ToList()
            .ForEach(w =>
            {
                Undo(w, "Rotate");
                w.Direction =
                    (w.Direction == WordDirection.Horizontal) ?
                    WordDirection.Vertical : WordDirection.Horizontal;
            });

        LetterController
            .AllLetters
            .ForEach(l =>
            {
                Vector3 position = l.transform.position;
                position.x = l.transform.position.y;
                position.y = l.transform.position.x;

                Undo(l.transform, "Rotate");
                l.transform.position = position;
            });

        LetterController.ConnectAdjacentLetters();
    }
Exemple #7
0
    public void NextLogo()
    {
        //		shelfSpaceLogo.SetActive(true);
        LetterController controller = FindObjectOfType <LetterController>().GetComponent <LetterController>();

        controller.dropLetters();
    }
 public void GrabLetter(LetterController letter)
 {
     if (moveLetterCoroutine != null)
     {
         StopCoroutine(moveLetterCoroutine);
     }
     moveLetterCoroutine = StartCoroutine(MoveLetter(letter));
 }
Exemple #9
0
 // Создание пула объектов
 private void FillLettersPool()
 {
     for (int i = 0; i < letterPoolSize; i++)
     {
         var letter = Instantiate(letterPrefab, letterPoolPosition.transform.position, Quaternion.identity, letterPoolPosition.transform);
         LetterController letterController = letter.GetComponent <LetterController>();
         letterController.gameObject.SetActive(false);
         letterControllersPool.Enqueue(letterController);
     }
 }
Exemple #10
0
    public void ClearTable()
    {
        // Delete all thing
        LetterController.DeleteAllLetters();

        if (_locationDictionary == null)
        {
            _locationDictionary = new Dictionary <Vector2, Letter>();
        }
        _locationDictionary.Clear();

        WordManager.DeleteAllWords();
    }
    void EatGoodLetter(LetterController letter)
    {
        int scoreToadd = 0;

        if (GameplayController.Instance.CurrentLevel.monsterInputType == MonsterInputType.Word || GameplayController.Instance.CurrentLevel.monsterInputType == MonsterInputType.SoundWord)
        {
            requiredLetterIndex++;

            if (letter.numSubLetters > 0)
            {
                scoreToadd = GameplaySettings.LetterInWordComboScore;
            }
            else
            {
                scoreToadd = GameplaySettings.LetterScore;
            }
        }
        else
        {
            if (GameplayController.Instance.PreviousState == GameplayController.GameState.CollectLetters)
            {
                scoreToadd = GameplaySettings.LetterComboScore;
            }
            else
            {
                // changed by Tzahi

                if (letter.numSubLetters > 0)
                {
                    scoreToadd = GameplaySettings.LetterInComboScore * (letter.numSubLetters + 1);
                }
                else
                {
                    scoreToadd = GameplaySettings.LetterScore;
                }

                //GameplayController.Instance.CurrentLevelScoreToFlush = 100;
            }
            GameplayController.Instance.isSegmentComplete = true;
        }

        GameplayController.Instance.AddLevelScoreToFlush = scoreToadd;
//		GameplayController.Instance.IncreaseLevelScore(scoreToadd);


        // delete from Tzahi
//		GameplayController.Instance.CountdownCounter = 0;

        mCurrentLetterInMouth.Eaten();
    }
Exemple #12
0
    public void SpawnWordsExtraZoom(bool extra)
    {
        if (WordSet == null)
        {
            Debug.LogError("WordSet is null !!!");
            return;
        }

        ClearTable();

        // Find center
        _bounds = WordSet.GetBound();

        Vector3 boundsCenter = _bounds.center;

        boundsCenter.x = Mathf.Round(boundsCenter.x);
        boundsCenter.y = Mathf.Round(boundsCenter.y);
        boundsCenter.z = 0;

        _bounds.center = boundsCenter;

        // Spawn new words
        foreach (SWord sWord in WordSet.Words)
        {
            SpawnWord(sWord);
        }

        // PostProcess
        WordManager.GetWordsFormChilds();
        LetterController.ConnectAdjacentLetters();

        if (Application.isPlaying)
        {
            StartCoroutine(CameraController.FocusAllLettersExtra(extra));
            if (SpawnPartByPart)
            {
                StartCoroutine(EnableParts());
            }
            else
            {
                LetterController.AllLetters.ForEach(l => l.gameObject.SetActive(true));
            }
        }
        else
        {
            LetterController.AllLetters.ForEach(l => l.gameObject.SetActive(true));
        }
    }
    IEnumerator MoveLetter(LetterController letter)
    {
        Vector3    startPos = letter.transform.position;
        Quaternion startRot = letter.transform.rotation;
        float      time     = 0f;

        while (time < moveLetterTime)
        {
            time += Time.deltaTime;
            letter.transform.position = Vector3.Lerp(startPos, provider.viewAttachPoint.position + provider.viewAttachPoint.up * (provider.BookOffset.y * provider.viewAttachPoint.localScale.y) + provider.viewAttachPoint.forward * (provider.BookOffset.z * provider.viewAttachPoint.localScale.z), time / moveLetterTime);
            letter.transform.rotation = Quaternion.Lerp(startRot, provider.viewAttachPoint.rotation, time / moveLetterTime);
            yield return(null);
        }

        moveLetterCoroutine = null;
    }
Exemple #14
0
    public void addCollectLetter(LetterController stone)
    {
        numSubLetters++;

        Vector3 newScale = transform.localScale * GameplaySettings.LetterComboScale[numSubLetters - 1];

        if (newScale.x <= GameplaySettings.LetterComboMaxScale || newScale.y <= GameplaySettings.LetterComboMaxScale)
        {
            //transform.localScale = mTargetScale = newScale;
            mTargetScale = newScale;
        }
        collectLetters = stone;

        //text.text = ArabicSupport.ArabicFixer.Fix(collectLetters, true, true);
        //text.text = RTL.Fix(collectLetters);
        text.text = collectLetters.stone.FixValue;
    }
Exemple #15
0
    private void enableLetter(LevelSection section)
    {
        int letters = section.letterPlaceholders.Count;
        int r       = (int)(Time.deltaTime * 100);
        LetterController selected = section.letterPlaceholders[r % letters];

        if (selected == null)
        {
            return;
        }

        string nextLetter = letterManager.GetNextLetter();

        if (nextLetter != null)
        {
            selected.SetLetter(nextLetter);
        }
    }
Exemple #16
0
    public void UpdateWord(List <char> letters)
    {
        foreach (Transform child in transform)
        {
            Destroy(child.gameObject);
        }
        letterControllers.Clear();

        float x = Screen.width / 2.0f - (letters.Count * cardWidth + (letters.Count - 1) * CARD_GAP) / 2;
        float y = Screen.height * 3 / 4.0f;

        letters.ForEach(letter =>
        {
            LetterController letterController = LetterController.Create(letterViewPrefab, new Vector3(x, y), transform, letter);
            x += cardWidth + CARD_GAP;
            letterControllers.Add(letterController);
        });
    }
Exemple #17
0
    private bool TryPartition()
    {

        LetterController.ConnectAdjacentLetters();

        // Clear partitions
        if (Paritions == null)
            Paritions = new List<List<Letter>>();

        Paritions.Clear();

        // Add first partition with all letters
        Paritions.Add(
            WordManager
                .GetComponentsInChildren<Word>()
                .SelectMany(w => w.Letters)
                .Distinct()
                .ToList());


        while (Paritions.Max(p => p.Count) > MaxSize)
        {
            // Get random letter from biggest partition
            List<Letter> biggestPartition = Paritions.OrderByDescending(p => p.Count).First();
            Letter letter = GetRandomMember(biggestPartition);

            // Get connected letters
            List<Letter> newPartition = new List<Letter>();
            GetConnectedLetters(letter, newPartition, Random.Range(MinSize + 1, MaxSize + 1));

            // Disconnect newPartition and add to list
            Disconnect(biggestPartition, newPartition);
            Paritions.Add(newPartition);

            // Separate Biggest partition in two -- if possible
            Separate(biggestPartition);

            if (Paritions.Min(p => p.Count) < MinSize)
                return false;
        }

        return true;
    }
    public void EatBooster(BoosterController booster, LetterController dragedLetter)
    {
//		Debug.Log ("EatBooster " + booster.Model.Type);
        switch (booster.Model.Type)
        {
        case Booster.BoosterType.FireWrongLetter:
            GameplayController.Instance.DoFireBooster(booster, dragedLetter);
            break;

        case Booster.BoosterType.FreezeTime:
            GameplayController.Instance.DoFreezeBooster();
            break;

        case Booster.BoosterType.LoseSegment:
            GameplayController.Instance.SegmentLose();
            break;

        case Booster.BoosterType.MagnetLetter:
            GameplayController.Instance.DoMagnetBooster(booster, dragedLetter);
            break;

        case Booster.BoosterType.SlowMovment:
            GameplayController.Instance.SlowMovmentBooster(booster, dragedLetter);
            break;

        case Booster.BoosterType.ShowCallout:
            GameplayController.Instance.ShowCalloutBooster(booster, dragedLetter);
            break;

        case Booster.BoosterType.Shield:
            GameplayController.Instance.ShieldBooster(booster, dragedLetter);
            break;


        case Booster.BoosterType.BonusLetter:
            //booster.addScorebubble (600);
            GameplayController.Instance.DoBounsLetterBooster(booster);
            break;
        }
        booster.Eaten();
        booster.PlaySound();
    }
 public void setET(LetterController lc)
 {
     EmbeddedTile = lc.gameObject;
 }
Exemple #20
0
 public IEnumerator FocusAllLettersExtra(bool extra)
 {
     yield return(FocusToBoundExtra(LetterController.GetLettersBound(), extra));
 }
 public void Activated(char text, LetterController letter)
 {
     AddLetter(text);
     activatedLetters[currentActivated++] = letter;
 }
Exemple #22
0
 private void Awake()
 {
     instance = this;
 }
Exemple #23
0
    private IEnumerator FeedGameLetter(float delay = 0)
    {
        if (State == TutorialController.TutorialState.Inactive)
        {
            yield return(true);
        }


        //yield return new WaitForSeconds (delay);
        //Jonathan
        startButton = GameObject.Find("monster");
        //PointAt(startButton.transform.position + new Vector3 (0, -40, 0), startButton.transform.parent);
//		PointAt(new Vector2(0, -140), startButton.transform.parent);
        PointAt(GameplayController.Instance.getMonsterHandPosition(), startButton.transform.parent);

        //
        while (GameplayController.Instance.State != GameplayController.GameState.SegmentIdle)
        {
            yield return(null);
        }
        //tutorialHandImage.enabled = false;
        //tutorialHandImage.gameObject.SetActive(false);
        tutorialHandImage.gameObject.GetComponent <UIPopInOut>().PopOut();
        State = TutorialController.TutorialState.InGame;
//		AudioController.Instance.PlaySound ( Resources.Load("Sounds/Voice/Instructions/feed the monster") as AudioClip );
        var lettersOriginal = findCorrectLetters();

        letters = new LetterController[lettersOriginal.Length];
        Transform  curContainer;
        GameObject tempContainer;

        yield return(new WaitForSeconds(0.75f));

        if (lettersOriginal.Length == 0)
        {
            TutorialController.Instance.EndTutorial();
        }
        initialLocation = new Vector3(lettersOriginal [0].transform.position.x, lettersOriginal [0].transform.position.y, lettersOriginal [0].transform.position.z);
        for (int l = 0; l < lettersOriginal.Length; l++)
        {
            curContainer  = lettersOriginal [l].transform.parent;
            tempContainer = (GameObject)Instantiate(curContainer.gameObject, curContainer.position, curContainer.rotation, TutorialController.Instance.PanelTutorial.transform);

            foreach (Transform child in tempContainer.transform)
            {
                letters[l] = child.GetComponent <LetterController> ();
                child.transform.localScale = new Vector3(1, 1, 1);
                Image[] images = child.GetComponentsInChildren <Image> ();
                foreach (Image image in images)
                {
                    image.enabled = true;
                }
            }
//			letters [l].isTutorial = true;
            letters [l].gameObject.GetComponent <CanvasGroup> ().alpha          = 0.5f;
            letters [l].gameObject.GetComponent <CanvasGroup> ().blocksRaycasts = false;
            letters [l].gameObject.GetComponent <CanvasGroup> ().interactable   = false;

            letters [l].ParticlesMergeAccept.SetActive(false);
            letters [l].ParticlesMergeReject.SetActive(false);

            letters [l].transform.position = lettersOriginal[l].mTargetPosition;
            letters [l].enabled            = false;
        }
        Vector3 startPos, handDest;

        if (letters.Length != 0)
        {
            firstLetter = letters [0];

            firstLetter.isTutorial = true;
            tutorialHandImage.transform.position = firstLetter.transform.position;
            tutorialHandImage.gameObject.SetActive(true);
            foreach (Transform child in tutorialHandImage.transform)
            {
                child.gameObject.SetActive(true);
            }

            for (int letterIndex = 0; letterIndex < letters.Length; letterIndex++)
            {
                LetterController letter = letters[letterIndex];
                tutorialHandImage.enabled = true;
                startPos = tutorialHandImage.transform.position;

                handDest = letter.transform.position;                // + new Vector3(0,50,0);
                for (float t = 0; t <= 1; t += GameplayController.Instance.IsPause ? 0 : Time.deltaTime / 1.5f)
                {
                    tutorialHandImage.transform.position = Vector3.Lerp(startPos, handDest, t * 1.5f * MovingSpeedMultiplier);
                    if (letter != firstLetter)
                    {
                        letters[letterIndex - 1].transform.position = tutorialHandImage.transform.position;
                    }
                    yield return(null);
                }
                if (letterIndex > 0)
                {
                    letters [letterIndex - 1].gameObject.GetComponent <CanvasGroup> ().alpha = 0;


                    Vector3 newScale = letter.transform.localScale * GameplaySettings.LetterComboScale [letterIndex - 1];
                    if (newScale.x <= GameplaySettings.LetterComboMaxScale || newScale.y <= GameplaySettings.LetterComboMaxScale)
                    {
                        letter.transform.localScale = newScale;
                    }
                }
                tutorialHandImage.transform.position = handDest;
                startPos = tutorialHandImage.transform.position;
                yield return(new WaitForSeconds(0.0f));
            }

            //Jonathan
            if (letters.Length > 1)
            {
                Vector3 newScale2 = letters [letters.Length - 2].transform.localScale * GameplaySettings.LetterComboScale [letters.Length];
                if (newScale2.x <= GameplaySettings.LetterComboMaxScale || newScale2.y <= GameplaySettings.LetterComboMaxScale)
                {
                    letters [letters.Length - 1].transform.localScale = newScale2;
                }
            }
            //End Jonathan(?)

            startPos = tutorialHandImage.transform.position;
            handDest = firstLetter.getMonsterMouth();             // + new Vector2(0,40);


            for (float t = 0; t <= 1; t += GameplayController.Instance.IsPause ? 0 : Time.deltaTime / 1.5f)
            {
                tutorialHandImage.transform.position           = Vector3.Lerp(startPos, handDest, t * MovingSpeedMultiplier);
                letters[letters.Length - 1].transform.position = tutorialHandImage.transform.position;
                yield return(null);
            }
            tutorialHandImage.transform.position = handDest;

            yield return(new WaitForSeconds(0.05f));

            while (GameplayController.Instance.IsPause)
            {
                yield return(null);
            }

            //Jonathan

            //firstLetter.OnEndDrag (null);

            foreach (Transform child in TutorialController.Instance.PanelTutorial.transform)
            {
                foreach (Transform grandchild in child)
                {
                    if (grandchild.GetComponent <CanvasGroup> () != null)
                    {
                        if (!grandchild.GetComponent <CanvasGroup>().interactable)
                        {
                            Destroy(child.gameObject);
                        }
                    }
                }
            }

            yield return(FeedGameLetter(delay));

            tutorialHandImage.transform.position = handDest;
            //GameplayController.Instance.CollectLettersToMonster ();
        }
        //tutorialHandImage.gameObject.SetActive (false);
        //EndTutorial ();
    }
 void AddScore(LetterController letter)
 {
     score += 10 * multiplier;
     IncreaseCombo();
 }
 /// <summary>
 /// Start is called on the frame when a script is enabled just before
 /// any of the Update methods is called the first time.
 /// </summary>
 void Start()
 {
     _letterController = GetComponent <LetterController>();
 }
Exemple #26
0
    void Update()
    {
/*
 *
 *      if (!_enablePan)
 *          return;
 */

        if (Input.touchCount > 1)
        {
            if (_letterDrag)
            {
                StartCoroutine(LetterController.LetterUnselected());
                _letterDrag = false;
                return;
            }
        }

        bool    startCondition = false, dragCondition = false, endCondition = false;
        Vector3 pos = Vector3.zero;

        if (Application.isMobilePlatform)
        {
            if (Input.touchCount == 1)
            {
                startCondition =
                    Input.touches[0].phase == TouchPhase.Began || (!_letterDrag && !_cameraDrag);
                dragCondition = Input.touches[0].phase == TouchPhase.Moved;
                endCondition  = Input.touches[0].phase == TouchPhase.Ended;
                pos           = Input.touches[0].position;
            }
            else if (Input.touchCount == 2)
            {
                endCondition = true;
                pos          = Input.touches[0].position;
            }
        }
        else
        {
            startCondition = Input.GetMouseButtonDown(0);
            dragCondition  = Input.GetMouseButton(0);
            endCondition   = Input.GetMouseButtonUp(0);
            pos            = Input.mousePosition;
        }

        #region Start Drag letter or Pan

        if (startCondition)
        {
            _lastDragPos = _camera.ScreenToWorldPoint(pos);

            Collider2D collider = Physics2D.OverlapPoint(_camera.ScreenToWorldPoint(pos), LetterLayerMask);

            if (collider != null)
            {
                if (!_isPlaying)
                {
                    return;
                }

                Letter letter = collider.GetComponent <Letter>();

                if (letter != null /*&& !letter.IsLocked*/)
                {
                    LetterController.LetterSelected(letter);
                    _letterDrag = true;
                }
            }
            else if (_enablePan)
            {
                _cameraDrag = true;
                CameraController.StartPan();
            }


            return;
        }

        #endregion

        #region Letter Draging or Pan

        if (dragCondition)
        {
            Vector3 dragpos = _camera.ScreenToWorldPoint(pos);

            if (_letterDrag)
            {
                LetterController.Move(dragpos - _lastDragPos);
            }

            if (_cameraDrag)
            {
                CameraController.Pan();
            }

            _lastDragPos = dragpos;
        }

        #endregion

        #region Letter end drag

        if (endCondition)
        {
            if (_letterDrag)
            {
                StartCoroutine(LetterController.LetterUnselected());
                _letterDrag = false;
            }
            if (_cameraDrag)
            {
                _cameraDrag = false;
            }
        }

        #endregion
    }
Exemple #27
0
    void Update()
    {
        if (GameplayController.Instance.IsPause || GameplayController.Instance.IsPausePopup || (State == LetterState.Inited && MainImage.enabled == false))
        {
            return;
        }

        updateParticlesIdle();
        Vector2 toPos;

        switch (State)
        {
        case LetterState.Showup:
            MainImage.color    = Color.Lerp(MainImage.color, GameplayController.Instance.CurrentLevel.StoneLetterMainColorDefault, Time.deltaTime * 10);
            OutlineImage.color = Color.Lerp(OutlineImage.color, GameplayController.Instance.CurrentLevel.StoneLetterMainOutlineColorDefault, Time.deltaTime * 10);
            text.color         = Color.Lerp(text.color, FontColorDefault /*GameplayController.Instance.CurrentLevel.StoneLetterFontColorDefault*/, Time.deltaTime * 10);
            text.GetComponent <Outline>().effectColor = Color.Lerp(text.GetComponent <Outline>().effectColor, FontOutlineColorDefault /*GameplayController.Instance.CurrentLevel.StoneLetterFontOutlineColorDefault*/, Time.deltaTime * 10);
            break;

        case LetterState.Disappear:
            //MainImage.color = Color.Lerp( MainImage.color , GameplayController.Instance.CurrentLevel.StoneLetterMainColorDefault * new Color (1, 1, 1, 0), Time.deltaTime*10 - .5f);
            //OutlineImage.color = Color.Lerp( OutlineImage.color , GameplayController.Instance.CurrentLevel.StoneLetterMainOutlineColorDefault* new Color (1, 1, 1, 0), Time.deltaTime*10 - .5f);
            //text.color  = Color.Lerp( text.color , GameplayController.Instance.CurrentLevel.StoneLetterFontColorDefault* new Color (1, 1, 1, 0), Time.deltaTime*10 - .1f);
            //text.GetComponent<Outline>().effectColor = Color.Lerp( text.GetComponent<Outline>().effectColor , GameplayController.Instance.CurrentLevel.StoneLetterFontOutlineColorDefault* new Color (1, 1, 1, 0), Time.deltaTime*10 - .1f);

            break;

        case LetterState.GoingToMonster:
            toPos = getMonsterMouth();

            transform.position = Vector3.MoveTowards(transform.position, toPos, Time.deltaTime * Speed * (Time.time - mTimeFromLaunch));
            //transform.localPosition =  Vector3.MoveTowards (transform.localPosition,	-Vector3.up * 300,  Time.deltaTime  * Speed * 0.025f - (Time.time - mTimeFromLaunch));

            if (Vector3.Distance(transform.position, toPos) < 5f)
            {
                EatingMonster.Eat(this);
                State = LetterState.Eaten;
            }
            break;

        case LetterState.Idle:
            if (mMagnetLetter != null)
            {
                this.mTargetPosition = mMagnetLetter.transform.position;
                transform.position   = Vector3.MoveTowards(transform.position, this.mTargetPosition, 2000 * Time.deltaTime);

                if (Vector2.Distance(transform.position, mTargetPosition) < 20f)
                {
                    if (
                        GameplayController.Instance.CurrentLevel.monsterInputType == MonsterInputType.Letter
                        ||
                        GameplayController.Instance.CurrentLevel.monsterInputType == MonsterInputType.LetterName
                        ||
                        GameplayController.Instance.CurrentLevel.monsterInputType == MonsterInputType.LetterInWord
                        ||
                        GameplayController.Instance.CurrentLevel.monsterInputType == MonsterInputType.SoundLetter
                        ||
                        GameplayController.Instance.CurrentLevel.monsterInputType == MonsterInputType.SoundLetterName
                        )
                    {
                        GameplayController.Instance.margeLetters(this, mMagnetLetter);
                    }
                    else
                    {
                        mMagnetLetter = null;
                        Select();
                        SetVisible(false);
                    }
                }
            }
            else
            {
                if (isMovment)
                {
                    transform.position = Vector3.MoveTowards(transform.position, this.mTargetPosition, GameplayController.Instance.calcSpeed(mCurrentSpeed * Time.deltaTime));
                    //transform.localScale	= Vector3.MoveTowards (transform.localScale, this.mTargetScale, mCurrentSpeed * Time.deltaTime);

                    if (!isActive && Vector2.Distance(transform.position, mTargetPosition) < 5f)
                    {
                        isActive = true;
                    }
                    else if (stone.spawnIds.Length > 1 && Vector2.Distance(transform.position, mTargetPosition) < 5f)
                    {
                        mCurrentSpawnId++;
                        if (mCurrentSpawnId > stone.spawnIds.Length - 1)
                        {
                            mCurrentSpawnId = 0;
                            isMovment       = false;
                            if (stone.loop)
                            {
                                if (stone.delayRepet > 0)
                                {
                                    Invoke("onMovementPopOut", stone.delayRepet);
                                }
                                else
                                {
                                    onMovementPopOut();
                                }
                            }
                        }
                        else
                        {
                            GameObject location = GameplayController.Instance.getLocationBySpawnId(stone.spawnIds[mCurrentSpawnId]);
                            mInitPosition   = location.transform.position;
                            mTargetPosition = location.transform.position;
                        }
                    }
                }
            }
            break;

        case LetterState.Tutorial:
            toPos = getMonsterMouth();

            transform.position      = Vector3.MoveTowards(transform.position, toPos, Time.deltaTime * Speed * (Time.time - mTimeFromLaunch));
            transform.localPosition = Vector3.MoveTowards(transform.localPosition, -Vector3.up * 300, Time.deltaTime * Speed * 0.025f - (Time.time - mTimeFromLaunch));
            break;

            /*case LetterState.Warning: //shaking
             * if (!this.enabled) return;
             *
             * if (shaking || shake_frame != 0) {
             *
             * }
             * transform.position = Vector3.Lerp (transform.position, mTargetPosition, IdleShakeSpeed * Time.deltaTime);
             * break;*/
        }
        if ((State == LetterState.Warning || shakeFrame != 0))
        {
            if (shakeFrame == 0)
            {
                shakeStart = transform.position;
                shakeDest  = State == LetterState.Warning ? new Vector3(shakeStart.x + (Random.value * 2 - 1) / 1, shakeStart.y + (Random.value * 2 - 1f) / 1, transform.position.z) : shakeStart;
            }
            shakeFrame++;
            float t = shakeFrame / 2;
            transform.position = Vector3.Lerp(shakeStart, shakeDest, t);
            //this.transform.Rotate(new Vector3(0, 0, shake_frame > 5 ? -1 : 1));
            if (shakeFrame == 2)
            {
                shakeFrame = 0;
            }
        }
        updateScale();
    }
 public bool IsGoodNextLetter(LetterController letter, int indexToAdd)
 {
     return(IsGoodLetter(letter, requiredLetterIndex + indexToAdd));
 }
 public bool IsGoodLetter(LetterController letter)
 {
     return(IsGoodLetter(letter, requiredLetterIndex));
 }
    public void Eat(LetterController letter)
    {
        if (animController.GetInteger("EatState") != 1)
        {
            return;
        }
        GameplayController.Instance.SetState(GameplayController.GameState.EatingLetter);
        mCurrentLetterInMouth = letter;


        if (letter.GetType() == typeof(BoosterController))
        {
/*
 *                      // added by Tzahi
 *                      EatBadBooster (letter as BoosterController);
 *                      AudioController.Instance.PlaySound ( SoundWrongAnswer );
 *                      SetMonsterState (MonsterState.Sad);
 *                      return;
 */
            EatBooster(letter as BoosterController, null);
        }
        else if (IsGoodLetter(letter))
        {
            EatGoodLetter(letter);

            if (mNeededLettersAnimation != null)
            {
                mNeededLettersAnimation.UnMarkFirstLetter();
            }
        }
        else
        {
            EatBadLetter();
            AudioController.Instance.PlaySound(SoundWrongAnswer);
            AudioController.Instance.PlaySound(SoundEat);
            SetMonsterState(MonsterState.Finished);

            return;             // don't continue eating. We lose everything.
        }

        if (mSelectedLettersToCollectQueue.Count > 0)
        {
            GameplayController.Instance.SetState(GameplayController.GameState.CollectLetters);
            SetMonsterState(MonsterState.Eating);

            //PlayMouthAnimation (MouthOpenSprites);
            //PlayEyeAnimation (EyeOpenSprites);
        }
        else
        {
            AudioController.Instance.PlaySound(SoundCorrectAnswers[UnityEngine.Random.Range(0, SoundCorrectAnswers.Length)]);
            AudioController.Instance.PlaySound(SoundEat);

            SetMonsterState(MonsterState.EatGood);
            GameplayController.Instance.SetState(GameplayController.GameState.SegmentIdle);

            if (GameplayController.Instance.CheckIfSegmentWin(mCurrentLetterInMouth))
            {
                AudioController.Instance.PlaySound(SoundCorrentLetterFinish, .35f);
                SetMonsterState(MonsterState.Finished);
            }
            else
            {
                AudioController.Instance.PlaySound(SoundCorrentLetter, .35f);
            }


            //PlayMouthAnimation (MouthIdleSprites);
            //PlayEyeAnimation (EyeIdleSprites);
        }
    }
Exemple #31
0
 public void magnetToLetter(LetterController magnetLetter)
 {
     mTargetPosition = magnetLetter.transform.position;
     mMagnetLetter   = magnetLetter;
 }