private void InitGrids(int rowCount, int colCount, ref BoardGrids boardGrids) { Vector2Int pos; Vector3 curPos;// tileOffset, ; GameObject newTile = default; Transform newTileTF = default; for (int row = rowCount - 1; row >= 0; row--)//预制体为非镜像的方式摆放,故使用倒序遍历 { for (int col = 0; col < colCount; col++) { //tileOffset = new Vector3(CellSize.x * col, CellSize.y * row, 0f); //curPos = StartPos + PosOffset + tileOffset; pos = new Vector2Int(col, row); curPos = GetGridPosWithRowCol(pos); if (TileResRaw != default) { newTile = UnityEngine.Object.Instantiate(TileResRaw, curPos, Quaternion.identity); newTileTF = newTile.transform; newTileTF.SetParent(mBoardParent); } else { } boardGrids.CreateGrid(col, row, newTile); int rowValue = rowCount - row - 1;//需要倒序遍历,使用差运算 int index = (rowValue * colCount) + col; int gridType = GetGridTypeDuringCreate != default ? GetGridTypeDuringCreate.Invoke(index) : mElimiGamePlay.GridTypes.NormalGridType; CreateGrid(pos, curPos, out GridCreateInfo info, string.Empty, true, gridType); } } }
public void InitAndCreate(BoardGrids boardGrids, Vector3 gridsOffset) { GameObject boardParent = new GameObject("boardParent"); mBoardParent = boardParent.transform; mBoardParent.SetParent(mElimiGamePlay.GridsContainer.transform); GameObject shapeParent = new GameObject("shapeParent"); mGridParent = shapeParent.transform; mGridParent.SetParent(mElimiGamePlay.GridsContainer.transform); Transform trans = mElimiGamePlay.GridsContainer.transform; Vector3 pos = trans.position; StartPos = new Vector3(pos.x, pos.y, 0f);//消除格开始摆放的起点 float halfToCenter = -0.5f; int colCount = boardGrids.ColumnSize; int rowCount = boardGrids.RowSize; InitedGridCount = rowCount * colCount; GridsOffset = gridsOffset; PosOffset = new Vector3(CellSize.x * colCount, CellSize.y * rowCount) * halfToCenter + GridsOffset; InitGrids(rowCount, colCount, ref boardGrids); }
public GridSkillTrigger(ElimlnateGrid grid) { GridSelf = grid; mBoardGrids = ElimlnateCore.Instance.BoardGrids; mGridsChecked = new List <int>(); mSecondarySkillTriggers = new Queue <ISkillGridTrigger>(); }
public void FillGridByRandom(out ElimlnateGrid result, Func <ElimlnateGrid, bool> randomAginFilters = default) { BoardGrids boardGrids = mElimiGamePlay.BoardGrids; int index = Utils.UnityRangeRandom(0, boardGrids.GridsSize); result = boardGrids.GetGridByIndex(index); bool flag = randomAginFilters != default ? randomAginFilters.Invoke(result) : true; if ((result == default) || result.IsDestroyed || flag) { FillGridByRandom(out result, randomAginFilters); }
public GridElimlnateExecuter(GridOperater operater, BoardGrids boardGrids, ref List <ElimlnateGrid> list) { GridOperater = operater; BoardGrids = boardGrids; ElimlnateGrid grid; mGrids = new List <ElimlnateGrid>(); int max = list.Count; for (int i = 0; i < max; i++) { grid = list[i]; grid.AddDestroyCallback(CountNeedDestroyGrid); mGrids.Add(grid); } GridNeedDestroyCount = mGrids.Count; }
public void Clean() { IsClear = true; BoardGrids?.Clean(); GridCreater?.Clean(); GridOperater?.Clean(); LineInputer?.Clean(); GridTypes?.Clean(); GridEffects?.Clean(); mAutoActiveTimes?.Clear(); mActiveTimeRemains?.Clear(); OnUpdate = default; GridsContainer = default; DestroyGrid = default; ElimlnateCamera = default; Inputer = default; }
public void CreateBoard(int col, int row, Action <ElimlnateGrid> afterGridsDeactived = default, Action <List <GridRearrangerInfo> > rearrangerGrids = default) { IsClear = false; BoardGrids = new BoardGrids(col, row); if (afterGridsDeactived != default) { BoardGrids.AfterGridsDeactived += afterGridsDeactived; } else { } if (rearrangerGrids != default) { BoardGrids.OnRearrangerGrids += rearrangerGrids; } else { } }
public override void Start(ref List <ElimlnateGrid> grids, string triggerGridEffect = null) { if (GamePlayCore == default) { GamePlayCore = ElimlnateCore.Instance; } else { } KeyValueList <int, List <int> > gridsEmpty = new KeyValueList <int, List <int> >(); BoardGrids boardGrids = GamePlayCore.BoardGrids; int max = boardGrids.GridsSize; for (int i = 0; i < max; i++) { List <int> emptysInCol; ElimlnateGrid grid = boardGrids.GetGridByIndex(i); if (grid == default) { int col = i % boardGrids.RowSize; if (gridsEmpty[col] == default) { emptysInCol = new List <int>(); gridsEmpty[col] = emptysInCol; } else { emptysInCol = gridsEmpty[col]; } emptysInCol.Add(i); } else { } } base.Start(ref grids, triggerGridEffect); }