private Tile tileEntityFactory(EntityTypesEnum type) { Tile newTileEntity = null; switch (type) { case EntityTypesEnum.Tile: newTileEntity = new Tile(); break; case EntityTypesEnum.SteelWall: new SteelWall(out newTileEntity); break; case EntityTypesEnum.Exit: new Exit(out newTileEntity); break; case EntityTypesEnum.Wall: new Wall(out newTileEntity); break; case EntityTypesEnum.Mud: new Mud(out newTileEntity); break; case EntityTypesEnum.Boulder: new Boulder(out newTileEntity); break; case EntityTypesEnum.Diamond: new Diamond(out newTileEntity); break; case EntityTypesEnum.Rockford: Rockford rf = new Rockford(out newTileEntity); rockfordPos = rf; break; case EntityTypesEnum.Firefly: new FireFly(out newTileEntity); break; } if (newTileEntity == null) { throw new Exception(); } else { return(newTileEntity); } }
public void switchLevels(Level newLevel, Level oldLevel) { oldLevel.stopTimer(); Rockford currentRockford = oldLevel.rockfordPos; Rockford oldRockford = newLevel.rockfordPos; Tile oldTile = Player.tile; oldRockford.tile.Entity = Player; Player.tile = oldRockford.tile; oldRockford.tile = oldTile; oldTile.Entity = oldRockford; newLevel.rockfordPos = currentRockford; oldLevel.rockfordPos = oldRockford; newLevel.startTimer(); }
internal bool moveOrKill(Tile tile) { if (tile.getEntityType() == EntityTypesEnum.Tile) { moveTo(tile); return(true); } else if (tile.getEntityType() == EntityTypesEnum.Rockford) { Rockford rf = tile.Entity as Rockford; rf.kill(); return(true); } else if (tile.getEntityType() == EntityTypesEnum.Firefly) { moveTo(tile); return(true); } else { return(false); } }
internal override void react(int updateFrame) { if (lastFrameUpdated == updateFrame) { return; } else { lastFrameUpdated = updateFrame; } if (lastInterval == interval) { if (status == EntityStatesEnum.Idle) { if (tile.Down != null && tile.Down.getEntityType() == EntityTypesEnum.Tile) { moveTo(tile.Down); status = EntityStatesEnum.Falling; lastInterval = 0; } else if ( tile.Down != null && tile.Left != null && tile.Down.Left != null && tile.Down.getEntityType() == EntityTypesEnum.Boulder && tile.Left.getEntityType() == EntityTypesEnum.Tile && tile.Down.Left.getEntityType() == EntityTypesEnum.Tile || tile.Down != null && tile.Left != null && tile.Down.Left != null && tile.Down.getEntityType() == EntityTypesEnum.Diamond && tile.Left.getEntityType() == EntityTypesEnum.Tile && tile.Down.Left.getEntityType() == EntityTypesEnum.Tile) { moveTo(tile.Down.Left); status = EntityStatesEnum.Falling; lastInterval = 0; } else if ( tile.Down != null && tile.Right != null && tile.Down.Right != null && tile.Down.getEntityType() == EntityTypesEnum.Boulder && tile.Right.getEntityType() == EntityTypesEnum.Tile && tile.Down.Right.getEntityType() == EntityTypesEnum.Tile || tile.Down != null && tile.Right != null && tile.Down.Right != null && tile.Down.getEntityType() == EntityTypesEnum.Diamond && tile.Right.getEntityType() == EntityTypesEnum.Tile && tile.Down.Right.getEntityType() == EntityTypesEnum.Tile ) { moveTo(tile.Down.Right); status = EntityStatesEnum.Falling; lastInterval = 0; } } else if (status == EntityStatesEnum.Falling) { if (tile.Down != null && tile.Down.getEntityType() == EntityTypesEnum.Tile) { moveTo(tile.Down); status = EntityStatesEnum.Falling; lastInterval = 0; } else if (tile.Down != null && tile.Down.getEntityType() == EntityTypesEnum.Rockford) { Rockford rf = tile.Down.Entity as Rockford; rf.kill(); } else if ( tile.Down != null && tile.Left != null && tile.Down.Left != null && tile.Down.getEntityType() == EntityTypesEnum.Boulder && tile.Left.getEntityType() == EntityTypesEnum.Tile && tile.Down.Left.getEntityType() == EntityTypesEnum.Tile || tile.Down != null && tile.Left != null && tile.Down.Left != null && tile.Down.getEntityType() == EntityTypesEnum.Diamond && tile.Left.getEntityType() == EntityTypesEnum.Tile && tile.Down.Left.getEntityType() == EntityTypesEnum.Tile) { moveTo(tile.Down.Left); status = EntityStatesEnum.Falling; lastInterval = 0; } else if ( tile.Down != null && tile.Left != null && tile.Down.Left != null && tile.Down.getEntityType() == EntityTypesEnum.Boulder && tile.Left.getEntityType() == EntityTypesEnum.Tile && tile.Down.Left.getEntityType() == EntityTypesEnum.Rockford || tile.Down != null && tile.Left != null && tile.Down.Left != null && tile.Down.getEntityType() == EntityTypesEnum.Diamond && tile.Left.getEntityType() == EntityTypesEnum.Tile && tile.Down.Left.getEntityType() == EntityTypesEnum.Rockford) { Rockford rf = tile.Down.Entity as Rockford; rf.kill(); } else if ( tile.Down != null && tile.Right != null && tile.Down.Right != null && tile.Down.getEntityType() == EntityTypesEnum.Boulder && tile.Right.getEntityType() == EntityTypesEnum.Tile && tile.Down.Right.getEntityType() == EntityTypesEnum.Tile || tile.Down != null && tile.Right != null && tile.Down.Right != null && tile.Down.getEntityType() == EntityTypesEnum.Diamond && tile.Right.getEntityType() == EntityTypesEnum.Tile && tile.Down.Right.getEntityType() == EntityTypesEnum.Tile ) { moveTo(tile.Down.Right); status = EntityStatesEnum.Falling; lastInterval = 0; } else if ( tile.Down != null && tile.Right != null && tile.Down.Right != null && tile.Down.getEntityType() == EntityTypesEnum.Boulder && tile.Right.getEntityType() == EntityTypesEnum.Tile && tile.Down.Right.getEntityType() == EntityTypesEnum.Rockford || tile.Down != null && tile.Right != null && tile.Down.Right != null && tile.Down.getEntityType() == EntityTypesEnum.Diamond && tile.Right.getEntityType() == EntityTypesEnum.Tile && tile.Down.Right.getEntityType() == EntityTypesEnum.Rockford ) { Rockford rf = tile.Down.Entity as Rockford; rf.kill(); } else { status = EntityStatesEnum.Idle; } } } else { lastInterval++; } }
public Level createLevel(string levelPath) { newLine = false; columnIterator = 0; rowIterator = 0; firstTile = null; lastCreatedTile = null; firstOfLastRowTile = null; rockfordPos = null; foreach (var line in System.IO.File.ReadAllLines("levels\\" + levelPath)) { foreach (char c in line) { switch (c) { case 'S': connectTile(tileEntityFactory(EntityTypesEnum.SteelWall)); break; case 'B': connectTile(tileEntityFactory(EntityTypesEnum.Boulder)); break; case 'D': connectTile(tileEntityFactory(EntityTypesEnum.Diamond)); break; case 'F': connectTile(tileEntityFactory(EntityTypesEnum.Firefly)); break; case 'M': connectTile(tileEntityFactory(EntityTypesEnum.Mud)); break; case 'R': connectTile(tileEntityFactory(EntityTypesEnum.Rockford)); break; case 'W': connectTile(tileEntityFactory(EntityTypesEnum.Wall)); break; case ' ': connectTile(tileEntityFactory(EntityTypesEnum.Tile)); break; case 'E': connectTile(tileEntityFactory(EntityTypesEnum.Exit)); break; default: break; } } newLine = true; } Level returnLevel = new Level(); returnLevel.Tile = firstTile; returnLevel.rockfordPos = rockfordPos; return(returnLevel); }