Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package be.svenpeeters.smd.views
  2. {
  3.     import Box2D.Collision.Shapes.b2CircleShape;
  4.     import Box2D.Collision.Shapes.b2PolygonShape;
  5.     import Box2D.Common.Math.b2Vec2;
  6.     import Box2D.Dynamics.b2Body;
  7.     import Box2D.Dynamics.b2BodyDef;
  8.     import Box2D.Dynamics.b2ContactListener;
  9.     import Box2D.Dynamics.b2DebugDraw;
  10.     import Box2D.Dynamics.b2FixtureDef;
  11.     import Box2D.Dynamics.b2World;
  12.    
  13.     import General.Input;
  14.    
  15.     import be.svenpeeters.smd.models.ApplicationModel;
  16.     import be.svenpeeters.smd.models.GameModel;
  17.     import be.svenpeeters.smd.models.HeroModel;
  18.     import be.svenpeeters.smd.utils.Camera;
  19.    
  20.     import flash.display.Sprite;
  21.     import flash.events.Event;
  22.    
  23.     public class GameView extends Sprite
  24.     {
  25.         private var applicationModel:ApplicationModel
  26.         private var gameModel:GameModel;
  27.         private var heroModel:HeroModel;
  28.        
  29.         private var input:Input;
  30.         private var hero:b2Body;
  31.         private var contactListener:b2ContactListener;
  32.                
  33.         public function GameView()
  34.         {
  35.             contactListener = new b2ContactListener();
  36.            
  37.             applicationModel = ApplicationModel.getInstance();
  38.             gameModel = GameModel.getInstance();
  39.             heroModel = HeroModel.getInstance();
  40.             this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
  41.         }
  42.        
  43.         private function addedToStageHandler(event:Event):void
  44.         {
  45.             this.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
  46.                        
  47.             createWorld();
  48.             createDebugDraw();
  49.             createHero();
  50.            
  51.             this.addEventListener(Event.ENTER_FRAME, update);
  52.         }
  53.        
  54.         private function createWorld():void
  55.         {
  56.            
  57.             gameModel.world = new b2World(gameModel.gravity, gameModel.doSleep);
  58.             gameModel.world.SetContactListener(contactListener);
  59.            
  60.             input = new Input(stage);
  61.                                    
  62.             createLevel();
  63.            
  64.             createDebugDraw();
  65.         }
  66.        
  67.         private function createLevel():void
  68.         {
  69.                    
  70.             switch (gameModel.currentLevel)
  71.             {
  72.                 case 1:
  73.                     createFirstLevel();
  74.                 break;
  75.                
  76.                 case 2:
  77.                     createSecondLevel();
  78.                 break;
  79.             }
  80.         }
  81.        
  82.         private function createFirstLevel():void
  83.         {  
  84.             var firstLevel:FirstLevel = new FirstLevel();
  85.            
  86.             for (var i:int=0; i < firstLevel.numChildren; i++) {
  87.                
  88.                 with (firstLevel.getChildAt(i)) {
  89.                     new Platform(x, y, 40 * scaleX, 40 * scaleY, rotation * 0.0174532925, name == "dynamicObject");
  90.                 }
  91.             }
  92.            
  93.             addChild(firstLevel);
  94.            
  95.         }
  96.        
  97.         private function createSecondLevel():void
  98.         {
  99.             trace("level 2");
  100.         }
  101.        
  102.         private function createHero():void
  103.         {
  104.            
  105.             var bodyDef:b2BodyDef = new b2BodyDef();
  106.             bodyDef.type = b2Body.b2_dynamicBody;
  107.             bodyDef.position.Set(30 / gameModel.PIXELS_TO_METRE, 400 / gameModel.PIXELS_TO_METRE);
  108.            
  109.             var body:b2Body = gameModel.world.CreateBody(bodyDef);
  110.            
  111.             var dynamicCircle:b2CircleShape = new b2CircleShape(20 / gameModel.PIXELS_TO_METRE);
  112.             dynamicCircle.SetRadius(30/gameModel.PIXELS_TO_METRE);
  113.            
  114.             var fixtureDef:b2FixtureDef = new b2FixtureDef();
  115.             fixtureDef.shape = dynamicCircle;
  116.             fixtureDef.density = 10;
  117.             fixtureDef.friction = 100000000;
  118.            
  119.             body.CreateFixture(fixtureDef);
  120.                        
  121.             heroModel.hero = body;
  122.         }
  123.        
  124.        
  125.         private function update(event:Event):void
  126.         {
  127.             keyboardUpdate();
  128.            
  129.             var timeStep:Number = 1/40;
  130.             var velocityIterations:int = 4;
  131.             var postionIterations:int = 4;
  132.            
  133.             gameModel.world.Step(timeStep, velocityIterations, postionIterations);
  134.             gameModel.world.ClearForces();
  135.             gameModel.world.DrawDebugData();
  136.                        
  137.             Input.update();
  138.            
  139.             this.x = 200 - heroModel.hero.GetPosition().x * 20;
  140.         }
  141.        
  142.         private function keyboardUpdate():void
  143.         {
  144.             if (Input.isKeyDown(37)){
  145.                 heroModel.hero.SetLinearVelocity(new b2Vec2(-1,heroModel.hero.GetLinearVelocity().y))
  146.             }
  147.            
  148.             if (Input.isKeyDown(39)) {
  149.                 heroModel.hero.SetLinearVelocity(new b2Vec2(1,heroModel.hero.GetLinearVelocity().y));
  150.             }
  151.            
  152.             if (Input.isKeyDown(38)) {
  153.                 heroModel.hero.SetLinearVelocity(new b2Vec2(heroModel.hero.GetLinearVelocity().x,-10));
  154.             }
  155.            
  156.         }
  157.  
  158.        
  159.         private function createDebugDraw():void
  160.         {
  161.             var debugSprite:Sprite = new Sprite();
  162.             addChild(debugSprite);
  163.            
  164.             var debugDraw:b2DebugDraw = new b2DebugDraw();
  165.             debugDraw.SetSprite(debugSprite);
  166.             debugDraw.SetDrawScale(gameModel.PIXELS_TO_METRE);
  167.             debugDraw.SetLineThickness(1.0);
  168.             debugDraw.SetAlpha(1);
  169.             debugDraw.SetFillAlpha(0.4);
  170.             debugDraw.SetFlags(b2DebugDraw.e_shapeBit);
  171.            
  172.             gameModel.world.SetDebugDraw(debugDraw);
  173.         }
  174.     }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement