Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SpriteSheet ss = a loaded spritesheet of 16x16, so the image is 512x512, x:0 y:0 is id:0, x:1 y:0 is id:1, x:1 y:1 is id:17, and so on
- TileInfo[512] ti;
- ^-- # of unique tile types
- //Init data
- for (int x = 0; x < 16; x++) {
- for (int y = 0; y < 16; y++) {
- ti[(y*16)+x] = new TileInfo();
- ti[(y*16)+x].tileID = (y*16)+x;
- }
- }
- //Render your shit
- void renderViewport() {
- //filler data just so i can render, this should of course be somewhere else
- int tileSize = 32;
- int worldSizeX = 9600 (300x32)
- int worldSizeY = 6400 (200x32)
- int viewportWidth = 800;
- int viewportHeight = 600;
- int viewportPosX = 133;
- int viewportPosY = 162;
- int viewportGUIX = 60;
- int viewportGUIY = 30;
- //now for the render - ignoring the need for smoothly clipping off the tiles along the viewport border
- int tileXStart = ((int)(viewportPosX / tileSize))
- int tileXEnd = ((int)(viewportPosX / tileSize)) + ((int)((viewportWidth / tileSize) + 0.5)) //0.5 to round up for that extra tile
- int tileYStart = ((int)(viewportPosY / tileSize))
- int tileYEnd = ((int)(viewportPosY / tileSize)) + ((int)((viewportHeight / tileSize) + 0.5)) //0.5 to round up for that extra tile
- //no wait, noooowwww for the render
- for (int x = tileXStart; x <= tileXEnd; x++) {
- for (int y = tileYStart; y < tileYEnd; y++) {
- Image tileImage = ss.getSprite(x, y);
- //bitblit?! source, x, y, width, height, dest, x, y, width, height
- OGLRenderMethodWhateverThatIs(tileImage, 0, 0, tileSize, tileSize, screen, viewportGUIX + (x * tileSize), viewportGUIY + (y * tileSize), tileSize, tileSize);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement