public void AutoEatSpecialBlock() { SpecialBlockEffect eff = new SpecialBlockEffect(this, GameState.GAMEOVER); for (int row = 0; row < width; ++row) { for (int col = 0; col < height; ++col) { Block block = listBlocks[row, col]; if (Block.IsSpecialBlock(block.type)) { eff.AddSpecialBlock(block); } } } if (eff.specialBlocks.Count > 0) { eff.Effect(eff.specialBlocks.Dequeue()); } else { UnSelectBlockOnPath(); foreach (Block block in suggetionMove.searchPath) { block.SetState(BlockState.Normal); } GameManager.instance.SetGameState(GameState.GAMEOVER); } }
public void SetRun() { GameManager.instance.SetGameState(GameState.EFFECT); eff = new SpecialBlockEffect(BoardManager.instance); List <Block> blocks = new List <Block> (); int row = Random.Range(0, BoardManager.instance.height); int col = Random.Range(0, BoardManager.instance.width); Vector3 position = BoardManager.instance.GetBlock(row, col).transform.position; position.y += Block.diff; position.x += 0.4f * Block.diff; position.z = -3; transform.position = position; Block block; for (int i = row - 1; i <= row + 1; ++i) { for (int j = col - 1; j <= col + 1; ++j) { if (i >= 0 && j >= 0 && j < BoardManager.instance.width && i < BoardManager.instance.height) { if (i == row - 1 && j == col - 1 || i == row + 1 && j == col - 1 || i == row - 1 && j == col + 1 || i == row + 1 && j == col + 1) { continue; } block = BoardManager.instance.GetBlock(i, j); if (!Block.IsSpecialBlock(block)) { blocks.Add(block); } else { eff.AddSpecialBlock(block); } block.SetState(BlockState.Selected); } } } for (int i = 0; i < blocks.Count; ++i) { if (!BoardManager.instance.GetPath().Contains(blocks[i])) { BoardManager.instance.GetPath().Add(blocks[i]); } } gameObject.SetActive(true); if (SoundManager.instance != null) { SoundManager.instance.PlaySFX(SFX.BUNHIN); } }
public void SetRun(SpecialBlockEffect effect) { parent = transform.parent.gameObject.GetComponent <Block>(); start = BoardManager.instance.GetBlock(parent.y, 0).transform.position; transform.position = start; end = BoardManager.instance.GetBlock(parent.y, BoardManager.instance.width - 1).transform.position; running = true; this.effect = effect; blocks = BoardManager.instance.GetRow(effect.block.y); }
public override void SetRun() { GameManager.instance.SetGameState(GameState.EFFECT); int row = Random.Range(0, BoardManager.instance.height - 1); start = BoardManager.instance.GetBlock(row, 0).transform.position; end = BoardManager.instance.GetBlock(row, BoardManager.instance.width - 1).transform.position; transform.position = start; isRunning = true; gameObject.SetActive(true); // if (SoundManager.instance != null) { SoundManager.instance.PlaySFX(SFX.MAYCAY); } eff = new SpecialBlockEffect(BoardManager.instance); List <Block> blocks = new List <Block>(); Block block; for (int col = 0; col < BoardManager.instance.width; ++col) { block = BoardManager.instance.GetBlock(row, col); if (!Block.IsSpecialBlock(block)) { blocks.Add(block); } else { eff.AddSpecialBlock(block); } block.SetState(BlockState.Selected); } for (int i = 0; i < blocks.Count; ++i) { if (!BoardManager.instance.GetPath().Contains(blocks[i])) { BoardManager.instance.GetPath().Add(blocks[i]); } } }
public void StartEffect(SpecialBlockEffect effect) { count = 0; this.effect = effect; }
void Update() { if (GameManager.instance.gameState == GameState.PLAYING) { if (Input.GetMouseButtonDown(0)) { Vector2 worldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); RaycastHit2D hit = Physics2D.Raycast(worldPoint, Vector2.zero); //If something was hit, the RaycastHit2D.collider will not be null. if (hit.collider != null) { if (hit.collider.tag == "BlockingMaterial") { return; } Block block = hit.collider.gameObject.GetComponent <Block>(); if (block == null) { Debug.Log("Get component Block false"); return; } if (hit.collider.tag == "SpecialBlock") { SpecialBlockEffect eff = new SpecialBlockEffect(BoardManager.instance); block.SetState(BlockState.Selected); eff.Effect(block); } } } if (Input.GetMouseButton(0)) { Vector2 worldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); RaycastHit2D hit = Physics2D.Raycast(worldPoint, Vector2.zero); //If something was hit, the RaycastHit2D.collider will not be null. if (hit.collider != null) { if (hit.collider.tag == "BlockingMaterial") { return; } Block block = hit.collider.gameObject.GetComponent <Block>(); if (block == null) { Debug.Log("Get component NormalBlock false"); return; } if (hit.collider.tag == "NormalBlock") { BoardManager.instance.AddBlockToPath(block); } } } if (Input.GetMouseButtonUp(0)) { Block.observers.Clear(); if (BoardManager.instance.CheckSameTypeInPath() == true) { ItemEffect.instance.type = BoardManager.instance.GetPath()[0].type; Block.observers.Add(ItemEffect.instance); } else { Block.observers.Add(GameManager.instance); } //Block.numBlock = 0; //Block.numHandled = 0; Block.PrepareEatBlock(); BoardManager.instance.EatBlocks(); } } }