예제 #1
0
    bool TryPope(int x, int z, WorldUnit unit, List <PointGameObject> pope)
    {
        int max     = 12; // 最大数量
        int min_dis = 10; // 每个之间最小距离

        if (pope.Count >= max)
        {
            return(false);
        }

        // 是否可以建造
        bool can = true;

        if (can)
        {
            can = (unit & WorldUnit.City) == WorldUnit.City;
        }
        if (can)
        {
            if (pope.Count < 6)
            {
                can = (unit & WorldUnit.Level1) == WorldUnit.Level1;
            }
            else
            {
                can = (unit & WorldUnit.Level2) == WorldUnit.Level2;
            }
        }

        if (can)
        {
            // 在城市区域 并且在1级区域
            Vector3 position = new Vector3(x, 0, z);
            can = TryPos(position, min_dis);
            if (can)
            {
                pope.Add(new PointGameObject()
                {
                    position = position, name = RandName.GetRandPopeName()
                });
                this.pope = pope.ToArray();
            }
        }
        return(true);
    }