예제 #1
0
 /// <summary>
 /// 延迟播放展示动画
 /// </summary>
 /// <param name="time"></param>
 /// <returns></returns>
 private IEnumerator DelayCall(float time)
 {
     isPlayAnimation = true;
     if (point != null)
     {
         point.SetActive(false);
     }
     if (time > 0)
     {
         yield return(new WaitForSeconds(time));
     }
     if (point != null)
     {
         point.SetActive(true);
         point.transform.localScale = Vector3.zero;
         point.transform.DOScale(Vector3.one, ConfigData.GRID_SHOW_TIME).onComplete += () =>
         {
             RefreshData();
         };
         //新的直接展示出来就行
         var vec = MapTool.GetPosition(gridData.Position.x, gridData.Position.y);
         rectTransform.anchoredPosition = new Vector2(vec.x, vec.y);
     }
     isPlayAnimation = false;
 }
예제 #2
0
    /// <summary>
    /// 初始化地图
    /// </summary>
    public void InitMapBG()
    {
        CleanMap();
        mapData = playCtrl.GetMapDatas();

        for (int i = 1; i <= playCtrl.MapSize(); i++)
        {
            for (int j = 1; j <= playCtrl.MapSize(); j++)
            {
                var           bg = GameObject.Instantiate(mapBGItem);
                RectTransform bgRectTransform = bg.GetComponent <RectTransform>();
                bgRectTransform.SetParent(bgPoint);
                bgRectTransform.localScale       = Vector3.one;
                bgRectTransform.localRotation    = Quaternion.identity;
                bgRectTransform.anchoredPosition = MapTool.GetPosition(i, j);
                mapBgs.Add(bgRectTransform);
            }
        }
        RefreshMap(mapData.gridDatas, false);
    }
예제 #3
0
    /// <summary>
    /// 刷新数据
    /// </summary>
    /// <param name="grid">当前数据</param>
    /// <param name="gridMaps">所有地块</param>
    /// <param name="isNew">是否是新的</param>
    /// <param name="showAnimation">是否有动画</param>
    public void RefreshData(GridData grid, ref Dictionary <int, MapGrid> gridMaps, bool isNew = false, bool showAnimation = true)
    {
        //if (gridData == null)
        //{
        lastGridData = gridData;
        gridData     = grid;
        if (isNew)
        {
            if (showAnimation)
            {
                StartCoroutine(DelayCall(ConfigData.GRID_MOVE_TIME));
            }
            else
            {
                //新的直接展示出来就行
                var vec = MapTool.GetPosition(gridData.Position.x, gridData.Position.y);
                rectTransform.anchoredPosition = new Vector2(vec.x, vec.y);
                RefreshData();
            }
            var item = ConfigController.Instance.GetGridConfigData(gridData.Ladder);
            gridImage.color = item.GridColor;
        }
        else
        {
            if (showAnimation)
            {
                gameObject.SetActive(true);
                //之前的可能需要移动位子,需要判断
                var vec = MapTool.GetPosition(gridData.Position.x, gridData.Position.y);
                if (showAnimation && lastGridData != null)
                {
                    isPlayAnimation = true;
                    if (lastGridData.Position.x != gridData.Position.x || lastGridData.Position.y != gridData.Position.y)
                    {
                        rectTransform.DOAnchorPos(new Vector2(vec.x, vec.y), ConfigData.GRID_MOVE_TIME).onComplete +=
                            () =>
                        {
                            if (lastGridData.ID == gridData.ID && lastGridData.Ladder < gridData.Ladder)
                            {
                                rectTransform.SetAsLastSibling();
                                RefreshData();
                                rectTransform.DOScale(ConfigData.MERGE_BIG_SCALE, ConfigData.MERGE_BIG_SCALE_TIME).onComplete += () =>
                                {
                                    rectTransform.DOScale(1f, ConfigData.MERGE_SMALL_SCALE_TIME).onComplete += () =>
                                    {
                                        isPlayAnimation = false;
                                    };
                                };
                            }
                            else
                            {
                                isPlayAnimation = false;
                                RefreshData();
                            }
                        };
                    }
                    else
                    {
                        if (lastGridData.ID == gridData.ID && lastGridData.Ladder < gridData.Ladder)
                        {
                            rectTransform.SetAsLastSibling();
                            RefreshData();
                            rectTransform.DOScale(ConfigData.MERGE_BIG_SCALE, ConfigData.MERGE_BIG_SCALE_TIME).onComplete += () =>
                            {
                                rectTransform.DOScale(1f, ConfigData.MERGE_SMALL_SCALE_TIME).onComplete += () =>
                                {
                                    isPlayAnimation = false;
                                };
                            };
                        }
                        else
                        {
                            isPlayAnimation = false;
                            RefreshData();
                            rectTransform.anchoredPosition = new Vector2(vec.x, vec.y);
                        }
                    }

                    if (gridData.MergeID > 0 && gridMaps.ContainsKey(gridData.MergeID))
                    {
                        var gridItem = gridMaps[gridData.MergeID];
                        gridItem.DoTweenAndDestroy(new Vector2(vec.x, vec.y));
                        gridMaps.Remove(gridData.MergeID);
                    }
                }
                else
                {
                    rectTransform.anchoredPosition = new Vector2(vec.x, vec.y);
                }
            }
            else
            {
                var vec = MapTool.GetPosition(gridData.Position.x, gridData.Position.y);
                rectTransform.anchoredPosition = new Vector2(vec.x, vec.y);
                RefreshData();
            }
        }
        //}
    }