Skip to content

Commit 7ab6ad1

Browse files
committed
Set player from tiled
Set the player position from tiled. This is useful when debugging things like the end game so you don't have to go there in game
1 parent 5452f39 commit 7ab6ad1

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)