package { import flash.display.Bitmap; import flash.display.Sprite; public class HUDView extends Sprite { private static const PRODUCTIVITY_GAUGE_WIDTH:Number = 300; private static const PRODUCTIVITY_GAUGE_HEIGHT:Number = 24; private static const PRODUCTIVITY_GAUGE_FRAME_COLOR:uint = 0xFFFFFF; private static const PRODUCTIVITY_GAUGE_BACKGROUND_COLOR:uint = 0x3F0F0F; private static const PRODUCTIVITY_GAUGE_FILL_COLOR:uint = 0x3FBF3F; private var gameStateModel:GameStateModel; private var productivityDisplay:Sprite; private var timeDisplay:Sprite; private var minuteHand:Sprite; private var hourHand:Sprite; public function HUDView(gameStateModel:GameStateModel) { var bitmap:Bitmap; this.gameStateModel = gameStateModel; timeDisplay = new Sprite(); productivityDisplay = new Sprite(); addChild(timeDisplay); addChild(productivityDisplay); timeDisplay.addChild(new (Embeds.embedClock)()); minuteHand = new Sprite(); bitmap = new (Embeds.embedMinuteHand)(); bitmap.x = -bitmap.width / 2; bitmap.y = -bitmap.height / 2; minuteHand.addChild(bitmap); minuteHand.x = bitmap.width / 2; minuteHand.y = bitmap.height / 2; timeDisplay.addChild(minuteHand); hourHand = new Sprite(); bitmap = new (Embeds.embedHourHand)(); bitmap.x = -bitmap.width / 2; bitmap.y = -bitmap.height / 2; hourHand.addChild(bitmap); hourHand.x = bitmap.width / 2; hourHand.y = bitmap.height / 2; timeDisplay.addChild(hourHand); timeDisplay.scaleX = timeDisplay.scaleY = 0.0625; } public function draw():void { productivityDisplay.graphics.clear(); productivityDisplay.graphics.beginFill(PRODUCTIVITY_GAUGE_FRAME_COLOR); productivityDisplay.graphics.drawRect(10, 10, PRODUCTIVITY_GAUGE_WIDTH, PRODUCTIVITY_GAUGE_HEIGHT); productivityDisplay.graphics.endFill(); productivityDisplay.graphics.beginFill(PRODUCTIVITY_GAUGE_BACKGROUND_COLOR); productivityDisplay.graphics.drawRect(12, 12, PRODUCTIVITY_GAUGE_WIDTH - 4, PRODUCTIVITY_GAUGE_HEIGHT - 4); productivityDisplay.graphics.endFill(); productivityDisplay.graphics.beginFill(PRODUCTIVITY_GAUGE_FILL_COLOR); productivityDisplay.graphics.drawRect(12, 12, int((PRODUCTIVITY_GAUGE_WIDTH - 4) * gameStateModel.productivity / 2) * 2, PRODUCTIVITY_GAUGE_HEIGHT - 4); productivityDisplay.graphics.endFill(); timeDisplay.x = stage.stageWidth - 74; timeDisplay.y = 10; hourHand.rotation = (gameStateModel.timeOfDay * 10 - 4) / 12 * 360; minuteHand.rotation = hourHand.rotation * 60; } } }