// Path: Episode 34/TileGame/src/dev/codenmore/tilegame/Handler.java
// public class Handler {
// 	
// 	private Game game;
// 	private World world;
// 	
// 	public Handler(Game game){
// 		this.game = game;
// 	}
// 	
// 	public GameCamera getGameCamera(){
// 		return game.getGameCamera();
// 	}
// 	
// 	public KeyManager getKeyManager(){
// 		return game.getKeyManager();
// 	}
// 	
// 	public MouseManager getMouseManager(){
// 		return game.getMouseManager();
// 	}
// 	
// 	public int getWidth(){
// 		return game.getWidth();
// 	}
// 	
// 	public int getHeight(){
// 		return game.getHeight();
// 	}
// 
// 	public Game getGame() {
// 		return game;
// 	}
// 
// 	public void setGame(Game game) {
// 		this.game = game;
// 	}
// 
// 	public World getWorld() {
// 		return world;
// 	}
// 
// 	public void setWorld(World world) {
// 		this.world = world;
// 	}
// 
// }
// 
// Path: Episode 30/TileGame/src/dev/codenmore/tilegame/entities/Entity.java
// public abstract class Entity {
// 
// 	protected Handler handler;
// 	protected float x, y;
// 	protected int width, height;
// 	protected Rectangle bounds;
// 	
// 	public Entity(Handler handler, float x, float y, int width, int height){
// 		this.handler = handler;
// 		this.x = x;
// 		this.y = y;
// 		this.width = width;
// 		this.height = height;
// 		
// 		bounds = new Rectangle(0, 0, width, height);
// 	}
// 	
// 	public abstract void tick();
// 	
// 	public abstract void render(Graphics g);
// 	
// 	public boolean checkEntityCollisions(float xOffset, float yOffset){
// 		for(Entity e : handler.getWorld().getEntityManager().getEntities()){
// 			if(e.equals(this))
// 				continue;
// 			if(e.getCollisionBounds(0f, 0f).intersects(getCollisionBounds(xOffset, yOffset)))
// 				return true;
// 		}
// 		return false;
// 	}
// 	
// 	public Rectangle getCollisionBounds(float xOffset, float yOffset){
// 		return new Rectangle((int) (x + bounds.x + xOffset), (int) (y + bounds.y + yOffset), bounds.width, bounds.height);
// 	}
// 
// 	public float getX() {
// 		return x;
// 	}
// 
// 	public void setX(float x) {
// 		this.x = x;
// 	}
// 
// 	public float getY() {
// 		return y;
// 	}
// 
// 	public void setY(float y) {
// 		this.y = y;
// 	}
// 
// 	public int getWidth() {
// 		return width;
// 	}
// 
// 	public void setWidth(int width) {
// 		this.width = width;
// 	}
// 
// 	public int getHeight() {
// 		return height;
// 	}
// 
// 	public void setHeight(int height) {
// 		this.height = height;
// 	}
// 	
// }
// 
// Path: Episode 34/TileGame/src/dev/codenmore/tilegame/tiles/Tile.java
// public class Tile {
// 	
// 	//STATIC STUFF HERE
// 	
// 	public static Tile[] tiles = new Tile[256];
// 	public static Tile grassTile = new GrassTile(0);
// 	public static Tile dirtTile = new DirtTile(1);
// 	public static Tile rockTile = new RockTile(2);
// 	
// 	//CLASS
// 	
// 	public static final int TILEWIDTH = 64, TILEHEIGHT = 64;
// 	
// 	protected BufferedImage texture;
// 	protected final int id;
// 	
// 	public Tile(BufferedImage texture, int id){
// 		this.texture = texture;
// 		this.id = id;
// 		
// 		tiles[id] = this;
// 	}
// 	
// 	public void tick(){
// 		
// 	}
// 	
// 	public void render(Graphics g, int x, int y){
// 		g.drawImage(texture, x, y, TILEWIDTH, TILEHEIGHT, null);
// 	}
// 	
// 	public boolean isSolid(){
// 		return false;
// 	}
// 	
// 	public int getId(){
// 		return id;
// 	}
// 	
// }


import dev.codenmore.tilegame.Handler;
import dev.codenmore.tilegame.entities.Entity;
import dev.codenmore.tilegame.tiles.Tile;
package dev.codenmore.tilegame.gfx;


public class GameCamera {
	
	private Handler handler;
	private float xOffset, yOffset;
	
	public GameCamera(Handler handler, float xOffset, float yOffset){
		this.handler = handler;
		this.xOffset = xOffset;
		this.yOffset = yOffset;
	}
	
