public void UpdateDisappear() { for (int i = 0; i < IndexesToDisappear.Count; i++) { if (IndexesToDisappear[i].Count == 2) { var heartPosition = VectorUtility.MidPoints(PositionUtils.TransIndexToPosition(IndexesToDisappear[i][0]), PositionUtils.TransIndexToPosition(IndexesToDisappear[i][1])); EffectViewManager.Instance.GenerateEffects("heart", heartPosition, 0.3f); } else if (IndexesToDisappear[i].Count >= 3) { var heartPosition1 = VectorUtility.MidPoints(PositionUtils.TransIndexToPosition(IndexesToDisappear[i][0]), PositionUtils.TransIndexToPosition(IndexesToDisappear[i][1])); var heartPosition2 = VectorUtility.MidPoints(PositionUtils.TransIndexToPosition(IndexesToDisappear[i][IndexesToDisappear[i].Count - 2]), PositionUtils.TransIndexToPosition(IndexesToDisappear[i][IndexesToDisappear[i].Count - 1])); EffectViewManager.Instance.GenerateEffects("heart", heartPosition1, 0.3f); EffectViewManager.Instance.GenerateEffects("heart", heartPosition2, 0.3f); } } if (IndexesToDisappear.Count > 0) { for (int i = 0; i < IndexesToDisappear.Count; i++) { for (int j = 0; j < IndexesToDisappear[i].Count; j++) { var tilesPos = PositionUtils.TransIndexToPosition(IndexesToDisappear[i][j]); var tileUnitPos = PositionUtils.TransIndexToUnitPosition(IndexesToDisappear[i][j]); var tile = tiles[(int)tileUnitPos.x, (int)tileUnitPos.y]; EffectViewManager.Instance.GenerateEffects("vanish", tilesPos, 0.3f); GameTilesViewManager.Instance.RemoveView(IndexesToDisappear[i][j]); RemoveGameTile((int)tileUnitPos.x, (int)tileUnitPos.y); } } } }
public void RotateCubes() { if (CubeDataManager.Instance.UpdateLock) { return; } List <int> cubeIndex = new List <int>(); for (int i = 0; i < currentControlCubes.Length; i++) { cubeIndex.Add(currentControlCubes[i].GetComponent <GameTileView>().Index); } for (int i = 0; i < currentControlCubes.Length; i++) { int newIndex = 0; if (i == 0) { newIndex = cubeIndex[cubeIndex.Count - 1]; } else { newIndex = cubeIndex[i - 1]; } GameTileView view = currentControlCubes[i].GetComponent <GameTileView>(); view.UpdateTartgetPosition(VectorUtility.MinusPosition(PositionUtils.TransIndexToPosition(view.Index), PositionUtils.TransIndexToPosition(newIndex))); view.Index = newIndex; } changeDirectBufferTime = 0; }
bool CheckCubeMoveable(Vector3 moveDirect) { for (int i = 0; i < currentControlCubes.Length; i++) { var newPos = VectorUtility.AddPosition(PositionUtils.TransIndexToUnitPosition(currentControlCubes[i].GetComponent <GameTileView>().Index), moveDirect); if (newPos.x < 0 || newPos.x >= sizeX || newPos.y < 0) { return(false); } if (newPos.y < sizeY && !CubeDataManager.Instance.IsEmpty((int)newPos.x, (int)newPos.y)) { return(false); } } return(true); }
public bool UpdateMoveCubeWithUnitTime() { if (CubeDataManager.Instance.UpdateLock) { return(false); } if (CheckCubeMoveable(Vector3.down)) { foreach (var cube in currentControlCubes) { var newPos = VectorUtility.AddPosition(PositionUtils.TransIndexToUnitPosition(cube.GetComponent <GameTileView>().Index), Vector3.down); cube.GetComponent <GameTileView>().UpdatePositionByIndex(cube.GetComponent <GameTileView>().Index, PositionUtils.TransUnitPositionToIndex(newPos)); } return(true); } return(false); }
public bool MoveCube(Vector3 moveDirect) { if (CubeDataManager.Instance.UpdateLock) { return(false); } if (CheckCubeMoveable(moveDirect)) { foreach (var cube in currentControlCubes) { var newPos = VectorUtility.AddPosition(PositionUtils.TransIndexToUnitPosition(cube.GetComponent <GameTileView>().Index), moveDirect); cube.GetComponent <GameTileView>().UpdateTartgetPosition(PositionUtils.TransUnitPositionToPosition(moveDirect)); cube.GetComponent <GameTileView>().Index = PositionUtils.TransUnitPositionToIndex(newPos); } changeDirectBufferTime = 0; return(true); } return(false); }