public List <ISimulatedBlock> DeleteBlocks() { var blocksToDelete = BlockComparer.Compare(SimulatedGrid); foreach (IBlockModel block in blocksToDelete) { _simulatedGrid[block.Location.X, block.Location.Y] = null; } return(blocksToDelete); }
public void ShouldAddThreeSevenToDelete() { blockPattern = Substitute.For <IBlockPattern>(); blockTypeMock = new BlockType[] { BlockType.One, BlockType.Seven, BlockType.Seven, BlockType.Seven, }; blockPattern.Types.Returns(blockTypeMock); group = groupFactory.Create(setting, blockPattern, groupPattern); Assert.IsTrue(grid.AddGroup(group)); Assert.IsTrue(group.Location.Equals(setting.BlockSpawnPoint)); Assert.IsTrue(group.Children[1].Number == 7); Assert.IsTrue(group.Children[2].Number == 7); Assert.IsTrue(group.Children[3].Number == 7); grid.FixGroup(); grid.DropBlocks(); Assert.AreEqual(new Coord(3, 1), group.Children[0].Location); Assert.AreEqual(new Coord(3, 0), group.Children[1].Location); Assert.AreEqual(new Coord(4, 0), group.Children[2].Location); Assert.AreEqual(new Coord(2, 0), group.Children[3].Location); IBlock[,] blocks = new IBlock[grid.Width, grid.Height]; for (int y = 0; y < grid.Height; y++) { for (int x = 0; x < grid.Width; x++) { blocks[x, y] = grid[x, y]; } } Assert.IsTrue(blocks[3, 1].Number == 1); Assert.IsTrue(blocks[3, 0].Number == 7); Assert.IsTrue(blocks[4, 0].Number == 7); Assert.IsTrue(blocks[2, 0].Number == 7); var toDelete = BlockComparer.Compare(blocks); Assert.IsFalse(toDelete.Contains(group.Children[0])); Assert.IsTrue(toDelete.Contains(group.Children[1])); Assert.IsTrue(toDelete.Contains(group.Children[2])); Assert.IsTrue(toDelete.Contains(group.Children[3])); }
public override bool Execute() { var blocksToDelete = BlockComparer.Compare(_grid.GridRaw); if (blocksToDelete.Count == 0) { return(false); } _grid.IncrementChains(); foreach (IBlock block in blocksToDelete) { block.StartDeleting(); } if (_onDeleteEvent != null) { _onDeleteEvent(_grid, blocksToDelete, _grid.Chains); } return(true); }
public static void LoadLists(Game myGame) { enemyList = new List <IEnemy>(); itemList = new List <IItem>(); blockList = new List <IBlock>(); enemyPipeList = new List <IEnemy>(); itemPipeList = new List <IItem>(); blockPipeList = new List <IBlock>(); bgList = new List <IBg>(); StreamReader levelFile = new StreamReader( Path.Combine(Directory.GetCurrentDirectory(), "Content", "Levels", "Level1-1.txt") ); StreamReader bonusLevelFile = new StreamReader( Path.Combine(Directory.GetCurrentDirectory(), "Content", "Levels", "Level1-1BONUS.txt") ); String inComingLine; int posRow = zero; while (!levelFile.EndOfStream) { inComingLine = levelFile.ReadLine(); String[] target = inComingLine.Split(','); int posCol = zero; while (posCol < target.Length) { if (target[posCol].Equals("brick")) { IBlock block = new Brick(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("crack")) { IBlock block = new Crack(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("diamond")) { IBlock block = new Diamond(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); blockList.Add(block); } else if (target[posCol].Equals("question")) { IBlock block = new Question(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("questionRedM")) { Question block = new Question(myGame, posCol, posRow); block.contain = Utility.items.redM; blockList.Add(block); } else if (target[posCol].Equals("questionFireF")) { Question block = new Question(myGame, posCol, posRow); block.contain = Utility.items.flower; blockList.Add(block); } else if (target[posCol].Equals("questionCoin")) { Question block = new Question(myGame, posCol, posRow); block.contain = Utility.items.coin; blockList.Add(block); } else if (target[posCol].Equals("questionGreenM")) { Question block = new Question(myGame, posCol, posRow); block.contain = Utility.items.greenM; blockList.Add(block); } else if (target[posCol].Equals("questionBat")) { Question block = new Question(myGame, posCol, posRow); block.contain = Utility.items.bat; blockList.Add(block); } else if (target[posCol].Equals("used")) { IBlock block = new Used(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("invisible")) { IBlock block = new Invisible(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("standardPipe")) { Pipe block = new Pipe(myGame, posCol, posRow); blockList.Add(block); IEnemy enemy = new PiranhaPlant(myGame, block.drawLoc.X, block.drawLoc.Y); enemyList.Add(enemy); } else if (target[posCol].Equals("standardPipeTransition")) { IBlock block = new PipeTransition(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("popPipe")) { IBlock block = new PopPipe(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("pipeNeck")) { IBlock block = new PipeNeck(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("smallCastle")) { IBlock block = new Castle(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("flagpole")) { IItem item = new Flagpole(myGame, posCol, posRow); itemList.Add(item); IBlock block = new Diamond(myGame, (posCol * stdSpriteSize) - six, (posRow * stdSpriteSize) + oneHundredTwentyEight); blockList.Add(block); } else if (target[posCol].Equals("coin")) { IItem item = new Coin(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("star")) { IItem item = new Star(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("flower")) { IItem item = new FireFlower(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("redMushroom")) { IItem item = new RedMushroom(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("greenMushroom")) { IItem item = new GreenMushroom(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("smallFireBeam")) { IItem item = new SmallSpinFireBeam(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); IBlock block = new Used(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("mediumFireBeam")) { IItem item = new MediumSpinFireBeam(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("largeFireBeam")) { IItem item = new LargeSpinFireBeam(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("goomba")) { IEnemy enemy = new Goomba(myGame, posCol, posRow); enemyList.Add(enemy); } else if (target[posCol].Equals("koopa")) { IEnemy enemy = new Koopa(myGame, posCol, posRow); enemyList.Add(enemy); } else if (target[posCol].Equals("oneCloud")) { IBg bg = new Bg(myGame, myGame.oneCloudBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("threeClouds")) { IBg bg = new Bg(myGame, myGame.threeCloudsBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("oneBush")) { IBg bg = new Bg(myGame, myGame.oneBushBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("threeBushes")) { IBg bg = new Bg(myGame, myGame.threeBushesBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("smallMountain")) { IBg bg = new Bg(myGame, myGame.smallMountainBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("bigMountain")) { IBg bg = new Bg(myGame, myGame.bigMountainBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("title")) { IBg bg = new Bg(myGame, myGame.titleScreen, posCol, posRow); bgList.Add(bg); } posCol++; } posRow++; } posRow = zero; while (!bonusLevelFile.EndOfStream) { inComingLine = bonusLevelFile.ReadLine(); String[] target = inComingLine.Split(','); int posCol = zero; while (posCol < target.Length) { if (target[posCol].Equals("blueBrick")) { IBlock block = new BlueBrick(myGame, posCol, posRow); blockPipeList.Add(block); } else if (target[posCol].Equals("blueCrack")) { IBlock block = new BlueCrack(myGame, posCol, posRow); blockPipeList.Add(block); } else if (target[posCol].Equals("coin")) { IItem item = new Coin(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemPipeList.Add(item); } else if (target[posCol].Equals("pipeNeck")) { IBlock block = new PipeNeck(myGame, posCol, posRow); blockPipeList.Add(block); } else if (target[posCol].Equals("sidePipe")) { IBlock block = new SidePipe(myGame, posCol, posRow); blockPipeList.Add(block); } else if (target[posCol].Equals("pipeNeck")) { IBlock block = new PipeNeck(myGame, posCol, posRow); blockPipeList.Add(block); } posCol++; } posRow++; } levelFile.Close(); bonusLevelFile.Close(); IComparer <IBlock> blockComp = new BlockComparer <IBlock>(); IComparer <IItem> itemComp = new ItemComparer <IItem>(); IComparer <IEnemy> enemyComp = new EnemyComparer <IEnemy>(); blockList.Sort(blockComp); itemList.Sort(itemComp); enemyList.Sort(enemyComp); blockPipeList.Sort(blockComp); itemPipeList.Sort(itemComp); enemyPipeList.Sort(enemyComp); }
public static void InfiniteLevelLoad(Game myGame) { enemyList = new List <IEnemy>(); itemList = new List <IItem>(); blockList = new List <IBlock>(); bgList = new List <IBg>(); String[] levelFile = new String[two] { "InfiniteLevel-1.txt", "InfiniteLevel-2.txt" }; int file = 0; StreamReader File = new StreamReader(Path.Combine(Directory.GetCurrentDirectory(), "Content", "Levels", levelFile[file])); String inComingLine; int posRow = zero; while (!File.EndOfStream) { inComingLine = File.ReadLine(); String[] target = inComingLine.Split(','); int posCol = zero; while (posCol < target.Length) { if (target[posCol].Equals("brick")) { IBlock block = new Brick(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("crack")) { IBlock block = new Crack(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("diamond")) { IBlock block = new Diamond(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); blockList.Add(block); } else if (target[posCol].Equals("question")) { IBlock block = new Question(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("questionRedM")) { Question block = new Question(myGame, posCol, posRow); block.contain = Utility.items.redM; blockList.Add(block); } else if (target[posCol].Equals("questionFireF")) { Question block = new Question(myGame, posCol, posRow); block.contain = Utility.items.flower; blockList.Add(block); } else if (target[posCol].Equals("questionCoin")) { Question block = new Question(myGame, posCol, posRow); block.contain = Utility.items.coin; blockList.Add(block); } else if (target[posCol].Equals("questionGreenM")) { Question block = new Question(myGame, posCol, posRow); block.contain = Utility.items.greenM; blockList.Add(block); } else if (target[posCol].Equals("questionBat")) { Question block = new Question(myGame, posCol, posRow); block.contain = Utility.items.bat; blockList.Add(block); } else if (target[posCol].Equals("used")) { IBlock block = new Used(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("invisible")) { IBlock block = new Invisible(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("standardPipe")) { Pipe block = new Pipe(myGame, posCol, posRow); blockList.Add(block); IEnemy enemy = new PiranhaPlant(myGame, block.drawLoc.X, block.drawLoc.Y); enemyList.Add(enemy); } else if (target[posCol].Equals("pipeNeck")) { IBlock block = new PipeNeck(myGame, posCol, posRow); blockList.Add(block); } else if (target[posCol].Equals("coin")) { IItem item = new Coin(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("star")) { IItem item = new Star(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("flower")) { IItem item = new FireFlower(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("redMushroom")) { IItem item = new RedMushroom(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("greenMushroom")) { IItem item = new GreenMushroom(myGame, posCol * stdSpriteSize, posRow * stdSpriteSize); itemList.Add(item); } else if (target[posCol].Equals("goomba")) { IEnemy enemy = new Goomba(myGame, posCol, posRow); enemyList.Add(enemy); } else if (target[posCol].Equals("koopa")) { IEnemy enemy = new Koopa(myGame, posCol, posRow); enemyList.Add(enemy); } else if (target[posCol].Equals("oneCloud")) { IBg bg = new Bg(myGame, myGame.oneCloudBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("threeClouds")) { IBg bg = new Bg(myGame, myGame.threeCloudsBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("oneBush")) { IBg bg = new Bg(myGame, myGame.oneBushBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("threeBushes")) { IBg bg = new Bg(myGame, myGame.threeBushesBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("smallMountain")) { IBg bg = new Bg(myGame, myGame.smallMountainBgElement, posCol, posRow); bgList.Add(bg); } else if (target[posCol].Equals("bigMountain")) { IBg bg = new Bg(myGame, myGame.bigMountainBgElement, posCol, posRow); bgList.Add(bg); } posCol++; } posRow++; } File.Close(); if (file < two) { File = new StreamReader(Path.Combine(Directory.GetCurrentDirectory(), "Content", "Levels", levelFile[file])); file++; } else { file = zero; } IComparer <IBlock> blockComp = new BlockComparer <IBlock>(); IComparer <IItem> itemComp = new ItemComparer <IItem>(); IComparer <IEnemy> enemyComp = new EnemyComparer <IEnemy>(); blockList.Sort(blockComp); itemList.Sort(itemComp); enemyList.Sort(enemyComp); }