Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.mygdx.manager.GameStateManager;
- import com.mygdx.manager.MyContactListener;
- import com.mygdx.manager.MyInput;
- import static com.mygdx.manager.Box2DVariables.BIT_PLAYER;
- import static com.mygdx.manager.Box2DVariables.PPM;
- public class Play extends GameState{
- private World world;
- private Player player;
- private Box2DDebugRenderer b2d;
- private OrthographicCamera B2DCAM;
- private TiledMap tileMap;
- private OrthogonalTiledMapRenderer orthomap;
- private MyContactListener cl;
- private float tileSize;
- private Sprite sprite;
- private Viewport viewport;
- private Texture back;
- //file name
- private final String LEVEL_1 ="maps/tilemap_1.tmx";
- public Play(GameStateManager gsm) {
- super(gsm);
- //setup box2d
- world=new World(new Vector2(0,-9.8f),true);
- cl=new MyContactListener();
- world.setContactListener(cl);
- sb=new SpriteBatch();
- viewport = new ExtendViewport(MyMainGame.Width, MyMainGame.Height, cam);
- // sprite=new Sprite(MyMainGame.con.getTexture("sprite"),32,32);
- //cam=new OrthographicCamera();
- b2d=new Box2DDebugRenderer();
- //create Player
- createPlayer();
- //create Tiles
- createTiles();
- orthomap = new OrthogonalTiledMapRenderer(tileMap,1/32f);
- // sb=new SpriteBatch();
- //setup Box2D Cam
- B2DCAM=new OrthographicCamera();
- B2DCAM.setToOrtho(false, MyMainGame.Width/PPM,MyMainGame.Height/PPM);
- //setup hud and cam
- hud=new OrthographicCamera();
- cam=new OrthographicCamera();
- cam.setToOrtho(false,10,7);
- hud.setToOrtho(false,MyMainGame.Width,MyMainGame.Height);
- /* //TODO - remove me
- File file = new File(LEVEL_1);
- if(file.exists())
- System.out.println("file exists");*/
- }
- @Override
- public void init() {
- }
- @Override
- public void update(float dt) {
- handleInput();
- world.step(dt,6,2);
- player.update(dt);
- }
- @Override
- public void draw() {
- }
- @Override
- public void render() {
- //clear screen
- Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
- hud.update();
- if (sb == null) {
- System.out.println("Sb is null");
- }
- // cam.position.set(player.getPosition().x,player.getPosition().y,0 );
- sb.setProjectionMatrix(cam.combined);
- //draw tile map
- orthomap.setView(cam);
- orthomap.render();
- //draw player
- sb.setProjectionMatrix(hud.combined);
- player.render(sb);
- b2d.render(world,B2DCAM.combined);
- }
- @Override
- public void handleInput() {
- if(MyInput.isPressed((MyInput.SPACE))){
- System.out.println("space pressed");
- if(cl.isPlayerOnGround())
- System.out.println(cl.isPlayerOnGround());
- player.getBody().applyForceToCenter(0,200,true);
- }
- }
- @Override
- public void dispose() {
- world.dispose();
- b2d.dispose();
- tileMap.dispose();
- orthomap.dispose();
- }
- private void createPlayer(){
- BodyDef bodydef=new BodyDef();
- FixtureDef fixdef=new FixtureDef();
- PolygonShape shape=new PolygonShape();
- //create player
- bodydef.position.set(60/PPM,200/PPM);
- bodydef.type= BodyDef.BodyType.DynamicBody;
- //
- bodydef.linearVelocity.set(1,0);
- Body body=world.createBody(bodydef);
- shape.setAsBox(13/PPM,13/PPM);
- fixdef.shape=shape;
- fixdef.filter.categoryBits= BIT_PLAYER;
- fixdef.filter.maskBits=Box2DVariables.BIT_BLUE;
- // fixdef.filter.maskBits=Box2DVariables.BIT_GREEN;
- body.createFixture(fixdef).setUserData("PLAYER");
- //create foot sensor
- shape.setAsBox(13/PPM,2/PPM,new Vector2(0,-13/PPM),0);
- fixdef.shape=shape;
- fixdef.filter.categoryBits= BIT_PLAYER;
- fixdef.filter.maskBits=Box2DVariables.BIT_BLUE;
- // fixdef.filter.maskBits=Box2DVariables.BIT_GREEN;
- fixdef.isSensor=true;
- body.createFixture(fixdef).setUserData("FOOT");
- //create Player
- player=new Player(body);
- body.setUserData(player);
- }
- private void createTiles(){
- //load tile map
- tileMap = new TmxMapLoader().load(LEVEL_1);
- //orthomap = new OrthogonalTiledMapRenderer(tileMap,1);
- tileSize=(int)tileMap.getProperties().get("tilewidth", Integer.class);
- System.out.println("Tile Size " +tileSize);
- TiledMapTileLayer layer;
- layer=(TiledMapTileLayer)tileMap.getLayers().get("Blue");
- createLayer(layer,Box2DVariables.BIT_BLUE);
- layer=(TiledMapTileLayer)tileMap.getLayers().get("Green");
- createLayer(layer,Box2DVariables.BIT_GREEN);
- layer=(TiledMapTileLayer)tileMap.getLayers().get("Red");
- createLayer(layer,Box2DVariables.BIT_RED);
- System.out.println("Layer Height " +layer.getHeight());
- System.out.println("Layer Width " +layer.getWidth());
- }
- private void createLayer(TiledMapTileLayer layer,short bits){
- BodyDef bodydef1=new BodyDef();
- FixtureDef fixdef1=new FixtureDef();
- //go through cells in layer
- for(int row=0;row<layer.getHeight();row++){
- for(int col=0;col<layer.getWidth();col++){
- //get cells
- TiledMapTileLayer.Cell cell=layer.getCell(col,row);
- //check if cell exists
- if(cell==null) continue;
- if(cell.getTile()==null) continue;
- //create body and fixture from cell
- bodydef1.type= BodyDef.BodyType.StaticBody;
- bodydef1.position.set((col+0.5f)*tileSize/PPM,(row+0.5f)*tileSize/PPM);
- ChainShape cs=new ChainShape();
- Vector2[] v=new Vector2[3];
- //bottom left
- v[0]=new Vector2(-tileSize/2/PPM,-tileSize/2/PPM);
- //top left
- v[1]=new Vector2(-tileSize/2/PPM,tileSize/2/PPM);
- //top right corner
- v[2]=new Vector2(tileSize/2/PPM,tileSize/2/PPM);
- cs.createChain(v);
- fixdef1.friction=0;
- fixdef1.shape =cs;
- fixdef1.filter.categoryBits=bits;
- fixdef1.filter.maskBits=BIT_PLAYER;
- fixdef1.isSensor=false;
- world.createBody(bodydef1).createFixture(fixdef1);
- }
- }
- }
- }
- cam.position.set(player.getPosition().x,player.getPosition().y,0);
Add Comment
Please, Sign In to add comment