Skip to content

Commit

Permalink
Mobile scaling & loading improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
robsilv committed Aug 21, 2013
1 parent d736cf4 commit 324f809
Show file tree
Hide file tree
Showing 10 changed files with 83 additions and 75 deletions.
45 changes: 40 additions & 5 deletions cadet_HungryHero/src/hungryHero/Main.as
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ package hungryHero
public static var originalStageWidth:Number;
public static var originalStageHeight:Number;

public static var gameWindow :Sprite;

public function Main()
{
this.addEventListener(starling.events.Event.ADDED_TO_STAGE, onAddedToStage);
Expand All @@ -51,12 +53,36 @@ package hungryHero
{
this.removeEventListener(starling.events.Event.ADDED_TO_STAGE, onAddedToStage);

/* Starling stage scaling:
* If star.stage.stageWidth & star.stage.stageHeight are equal to
* star.viewPort.width & star.viewPort.height, the stage content is not scaled.
* Else, stage is scaled, e.g.
*
* originalStageWidth = 1024
* originalStageHeight = 768
* stageWidth (onAdded - Nexus 10) = 2560
* stageHeight (onAdded - Nexus 10) = 1454
* xScalar = 0.4
* yScalar = 0.52
* minScalar = xScalar
* stageWidth (final) = 1024
* stageHeight (final) = 581.6
*
* (Larger numbers = scaled down more)
*/

var star:Starling = Starling.current;
var xScalar:Number = star.stage.stageWidth / originalStageWidth;
var yScalar:Number = star.stage.stageHeight / originalStageHeight;
var xScalar:Number = originalStageWidth / star.stage.stageWidth;
var yScalar:Number = originalStageHeight / star.stage.stageHeight;
var scalar:Number = Math.min(xScalar, yScalar);
trace("Original sW "+originalStageWidth+" sH "+originalStageHeight);
trace("Current sW "+star.stage.stageWidth+" sH "+star.stage.stageHeight);
trace("xScalar "+xScalar+" yScalar "+yScalar);

star.stage.stageWidth /= xScalar;
star.stage.stageHeight /= yScalar;
star.stage.stageWidth *= scalar;
star.stage.stageHeight *= scalar;

trace("Final sW "+star.stage.stageWidth+" sH "+star.stage.stageHeight);

// Required when loading data and assets.
var startUpOperation:Cadet2DStartUpOperation = new Cadet2DStartUpOperation(cadetFileURL, fileSystemType);
Expand All @@ -80,7 +106,7 @@ package hungryHero
// Need to wait for the next frame to serialize, otherwise the manifests aren't ready
//AsynchronousUtil.callLater(serialize);
}

// Initialize screens.
init();
}
Expand All @@ -101,6 +127,9 @@ package hungryHero
viewContainer = new Sprite();
this.addChild( viewContainer );

gameWindow = new Sprite();
viewContainer.addChild(gameWindow);

viewManager = new ViewManager( viewContainer );

viewManager.registerView( GameView, GameViewController );
Expand All @@ -116,6 +145,12 @@ package hungryHero
soundButton.y = int(soundButton.height * 0.5);
soundButton.addEventListener(starling.events.Event.TRIGGERED, onSoundButtonClick);
this.addChild(soundButton);

gameModel.init(gameWindow);
gameModel.enable();

gameModel.globalsProcess.paused = true;
gameModel.soundProcess.muted = true;
}

// On click of the sound/mute button.
Expand Down
46 changes: 17 additions & 29 deletions cadet_HungryHero/src/hungryHero/controller/GameViewController.as
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ package hungryHero.controller
{
import flash.events.Event;

import cadet.components.processes.SoundProcess;
import cadet.util.ComponentUtil;

import hungryHero.Main;
import hungryHero.components.processes.GlobalsProcess;
import hungryHero.events.NavigationEvent;
Expand All @@ -27,9 +24,6 @@ package hungryHero.controller

private var _gameModel :IGameModel;

private var _globals :GlobalsProcess;
private var _soundProcess :SoundProcess;

public function GameViewController()
{
}
Expand All @@ -38,13 +32,9 @@ package hungryHero.controller
{
_view = GameView(view);
_gameModel = Main.gameModel;
_gameModel.init(_view.gameWindow);

_globals = ComponentUtil.getChildOfType(_gameModel.cadetScene, GlobalsProcess, true);
_globals.addEventListener( GlobalsProcess.GAME_STATE_ENDED, gameEndedHandler );
_gameModel.globalsProcess.addEventListener( GlobalsProcess.GAME_STATE_ENDED, gameEndedHandler );

_soundProcess = ComponentUtil.getChildOfType(_gameModel.cadetScene, SoundProcess, true);

enable();
}

Expand All @@ -59,13 +49,11 @@ package hungryHero.controller
}

