public Baddie(Vector2 position, float maxSpeed, Facing facing, Map map, TileSet tileSet) : base(position, maxSpeed, facing,map,tileSet) { this.map = map; this.tileSet = tileSet; direction = Direction.Stand; enemy = new Enemy(Position, Game.GetInstance().GetSprite("Wall")); Game.GetInstance().EManager.Add(enemy); nextChange = 0f; rand = new Random(); blind = false; }
public Randy(Vector2 position, float maxSpeed, Facing facing, Map map, TileSet tileSet) : base(position, maxSpeed, facing,map,tileSet) { this.direction = direction; this.map = map; this.tileSet = tileSet; renderPos = new Vector2(0, 0); walkingSound = Game.GetInstance().GetSound("Walk").CreateInstance(); walkingSoundDuration = (float)Game.GetInstance().GetSound("Walk").Duration.TotalMilliseconds; walkingSound.Volume = 1f; moving = false; character = new Character(Position); Game.GetInstance().EManager.Add(character); nextLyre = -1; nextGlue = -1; nextFire = -1; }
public void Draw(SpriteBatch spriteBatch, TileSet tileset, Vector2 position) { float randyRow = (float)position.Y / tileset.TileHeight; float randyCol = (float)position.X / tileset.TileWidth; float viewportRows = spriteBatch.GraphicsDevice.Viewport.Height / tileset.TileHeight; float viewportCols = spriteBatch.GraphicsDevice.Viewport.Width / tileset.TileWidth; float screenRows = Rows; float screenCols = Columns; float top = Math.Max(0, randyRow - viewportRows / 2); if (randyRow > screenRows - viewportRows / 2) top = screenRows - viewportRows; float left = Math.Max(0, randyCol - viewportCols / 2); if (randyCol > screenCols - viewportCols / 2) left = screenCols - viewportCols; int x = 0; int y = 0; int layer = 0; foreach (Terrain terrain in terrainList) { float depth = layer * 0.02f; if (layer < Map.ABOVE_PLAYER_LAYER_START) { depth += 0.1f; } else { depth += 0.5f; } layer++; y = 0; foreach (TileRow tileRow in terrain.TileRowList) { x = 0; /* if (y < top - 1) { y++; continue; } if (y > bottom) { break; } */ foreach (Tile tile in tileRow.TileList) { /* if (x < left - 1) { x++; continue; } if (x > right) { break; }*/ if (randyRow < viewportRows / 2) { } spriteBatch.Draw( tileset.Texture, new Rectangle( (int)((x * tileset.TileWidth) + (tileset.TileWidth / 2) - (left * tileset.TileWidth)), (int)((y * tileset.TileHeight) + (tileset.TileHeight / 2) - (top * tileset.TileHeight)), tileset.TileWidth, tileset.TileHeight), tileset.Rectangle(tile.Position), Color.White, MathHelper.ToRadians(tile.Rotation), new Vector2(tileset.TileWidth / 2, tileset.TileHeight / 2), SpriteEffects.None, depth); x++; } y++; } } }
public void CheckCollision(Sprite sprite, TileSet tileSet) { int leftTile, rightTile, topTile, bottomTile; leftTile = (int)MathHelper.Clamp( Utility.PixelToTile( sprite.Position.X + sprite.Movement.X - sprite.Animation.AnimationManager.Origin.X + 0.1f, tileSet.TileWidth ), 1, columns ); rightTile = (int)MathHelper.Clamp( Utility.PixelToTile( sprite.Position.X + sprite.Movement.X + sprite.Animation.AnimationManager.Origin.X - 0.1f, tileSet.TileWidth ), 1, columns ); topTile = (int)MathHelper.Clamp( Utility.PixelToTile( sprite.Position.Y + sprite.Movement.Y - sprite.Animation.AnimationManager.Origin.Y + 0.1f, tileSet.TileHeight ), 1, rows ); bottomTile = (int)MathHelper.Clamp( Utility.PixelToTile( sprite.Position.Y + sprite.Movement.Y + sprite.Animation.AnimationManager.Origin.Y - 0.1f, tileSet.TileHeight ), 1, rows ); if (sprite.Movement.X < 0) { for (int i = topTile; i <= bottomTile; i++) { if (walkable[i - 1, leftTile - 1] == 0) { sprite.Movement = new Vector2( Utility.TileToPixel(leftTile, tileSet.TileWidth) + sprite.Animation.AnimationManager.Origin.X - sprite.Position.X, 0 ); break; } } } else if (sprite.Movement.X > 0) { for (int i = topTile; i <= bottomTile; i++) { if (walkable[i - 1, rightTile - 1] == 0) { sprite.Movement = new Vector2( Utility.TileToPixel(rightTile-1, tileSet.TileWidth) - sprite.Animation.AnimationManager.Origin.X - sprite.Position.X, 0 ); break; } } } else if (sprite.Movement.Y < 0) { for (int i = leftTile; i <= rightTile; i++) { if (walkable[topTile - 1, i - 1] == 0) { sprite.Movement = new Vector2( 0, Utility.TileToPixel(topTile, tileSet.TileHeight) + sprite.Animation.AnimationManager.Origin.Y - sprite.Position.Y ); break; } } } else if (sprite.Movement.Y > 0) { for (int i = leftTile; i <= rightTile; i++) { if (walkable[bottomTile - 1, i - 1] == 0) { sprite.Movement = new Vector2( 0, Utility.TileToPixel(bottomTile-1, tileSet.TileHeight) - sprite.Animation.AnimationManager.Origin.Y - sprite.Position.Y ); break; } } } }