package com.androidcookbook.simplejumper; import org.flixel.FlxG; import org.flixel.FlxObject; import org.flixel.FlxSprite; import org.flixel.FlxState; import org.flixel.FlxText; import org.flixel.FlxTilemap; import com.badlogic.gdx.utils.IntArray; public class PlayState extends FlxState { private FlxSprite mPlayer; private FlxTilemap mLevel; private FlxSprite mExit; @Override public void create() { add(new FlxText(0, 0, 200, "SimpleJumper 0.0")); add(mPlayer = new Droid(50, 50)); // Create a new tilemap using our level data mLevel = new FlxTilemap(); mLevel.loadMap(FlxTilemap.arrayToCSV(new IntArray(RoomLayout.DATA), 40), FlxTilemap.ImgAuto, 0, 0, FlxTilemap.AUTO); add(mLevel); //Create the level exit, a dark gray box that is hidden at first mExit = new FlxSprite(35*8+1,25*8); mExit.makeGraphic(14,16,0xff3f3f3f); mExit.exists = false; add(mExit); } @Override public void update() { if (FlxG.keys.justPressed("Q")) { mPlayer.kill(); System.exit(0); return; } // Smooth slidey walking controls mPlayer.acceleration.x = 0; if (FlxG.keys.LEFT) mPlayer.acceleration.x -= mPlayer.drag.x; if (FlxG.keys.RIGHT) mPlayer.acceleration.x += mPlayer.drag.x; if (FlxG.keys.justPressed("SPACE") && mPlayer.isTouching(FlxObject.FLOOR)) mPlayer.velocity.y = -mPlayer.maxVelocity.y/2; // Updates all the objects using physics rules super.update(); if (mPlayer.isTouching(FlxObject.FLOOR)) { // Jump controls if (FlxG.keys.UP) { mPlayer.velocity.y = -mPlayer.acceleration.y * 0.51f; mPlayer.play("jump"); } // Animations else if (mPlayer.velocity.x > 0) { mPlayer.play("walk"); } else if (mPlayer.velocity.x < 0) { mPlayer.play("walk_back"); } else mPlayer.play("idle"); } else if (mPlayer.velocity.y < 0) mPlayer.play("jump"); else mPlayer.play("flail"); } }