Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package be.svenpeeters.smd.views
- {
- import Box2D.Collision.Shapes.b2CircleShape;
- import Box2D.Collision.Shapes.b2PolygonShape;
- import Box2D.Common.Math.b2Vec2;
- import Box2D.Dynamics.b2Body;
- import Box2D.Dynamics.b2BodyDef;
- import Box2D.Dynamics.b2ContactListener;
- import Box2D.Dynamics.b2DebugDraw;
- import Box2D.Dynamics.b2FixtureDef;
- import Box2D.Dynamics.b2World;
- import General.Input;
- import be.svenpeeters.smd.models.ApplicationModel;
- import be.svenpeeters.smd.models.GameModel;
- import be.svenpeeters.smd.models.HeroModel;
- import be.svenpeeters.smd.utils.Camera;
- import flash.display.Sprite;
- import flash.events.Event;
- public class GameView extends Sprite
- {
- private var applicationModel:ApplicationModel
- private var gameModel:GameModel;
- private var heroModel:HeroModel;
- private var input:Input;
- private var hero:b2Body;
- private var contactListener:b2ContactListener;
- public function GameView()
- {
- contactListener = new b2ContactListener();
- applicationModel = ApplicationModel.getInstance();
- gameModel = GameModel.getInstance();
- heroModel = HeroModel.getInstance();
- this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
- }
- private function addedToStageHandler(event:Event):void
- {
- this.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
- createWorld();
- createDebugDraw();
- createHero();
- this.addEventListener(Event.ENTER_FRAME, update);
- }
- private function createWorld():void
- {
- gameModel.world = new b2World(gameModel.gravity, gameModel.doSleep);
- gameModel.world.SetContactListener(contactListener);
- input = new Input(stage);
- createLevel();
- createDebugDraw();
- }
- private function createLevel():void
- {
- switch (gameModel.currentLevel)
- {
- case 1:
- createFirstLevel();
- break;
- case 2:
- createSecondLevel();
- break;
- }
- }
- private function createFirstLevel():void
- {
- var firstLevel:FirstLevel = new FirstLevel();
- for (var i:int=0; i < firstLevel.numChildren; i++) {
- with (firstLevel.getChildAt(i)) {
- new Platform(x, y, 40 * scaleX, 40 * scaleY, rotation * 0.0174532925, name == "dynamicObject");
- }
- }
- addChild(firstLevel);
- }
- private function createSecondLevel():void
- {
- trace("level 2");
- }
- private function createHero():void
- {
- var bodyDef:b2BodyDef = new b2BodyDef();
- bodyDef.type = b2Body.b2_dynamicBody;
- bodyDef.position.Set(30 / gameModel.PIXELS_TO_METRE, 400 / gameModel.PIXELS_TO_METRE);
- var body:b2Body = gameModel.world.CreateBody(bodyDef);
- var dynamicCircle:b2CircleShape = new b2CircleShape(20 / gameModel.PIXELS_TO_METRE);
- dynamicCircle.SetRadius(30/gameModel.PIXELS_TO_METRE);
- var fixtureDef:b2FixtureDef = new b2FixtureDef();
- fixtureDef.shape = dynamicCircle;
- fixtureDef.density = 10;
- fixtureDef.friction = 100000000;
- body.CreateFixture(fixtureDef);
- heroModel.hero = body;
- }
- private function update(event:Event):void
- {
- keyboardUpdate();
- var timeStep:Number = 1/40;
- var velocityIterations:int = 4;
- var postionIterations:int = 4;
- gameModel.world.Step(timeStep, velocityIterations, postionIterations);
- gameModel.world.ClearForces();
- gameModel.world.DrawDebugData();
- Input.update();
- this.x = 200 - heroModel.hero.GetPosition().x * 20;
- }
- private function keyboardUpdate():void
- {
- if (Input.isKeyDown(37)){
- heroModel.hero.SetLinearVelocity(new b2Vec2(-1,heroModel.hero.GetLinearVelocity().y))
- }
- if (Input.isKeyDown(39)) {
- heroModel.hero.SetLinearVelocity(new b2Vec2(1,heroModel.hero.GetLinearVelocity().y));
- }
- if (Input.isKeyDown(38)) {
- heroModel.hero.SetLinearVelocity(new b2Vec2(heroModel.hero.GetLinearVelocity().x,-10));
- }
- }
- private function createDebugDraw():void
- {
- var debugSprite:Sprite = new Sprite();
- addChild(debugSprite);
- var debugDraw:b2DebugDraw = new b2DebugDraw();
- debugDraw.SetSprite(debugSprite);
- debugDraw.SetDrawScale(gameModel.PIXELS_TO_METRE);
- debugDraw.SetLineThickness(1.0);
- debugDraw.SetAlpha(1);
- debugDraw.SetFillAlpha(0.4);
- debugDraw.SetFlags(b2DebugDraw.e_shapeBit);
- gameModel.world.SetDebugDraw(debugDraw);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement