Untitled diff

Created Diff never expires
205 removals
276 lines
21 additions
92 lines
package com.egysoft.xvolley;
package com.egysoft.xvolley;
import static com.apollo.managers.PhysicsManager.SCALE;
import static com.egysoft.xvolley.Player.Player1;
import static com.egysoft.xvolley.Player.Player2;
import com.apollo.Entity;
import com.apollo.Entity;
import com.apollo.Message;
import com.apollo.World;
import com.apollo.World;
import com.apollo.components.BallBodyBehavior;
import com.apollo.components.PlayerRenderBehavior;
import com.apollo.components.Transform;
import com.apollo.managers.EntityManager;
import com.apollo.managers.GameManager;
import com.apollo.managers.GameManager;
import com.apollo.managers.GameState;
import com.apollo.managers.GameState;
import com.apollo.managers.GdxRenderManager;
import com.apollo.managers.PhysicsManager;
import com.apollo.managers.TagManager;
import com.apollo.messages.MessageReceiver;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
import com.badlogic.gdx.math.Vector2;
import com.egysoft.KeyMap;
import com.egysoft.xvolley.entity.BallBuilder;
import com.egysoft.xvolley.entity.BallBuilder;
import com.egysoft.xvolley.entity.GroundBuilder;
import com.egysoft.xvolley.entity.GroundBuilder;
import com.egysoft.xvolley.entity.IAPlayerBuilder;
import com.egysoft.xvolley.entity.IAPlayerBuilder;
import com.egysoft.xvolley.entity.PlayerBuilder;
import com.egysoft.xvolley.entity.PlayerBuilder;
public final class Gameloop extends GameState implements MessageReceiver{
/**
* Autogenerado por FP4G
* [NO MODIFICAR]
*/
public final class Gameloop extends GameState{
private World world;
private World world;
private OrthographicCamera camera;
public OrthographicCamera camera;
private OrthographicCamera debugCamera;
// private Box2DDebugRenderer debugRender = new Box2DDebugRenderer(true,true,true,true,true);
// private FPSLogger fpsLogger;
private PhysicsManager physicsManager;
private GdxRenderManager renderManager;
private EntityManager entityManager;
private TagManager tagManager;
private SpriteBatch batch;
private BitmapFont font;
private ShapeRenderer render;
private Player set = Player1;
private Player who = null;
private boolean touchGround = false;
//puntaje
private int player_1 = 0;
private int player_2 = 0;
private Entity ball;
private BallBodyBehavior ballBehavior;
private GameManager game;
private boolean multi;
//sistemas o manejadores
public Gameloop(GameManager manager,boolean multiplayer)
public Gameloop(GameManager manager)
{
{
game = manager;
world = new World(manager);
world = new World(manager);
this.multi = multiplayer;
// fpsLogger = new FPSLogger();
}
}
@Override
@Override
public void update(float delta)
public void update(float delta)
{
{
//#6495ED
Gdx.gl.glClearColor(1,1,1,1);
Gdx.gl.glClearColor(0.4f,0.6f,0.9f,1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
world.update(delta);
physicsManager.update(delta);
entityManager.update(delta);
//reglas
world.update(delta);
if(player_1 >= 30 || player_2 >= 30)
{
if(player_1 > player_2)
{
game.nextState(new GameEnd(game, Player1));
}
else
{
game.nextState(new GameEnd(game, Player2));
}
}
if(player_1 >= 15 && player_1 + 2 > player_2)
{
game.nextState(new GameEnd(game, Player1));
}
if(player_2 >= 15 && player_2 + 2 > player_1)
{
game.nextState(new GameEnd(game, Player2));
}
if(touchGround && ballBehavior.isStop())
{
switch(set)
{
case Player1:
if(who == Player1)
{
//pierde su set
set = Player2;
}
else
{
//gana punto el jugador 1
player_1++;
}
break;
case Player2:
if(who == Player2)
{
//pierde su set
set = Player1;
}
else
{
//gana punto el jugador 2
player_2++;
}
break;
}
switch(set)
{
case Player1:
ballBehavior.stopAndSetPosition(XVolley.Width/4-12,XVolley.Height/2);
break;
case Player2:
ballBehavior.stopAndSetPosition(3*XVolley.Width/4-12,XVolley.Height/2);
break;
}
touchGround = false;
}
batch.setProjectionMatrix(camera.combined);
//your render here
batch.begin();
renderManager.update(delta);
font.draw(batch, String.format("%d/%d",player_1,player_2), 0,XVolley.Height);
batch.end();
render.begin(ShapeType.FilledRectangle);
render.setColor(1,1,1,1);
render.filledRect(XVolley.Width/2-2, 0, 10, XVolley.Height/2);
render.setColor(1,0.8f,0.2f,1);
render.filledRect(0, 0, XVolley.Width,10);
render.end();
debugCamera.position.x = camera.position.x * SCALE;
debugCamera.position.y = camera.position.y * SCALE;
debugCamera.update();
// debugRender.render(physicsManager.getb2World(),debugCamera.combined);
// fpsLogger.log();
}
}
@Override
@Override
public boolean load()
public boolean load()
{
{
int w = XVolley.Width;
int w = XVolley.Width;
int h = XVolley.Height;
int h = XVolley.Height;
camera = new OrthographicCamera();
camera = new OrthographicCamera();
camera.setToOrtho(false,w,h);
camera.setToOrtho(false,w,h);
debugCamera = new OrthographicCamera();
debugCamera.setToOrtho(false,w*SCALE,h*SCALE);
XVolley.loadAsset("assets/xvolley.atlas", TextureAtlas.class);
PlayerRenderBehavior.loadSharedData();
//entityBuilders
world.setEntityBuilder(new PlayerBuilder());
world.setEntityBuilder(new IAPlayerBuilder());
world.setEntityBuilder(new IAPlayerBuilder());
world.setEntityBuilder(new GroundBuilder());
world.setEntityBuilder(new GroundBuilder());
world.setEntityBuilder(new PlayerBuilder());
world.setEntityBuilder(new BallBuilder());
world.setEntityBuilder(new BallBuilder());
//managers
//managers
batch = new SpriteBatch();
renderManager = new GdxRenderManager(batch);
renderManager.setCamera(camera);
world.setManager(renderManager);
entityManager = new EntityManager();
world.setEntityManager(entityManager);
physicsManager = new PhysicsManager(new Vector2(0,-10));
world.setManager(physicsManager);
tagManager = new TagManager();
//entidades
world.setManager(tagManager);
world.addEntity(world.createEntity("Ground")); //TODO agregar parametros a esta wea...
world.addEntity(world.createEntity("Ball")); //TODO agregar parametros a esta wea...
XVolley.loadAssets();
TextureAtlas atlas = XVolley.getAsset("assets/xvolley.atlas");
TextureRegion ballTexture = atlas.findRegion("ball");
//entidades
if(multi)
{
world.addEntity(world.createEntity("Player",XVolley.Width/4,XVolley.Height/4,KeyMap.getKeyMapPlayer1()));
world.addEntity(world.createEntity("Player",3*XVolley.Width/4,XVolley.Height/4,KeyMap.getKeyMapPlayer2()));
}
else
{
world.addEntity(world.createEntity("Player",XVolley.Width/4,XVolley.Height/4,KeyMap.getKeyMapPlayer2()));
world.addEntity(world.createEntity("IAPlayer",3*XVolley.Width/4,XVolley.Height/4));
}
ball = world.createEntity("Ball",ballTexture,XVolley.Width/4-12,XVolley.Height/2);
ballBehavior = (BallBodyBehavior)ball.getBehavior(Transform.class);
tagManager.register("ball", ball);
world.addEntity(ball); //TODO agregar parametros a esta wea...
Entity ground = world.createEntity("Ground");
ground.addEventHandler(LostMessage.class, this);
world.addEntity(ground); //TODO agregar parametros a esta wea...
font = new BitmapFont(Gdx.files.internal("assets/font.fnt"),false);
render = new ShapeRenderer();
return true;
return true;
}
}
@Override
@Override
public void unload()
public void unload()
{
{
font.dispose();
batch.dispose();
physicsManager.deleteWorld();
render.dispose();
}
}
@Override
@Override
public void enter()
public void enter()
{
{
}
}
@Override
@Override
public void exit()
public void exit()
{
{
}
}
@Override
@Override
public void pause()
public void pause()
{
{
}
}
@Override
@Override
public void resume()
public void resume()
{
{
}
}
@Override
public void onMessage(Message message) {
if(message instanceof LostMessage)
{
onMessage((LostMessage)message);
}
}
public void onMessage(LostMessage message) {
if(!touchGround)
{
who = message.player;
touchGround = true;
}
}
}
}