Package transientlibs.maps.utils.grid

Source Code of transientlibs.maps.utils.grid.FOVScreenGrid

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package transientlibs.maps.utils.grid;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import java.util.ArrayList;
import java.util.List;
import transientlibs.slick2d.util.Log;
import transientlibs.bindedobjects.gamecontent.Terrain;
import transientlibs.maps.container.TransientAssembledMap;
import transientlibs.objects.primitives.Coords;
import transientlibs.preui.objects.gui.elements.Marker;
import transientlibs.preui.objects.gui.interfaces.IImage;
import transientlibs.preui.objects.gui.interfaces.IMarker;
import transientlibs.processors.misc.Detonator;

/**
*
* @author kibertoad
*/
public class FOVScreenGrid {
   
        //public FOVBoard fov;
        public List<List<Marker>> gridElements;
        public TransientAssembledMap map;
       
        public IImage fog;
       
        public IImage fog_00000000;
       
        public IImage fog_00000101;
        public IImage fog_00000111;
        public IImage fog_00010001;
        public IImage fog_00010101;
        public IImage fog_00010111;
        public IImage fog_00011100;
        public IImage fog_00011101;
        public IImage fog_00011111;

        public IImage fog_01000001;
        public IImage fog_01000100;
        public IImage fog_01000111;
        public IImage fog_01010001;
        public IImage fog_01010100;
        public IImage fog_01010101;
        public IImage fog_01011100;
        public IImage fog_01011111;
       
       
        public int startMapX;
        public int startMapY;
        public int endMapX;
        public int endMapY;
       
        public int screenWidthInTiles;
        public int screenHeightInTiles;
       
        public SpriteBatch batch;

    public FOVScreenGrid(TransientAssembledMap map, SpriteBatch setBatch) {
        this.map = map;
        batch = setBatch;
               
        recalculateBorder();       
        fillArrays();       
    }
       
       
       
       
        public final void recalculateBorder (){
            screenWidthInTiles = (Gdx.graphics.getWidth() / Terrain.tileWidth) + 2;
            //screenWidthInTiles = (Gdx.graphics.getWidth() / Terrain.tileWidth);
            screenHeightInTiles = (Gdx.graphics.getHeight() / Terrain.tileHeight);           
        }
       
        public final void fillArrays (){
             gridElements = new ArrayList<List<Marker>>();
        for (int y = 0; y <= screenHeightInTiles; y++) {
            gridElements.add(new ArrayList<Marker>());
            for (int x = 0; x <= screenWidthInTiles; x++) {
               
                gridElements.get(y).add (new Marker(null, 0, 0));
               
                /*
                gridElements.get(y).get(x).getScreenCoords().x = ((x - 1) * Terrain.tileWidth) ;
                gridElements.get(y).get(x).getScreenCoords().x -= (Terrain.tileWidth / 3);
               
               
                gridElements.get(y).get(x).getScreenCoords().y = ((y) * Terrain.tileHeight) ;
               
                gridElements.get(y).get(x).getScreenCoords().x += Terrain.tileWidth * 1;
               
                gridElements.get(y).get(x).getScreenCoords().y -= Terrain.tileHeight * 1;
                */
                gridElements.get(y).get(x).getScreenCoords().x = Detonator.INSTANCE.screenCoordsCalculator.returnScreenCoords(x, y).x;
                gridElements.get(y).get(x).getScreenCoords().y = Detonator.INSTANCE.screenCoordsCalculator.returnScreenCoords(x, y).y;
               
                //Log.info("Height: "+Terrain.tileHeight);
               
                if ((x == 0) && (y == 0)) {
                    Log.info("ScreenCoords for 0/0: "+gridElements.get(y).get(x).getScreenCoords().toRoundedString());
                }
               
                gridElements.get(y).get(x).setBothImages(fog);
                //boolArray.get(y).add(false);
            }
        }
        }
       
        public boolean hasFogNeighbour (Coords fromSpot, int deltaX, int deltaY) {
            return (!(map.fov.wasVisited(fromSpot.getIntX() + deltaX, fromSpot.getIntY() + deltaY)));
        }
       
        public void pickImageForSlot (int mapX, int mapY, IMarker slot) {
           
//            if hasFogNeigh

            slot.setBothImages(fog);
        }
       
        public void recalculateGrid (int setStartX, int setStartY) {
            startMapX = setStartX;
            startMapY = setStartY;
           
          for (int y = 0; y <= screenHeightInTiles; y++) {           
            for (int x = 0; x <= screenWidthInTiles; x++) {
               
                pickImageForSlot (startMapX, startMapY, gridElements.get(y).get(x));
                //gridElements.get(y).get(x).setBothImages(fog);
            
                //Log.warn("Map is not null: "+(map != null));
                //Log.warn("MapFov is not null: "+(map.fov != null));
                               
               
                gridElements.get(y).get(x).isDrawn = (!(map.fov.wasVisited(startMapX + x, startMapY + y)));
               

                //gridElements.get(y).get(x).isDrawn = false;
               
                //if (!(map.fov.wasVisited(x, y))){
                //Log.info(x+":"+y+" is invisible");
                //} else {
                //Log.info(x+":"+y+" is visible");   
                //}
               
                //boolArray.get(y).add(false);
            }
        }         
        }
       
        public void render (){
          for (int y = 0; y <= screenHeightInTiles; y++) {           
            for (int x = 0; x <= screenWidthInTiles; x++) {
               
                gridElements.get(y).get(x).draw(batch);
               
//                Log.warn("Draw fog on: "+gridElements.get(y).get(x).screenCoords.toRoundedString());
//                Log.warn("Draw fog MapCoords: "+(x + startMapX)+"/"+(y + startMapY));
               
               
                //boolArray.get(y).add(false);
            }
        }            
        }
       
}
TOP

Related Classes of transientlibs.maps.utils.grid.FOVScreenGrid

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.