package com.digitalwolf.world;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;
import com.digitalwolf.assets.Assets;
import com.digitalwolf.creatures.Dragon;
import com.digitalwolf.creatures.Pumma;
import com.digitalwolf.creatures.Snake;
import com.digitalwolf.creatures.Spring;
import com.digitalwolf.screens.GameScreen;
import com.mtx.scene2dactors.Egg;
import com.mtx.scene2dactors.Gem;
public class WorldRenderer {
public OrthogonalTiledMapRenderer renderer;
public SpriteBatch batch;
private World world;
public WorldRenderer(World world) {
this.world = world;
renderer = new OrthogonalTiledMapRenderer(world.map, 1/16f);
batch = renderer.getSpriteBatch();
}
public void render(int[] array) {
if(GameScreen.state == GameScreen.GAME_RUNNING)
renderer.render(array);
}
public void renderPlayer(float deltaTime)
{
if(GameScreen.state == GameScreen.GAME_RUNNING || GameScreen.state == GameScreen.GAME_LEVEL_END){
// Based on the Player state, get the animation frame
if(world.pumma.visible){
TextureRegion frame = null;
switch (world.pumma.getState())
{
case 0:
frame = Assets.pummaStill.getKeyFrame(world.pumma.stateTime);
break;
case 1:
frame = Assets.pummaWalk.getKeyFrame(world.pumma.stateTime);
break;
case 2:
frame = Assets.pummaJump.getKeyFrame(world.pumma.stateTime);
break;
}
// draw the Player depending on the current velocity
// on the x-axis, draw the Player facing either right or left
batch.begin();
if (world.pumma.facesRight)
{
batch.draw(frame, world.pumma.position.x, world.pumma.position.y, Pumma.width, Pumma.height);
}
else
{
batch.draw(frame, world.pumma.position.x + Pumma.width, world.pumma.position.y, -Pumma.width, Pumma.height);
}
batch.end();
}
}
}
public void renderEggs(float delta) {
if(GameScreen.state == GameScreen.GAME_RUNNING){
batch.begin();
for(Egg thisEgg:world.eggs){
thisEgg.draw(batch,1.0f);
}
batch.end();
}
}
public void renderGems(float delta) {
if(GameScreen.state == GameScreen.GAME_RUNNING){
batch.begin();
for(Gem thisGem:world.gems){
thisGem.draw(batch,1.0f);
}
batch.end();
}
}
public void renderSnakes(float delta) {
if(GameScreen.state == GameScreen.GAME_RUNNING){
TextureRegion frame = null;
batch.begin();
for(int i=0; i< world.snakes.size();i++){
Snake e = world.snakes.get(i);
switch (e.state)
{
case 0:
frame = Assets.snakeStill.getKeyFrame(e.stateTime);
break;
case 1:
frame = Assets.snakeMove.getKeyFrame(e.stateTime);
break;
}
if(e.visible){
if (e.facesRight)
{
batch.draw(frame, e.position.x, e.position.y, Snake.width, Snake.height);
}
else
{
batch.draw(frame, e.position.x +Snake.width, e.position.y, -Snake.width, Snake.height);
}
}
}
batch.end();
}
}
public void renderKey(float delta) {
// TODO Auto-generated method stub
if(GameScreen.state == GameScreen.GAME_RUNNING){
if(world.key.visible){
batch.begin();
world.key.draw(batch, 1.0f);
batch.end();
}
}
}
public void renderDragons(float delta) {
if(GameScreen.state == GameScreen.GAME_RUNNING){
TextureRegion frame = null;
batch.begin();
for(int i=0; i< world.dragons.size();i++){
Dragon e = world.dragons.get(i);
switch (e.state)
{
case 0:
frame = Assets.dragonStill.getKeyFrame(e.stateTime);
break;
case 1:
frame = Assets.dragonFlying.getKeyFrame(e.stateTime);
break;
}
if(e.visible){
if (e.facesRight)
{
batch.draw(frame, e.position.x, e.position.y, Dragon.width, Dragon.height);
}
else
{
batch.draw(frame, e.position.x +Dragon.width, e.position.y, -Dragon.width, Dragon.height);
}
}
}
batch.end();
}
}
public void renderDoor(float delta) {
// TODO Auto-generated method stub
if(GameScreen.state == GameScreen.GAME_RUNNING){
if(world.door.visible){
batch.begin();
world.door.draw(batch, 1.0f);
batch.end();
}
}
}
public void renderSprings(float delta) {
// TODO Auto-generated method stub
if(GameScreen.state == GameScreen.GAME_RUNNING){
TextureRegion frame = null;
batch.begin();
for(int i=0; i< world.springs.size();i++){
Spring e = world.springs.get(i);
switch (e.state)
{
case 0:
frame = Assets.spring2;
break;
case 1:
frame = Assets.springActive.getKeyFrame(e.stateTime);
break;
}
if(e.visible)
batch.draw(frame, e.position.x, e.position.y, Spring.width, Spring.height);
}
batch.end();
}
}
}