public override void OnSelected(ProvinceBean province, CityBean city, DistrictBean district)
 {
     OnSelectedEvent?.Invoke(this, new CityItemClickSelectedEventArgs()
     {
         Province = province,
         City     = city,
         District = district
     });
 }
Esempio n. 2
0
    public void LoadData()
    {
        Debug.Log("Load CityData");
        GameObject cityRoot = new GameObject("Citys");

        cityRoot.transform.position = new Vector3(0, 0, 0);
        // 1.城市
        for (int i = 0; i < CITYS.Length;)
        {
            CityBean city = new CityBean();
            city.name         = CITYS[i++];
            city.coordinate.x = int.Parse(CITYS[i++]) + 1;// 注意城池需要偏移
            city.coordinate.y = int.Parse(CITYS[i++]) + 2;
            mCitys.Add(city);
        }
        // 1-1 创建城市模型
        foreach (CityBean cityBean in mCitys)
        {
            GameObject o = GameObject.Instantiate(Resources.Load(CITY_MODEL)) as GameObject;
            o.transform.SetParent(cityRoot.transform);
            o.transform.localPosition = MapManager.GetInstance().CorrdinateToTerrainPosition(cityBean.coordinate);
            o.GetComponentInChildren <TextMesh>().text = cityBean.name;

            // cityComponent
            City cityComponent = o.AddComponent <City>();
            cityComponent.SetCityBean(cityBean);

            cityBean.city = cityComponent;
            mAllCitys.Add(cityBean.name, cityComponent);

            // 修改地形数据
            List <Coordinates> neighbours = MapManager.GetInstance().GetNeighbours(cityBean.coordinate);
            neighbours.Add(cityBean.coordinate);
            foreach (Coordinates coordinate in neighbours)
            {
                MapManager.GetInstance().AddTerrainType(coordinate, TerrainType.TerrainType_Dushi);
                mAllCityCoordinates.Add(coordinate, cityComponent);
            }
        }
        // 2.关口
        for (int i = 0; i < PASSES.Length;)
        {
            CityBean city = new CityBean();
            city.name         = PASSES[i++];
            city.coordinate.x = int.Parse(PASSES[i++]);
            city.coordinate.y = int.Parse(PASSES[i++]);
            city.direction    = int.Parse(PASSES[i++]);
            mPasses.Add(city);
        }
        // 2-1 创建关口模型
        foreach (CityBean cityBean in mPasses)
        {
            GameObject cityGameObject = GameObject.Instantiate(Resources.Load(PASS_MODEL)) as GameObject;
            cityGameObject.transform.SetParent(cityRoot.transform);
            cityGameObject.transform.localPosition = MapManager.GetInstance().CorrdinateToTerrainPosition(cityBean.coordinate);
            GameObject model = cityGameObject.transform.Find("Model").gameObject;
            model.transform.Rotate(new Vector3(0, 0, cityBean.direction), Space.Self);
            cityGameObject.GetComponentInChildren <TextMesh>().text = cityBean.name;
            // cityComponent
            City cityComponent = cityGameObject.AddComponent <City>();
            cityComponent.SetCityBean(cityBean);

            cityBean.city = cityComponent;
            mAllCitys.Add(cityBean.name, cityComponent);

            // 2-2 修改地形数据
            // 2-2-1.确认关口地形
            MapManager.GetInstance().AddTerrainType(cityBean.coordinate, TerrainType.TerrainType_Guansuo);
            mAllCityCoordinates.Add(cityBean.coordinate, cityComponent);
            // 2-2-2.确认无效地形
            if (cityBean.direction == 0)
            {
                List <Coordinates> neighbours = MapManager.GetInstance().GetNeighbours(cityBean.coordinate);
                foreach (Coordinates coordinate in neighbours)
                {
                    // 上下两个不要
                    if (coordinate.x != cityBean.coordinate.x)
                    {
                        MapManager.GetInstance().AddTerrainType(coordinate, TerrainType.TerrainType_Guansuo_Invalid);
                        mAllCityCoordinates.Add(coordinate, cityComponent);
                    }
                }
            }
            else
            {
                List <Coordinates> neighbours = MapManager.GetInstance().GetNeighbours(cityBean.coordinate);
                foreach (Coordinates coordinate in neighbours)
                {
                    // 只要上下两个
                    if (coordinate.x == cityBean.coordinate.x)
                    {
                        MapManager.GetInstance().AddTerrainType(coordinate, TerrainType.TerrainType_Guansuo_Invalid);
                        mAllCityCoordinates.Add(coordinate, cityComponent);
                    }
                }
            }
        }
        // 3.港口
        for (int i = 0; i < PORTS.Length;)
        {
            CityBean city = new CityBean();
            city.name         = PORTS[i++];
            city.coordinate.x = int.Parse(PORTS[i++]);
            city.coordinate.y = int.Parse(PORTS[i++]);
            //city.direction = int.Parse(PASSES[i++]);
            mPorts.Add(city);
        }
        // 3-1 创建港口模型
        foreach (CityBean cityBean in mPorts)
        {
            GameObject o = GameObject.Instantiate(Resources.Load(PORT_MODEL)) as GameObject;
            o.transform.SetParent(cityRoot.transform);
            o.transform.localPosition = MapManager.GetInstance().CorrdinateToTerrainPosition(cityBean.coordinate);
            o.GetComponentInChildren <TextMesh>().text = cityBean.name;

            // cityComponent
            City cityComponent = o.AddComponent <City>();
            cityComponent.SetCityBean(cityBean);

            cityBean.city = cityComponent;
            mAllCitys.Add(cityBean.name, cityComponent);

            // 3-2 修改地形数据
            MapManager.GetInstance().AddTerrainType(cityBean.coordinate, TerrainType.TerrainType_Gang);
            mAllCityCoordinates.Add(cityBean.coordinate, cityComponent);
        }
    }
Esempio n. 3
0
 public void SetCityBean(CityBean cityBean)
 {
     mCityBean = cityBean;
 }