Esempio n. 1
0
    /// <summary>
    /// 特定の位置から3方向壁に囲まれている場合、一番近い壁を壊す
    /// </summary>
    /// <param name="map">マップデータ</param>
    /// <param name="x">ターゲット</param>
    /// <param name="z">ターゲット</param>
    /// <param name="dis">見る距離</param>
    /// <param name="roadSpace">壁の幅</param>
    public static void IfWall_MakeRoad(Map.ObjType[,] map, int x, int z, int dis, int roadSpace)
    {
        int wallCount = 0;

        Dictionary <MapEvent.Dir, int> wallCheckDis =
            new Dictionary <MapEvent.Dir, int>(MapEventSearch.WallSearch(map, x, z, dis));

        //辞書内にある最も小さい値を取り出す
        int minValue = wallCheckDis.Values.Min();
        var pair     = wallCheckDis.FirstOrDefault(c => c.Value == minValue);
        var key      = pair.Key;

        //壁に阻まれた方向の数を数える
        foreach (var str in wallCheckDis)
        {
            //Debug.Log("key " + str.Key+" value "+str.Value);
            if (str.Value < dis)
            {
                wallCount++;
            }
            if (str.Value == MapEventSearch.Outside)
            {
                wallCount++;
            }
        }

        //3方向囲まれた場合一番近い壁を壊す
        if (wallCount >= 3)
        {
            MapEvent.WallDestroy(map, x, z, pair.Key, pair.Value, roadSpace);
        }
    }