public void Move(MOVE_DIRECTIONS dir, Map map) { //Temps: List<Tile> newCurrentTiles = map.CheckIfCanMove(dir, mCurrentState, mCurrentTiles, this); //Verificando se podemos nos mover nessa direção: if (mCurrentState != STATE.FALLING && newCurrentTiles != null) { //Salvando os tiles atuais: mCurrentTiles.Clear(); foreach (var tile in newCurrentTiles) mCurrentTiles.Add(tile); //Podemos nos mover: UpdateDrawAndSprites(dir); //Tocando o som: //mMoveSound.Play(); } }
public bool DidWeWin(Map map) { //Estamos ocupando apenas um tile? if (mCurrentTiles.Count == 1) { //Verificando se o mapa possui apenas 1 saída tbm: if (map.ExitTiles.Count != 1) { //Não ganhamos: return false; } else { //Os tiles são diferentes? if (mCurrentTiles[0].MapPosition != map.ExitTiles[0].MapPosition) { return false; } } //Se chegamos até aqui, ganhamos: return true; } //Ocupamos mais de um tile: else { //Verificando se o mapa possui apenas 1 saída: if (map.ExitTiles.Count == 1) { //Não ganhamos: return false; } else { //Os tiles são diferentes? if ((mCurrentTiles[0].MapPosition != map.ExitTiles[0].MapPosition) && (mCurrentTiles[0].MapPosition != map.ExitTiles[1].MapPosition) || (mCurrentTiles[1].MapPosition != map.ExitTiles[0].MapPosition) && (mCurrentTiles[1].MapPosition != map.ExitTiles[1].MapPosition)) { return false; } } //Se chegamos até aqui, ganhamos: return true; } }