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); }
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); }
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); }
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; } }
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; } }
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); }
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); }