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