Beispiel #1
0
        /// <summary>
        /// 获取地图信息
        /// </summary>
        /// <param name="data"></param>
        private void GetMapInfo(ISFSObject data)
        {
            if (data.ContainsKey(ConstantData.KeyMapInfo))
            {
                var mapInfo = data.GetSFSArray(ConstantData.KeyMapInfo);
                if (mapInfo != null)
                {
                    var selfColor = MainUserInfo.PlayerColor;

                    var count = mapInfo.Count;
                    MapInfo = new PludoMapInfo();
                    //全部数据
                    var values      = Enum.GetValues(typeof(ItemColor));
                    var valueCount  = values.Length;
                    var safePos     = new Dictionary <int, List <PludoMapItemData> >();
                    var readyPos    = new Dictionary <int, List <PludoMapItemData> >();
                    var startPosDic = new Dictionary <int, int>();
                    _mapList = new List <PludoMapItemData>();
                    for (int i = 0; i < count; i++)
                    {
                        var itemData             = mapInfo.GetSFSObject(i);
                        PludoMapItemData mapData = new PludoMapItemData(itemData);
                        _mapList.Add(mapData);
                    }
                    for (int i = 0; i < valueCount; i++)
                    {
                        int item = (int)values.GetValue(i);
                        List <PludoMapItemData> list      = new List <PludoMapItemData>();
                        List <PludoMapItemData> readyList = new List <PludoMapItemData>();
                        safePos.Add(item, list);
                        readyPos.Add(item, readyList);
                        startPosDic.Add(item, GetMapStartIdWithColor(item));
                    }
                    //环绕区(公用区域)
                    var commomArea = new List <PludoMapItemData>();
                    var startIndex = startPosDic[selfColor];
                    for (int i = 0; i < MapNormalLenth; i++)
                    {
                        commomArea.Add(_mapList[(i + startIndex) % MapNormalLenth]);
                    }
                    //准备区
                    for (int i = 0; i < valueCount; i++)
                    {
                        var color = (selfColor + i) % valueCount;
                        var list  = new List <PludoMapItemData>();
                        for (int index = 0; index < ConstantData.ValueReadyAreaCount; index++)
                        {
                            PludoMapItemData stayMapData = new PludoMapItemData(color, GetReadyId(color, index), (int)EnumMapItemType.ReadyArea);
                            list.Add(stayMapData);
                        }
                        readyPos[color] = list;
                    }

                    //安全区
                    for (int i = MapNormalLenth; i < count; i++)
                    {
                        PludoMapItemData mapData = _mapList[i];
                        safePos[mapData.ItemColor].Add(mapData);
                    }
                    MapInfo.CommomArea  = commomArea;
                    MapInfo.ReadyArea   = readyPos;
                    MapInfo.SafeArea    = safePos;
                    MapInfo.StartDataId = startPosDic;
                    MapInfo.CurColor    = selfColor;
                }
            }
        }
 /// <summary>
 /// 地图初始化
 /// </summary>
 /// <param name="mapInfo">地图信息</param>
 private void OnMapInit(PludoMapInfo mapInfo)
 {
     _mapInfo = mapInfo;
     InitRoundMap();
     SetCommonPos();
 }