package { import flash.display.Bitmap; public class CoffeePotView extends TileView { private static const EMOTE_OFFSET_Y:Number = -24; private var firstDraw:Boolean = true; private var animationTime:Number = 0; private var emotes:Vector.; private var lastFullnessLevel:int = 0; public function CoffeePotView(model:CoffeePotModel, layerIndex:int = 0) { super(model, layerIndex); } override public function draw(delta:Number):void { super.draw(delta); if (firstDraw) { var emote:Bitmap; emotes = new Vector.(); for (var fullness:int = 0; fullness <= CoffeePotModel.FULLNESS_MAX; fullness++) { emote = new (Embeds.coffeeEmoteForFullness(fullness))(); emote.x = -emote.width / 2; emotes.push(emote); } lastFullnessLevel = CoffeePotModel(model).fullnessLevel; addChild(emotes[lastFullnessLevel]); firstDraw = false; } animationTime += delta; if (CoffeePotModel(model).fullnessLevel != lastFullnessLevel) { removeChild(emotes[lastFullnessLevel]); lastFullnessLevel = CoffeePotModel(model).fullnessLevel; addChild(emotes[lastFullnessLevel]); } emotes[lastFullnessLevel].y = EMOTE_OFFSET_Y + GraphicsConstants.EMOTE_BOUNCE_HEIGHT - Math.abs(Math.sin(Math.PI * animationTime / GraphicsConstants.EMOTE_BOUNCE_INTERVAL)) * GraphicsConstants.EMOTE_BOUNCE_HEIGHT; } } }