Skip to content

Commit e4003a9

Browse files
committed
Merge pull request #6 from oskarh/set-player-from-tiled
Set player from tiled
2 parents 749904a + 7ab6ad1 commit e4003a9

File tree

4 files changed

+62
-20
lines changed

4 files changed

+62
-20
lines changed

android/assets/level1.tmx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="240" height="13" tilewidth="16" tileheight="16" nextobjectid="153">
2+
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="240" height="13" tilewidth="16" tileheight="16" nextobjectid="156">
33
<tileset firstgid="1" name="tileset_gutter" tilewidth="16" tileheight="16" spacing="2" margin="1" tilecount="924">
44
<image source="tileset_gutter.png" width="594" height="504"/>
55
<tile id="0">
@@ -234,4 +234,7 @@
234234
<object id="151" x="864" y="176" width="16" height="16"/>
235235
<object id="152" x="2352" y="176" width="16" height="16"/>
236236
</objectgroup>
237+
<objectgroup name="Player">
238+
<object id="153" x="32" y="176" width="16" height="16"/>
239+
</objectgroup>
237240
</map>

core/src/com/brentaureli/mariobros/Screens/PlayScreen.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,7 @@ public PlayScreen(MarioBros game){
9090

9191
creator = new B2WorldCreator(this);
9292

93-
//create mario in our game world
94-
player = new Mario(this);
93+
player = creator.getMario();
9594

9695
world.setContactListener(new WorldContactListener());
9796

core/src/com/brentaureli/mariobros/Sprites/Mario.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public enum State { FALLING, JUMPING, STANDING, RUNNING, GROWING, DEAD }
5555

5656
private Array<FireBall> fireballs;
5757

58-
public Mario(PlayScreen screen){
58+
public Mario(PlayScreen screen, float x, float y){
5959
//initialize default values
6060
this.screen = screen;
6161
this.world = screen.getWorld();
@@ -99,7 +99,7 @@ public Mario(PlayScreen screen){
9999
marioDead = new TextureRegion(screen.getAtlas().findRegion("little_mario"), 96, 0, 16, 16);
100100

101101
//define mario in Box2d
102-
defineMario();
102+
defineMario(x, y);
103103

104104
//set initial values for marios location, width and height. And initial frame as marioStand.
105105
setBounds(0, 0, 16 / MarioBros.PPM, 16 / MarioBros.PPM);
@@ -129,7 +129,7 @@ public void update(float dt){
129129
fireballs.removeValue(ball, true);
130130
}
131131

132-
if (getBody().getPosition().y < 0) {
132+
if (getBody().getPosition().y < 0 && !(currentState == State.DEAD)) {
133133
currentState = State.DEAD;
134134
previousState = State.DEAD;
135135
stateTimer = 4;
@@ -336,9 +336,9 @@ public void defineBigMario(){
336336
timeToDefineBigMario = false;
337337
}
338338

339-
public void defineMario(){
339+
public void defineMario(float x, float y){
340340
BodyDef bdef = new BodyDef();
341-
bdef.position.set(32 / MarioBros.PPM, 32 / MarioBros.PPM);
341+
bdef.position.set(x / MarioBros.PPM, y / MarioBros.PPM);
342342
bdef.type = BodyDef.BodyType.DynamicBody;
343343
b2body = world.createBody(bdef);
344344

core/src/com/brentaureli/mariobros/Tools/B2WorldCreator.java

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@
1313
import com.brentaureli.mariobros.MarioBros;
1414
import com.brentaureli.mariobros.Screens.PlayScreen;
1515
import com.brentaureli.mariobros.Sprites.Enemies.Enemy;
16+
import com.brentaureli.mariobros.Sprites.Enemies.Goomba;
1617
import com.brentaureli.mariobros.Sprites.Enemies.Turtle;
18+
import com.brentaureli.mariobros.Sprites.Mario;
1719
import com.brentaureli.mariobros.Sprites.TileObjects.Brick;
1820
import com.brentaureli.mariobros.Sprites.TileObjects.Coin;
19-
import com.brentaureli.mariobros.Sprites.Enemies.Goomba;
2021

2122
/**
2223
* Created by brentaureli on 8/28/15.
@@ -29,9 +30,10 @@ public class B2WorldCreator {
2930
public static final String COINS_LAYER = "Coins";
3031
public static final String GOOMBAS_LAYER = "Goombas";
3132
public static final String TURTLES_LAYER = "Turtles";
33+
private static final String PLAYER_LAYER = "Player";
3234

33-
private Array<Goomba> goombas;
34-
private Array<Turtle> turtles;
35+
private Mario mario;
36+
Array<Enemy> enemies = new Array<Enemy>();
3537

3638
public B2WorldCreator(PlayScreen screen){
3739
World world = screen.getWorld();
@@ -41,8 +43,29 @@ public B2WorldCreator(PlayScreen screen){
4143
PolygonShape shape = new PolygonShape();
4244
FixtureDef fdef = new FixtureDef();
4345
Body body;
46+
enemies = new Array<Enemy>();
4447

4548
//create ground bodies/fixtures
49+
createGround(world, map, bdef, shape, fdef);
50+
51+
//create pipe bodies/fixtures
52+
createPipes(world, map, bdef, shape, fdef);
53+
54+
//create brick bodies/fixtures
55+
createBricks(screen, map);
56+
57+
//create coin bodies/fixtures
58+
createCoins(screen, map);
59+
60+
//create all goombas
61+
createGoombas(screen, map);
62+
createTurtles(screen, map);
63+
64+
mario = createPlayer(screen, map);
65+
}
66+
67+
private void createGround(World world, TiledMap map, BodyDef bdef, PolygonShape shape, FixtureDef fdef) {
68+
Body body;
4669
for(MapObject object : map.getLayers().get(GROUND_LAYER).getObjects().getByType(RectangleMapObject.class)){
4770
Rectangle rect = ((RectangleMapObject) object).getRectangle();
4871

@@ -55,8 +78,10 @@ public B2WorldCreator(PlayScreen screen){
5578
fdef.shape = shape;
5679
body.createFixture(fdef);
5780
}
81+
}
5882

59-
//create pipe bodies/fixtures
83+
private void createPipes(World world, TiledMap map, BodyDef bdef, PolygonShape shape, FixtureDef fdef) {
84+
Body body;
6085
for(MapObject object : map.getLayers().get(PIPES_LAYER).getObjects().getByType(RectangleMapObject.class)){
6186
Rectangle rect = ((RectangleMapObject) object).getRectangle();
6287

@@ -75,34 +100,49 @@ public B2WorldCreator(PlayScreen screen){
75100
| MarioBros.FIREBALL_BIT;
76101
body.createFixture(fdef);
77102
}
103+
}
78104

79-
//create brick bodies/fixtures
105+
private void createBricks(PlayScreen screen, TiledMap map) {
80106
for(MapObject object : map.getLayers().get(BRICKS_LAYER).getObjects().getByType(RectangleMapObject.class)){
81107
new Brick(screen, object);
82108
}
109+
}
83110

84-
//create coin bodies/fixtures
111+
private void createCoins(PlayScreen screen, TiledMap map) {
85112
for(MapObject object : map.getLayers().get(COINS_LAYER).getObjects().getByType(RectangleMapObject.class)){
86113
new Coin(screen, object);
87114
}
115+
}
88116

89-
//create all goombas
90-
goombas = new Array<Goomba>();
117+
private void createGoombas(PlayScreen screen, TiledMap map) {
118+
Array<Goomba> goombas = new Array<Goomba>();
91119
for(MapObject object : map.getLayers().get(GOOMBAS_LAYER).getObjects().getByType(RectangleMapObject.class)){
92120
Rectangle rect = ((RectangleMapObject) object).getRectangle();
93121
goombas.add(new Goomba(screen, rect.getX() / MarioBros.PPM, rect.getY() / MarioBros.PPM));
94122
}
95-
turtles = new Array<Turtle>();
123+
enemies.addAll(goombas);
124+
}
125+
126+
private void createTurtles(PlayScreen screen, TiledMap map) {
127+
Array<Turtle> turtles = new Array<Turtle>();
96128
for(MapObject object : map.getLayers().get(TURTLES_LAYER).getObjects().getByType(RectangleMapObject.class)){
97129
Rectangle rect = ((RectangleMapObject) object).getRectangle();
98130
turtles.add(new Turtle(screen, rect.getX() / MarioBros.PPM, rect.getY() / MarioBros.PPM));
99131
}
132+
enemies.addAll(turtles);
133+
}
134+
135+
private Mario createPlayer(PlayScreen screen, TiledMap map) {
136+
Rectangle playerPosition = map.getLayers().get(PLAYER_LAYER).getObjects().getByType(RectangleMapObject.class).first().getRectangle();
137+
Mario player = new Mario(screen, playerPosition.getX(), playerPosition.getY());
138+
return player;
139+
}
140+
141+
public Mario getMario() {
142+
return mario;
100143
}
101144

102145
public Array<Enemy> getEnemies(){
103-
Array<Enemy> enemies = new Array<Enemy>();
104-
enemies.addAll(goombas);
105-
enemies.addAll(turtles);
106146
return enemies;
107147
}
108148
}

0 commit comments

Comments
 (0)