public void drawTiles(FTile[,] tiles, int size_x, int size_y, LinkedList<FTexture2D> sprites) { int start_x, start_y, end_x, end_y; if (tile_offset_x < 0) start_x = 0; else if (tile_offset_x > size_x) return; else start_x = (int)Math.Floor(tile_offset_x); if (tile_offset_y < 0) start_y = 0; else if (tile_offset_y > size_y) return; else start_y = (int)Math.Floor(tile_offset_y); if (tile_offset_x + tile_width > size_x) end_x = size_x; else if (tile_offset_x + tile_width < 0) return; else end_x = (int)Math.Ceiling(tile_offset_x + tile_width); if (tile_offset_y + tile_height > size_y) end_y = size_y; else if (tile_offset_y + tile_height < 0) return; else end_y = (int)Math.Ceiling(tile_offset_y + tile_height); Vector2 pos = new Vector2(100, 100); Vector2 scale = new Vector2(1, 1); for (int x = start_x; x < end_x; x++) { for (int y = start_y; y < end_y; y++) { spriteBatch.Begin(); pos.X = pix_x + (x * (float)pix_per_tile_width) - (float)tile_offset_x * (float)pix_per_tile_width; pos.Y = pix_y + (y * (float)pix_per_tile_height) - (float)tile_offset_y * (float)pix_per_tile_height; scale.X = (float)pix_per_tile_width / 64; scale.Y = (float)pix_per_tile_height / 64; spriteBatch.Draw(sprites.ElementAt(tiles[x, y].getSpriteIndex()).texture, pos, null, Color.White, 0f, Vector2.Zero, scale, SpriteEffects.None, 0f); spriteBatch.End(); } } }
public FMap(int _tile_width, int _tile_height) { tile_width = _tile_width; tile_height = _tile_height; mapTiles = new FTile[tile_width, tile_height]; for (int x = 0; x < tile_width; x++) { for (int y = 0; y < tile_height; y++) { mapTiles[x, y] = new FTile(0, true); } } mapTiles[10, 10].setTraversable(false); mapTiles[10, 10].setSpriteIndex(1); mapTiles[11, 10].setTraversable(false); mapTiles[11, 10].setSpriteIndex(1); mapTiles[12, 10].setTraversable(false); mapTiles[12, 10].setSpriteIndex(1); tileTextures = new LinkedList<Texture2D>(); tileEffects = new LinkedList<FTileEffect>(); }
public void createTestBits() { current_map = new FMap(20, 20); player_one.texture_index = 0; player_one.max_hit_points = 50; player_one.hit_points = 50; sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("grass"), 64, 64, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("darkwood"), 64, 64, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("wood"), 64, 64, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("dirt"), 64, 64, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("invstone"), 64, 64, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("ItemCase"), 64, 64, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("Item_fireflask"), 64, 64, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("Item_frostflask"), 64, 64, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("frost_effect"), 64, 64, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("healthbottle_back"), 128, 192, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("healthbottle_front"), 128, 192, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("healthbottle_liquid"), 128, 192, 0, 0)); sprites.AddLast(new FTexture2D(Content.Load<Texture2D>("tree"), 128, 192, 0, 0)); inv_camera = new FCamera(spriteBatch, 0, graphics.GraphicsDevice.Viewport.Height / 12 * 9, graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height / 12 * 3, 16, 3); inv_tiles = new FTile[16, 3]; for (int x = 0; x < 16; x++) { for(int y = 0; y < 3; y++) { inv_tiles[x, y] = new FTile(2, false); } } inv_tiles[9, 1].setSpriteIndex(5); inv_tiles[11, 1].setSpriteIndex(5); inv_tiles[10, 0].setSpriteIndex(5); inv_tiles[10, 2].setSpriteIndex(5); inventory = new FInventory(player_one); inventory.bag[0] = new FItem(6); inventory.bag[1] = new FItem(7); inventory.bag_item_selected = 0; inventory.setSlot(0) ; inventory.bag_item_selected = 1; inventory.setSlot(1); }