Exemplo n.º 1
0
    public bool MoveTo(MoveNormal nor, UINumber forwardNum)
    {
        MergeNumber = 0;
        switch (nor)
        {
        case MoveNormal.Up:
            moveToUP(forwardNum);
            break;

        case MoveNormal.Down:
            moveToDown(forwardNum);
            break;

        case MoveNormal.Left:
            moveToLeft(forwardNum);
            break;

        case MoveNormal.Right:
            moveToRight(forwardNum);
            break;
        }
        if (GotoPos.Equals(CurPos))
        {
            return(false);
        }
        StartCoroutine(Moving(forwardNum));
        Father.RemoveEmptyPos(GotoPos);
        Father.AddEmptyPos(CurPos);
        return(true);
    }
Exemplo n.º 2
0
    GameObject _SpawnUINumber(GameObject res, int iNum)
    {
        GameObject guiNumber = Instantiate(res) as GameObject;

        guiNumber.transform.parent        = m_NumberRoot.transform;
        guiNumber.transform.localPosition = Vector3.zero;
        guiNumber.transform.localScale    = Vector3.one;
        guiNumber.layer = LayerMask.NameToLayer("GUI");

        UINumber numberComp = guiNumber.GetComponent <UINumber> ();

        if (numberComp)
        {
            numberComp.m_alignMode = UINumber.Alignment.center;
            numberComp.m_value     = Mathf.RoundToInt(iNum);
            numberComp.m_atlas     = m_pfNumAtlas;

            numberComp.SetOrder(m_iDepth++);
        }

        m_iDepth %= 1000;
        m_iDepth += 1000;

        return(guiNumber);
    }
Exemplo n.º 3
0
    public void DrawUINumberSpring(Vector3 vWorldPos, int iNum, int iDirection)
    {
        GameObject goPopup_elem = _SpawnUINumber(m_resNumber, iNum);

        goPopup_elem.transform.localScale = Vector3.one * m_SpringNumberSize;
        goPopup_elem.transform.parent     = m_NumberRoot.transform;
        UIPopupElement popup_elem = goPopup_elem.GetComponent <UIPopupElement> ();

        if (popup_elem == null)
        {
            return;
        }

        UINumber guiNum = popup_elem as UINumber;

        if (guiNum)
        {
            guiNum.m_fIntervalAdjust = m_SpringNumberIntervalAdjustment;
        }
        popup_elem.m_effector = new UINumberSpringEffector(goPopup_elem, this, m_SpringNumberWorldSpawnOffset, m_SpringRamdonSpawnRange, iDirection);
        UINumberSpringEffector se = popup_elem.m_effector as UINumberSpringEffector;

        //se.m_alpha = m_springEffectorAlpha;
        //se.m_position = m_springEffectorPosition;
        //se.m_scale = m_springEffectorScale;
        se.m_offsetXCurve = m_springEffectorOffsetX;
        se.m_offsetYCurve = m_springEffectorOffsetY;

        se.m_colorRedCurve   = m_springEffectorRed;
        se.m_colorGreenCurve = m_springEffectorGreen;
        se.m_colorBlueCurve  = m_springEffectorBlue;
        se.m_colorAlphaCurve = m_springEffectorAlpha;

        se.m_scaleCurve = m_springEffectorScale;

        se.m_globalNumberSizeAdjust = m_SpringNumberSize;

        Vector3 targetWPos = vWorldPos;

        targetWPos.x += m_SpringNumberPosOffset.x;
        targetWPos.y += m_SpringNumberPosOffset.y;
        targetWPos.z  = 0;

        se.m_numberWorldPos = targetWPos;

        m_SpringNumbers.Add(goPopup_elem);
    }
Exemplo n.º 4
0
 private void moveToUP(UINumber forwardNum)
 {
     if (forwardNum == null || CurPos.X != forwardNum.CurPos.X)
     {
         GotoPos = new Pos2(CurPos.X, 0);
         return;
     }
     if (GameData.CanMerge(CurNumber, forwardNum.CurNumber) && forwardNum.MergeNumber == 0)
     {
         GotoPos     = new Pos2(forwardNum.GotoPos);
         MergeNumber = GameData.GetMerge(CurNumber, forwardNum.CurNumber);
         return;
     }
     else
     {
         GotoPos = new Pos2(CurPos.X, forwardNum.GotoPos.Y + 1);
         return;
     }
 }
Exemplo n.º 5
0
    private void moveToRight(UINumber forwardNum)
    {
        if (forwardNum == null || CurPos.Y != forwardNum.CurPos.Y)
        {
            GotoPos = new Pos2(GameData.MapSize - 1, CurPos.Y);
            return;
        }

        if (GameData.CanMerge(CurNumber, forwardNum.CurNumber) && forwardNum.MergeNumber == 0)
        {
            GotoPos     = new Pos2(forwardNum.GotoPos);
            MergeNumber = GameData.GetMerge(CurNumber, forwardNum.CurNumber);
            return;
        }
        else
        {
            GotoPos = new Pos2(forwardNum.GotoPos.X - 1, GotoPos.Y);
            return;
        }
    }
Exemplo n.º 6
0
    private IEnumerator Moving(UINumber forwardNumber)
    {
        if (GotoPos.Equals(CurPos))
        {
            yield break;
        }
        //Debug.Log("GotoPos=" + GotoPos.ToString());
        Vector3 positon = GameData.MapPos[GotoPos.X, GotoPos.Y];
        float   time    = GameData.MoveTime;
        Vector3 normal  = positon - SelfTF.localPosition;
        Vector3 Speed   = normal / time;

        while (time > 0)
        {
            SelfTF.Translate(Speed * Time.deltaTime, Space.Self);
            yield return(new WaitForEndOfFrame());

            time -= Time.deltaTime;
            if (time < Time.deltaTime)
            {
                break;
            }
        }
        SelfTF.localPosition = positon;

        if (MergeNumber > 0)
        {
            SetNumber(MergeNumber);
            Father.OnMapNumbers.Remove(forwardNumber);
            Father.InHandNumbers.Add(forwardNumber);
            forwardNumber.SetNumber(0);
            //Debug.Log("OnMapNumbers=" + Father.OnMapNumbers.Count + " InHandNumbers=" + Father.InHandNumbers.Count);
            Father.CurMergeScore += MergeNumber;
            if (Father.CurMergeMaxNumber < MergeNumber)
            {
                Father.CurMergeMaxNumber = MergeNumber;
            }
        }

        CurPos = new Pos2(GotoPos);
    }
Exemplo n.º 7
0
 public bool ShowNextNumber()
 {
     if (OnMapNumbers.Count < GameData.MapSize * GameData.MapSize)
     {
         UINumber nextNumber = InHandNumbers[0];
         InHandNumbers.Remove(nextNumber);
         OnMapNumbers.Add(nextNumber);
         if (Random.Range(0f, 100f) < 90f)
         {
             nextNumber.SetNumber(GameData.MinNum, true);
         }
         else
         {
             nextNumber.SetNumber(GameData.SecondMinNum, true);
         }
         Pos2 pos = EmptyPos[Random.Range(0, EmptyPos.Count)];
         nextNumber.SetPos(pos);
         RemoveEmptyPos(pos);
         return(true);
     }
     return(false);
 }