Exemplo n.º 1
0
        /// <summary>
        /// 创建格子模型建筑
        /// </summary>
        /// <param name="scene"></param>
        public void CreateTerrainBuildings(CScene scene)
        {
            foreach (var XYAndNode in scene.DicMapData)
            {
                foreach (var YAndNode in XYAndNode.Value)
                {
                    MapNode         node            = YAndNode.Value;
                    MapNodeBuilding mapNodeBuilding = new MapNodeBuilding();
                    mapNodeBuilding.MapNodeType = node.m_eMapNodeType;
                    mapNodeBuilding.HexPos      = new CVector3(node.nIndexX, node.nIndexY, node.nIndexU);
                    //从服务器收到动态地图的消息,里面存储不同格子坐标上的不同建筑
                    if (this.m_ListNodeData != null)
                    {
                        for (int i = 0; i < this.m_ListNodeData.Count; i++)
                        {
                            if (mapNodeBuilding.HexPos.Equals(this.m_ListNodeData[i].m_oPos))
                            {
                                EMapNodeType eMapNodeType = (EMapNodeType)this.m_ListNodeData[i].m_nType;
                                mapNodeBuilding.MapNodeType = eMapNodeType;
                                mapNodeBuilding.ChangeNodeType(eMapNodeType);
                                this.m_sceneCurrent.ChangeMapNodeType(this.m_ListNodeData[i].m_oPos, MapCfg.MapNodeType2String(eMapNodeType));
                                break;
                            }
                        }
                    }

                    //DataTerrain_node dataByType = DataTerrain_nodeManager.Instance.GetDataByType(MapCfg.MapNodeType2String(node.m_eMapNodeType));
                    DataTerrainNode dataByType = GameData <DataTerrainNode> .dataMap[MapCfg.MapNodeTypeToInt(node.m_eMapNodeType)];
                    if (null != dataByType)
                    {
                        mapNodeBuilding.EffectId        = dataByType.EffectId;
                        mapNodeBuilding.TriggerEffectId = dataByType.TriggerEffectId;
                    }
                    //初始化基地模型
                    MapNodeTypeInfo mapNodeTypeInfo = null;
                    if (scene.DicMapNodeTypeInfo.TryGetValue(node.m_eMapNodeType, out mapNodeTypeInfo))
                    {
                        mapNodeBuilding.ModelFile       = mapNodeTypeInfo.ModelFile;
                        mapNodeBuilding.OriginModelFile = mapNodeTypeInfo.ModelFile;
                        mapNodeBuilding.ChangeModel();
                    }
                    this.m_listMapNodeBuilding.Add(mapNodeBuilding);
                }
            }
        }
