@@ -28,12 +28,14 @@ package
2828 public var gameRateMultiplier: Number = 1 ;
2929 public var worldSpeed: Number = 60 * gameRateMultiplier;
3030 public var cameraContainer: Sprite ; // everything visual goes in this
31+ public var stageContainer: Sprite ; // put even the cameraContainer in this
3132
3233 // game variables
3334 public var crowdTextDisplay: TextField ;
3435 public var crowd: Vector .< Rioter>;
3536 public var tank: Tank;
3637 public var menu: Menu ;
38+ public var background: bgImage
3739
3840 // constant playing sounds
3941 public var bgAmbience: Sound = new bgAmbienceSound();
@@ -58,12 +60,18 @@ package
5860 }
5961
6062 // The menu kind of always stays there? It just drops down?
61- public function init ():void
63+ public function init ():void
6264 {
65+ stageContainer = new Sprite ();
66+ addChild (stageContainer);
67+
68+ var background : bgImage = new bgImage();
69+ stageContainer. addChild (background );
70+
6371 cameraContainer = new Sprite ();
6472 cameraContainer. x = 0 ;
6573 cameraContainer. y = 0 ;
66- addChild (cameraContainer);
74+ stageContainer . addChild (cameraContainer);
6775 game(); // game will play in background at all times
6876
6977 menu = new Menu (); // menu will overlay and allow options
@@ -84,6 +92,16 @@ package
8492
8593 public function game ():void
8694 {
95+ // for subtle screen movement
96+ var stageX : Number = stageContainer. x ;
97+ var stageY : Number = stageContainer. y ;
98+ var motionAmt = 5 ;
99+ var randStageX: Number = randomNumber( - motionAmt, motionAmt);
100+ var randStageY: Number = randomNumber( - motionAmt, motionAmt);
101+ var motionSpeed = 0.005 ;
102+ var updateTime = 1 * 60 ;
103+ var currentScreenTime = 0 ;
104+
87105 // placeholder stuff
88106 var myFormat: TextFormat = new TextFormat ();
89107 myFormat. color = 0xDED5D1 ;
@@ -100,7 +118,7 @@ package
100118 crowdTextDisplay. wordWrap = true ;
101119 crowdTextDisplay. text = "Control the Rioting Crowd" ;
102120 crowdTextDisplay. setTextFormat (myFormat);
103- addChild (crowdTextDisplay);
121+ stageContainer . addChild (crowdTextDisplay);
104122
105123 var instructionsDisplayCt: int = 0 ;
106124
@@ -169,7 +187,20 @@ package
169187
170188
171189 function mainLoop(e: Event ): void
172- {
190+ {
191+ if (currentScreenTime >= updateTime)
192+ {
193+ randStageX = randomNumber( - motionAmt, motionAmt);
194+ randStageY = randomNumber( - motionAmt, motionAmt);
195+
196+ currentScreenTime = 0 ;
197+ }
198+ stageX = doLerp(stageX , randStageX, motionSpeed);
199+ stageY = doLerp(stageY , randStageY, motionSpeed);
200+ stageContainer. x = stageX ;
201+ stageContainer. y = stageY ;
202+ currentScreenTime++;
203+
173204 for (i = 0 ; i < crowd. length ; i++ )
174205 {
175206 // update rioters
@@ -488,6 +519,32 @@ package
488519 }
489520 }
490521 }
522+
523+ // current speed, goal speed, amount of lerp
524+ public function doLerp (value :Number , goal :Number , lerpSpeed :Number ):Number
525+ {
526+ var lerpValue: Number = 0.0 ;
527+
528+ // Update
529+ if (value != goal)
530+ {
531+ lerpValue = 0.0 ;
532+ }
533+
534+ if (lerpValue < 1.0 )
535+ {
536+ lerpValue += lerpSpeed;
537+ }
538+
539+ var newVal: Number = lerp(value , lerpValue, goal);
540+ value = newVal;
541+ return value ;
542+ }
543+
544+ public function lerp (x :Number , t :Number , y :Number ):Number
545+ {
546+ return x * (1 - t) + y * t;
547+ }
491548 }
492549
493550}
0 commit comments