	public void checkBlankSpace(){
		if(xOffset < 0){
			xOffset = 0;
// Path: Episode 34/TileGame/src/dev/codenmore/tilegame/Handler.java
// public class Handler {
// 	
// 	private Game game;
// 	private World world;
// 	
// 	public Handler(Game game){
// 		this.game = game;
// 	}
// 	
// 	public GameCamera getGameCamera(){
// 		return game.getGameCamera();
// 	}
// 	
// 	public KeyManager getKeyManager(){
// 		return game.getKeyManager();
// 	}
// 	
// 	public MouseManager getMouseManager(){
// 		return game.getMouseManager();
// 	}
// 	
// 	public int getWidth(){
// 		return game.getWidth();
// 	}
// 	
// 	public int getHeight(){
// 		return game.getHeight();
// 	}
// 
// 	public Game getGame() {
// 		return game;
// 	}
// 
// 	public void setGame(Game game) {
// 		this.game = game;
// 	}
// 
// 	public World getWorld() {
// 		return world;
// 	}
// 
// 	public void setWorld(World world) {
// 		this.world = world;
// 	}
// 
// }
// 
// Path: Episode 30/TileGame/src/dev/codenmore/tilegame/entities/Entity.java
// public abstract class Entity {
// 
// 	protected Handler handler;
// 	protected float x, y;
// 	protected int width, height;
// 	protected Rectangle bounds;
// 	
// 	public Entity(Handler handler, float x, float y, int width, int height){
// 		this.handler = handler;
// 		this.x = x;
// 		this.y = y;
// 		this.width = width;
// 		this.height = height;
// 		
// 		bounds = new Rectangle(0, 0, width, height);
// 	}
// 	
// 	public abstract void tick();
// 	
// 	public abstract void render(Graphics g);
// 	
// 	public boolean checkEntityCollisions(float xOffset, float yOffset){
// 		for(Entity e : handler.getWorld().getEntityManager().getEntities()){
// 			if(e.equals(this))
// 				continue;
// 			if(e.getCollisionBounds(0f, 0f).intersects(getCollisionBounds(xOffset, yOffset)))
// 				return true;
// 		}
// 		return false;
// 	}
// 	
// 	public Rectangle getCollisionBounds(float xOffset, float yOffset){
// 		return new Rectangle((int) (x + bounds.x + xOffset), (int) (y + bounds.y + yOffset), bounds.width, bounds.height);
// 	}
// 
// 	public float getX() {
// 		return x;
// 	}
// 
// 	public void setX(float x) {
// 		this.x = x;
// 	}
// 
// 	public float getY() {
// 		return y;
// 	}
// 
// 	public void setY(float y) {
// 		this.y = y;
// 	}
// 
// 	public int getWidth() {
// 		return width;
// 	}
// 
// 	public void setWidth(int width) {
// 		this.width = width;
// 	}
// 
// 	public int getHeight() {
// 		return height;
// 	}
// 
// 	public void setHeight(int height) {
// 		this.height = height;
// 	}
// 	
// }
// 
// Path: Episode 34/TileGame/src/dev/codenmore/tilegame/tiles/Tile.java
// public class Tile {
// 	
// 	//STATIC STUFF HERE
// 	
// 	public static Tile[] tiles = new Tile[256];
// 	public static Tile grassTile = new GrassTile(0);
// 	public static Tile dirtTile = new DirtTile(1);
// 	public static Tile rockTile = new RockTile(2);
// 	
// 	//CLASS
// 	
// 	public static final int TILEWIDTH = 64, TILEHEIGHT = 64;
// 	
// 	protected BufferedImage texture;
// 	protected final int id;
// 	
// 	public Tile(BufferedImage texture, int id){
// 		this.texture = texture;
// 		this.id = id;
// 		
// 		tiles[id] = this;
// 	}
// 	
// 	public void tick(){
// 		
// 	}
// 	
// 	public void render(Graphics g, int x, int y){
// 		g.drawImage(texture, x, y, TILEWIDTH, TILEHEIGHT, null);
// 	}
// 	
// 	public boolean isSolid(){
// 		return false;
// 	}
// 	
// 	public int getId(){
// 		return id;
// 	}
// 	
// }


// Path: Episode 34/TileGame/src/dev/codenmore/tilegame/gfx/GameCamera.java
import dev.codenmore.tilegame.Handler;
import dev.codenmore.tilegame.entities.Entity;
import dev.codenmore.tilegame.tiles.Tile;

package dev.codenmore.tilegame.gfx;


public class GameCamera {
	
	private Handler handler;
	private float xOffset, yOffset;
	
	public GameCamera(Handler handler, float xOffset, float yOffset){
		this.handler = handler;
		this.xOffset = xOffset;
		this.yOffset = yOffset;
	}
	
	public void checkBlankSpace(){
		if(xOffset < 0){
			xOffset = 0;
		}else if(xOffset > handler.getWorld().getWidth() * Tile.TILEWIDTH - handler.getWidth()){