Guest User

Untitled

a guest
Jul 18th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.52 KB | None | 0 0
  1. import com.mygdx.manager.GameStateManager;
  2. import com.mygdx.manager.MyContactListener;
  3. import com.mygdx.manager.MyInput;
  4.  
  5.  
  6.  
  7.  
  8. import static com.mygdx.manager.Box2DVariables.BIT_PLAYER;
  9. import static com.mygdx.manager.Box2DVariables.PPM;
  10.  
  11.  
  12.  
  13. public class Play extends GameState{
  14.  
  15.  
  16. private World world;
  17.  
  18.  
  19. private Player player;
  20.  
  21.  
  22. private Box2DDebugRenderer b2d;
  23. private OrthographicCamera B2DCAM;
  24. private TiledMap tileMap;
  25. private OrthogonalTiledMapRenderer orthomap;
  26. private MyContactListener cl;
  27. private float tileSize;
  28. private Sprite sprite;
  29. private Viewport viewport;
  30.  
  31. private Texture back;
  32.  
  33.  
  34.  
  35. //file name
  36. private final String LEVEL_1 ="maps/tilemap_1.tmx";
  37.  
  38. public Play(GameStateManager gsm) {
  39. super(gsm);
  40.  
  41.  
  42. //setup box2d
  43. world=new World(new Vector2(0,-9.8f),true);
  44. cl=new MyContactListener();
  45. world.setContactListener(cl);
  46. sb=new SpriteBatch();
  47. viewport = new ExtendViewport(MyMainGame.Width, MyMainGame.Height, cam);
  48. // sprite=new Sprite(MyMainGame.con.getTexture("sprite"),32,32);
  49. //cam=new OrthographicCamera();
  50.  
  51. b2d=new Box2DDebugRenderer();
  52.  
  53. //create Player
  54. createPlayer();
  55. //create Tiles
  56. createTiles();
  57. orthomap = new OrthogonalTiledMapRenderer(tileMap,1/32f);
  58. // sb=new SpriteBatch();
  59.  
  60.  
  61. //setup Box2D Cam
  62. B2DCAM=new OrthographicCamera();
  63. B2DCAM.setToOrtho(false, MyMainGame.Width/PPM,MyMainGame.Height/PPM);
  64. //setup hud and cam
  65. hud=new OrthographicCamera();
  66. cam=new OrthographicCamera();
  67. cam.setToOrtho(false,10,7);
  68. hud.setToOrtho(false,MyMainGame.Width,MyMainGame.Height);
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82. /* //TODO - remove me
  83. File file = new File(LEVEL_1);
  84. if(file.exists())
  85. System.out.println("file exists");*/
  86.  
  87.  
  88. }
  89.  
  90.  
  91. @Override
  92. public void init() {
  93.  
  94. }
  95.  
  96. @Override
  97. public void update(float dt) {
  98. handleInput();
  99.  
  100. world.step(dt,6,2);
  101. player.update(dt);
  102.  
  103. }
  104.  
  105. @Override
  106. public void draw() {
  107.  
  108. }
  109.  
  110. @Override
  111. public void render() {
  112.  
  113. //clear screen
  114.  
  115. Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122. hud.update();
  123.  
  124.  
  125. if (sb == null) {
  126. System.out.println("Sb is null");
  127. }
  128. // cam.position.set(player.getPosition().x,player.getPosition().y,0 );
  129. sb.setProjectionMatrix(cam.combined);
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. //draw tile map
  137. orthomap.setView(cam);
  138. orthomap.render();
  139. //draw player
  140. sb.setProjectionMatrix(hud.combined);
  141.  
  142. player.render(sb);
  143.  
  144. b2d.render(world,B2DCAM.combined);
  145.  
  146.  
  147.  
  148.  
  149. }
  150.  
  151. @Override
  152. public void handleInput() {
  153. if(MyInput.isPressed((MyInput.SPACE))){
  154. System.out.println("space pressed");
  155. if(cl.isPlayerOnGround())
  156. System.out.println(cl.isPlayerOnGround());
  157. player.getBody().applyForceToCenter(0,200,true);
  158. }
  159. }
  160.  
  161.  
  162. @Override
  163. public void dispose() {
  164. world.dispose();
  165. b2d.dispose();
  166. tileMap.dispose();
  167. orthomap.dispose();
  168. }
  169.  
  170. private void createPlayer(){
  171. BodyDef bodydef=new BodyDef();
  172. FixtureDef fixdef=new FixtureDef();
  173. PolygonShape shape=new PolygonShape();
  174.  
  175.  
  176. //create player
  177. bodydef.position.set(60/PPM,200/PPM);
  178. bodydef.type= BodyDef.BodyType.DynamicBody;
  179. //
  180. bodydef.linearVelocity.set(1,0);
  181. Body body=world.createBody(bodydef);
  182.  
  183. shape.setAsBox(13/PPM,13/PPM);
  184. fixdef.shape=shape;
  185. fixdef.filter.categoryBits= BIT_PLAYER;
  186. fixdef.filter.maskBits=Box2DVariables.BIT_BLUE;
  187. // fixdef.filter.maskBits=Box2DVariables.BIT_GREEN;
  188. body.createFixture(fixdef).setUserData("PLAYER");
  189.  
  190.  
  191. //create foot sensor
  192. shape.setAsBox(13/PPM,2/PPM,new Vector2(0,-13/PPM),0);
  193. fixdef.shape=shape;
  194. fixdef.filter.categoryBits= BIT_PLAYER;
  195. fixdef.filter.maskBits=Box2DVariables.BIT_BLUE;
  196. // fixdef.filter.maskBits=Box2DVariables.BIT_GREEN;
  197. fixdef.isSensor=true;
  198. body.createFixture(fixdef).setUserData("FOOT");
  199.  
  200. //create Player
  201. player=new Player(body);
  202. body.setUserData(player);
  203. }
  204. private void createTiles(){
  205. //load tile map
  206. tileMap = new TmxMapLoader().load(LEVEL_1);
  207. //orthomap = new OrthogonalTiledMapRenderer(tileMap,1);
  208.  
  209.  
  210. tileSize=(int)tileMap.getProperties().get("tilewidth", Integer.class);
  211. System.out.println("Tile Size " +tileSize);
  212.  
  213. TiledMapTileLayer layer;
  214.  
  215. layer=(TiledMapTileLayer)tileMap.getLayers().get("Blue");
  216. createLayer(layer,Box2DVariables.BIT_BLUE);
  217. layer=(TiledMapTileLayer)tileMap.getLayers().get("Green");
  218. createLayer(layer,Box2DVariables.BIT_GREEN);
  219. layer=(TiledMapTileLayer)tileMap.getLayers().get("Red");
  220. createLayer(layer,Box2DVariables.BIT_RED);
  221. System.out.println("Layer Height " +layer.getHeight());
  222. System.out.println("Layer Width " +layer.getWidth());
  223. }
  224. private void createLayer(TiledMapTileLayer layer,short bits){
  225. BodyDef bodydef1=new BodyDef();
  226. FixtureDef fixdef1=new FixtureDef();
  227.  
  228. //go through cells in layer
  229. for(int row=0;row<layer.getHeight();row++){
  230. for(int col=0;col<layer.getWidth();col++){
  231. //get cells
  232. TiledMapTileLayer.Cell cell=layer.getCell(col,row);
  233.  
  234. //check if cell exists
  235. if(cell==null) continue;
  236. if(cell.getTile()==null) continue;
  237.  
  238. //create body and fixture from cell
  239. bodydef1.type= BodyDef.BodyType.StaticBody;
  240. bodydef1.position.set((col+0.5f)*tileSize/PPM,(row+0.5f)*tileSize/PPM);
  241. ChainShape cs=new ChainShape();
  242. Vector2[] v=new Vector2[3];
  243. //bottom left
  244. v[0]=new Vector2(-tileSize/2/PPM,-tileSize/2/PPM);
  245. //top left
  246. v[1]=new Vector2(-tileSize/2/PPM,tileSize/2/PPM);
  247. //top right corner
  248. v[2]=new Vector2(tileSize/2/PPM,tileSize/2/PPM);
  249.  
  250.  
  251. cs.createChain(v);
  252. fixdef1.friction=0;
  253. fixdef1.shape =cs;
  254. fixdef1.filter.categoryBits=bits;
  255. fixdef1.filter.maskBits=BIT_PLAYER;
  256. fixdef1.isSensor=false;
  257. world.createBody(bodydef1).createFixture(fixdef1);
  258.  
  259. }
  260. }
  261. }
  262. }
  263.  
  264. cam.position.set(player.getPosition().x,player.getPosition().y,0);
Add Comment
Please, Sign In to add comment