public function enable():void
{
_soundProcess.playSound(_soundProcess.music);

_gameModel.muted = Sounds.muted;
_gameModel.enable();

_globals.paused = true;
{
_gameModel.soundProcess.muted = Sounds.muted;
_gameModel.soundProcess.playSound(_gameModel.soundProcess.music);

_gameModel.globalsProcess.paused = true;

Sounds.instance.addEventListener( flash.events.Event.CHANGE, toggleMuteHandler );

Expand All @@ -81,11 +69,11 @@ package hungryHero.controller

public function disable():void
{
_gameModel.disable();
_gameModel.globalsProcess.paused = true;

Sounds.instance.removeEventListener( flash.events.Event.CHANGE, toggleMuteHandler );

_soundProcess.stopSound(_soundProcess.music);
_gameModel.soundProcess.stopSound(_gameModel.soundProcess.music);

_view.visible = false;

Expand All @@ -99,15 +87,15 @@ package hungryHero.controller

private function enterFrameHandler( event:starling.events.Event ):void
{
if (!_globals) return;
_view.hud.distance = Math.round(_globals.scoreDistance);
_view.hud.foodScore = _globals.scoreItems;
_view.hud.lives = _globals.currentLives;
if (!_gameModel.globalsProcess) return;
_view.hud.distance = Math.round(_gameModel.globalsProcess.scoreDistance);
_view.hud.foodScore = _gameModel.globalsProcess.scoreItems;
_view.hud.lives = _gameModel.globalsProcess.currentLives;
}

private function toggleMuteHandler( event:flash.events.Event ):void
{
_gameModel.muted = Sounds.muted;
_gameModel.soundProcess.muted = Sounds.muted;
}

// On click of pause button.
Expand All @@ -116,7 +104,7 @@ package hungryHero.controller
{
event.stopImmediatePropagation();

_globals.paused = !_globals.paused;
_gameModel.globalsProcess.paused = ! _gameModel.globalsProcess.paused;
}

// On navigation from different screens.
Expand All @@ -140,7 +128,7 @@ package hungryHero.controller
// On game over screen faded out.
private function gameOverFadedOut():void
{
_globals.paused = true;
_gameModel.globalsProcess.paused = true;
_gameModel.reset();

_view.gameOverContainer.visible = false;
Expand All @@ -160,14 +148,14 @@ package hungryHero.controller
// Show pause button since the game is started.
_view.pauseButton.visible = true;

_globals.paused = false;
_gameModel.globalsProcess.paused = false;
_gameModel.reset();
}

private function gameEndedHandler(event:flash.events.Event):void
{
_view.setChildIndex(_view.gameOverContainer, _view.numChildren-1);
_view.gameOverContainer.initialize(_globals.scoreItems, Math.round(_globals.scoreDistance));
_view.gameOverContainer.initialize(_gameModel.globalsProcess.scoreItems, Math.round(_gameModel.globalsProcess.scoreDistance));

tween_gameOverContainer = new Tween(_view.gameOverContainer, 1);
tween_gameOverContainer.fadeTo(1);
Expand Down
24 changes: 9 additions & 15 deletions cadet_HungryHero/src/hungryHero/model/GameModel_Code.as
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ package hungryHero.model
import hungryHero.components.processes.ObstaclesProcess;
import hungryHero.components.processes.WindParticlesProcess;

import starling.core.Starling;
import starling.display.DisplayObjectContainer;
import starling.events.Event;

Expand Down Expand Up @@ -91,8 +90,6 @@ package hungryHero.model
private var _coffeeParticles :PDParticleSystemComponent;
private var _mushroomParticles :PDParticleSystemComponent;

private var _muted :Boolean;

public function GameModel_Code( resourceManager:ResourceManager )
{
_resourceManager = resourceManager;
Expand Down Expand Up @@ -125,7 +122,7 @@ package hungryHero.model
_worldBounds.top = 100;
_worldBounds.left = 0;
_worldBounds.right = 1024;
_worldBounds.bottom = 768 - 250;
_worldBounds.bottom = 768 - 250;

// Add ShakeBehaviour
_shakeBehaviour = new ShakeBehaviour();
Expand Down Expand Up @@ -167,21 +164,18 @@ package hungryHero.model
_parent.removeEventListener( starling.events.Event.ENTER_FRAME, enterFrameHandler );
}

public function get muted():Boolean
public function get renderer():Renderer2D
{
return _muted;
return _renderer;
}
public function set muted( value:Boolean ):void

public function get soundProcess():SoundProcess
{
_muted = value;
if ( _soundProcess ) {
_soundProcess.muted = _muted;
}
return _soundProcess;
}

public function get renderer():Renderer2D
public function get globalsProcess():GlobalsProcess
{
return _renderer;
return _globals;
}

public function dispose():void
Expand Down Expand Up @@ -250,12 +244,12 @@ package hungryHero.model
_skySkin = new ImageSkin("Sky Skin");
sky.children.addItem(_skySkin);
_skySkin.texture = skyTexture;

// Add a ParallaxBehaviour to the sky Entity
parallax = new ParallaxBehaviour();
parallax.depth = 0.1;
parallax.speed = _parallaxSpeed;
_skySkin.parentComponent.children.addItem(parallax);

// Add the background hills to the scene
var hills:ComponentContainer = new ComponentContainer("Hills");
_cadetScene.children.addItem(hills);
Expand Down
22 changes: 9 additions & 13 deletions cadet_HungryHero/src/hungryHero/model/GameModel_XML.as
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ package hungryHero.model
private var _shakeBehaviour :ShakeBehaviour;

private var _initialised :Boolean;
private var _muted :Boolean;

public function GameModel_XML()
{
Expand Down Expand Up @@ -90,18 +89,6 @@ package hungryHero.model
_parent.removeEventListener( starling.events.Event.ENTER_FRAME, enterFrameHandler );
}

public function get muted():Boolean
{
return _muted;
}
public function set muted( value:Boolean ):void
{
_muted = value;
if ( _soundProcess ) {
_soundProcess.muted = _muted;
}
}

public function dispose():void
{
_cadetScene.dispose();
Expand All @@ -125,6 +112,15 @@ package hungryHero.model
{
return _renderer;
}

public function get soundProcess():SoundProcess
{
return _soundProcess;
}
public function get globalsProcess():GlobalsProcess
{
return _globals;
}
}
}

Expand Down
9 changes: 6 additions & 3 deletions cadet_HungryHero/src/hungryHero/model/IGameModel.as
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package hungryHero.model
{
import cadet.components.processes.SoundProcess;
import cadet.core.CadetScene;

import cadet2D.components.renderers.Renderer2D;

import hungryHero.components.processes.GlobalsProcess;

import starling.display.DisplayObjectContainer;

public interface IGameModel
Expand All @@ -17,9 +20,9 @@ package hungryHero.model
function get cadetScene():CadetScene;
function set cadetScene( value:CadetScene ):void;

function get muted():Boolean;
function set muted( value:Boolean ):void;

function get renderer():Renderer2D;

function get soundProcess():SoundProcess;
function get globalsProcess():GlobalsProcess;
}
}
7 changes: 1 addition & 6 deletions cadet_HungryHero/src/hungryHero/view/GameView.as
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ package hungryHero.view
// ------------------------------------------------------------------------------------------------------------
// INTERFACE OBJECTS
// ------------------------------------------------------------------------------------------------------------

public var gameWindow:Sprite;

public var gameOverContainer:GameOverContainer;

// Pause button.
Expand All @@ -47,10 +46,6 @@ package hungryHero.view
{
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

// Draw Screen
gameWindow = new Sprite();
addChild(gameWindow);

// Pause button.
pauseButton = new PauseButton();
pauseButton.x = pauseButton.width * 2;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

<!-- Core -->
<classMap name="Renderer2D" class="cadet2D.components.renderers.Renderer2D" />
<classMap name="Entity" class="cadet2D.components.core.Entity"/>

<!-- Core Processes -->
<classMap name="InputProcess2D" class="cadet2D.components.processes.InputProcess2D" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

<!-- Core -->
<classMap name="Renderer2D" class="cadet2D.components.renderers.Renderer2D" />
<classMap name="Entity" class="cadet2D.components.core.Entity"/>

<!-- Core Processes -->
<classMap name="InputProcess2D" class="cadet2D.components.processes.InputProcess2D" />
Expand Down
2 changes: 1 addition & 1 deletion cadet_HungryHero_Mobile/src/C2D_HungryHero_Mobile.as
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ package

import starling.core.Starling;

[SWF( width="1024", height="768", backgroundColor="0x389cd1", frameRate="60" )]
[SWF( width="1024", height="768", backgroundColor="0x000000", frameRate="60" )]
public class C2D_HungryHero_Mobile extends Sprite
{
private var myStarling:Starling;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

<!-- Core -->
<classMap name="Renderer2D" class="cadet2D.components.renderers.Renderer2D" />
<classMap name="Entity" class="cadet2D.components.core.Entity"/>

<!-- Core Processes -->
<classMap name="InputProcess2D" class="cadet2D.components.processes.InputProcess2D" />
Expand Down

0 comments on commit 324f809

Please sign in to comment.