Exemplo n.º 2
0
 private void OnLoadFinishEventHandler(XmlDocument xmlDoc)
 {
     try
     {
         XmlNode     xmlNode    = xmlDoc.SelectSingleNode("table");
         XmlNode     xmlNode2   = xmlNode.SelectSingleNode("map");
         XmlNodeList childNodes = xmlNode2.ChildNodes;
         foreach (XmlNode xmlNode3 in childNodes)
         {
             XmlElement xmlElement = (XmlElement)xmlNode3;
             MapNode    mapNode    = new MapNode();
             //初始化格子坐标
             mapNode.nIndexX   = Convert.ToInt32(xmlElement.GetAttribute("X"));
             mapNode.nIndexY   = Convert.ToInt32(xmlElement.GetAttribute("Y"));
             mapNode.nIndexU   = Convert.ToInt32(xmlElement.GetAttribute("U"));
             mapNode.m_strType = xmlElement.GetAttribute("type");
             //初始化格子类型
             if (!MapCfg.MapNodeTransfer(mapNode))
             {
                 Debug.LogError("m_oCfg.MapNodeTransfer(oNode) == false");
                 return;
             }
             if (this.m_dicMapData.ContainsKey(mapNode.nIndexX))
             {
                 //如果xy都已经存在缓存格子中,说明肯定出错了,重复初始化话,就报错
                 if (this.m_dicMapData[mapNode.nIndexX].ContainsKey(mapNode.nIndexY))
                 {
                     string message = string.Format("XY conflict x={0},y={1}", mapNode.nIndexX, mapNode.nIndexY);
                     this.logger.Error("m_oDicMapData[oNode.nIndexX].ContainsKey(oNode.nIndexY) == true,");
                     this.logger.Error(message);
                     return;
                 }
                 //如果没有重复,就加到缓存格子中
                 this.m_dicMapData[mapNode.nIndexX].Add(mapNode.nIndexY, mapNode);
             }
             else
             {
                 Dictionary <int, MapNode> dictionary = new Dictionary <int, MapNode>();
                 dictionary.Add(mapNode.nIndexY, mapNode);
                 this.m_dicMapData.Add(mapNode.nIndexX, dictionary);
             }
             //如果节点的类型是基地类型,初始化基地节点变量
             if (mapNode.m_eMapNodeType == EMapNodeType.MAP_NODE_EMPIRE_BASE)
             {
                 this.empireMapNode.m_nX = mapNode.nIndexX;
                 this.empireMapNode.m_nY = mapNode.nIndexY;
                 this.empireMapNode.m_nU = mapNode.nIndexU;
             }
             else
             {
                 if (mapNode.m_eMapNodeType == EMapNodeType.MAP_NODE_LEAGUE_BASE)
                 {
                     this.leagueMapNode.m_nX = mapNode.nIndexX;
                     this.leagueMapNode.m_nY = mapNode.nIndexY;
                     this.leagueMapNode.m_nU = mapNode.nIndexU;
                 }
             }
         }
         XmlNode xmlNode4 = xmlNode.SelectSingleNode("mapInfo");
         if (xmlNode4 != null)
         {
             XmlElement xmlElement2 = xmlNode4 as XmlElement;
             string     attribute   = xmlElement2.GetAttribute("pos");
             Vector3    vector      = UnityTools.String2Vector3(attribute);
             string     attribute2  = xmlElement2.GetAttribute("rotation");
             Vector3    vector2     = UnityTools.String2Vector3(attribute2);
             //初始化地图坐标和旋转方向
             this.InitPos      = vector;
             this.InitRotation = vector2;
             XmlNodeList xmlNodeList = xmlNode4.SelectNodes("nodeType");
             foreach (XmlNode xmlNode5 in xmlNodeList)
             {
                 try
                 {
                     XmlElement      xmlElement3     = (XmlElement)xmlNode5;
                     string          attribute3      = xmlElement3.GetAttribute("type");
                     EMapNodeType    eMapNodeType    = MapCfg.String2MapNodeType(attribute3);
                     string          attribute4      = xmlElement3.GetAttribute("file");
                     MapNodeTypeInfo mapNodeTypeInfo = new MapNodeTypeInfo(eMapNodeType, attribute4);
                     string          attribute5      = xmlElement3.GetAttribute("localPos");
                     if (!string.IsNullOrEmpty(attribute5))
                     {
                         mapNodeTypeInfo.LocalPos = UnityTools.String2Vector3(attribute5);
                     }
                     string attribute6 = xmlElement3.GetAttribute("localRotation");
                     if (!string.IsNullOrEmpty(attribute6))
                     {
                         mapNodeTypeInfo.LocalRotation = UnityTools.String2Vector3(attribute6);
                     }
                     string attribute7 = xmlElement3.GetAttribute("effectId");
                     if (!string.IsNullOrEmpty(attribute7))
                     {
                         mapNodeTypeInfo.EffectId = Convert.ToInt32(attribute7);
                     }
                     string attribute8 = xmlElement3.GetAttribute("triggerEffectId");
                     if (!string.IsNullOrEmpty(attribute8))
                     {
                         mapNodeTypeInfo.GetEffectId = Convert.ToInt32(attribute8);
                     }
                     this.m_dicMapNodeTypeInfo.Add(eMapNodeType, mapNodeTypeInfo);
                 }
                 catch (Exception ex)
                 {
                     this.logger.Fatal(ex.ToString());
                 }
             }
         }
         XmlNode xmlNode6 = xmlNode.SelectSingleNode("pveSetting");
         if (xmlNode6 != null)
         {
             this.PVESetting = new PVESetting();
             XmlNode xmlNode7 = xmlNode6.SelectSingleNode("ourBase");
             if (xmlNode7 != null)
             {
                 XmlElement xmlElement4 = (XmlElement)xmlNode7;
                 string     attribute9  = xmlElement4.GetAttribute("file");
                 this.PVESetting.OurBaseModelFile = attribute9;
                 string attribute10 = xmlElement4.GetAttribute("LocalPos");
                 if (!string.IsNullOrEmpty(attribute10))
                 {
                     this.PVESetting.OurBaseLocalPos = UnityTools.String2Vector3(attribute10);
                 }
                 string attribute11 = xmlElement4.GetAttribute("LocalRotation");
                 if (!string.IsNullOrEmpty(attribute11))
                 {
                     this.PVESetting.OurBaseLocalRotation = UnityTools.String2Vector3(attribute11);
                 }
             }
             XmlNode xmlNode8 = xmlNode6.SelectSingleNode("enemyBase");
             if (xmlNode8 != null)
             {
                 XmlElement xmlElement5 = (XmlElement)xmlNode8;
                 string     attribute12 = xmlElement5.GetAttribute("file");
                 this.PVESetting.EnemyBaseModelFile = attribute12;
                 string attribute13 = xmlElement5.GetAttribute("LocalPos");
                 if (!string.IsNullOrEmpty(attribute13))
                 {
                     this.PVESetting.EnemyBaseLocalPos = UnityTools.String2Vector3(attribute13);
                 }
                 string attribute14 = xmlElement5.GetAttribute("LocalRotation");
                 if (!string.IsNullOrEmpty(attribute14))
                 {
                     this.PVESetting.EnemyBaseLocalRotation = UnityTools.String2Vector3(attribute14);
                 }
             }
         }
     }
     catch (Exception ex2)
     {
         this.logger.Fatal(ex2.Message);
     }
 }