/// <summary> /// コンストラクター /// </summary> /// <param name="boxPosition"></param> /// <param name="boxType"></param> public BoxArrayImpl( Vector3 boxPosition, BoxType.IType boxType, int groupListNum, bool isDeletable, bool isRegenerated, GameObject gameObject, BoxName boxName ) => (
/// <summary> /// タイプ設定、再生成されたボックスに設定 /// </summary> /// <param name="type"></param> /// <returns></returns> public IBoxArray SetTypeWithRegenerate(BoxType.IType type) => new BoxArrayImpl( BoxPosition, type, GroupListNum, true, true, GameObj, BoxName );
/// <summary> /// タイプ設定 /// </summary> /// <param name="type"></param> /// <returns></returns> public IBoxArray SetType(BoxType.IType type) => new BoxArrayImpl( BoxPosition, type, GroupListNum, IsDeletable, IsRegenerated, GameObj, BoxName );
/// <summary> /// Box 配列の要素を生成する /// </summary> /// <param name="boxPosition"></param> /// <param name="boxType"></param> /// <returns></returns> public static IBoxArray Create( Vector3 boxPosition, BoxType.IType boxType, int groupListNum, bool isDeleteable, bool isRegenerated, GameObject gameObject, BoxName boxName ) => new BoxArrayImpl( boxPosition, boxType, groupListNum, isDeleteable, isRegenerated, gameObject, boxName );
/// <summary> /// DFS アルゴリズムで配列の中身を探索、グループリストに追加 /// </summary> /// <param name="row">行</param> /// <param name="column">列</param> /// <param name="maxRow">最大行</param> /// <param name="maxColumn">最大列</param> /// <param name="type">選択されたタイプ</param> /// <param name="types">生成されている配列のタイプたち</param> /// <param name="temp"></param> /// <param name="visited">訪問情報の配列</param> private static void MatchDfs( int row, int column, int maxRow, int maxColumn, BoxType.IType type, IBoxArray[,] boxes, List <GroupPosition> temp, bool[,] visited) { visited[row, column] = true; temp.Add(new GroupPosition(row, column)); for (int r = 0; r < 4; r++) { var dr = row + dir[r, 0]; var dc = column + dir[r, 1]; if (canCheck(dr, dc, maxRow, maxColumn) && boxes[dr, dc].BoxType == type && visited[dr, dc] != true) { MatchDfs(dr, dc, maxRow, maxColumn, type, boxes, temp, visited); } } }