STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228105
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2561 · P5121

swfchan turned sixteen years old the day before yesterday! (5may2024)

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/15900731?noj=FRM15900731-7DC" width="1" height="1"></div>

Extinct Plant Survival game - are you smarter than a plant.swf

This is the info page for
Flash #129534

(Click the ID number above for more basic data on this flash file.)


Text
<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.400000" kerning="1">This is a good idea for wild plants but NOT a good idea for farm plants.</font></p>

<p align="left"><font face="DINOT-Light" size="40" color="#ffffff" letterSpacing="-0.500000" kerning="1">ARE YOU STILL THERE?</font></p>

FARMED PLANT

Minerals

Minerals

Sugar

Sugar

FARMED PLANT

WILD PLANT

<p align="center"><font face="DINOT-Regular" size="16" color="#ffffff" letterSpacing="-0.500000" kerning="1">8 months left</font></p>

<p align="center"><font face="DINOT-Regular" size="16" color="#305258" letterSpacing="-0.500000" kerning="1">8 months left</font></p>

<p align="center"><font face="DINOT-Bold" size="37" color="#000000" letterSpacing="0.000000" kerning="1">MAR</font></p>

<p align="center"><font face="DINOT-Bold" size="37" color="#305258" letterSpacing="0.000000" kerning="1">MAR</font></p>

<p align="right"><font face="DINOT-Bold" size="30" color="#f56511" letterSpacing="0.000000" kerning="1">8</font></p>

<p align="left"><font face="DINOT-Regular" size="16" color="#ffffff" letterSpacing="0.000000" kerning="1">0 large seeds on the plant</font></p>

<p align="left"><font face="DINOT-Regular" size="16" color="#456100" letterSpacing="0.000000" kerning="1">0 large seeds on the plant</font></p>

<p align="center"><font face="DINOT-Regular" size="16" color="#ffffff" letterSpacing="-0.800000" kerning="1">Heavy rain</font></p>

<p align="center"><font face="DINOT-Regular" size="16" color="#305258" letterSpacing="-0.800000" kerning="1">Heavy rain</font></p>

<p align="center"><font face="DINOT-Regular" size="16" color="#ffffff" letterSpacing="-0.500000" kerning="1">sunny</font></p>

<p align="center"><font face="DINOT-Regular" size="16" color="#f56511" letterSpacing="-0.500000" kerning="1">sunny</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.400000" kerning="1">You will lose the plant you&apos;ve been growing and go back to the start</font></p>

<p align="left"><font face="DINOT-Light" size="40" color="#ffffff" letterSpacing="-0.500000" kerning="1">ARE YOU SURE THAT YOU WANT TO RESTART?</font></p>

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-0.500000" kerning="1">Play as a Wild plant</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.400000" kerning="1">This is a good idea for wild plants but NOT a good idea for farm plants.</font></p>

<p align="left"><font face="DINOT-Light" size="40" color="#ffffff" letterSpacing="-0.500000" kerning="1">DO YOU WANT TO EJECT ALL YOUR SEEDS?</font></p>

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-0.500000" kerning="1">Credits</font></p>

<p align="left"><font face="DINOT-Light" size="40" color="#ffffff" letterSpacing="-0.500000" kerning="1">IT&apos;S SEPTEMBER AND YOUR TIME IS UP</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">Month</font></p>

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-0.500000" kerning="1">Play again</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">Month</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">Month</font></p>

Rating:

CREDITS

Created by Joe Cutting
www.joecutting.com

Graphic design by ico Design Consultancy
www.icodesign.co.uk

Scientific content by Professor Ottoline Leyser

Made possible by funding from the BBSRC
www.bbsrc.ac.uk

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-0.500000" kerning="1">Go back</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">Roots : X</font></p>

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-0.500000" kerning="1">Create sugar</font></p>

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-0.500000" kerning="1">Absorb minerals and water</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">Water absorbed:</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">Minerals absorbed:</font></p>

<p align="left"><font face="DINOT-Bold" size="20" color="#f56511" letterSpacing="0.000000" kerning="1">8</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">Roots : X</font></p><p align="left"></p>

<p align="left"><font face="DINOT-Light" size="40" color="#ffffff" letterSpacing="-0.500000" kerning="1">IN APRIL</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">Month</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">You&apos;ve been fertilised by the farmer which helps you absorb more minerals</font></p>

0

<p align="center"><font face="DINOT-Regular" size="15" color="#ffffff" letterSpacing="-0.500000" kerning="1">88</font></p>

You need CO
2
to make sugar. But absorbing CO
2
through your leaves
means you lose water. How many of your leaves will you open to absorb CO
2
?

CO
2
+ Water + Sunlight = Sugar

CO
2
absorbed

Sunlight

Water left

<p align="left"><font face="DINOT-Light" size="40" color="#ffffff" letterSpacing="-0.600000" kerning="1">MAKE SUGAR</font></p>

<p align="right"><font face="DINOT-Regular" size="15" color="#ffffff" letterSpacing="-0.300000" kerning="1">0</font></p>

Sugar created

<p align="center"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">233 leaves open</font></p><p align="center"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.300000" kerning="1">two lines</font></p>

<p align="center"><font face="DINOT-Bold" size="50" color="#ffffff" letterSpacing="-1.000000" kerning="1">88</font></p>

Sugar

Minerals

<p align="left"><font face="DINOT-Regular" size="16" color="#305258" letterSpacing="-1.000000" kerning="1">NEW SHOOT</font></p>

<p align="right"><font face="DINOT-Bold" size="12" color="#f56511" letterSpacing="0.000000" kerning="1">8</font></p>

<p align="center"><font face="DINOT-Regular" size="16" color="#ffffff" letterSpacing="-1.000000" kerning="1">Grow</font></p>

<p align="left"><font face="DINOT-Bold" size="12" color="#324746" letterSpacing="-0.300000" kerning="1">Need more </font></p><p align="left"><font face="DINOT-Bold" size="12" color="#324746" letterSpacing="-0.300000" kerning="1">sugar</font></p>

<p align="left"><font face="DINOT-Bold" size="12" color="#324746" letterSpacing="-0.300000" kerning="1">Need more</font></p><p align="left"><font face="DINOT-Bold" size="12" color="#324746" letterSpacing="-0.300000" kerning="1">minerals</font></p>

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-0.500000" kerning="1">Finish growing for this month?</font></p>

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-1.000000" kerning="1">Start</font></p>

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-1.000000" kerning="1">Add shoot</font></p>

<p align="left"></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-1.000000" kerning="1">message</font></p><p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-1.000000" kerning="1">hello this</font></p><p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-1.000000" kerning="1">third line</font></p>

<p align="left"><font face="DINOT-Bold" size="24" color="#ffffff" letterSpacing="-1.000000" kerning="1">GROW YOUR PLANT!</font></p><p align="left"></p>

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-0.500000" kerning="1">Start</font></p>

<p align="left"><font face="DINOT-Regular" size="20" color="#ffffff" letterSpacing="-0.500000" kerning="1">Play as a Farmed plant</font></p>

EXTINCT!
ARE YOU SMARTER THAN A PLANT?

Plants make lots of decisions which help them survive.
Are you smart enough to survive as a plant or will you become extinct?

WILD PLANT

You need to eject as many seeds as possible before September.
This will ensure the best chance that your genes will be passed
onto the next generation.

Don't let the other plants shade you from the sun.

FARMED PLANT

You need to produce as many large seeds as
possible in September. This will give you a better
chance of being selected to be planted again next year.

Don't shade the other plants from the sun.

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.200000" kerning="1">The game takes about ten minutes to play.</font></p>

<p align="left"><font face="DINOT-Light" size="20" color="#ffffff" letterSpacing="-0.200000" kerning="1">Use the trackball and button to play the game.</font></p>

ActionScript [AS3]

Section 1
//GTween (com.gskinner.motion.GTween) package com.gskinner.motion { import flash.events.*; import flash.utils.*; public class GTween extends EventDispatcher { protected var ticker:ITicker; protected var children:Dictionary; protected var positionOffset:Number;// = NAN public var useSmartRotation:Boolean;// = true protected var lastProgressPosition:Number;// = 0 public var autoReverse:Boolean;// = false public var nextTween:GTween; protected var _paused:Boolean;// = true protected var clearProperties:Boolean;// = true protected var initProperties:Object; protected var _proxy:TargetProxy; protected var destProperties:Object; protected var progressPoints:Array; public var autoPlay:Boolean;// = true protected var _position:Number;// = 0 protected var hasSetSize:Boolean;// = false protected var _delay:Number;// = 0 protected var _state:String;// = "beginning" protected var hasAlphaAndVisible:Boolean;// = true public var data; protected var _target:Object; public var assignmentTarget:Object; public var assignmentProperty:String; public var useSnapping:Boolean;// = false protected var _lastProgressPoint:ProgressPoint; protected var _autoHide:Boolean;// = true protected var invalid:Boolean;// = false protected var _duration:Number;// = 10 public var useSetSize:Boolean;// = true public var ease:Function; public static const TIME:String = "time"; public static const FRAME:String = "frame"; public static const TWEEN_PHASE:String = "tweenPhase"; public static const PROGRESS:String = "progress"; public static const END:String = "end"; public static const HYBRID:String = "hybrid"; public static const BEGINNING:String = "beginning"; public static const DELAY_PHASE:String = "delayPhase"; protected static var ticker:ITicker; public static var pauseAll:Boolean = false; public static var defaultEase:Function = linearEase; public static var rotationProperties:Object = {_rotation:true, rotation:true, rotationX:true, rotationY:true, rotationZ:true}; protected static var activeTweens:Dictionary = new Dictionary(false); protected static var _timeInterval:uint = 40; protected static var _timingMode:String; public static var snappingProperties:Object = {x:true, y:true}; public function GTween(_arg1:Object=null, _arg2:Number=10, _arg3:Object=null, _arg4:Object=null){ ease = ((defaultEase) || (linearEase)); if (isNaN(_arg2)){ _arg2 = 10; }; if (_timingMode == null){ timingMode = HYBRID; }; ticker = GTween.ticker; progressPoints = []; children = new Dictionary(true); this.target = _arg1; _duration = _arg2; setTweenProperties(_arg4); setProperties(_arg3); } public function set delay(_arg1:Number):void{ if (isNaN(_arg1)){ return; }; if ((((_state == BEGINNING)) || ((_position == -(_delay))))){ positionOffset = (ticker.position - (_position = -(_arg1))); lastProgressPosition = -(_delay); }; _delay = _arg1; } protected function init():void{ lastProgressPosition = -(_delay); _state = TWEEN_PHASE; copyInitProperties(); dispatchEvent(new Event(Event.INIT)); } public function set target(_arg1:Object):void{ _target = ((_arg1)===null) ? {} : _arg1; hasSetSize = ("setSize" in _target); hasAlphaAndVisible = ((("alpha" in _target)) && (("visible" in _target))); reset(); } public function set duration(_arg1:Number):void{ var _local2:Object; if (isNaN(_arg1)){ return; }; _duration = _arg1; for (_local2 in children) { if (children[_local2]){ (_local2 as GTween).duration = _duration; }; }; } public function get position():Number{ return (_position); } public function get paused():Boolean{ return (_paused); } public function set autoHide(_arg1:Boolean):void{ _autoHide = _arg1; } public function play():void{ paused = false; } public function setProperties(_arg1:Object):void{ var _local2:String; if (!_arg1){ return; }; for (_local2 in _arg1) { setProperty(_local2, _arg1[_local2]); }; } public function invalidate():void{ invalid = true; if (_position > 0){ positionOffset = (ticker.position - (_position = 0)); }; if (autoPlay){ paused = false; } else { if (_state == END){ _state = BEGINNING; }; }; } public function setTweenProperties(_arg1:Object):void{ var _local2:String; if (!_arg1){ return; }; if (("duration" in _arg1)){ duration = _arg1.duration; delete _arg1.duration; }; if (("activateListener" in _arg1)){ addEventListener(Event.ACTIVATE, _arg1.activateListener, false, 0, true); delete _arg1.activateListener; }; if (("initListener" in _arg1)){ addEventListener(Event.INIT, _arg1.initListener, false, 0, true); delete _arg1.initListener; }; if (("completeListener" in _arg1)){ addEventListener(Event.COMPLETE, _arg1.completeListener, false, 0, true); delete _arg1.completeListener; }; if (("progressListener" in _arg1)){ addEventListener(PROGRESS, _arg1.progressListener, false, 0, true); delete _arg1.progressListener; }; if (("changeListener" in _arg1)){ addEventListener(Event.CHANGE, _arg1.changeListener, false, 0, true); delete _arg1.changeListener; }; for (_local2 in _arg1) { this[_local2] = _arg1[_local2]; }; } public function addProgressPoint(_arg1:Number, _arg2=null):void{ progressPoints.push(new ProgressPoint(_arg1, _arg2)); progressPoints.sortOn("position", Array.NUMERIC); } public function removeProgressPoint(_arg1:Number, _arg2=null):void{ var _local3:int = (progressPoints.length - 1); while (_local3 >= 0) { if ((((progressPoints[_local3].position == _arg1)) && ((progressPoints[_local3].data == _arg2)))){ progressPoints.splice(_local3, 1); }; _local3--; }; } public function getProperty(_arg1:String):Number{ return (destProperties[_arg1]); } public function reset():void{ _position = -(_delay); _state = BEGINNING; paused = true; initProperties = (_lastProgressPoint = null); destProperties = {}; } protected function copyInitProperties():void{ var _local1:String; var _local2:Number; var _local3:Number; if (!invalid){ return; }; if (((assignmentTarget) && (assignmentProperty))){ _target = assignmentTarget[assignmentProperty]; }; initProperties = {}; for (_local1 in destProperties) { if (((useSmartRotation) && (rotationProperties[_local1]))){ _local2 = (destProperties[_local1] % 360); _local3 = (_target[_local1] % 360); initProperties[_local1] = (_local3 + ((Math.abs((_local3 - _local2)))<180) ? 0 : ((_local3)>_local2) ? -360 : 360); } else { initProperties[_local1] = _target[_local1]; }; }; invalid = false; } public function set position(_arg1:Number):void{ if (isNaN(_arg1)){ return; }; _arg1 = ((_arg1)>_duration) ? _duration : ((_arg1)<-(_delay)) ? -(_delay) : _arg1; if (_position == _arg1){ return; }; lastProgressPosition = _arg1; setPosition(_arg1); } public function setProperty(_arg1:String, _arg2:Number):void{ if (isNaN(_arg2)){ return; }; if (_state == END){ reset(); }; destProperties[_arg1] = _arg2; invalidate(); } protected function nullListener(_arg1:Event):void{ } public function set paused(_arg1:Boolean):void{ if (_paused == _arg1){ return; }; _paused = _arg1; if (_arg1){ ticker.removeEventListener("tick", handleTick); if ((_target is IEventDispatcher)){ _target.removeEventListener("GDS__NONEXISTENT_EVENT", nullListener); }; delete activeTweens[this]; } else { if ((((_state == BEGINNING)) || ((_state == END)))){ _position = -(_delay); activate(); }; positionOffset = (ticker.position - _position); ticker.addEventListener("tick", handleTick); if ((_target is IEventDispatcher)){ _target.addEventListener("GDS__NONEXISTENT_EVENT", nullListener, false, 0, false); } else { activeTweens[this] = true; }; }; } public function clone(_arg1:Object=null, _arg2:Boolean=false, _arg3:Boolean=false):GTween{ var _local5:Object; if (_arg1 == null){ _arg1 = this.target; }; var _local4:GTween = new GTween(_arg1, duration, destProperties, {assignmentProperty:assignmentProperty, assignmentTarget:assignmentTarget, autoHide:autoHide, autoPlay:autoPlay, autoReverse:autoReverse, delay:delay, nextTween:nextTween, ease:ease, useSmartRotation:useSmartRotation}); for (_local5 in progressPoints) { _local4.addProgressPoint(_local5.position, _local5.data); }; if (_arg2){ for (_local5 in children) { _local4.addChild((_local5 as GTween), children[_local5]); }; }; if (_arg3){ _local4.position = position; _local4.paused = paused; }; return (_local4); } override public function dispatchEvent(_arg1:Event):Boolean{ if (hasEventListener(_arg1.type)){ return (super.dispatchEvent(_arg1)); }; return (true); } public function removeAllProgressPoints():void{ progressPoints = []; } public function get lastProgressPoint(){ return ((_lastProgressPoint) ? _lastProgressPoint.data : null); } public function get proxy():Object{ if (_proxy == null){ _proxy = new TargetProxy(this); }; return (_proxy); } public function get delay():Number{ return (_delay); } protected function endTransition():void{ _state = END; paused = true; dispatchEvent(new Event(Event.COMPLETE)); if (autoReverse){ reverse(); }; if (nextTween){ nextTween.play(); }; } public function get target():Object{ return (_target); } public function get duration():Number{ return (_duration); } public function get autoHide():Boolean{ return (_autoHide); } public function deleteProperty(_arg1:String):Boolean{ return (delete destProperties[_arg1]); } protected function checkProgressPoints():void{ var _local2:ProgressPoint; if (progressPoints.length < 1){ return; }; if (lastProgressPosition > position){ trace("A PROGRESS POINT PROBLEM OCCURRED, PLEASE REPORT THIS BACK TO GSKINNER.COM"); lastProgressPosition = position; return; }; var _local1:uint; while (_local1 < progressPoints.length) { _local2 = (progressPoints[_local1] as ProgressPoint); if (_local2.position <= lastProgressPosition){ } else { if (_local2.position > position){ break; }; _lastProgressPoint = _local2; dispatchEvent(new Event(PROGRESS)); }; _local1++; }; lastProgressPosition = position; } public function get state():String{ return (_state); } protected function setPosition(_arg1:Number):void{ if (_arg1 > _duration){ _arg1 = _duration; }; positionOffset = (ticker.position - (_position = _arg1)); update(); } protected function update():void{ var _local2:Object; if ((((_state == BEGINNING)) || ((_state == END)))){ activate(); }; if (_position < 0){ return; }; if (_state == DELAY_PHASE){ init(); } else { if ((((_state == TWEEN_PHASE)) && (invalid))){ copyInitProperties(); }; }; var _local1:Number = ((_position >= _duration)) ? 1 : ease((_position / _duration), 0, 1, 1); updateProperties(_local1); if (((((hasAlphaAndVisible) && (_autoHide))) && (!((destProperties["visible"] == null))))){ _target.visible = (_target.alpha > 0); }; for (_local2 in children) { (_local2 as GTween).position = _position; }; dispatchEvent(new Event(Event.CHANGE)); checkProgressPoints(); if (_position >= _duration){ endTransition(); }; } public function setAssignment(_arg1:Object=null, _arg2:String=null):void{ this.assignmentTarget = _arg1; this.assignmentProperty = _arg2; } public function end(_arg1:Boolean=true):void{ position = _duration; if (((_arg1) && (nextTween))){ nextTween.end(); }; } public function beginning():void{ var _local1:Object; updateProperties(0); positionOffset = (ticker.position - (_position = -(_delay))); lastProgressPosition = -(_delay); for (_local1 in children) { (_local1 as GTween).beginning(); }; _state = BEGINNING; paused = true; } public function reverse(_arg1:Boolean=true):void{ var _local3:Object; var _local2:Object = destProperties; destProperties = initProperties; initProperties = _local2; invalid = false; if (_state == TWEEN_PHASE){ positionOffset = (ticker.position - (_position = (_duration - _position))); }; if (_arg1){ for (_local3 in children) { (_local3 as GTween).reverse(); }; }; if (autoPlay){ play(); }; } protected function handleTick(_arg1:Event):void{ if (GTween.pauseAll){ positionOffset = (ticker.position - _position); return; }; var _local2:Number = (ticker.position - positionOffset); setPosition(((_local2 < _duration)) ? _local2 : _duration); } protected function activate():void{ _state = ((_position)<0) ? DELAY_PHASE : TWEEN_PHASE; dispatchEvent(new Event(Event.ACTIVATE)); if (_position >= 0){ init(); }; } protected function updateProperties(_arg1:Number):void{ var _local3:String; var _local4:Number; var _local5:Number; var _local6:Number; var _local2:Boolean; for (_local3 in destProperties) { if (((((useSetSize) && (hasSetSize))) && ((((_local3 == "width")) || ((_local3 == "height")))))){ if (_local2){ continue; }; _local2 = true; _local4 = ((destProperties["width"])==null) ? _target.width : (initProperties["width"] + ((destProperties["width"] - initProperties["width"]) * _arg1)); _local5 = ((destProperties["height"])==null) ? _target.height : (initProperties["height"] + ((destProperties["height"] - initProperties["height"]) * _arg1)); if (((useSnapping) && (snappingProperties["width"]))){ _local4 = Math.round(_local4); }; if (((useSnapping) && (snappingProperties["height"]))){ _local5 = Math.round(_local5); }; var _local9 = _target; _local9["setSize"](_local4, _local5); } else { _local6 = (initProperties[_local3] + ((destProperties[_local3] - initProperties[_local3]) * _arg1)); _target[_local3] = (((useSnapping) && (snappingProperties[_local3]))) ? Math.round(_local6) : _local6; }; }; if (((assignmentTarget) && (assignmentProperty))){ assignmentTarget[assignmentProperty] = _target; }; } public function pause():void{ paused = true; } public function removeChild(_arg1:GTween):void{ delete children[_arg1]; } public function addChild(_arg1:GTween, _arg2:Boolean=true):void{ if (!_arg1){ return; }; children[_arg1] = _arg2; _arg1.paused = true; if (_arg2){ _arg1.duration = _duration; }; } public static function set timingMode(_arg1:String):void{ _arg1 = ((((_arg1 == FRAME)) || ((_arg1 == TIME)))) ? _arg1 : HYBRID; if (_arg1 == _timingMode){ return; }; _timingMode = _arg1; if (_timingMode == TIME){ ticker = new TimeTicker(); (ticker as TimeTicker).interval = (_timeInterval / 1000); } else { if (_timingMode == FRAME){ ticker = new FrameTicker(); } else { ticker = new HybridTicker(); }; }; } public static function get timingMode():String{ return (_timingMode); } public static function set timeInterval(_arg1:uint):void{ _timeInterval = _arg1; if ((ticker is TimeTicker)){ (ticker as TimeTicker).interval = (_timeInterval / 1000); }; } public static function linearEase(_arg1:Number, ... _args):Number{ return (_arg1); } public static function get timeInterval():uint{ return (_timeInterval); } } }//package com.gskinner.motion import flash.display.*; import flash.events.*; import flash.utils.*; class HybridTicker extends EventDispatcher implements ITicker { protected var shape:Shape; private function HybridTicker():void{ shape = new Shape(); shape.addEventListener(Event.ENTER_FRAME, tick); } public function get interval():Number{ return (1); } public function get position():Number{ return ((getTimer() / 1000)); } protected function tick(_arg1:Event):void{ dispatchEvent(new Event("tick")); } } class TimeTicker extends EventDispatcher implements ITicker { protected var timer:Timer; private function TimeTicker():void{ timer = new Timer(20); timer.start(); timer.addEventListener(TimerEvent.TIMER, tick); } public function get position():Number{ return ((getTimer() / 1000)); } public function set interval(_arg1:Number):void{ timer.delay = (_arg1 * 1000); } public function get interval():Number{ return ((timer.delay / 1000)); } protected function tick(_arg1:TimerEvent):void{ dispatchEvent(new Event("tick")); _arg1.updateAfterEvent(); } } interface ITicker extends IEventDispatcher { "GTween.as$129:ITicker"?? function get position():Number; "GTween.as$129:ITicker"?? function get interval():Number; } class FrameTicker extends EventDispatcher implements ITicker { protected var shape:Shape; protected var _position:Number;// = 0 private function FrameTicker():void{ shape = new Shape(); shape.addEventListener(Event.ENTER_FRAME, tick); } public function get interval():Number{ return (1); } public function get position():Number{ return (_position); } protected function tick(_arg1:Event):void{ _position++; dispatchEvent(new Event("tick")); } } dynamic class TargetProxy extends Proxy { private var gTween:GTween; private function TargetProxy(_arg1:GTween):void{ this.gTween = _arg1; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{ return (gTween.deleteProperty(_arg1)); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function callProperty(_arg1, ... _args){ return (gTween.target[_arg1].apply(null, _args)); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ if (isNaN(_arg2)){ gTween.target[_arg1] = _arg2; } else { gTween.setProperty(String(_arg1), Number(_arg2)); }; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ var _local2:Number = gTween.getProperty(_arg1); return ((isNaN(_local2)) ? gTween.target[_arg1] : _local2); } } class ProgressPoint { public var position:Number; public var data; private function ProgressPoint(_arg1:Number, _arg2):void{ this.position = _arg1; this.data = _arg2; } }
Section 2
//BaseButton (fl.controls.BaseButton) package fl.controls { import flash.display.*; import fl.core.*; import flash.events.*; import flash.utils.*; import fl.events.*; public class BaseButton extends UIComponent { protected var _selected:Boolean;// = false private var unlockedMouseState:String; protected var pressTimer:Timer; protected var mouseState:String; protected var background:DisplayObject; private var _mouseStateLocked:Boolean;// = false protected var _autoRepeat:Boolean;// = false private static var defaultStyles:Object = {upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35}; public function BaseButton(){ _selected = false; _autoRepeat = false; _mouseStateLocked = false; super(); buttonMode = true; mouseChildren = false; useHandCursor = false; setupMouseEvents(); setMouseState("up"); pressTimer = new Timer(1, 0); pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true); } protected function endPress():void{ pressTimer.reset(); } public function set mouseStateLocked(_arg1:Boolean):void{ _mouseStateLocked = _arg1; if (_arg1 == false){ setMouseState(unlockedMouseState); } else { unlockedMouseState = mouseState; }; } public function get autoRepeat():Boolean{ return (_autoRepeat); } public function set autoRepeat(_arg1:Boolean):void{ _autoRepeat = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; mouseEnabled = _arg1; } public function get selected():Boolean{ return (_selected); } protected function mouseEventHandler(_arg1:MouseEvent):void{ if (_arg1.type == MouseEvent.MOUSE_DOWN){ setMouseState("down"); startPress(); } else { if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == MouseEvent.MOUSE_UP)))){ setMouseState("over"); endPress(); } else { if (_arg1.type == MouseEvent.ROLL_OUT){ setMouseState("up"); endPress(); }; }; }; } public function setMouseState(_arg1:String):void{ if (_mouseStateLocked){ unlockedMouseState = _arg1; return; }; if (mouseState == _arg1){ return; }; mouseState = _arg1; invalidate(InvalidationType.STATE); } protected function startPress():void{ if (_autoRepeat){ pressTimer.delay = Number(getStyleValue("repeatDelay")); pressTimer.start(); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } protected function buttonDown(_arg1:TimerEvent):void{ if (!_autoRepeat){ endPress(); return; }; if (pressTimer.currentCount == 1){ pressTimer.delay = Number(getStyleValue("repeatInterval")); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } public function set selected(_arg1:Boolean):void{ if (_selected == _arg1){ return; }; _selected = _arg1; invalidate(InvalidationType.STATE); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } protected function setupMouseEvents():void{ addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, true); } protected function drawLayout():void{ background.width = width; background.height = height; } protected function drawBackground():void{ var _local1:String; var _local2:DisplayObject; _local1 = (enabled) ? mouseState : "disabled"; if (selected){ _local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1)); }; _local1 = (_local1 + "Skin"); _local2 = background; background = getDisplayObjectInstance(getStyleValue(_local1)); addChildAt(background, 0); if (((!((_local2 == null))) && (!((_local2 == background))))){ removeChild(_local2); }; } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 3
//Button (fl.controls.Button) package fl.controls { import flash.display.*; import fl.core.*; import fl.managers.*; public class Button extends LabelButton implements IFocusManagerComponent { protected var emphasizedBorder:DisplayObject; protected var _emphasized:Boolean;// = false private static var defaultStyles:Object = {emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2}; public static var createAccessibilityImplementation:Function; public function Button(){ _emphasized = false; super(); } override public function drawFocus(_arg1:Boolean):void{ var _local2:Number; var _local3:*; super.drawFocus(_arg1); if (_arg1){ _local2 = Number(getStyleValue("emphasizedPadding")); if ((((_local2 < 0)) || (!(_emphasized)))){ _local2 = 0; }; _local3 = getStyleValue("focusRectPadding"); _local3 = ((_local3)==null) ? 2 : _local3; _local3 = (_local3 + _local2); uiFocusRect.x = -(_local3); uiFocusRect.y = -(_local3); uiFocusRect.width = (width + (_local3 * 2)); uiFocusRect.height = (height + (_local3 * 2)); }; } public function set emphasized(_arg1:Boolean):void{ _emphasized = _arg1; invalidate(InvalidationType.STYLES); } override protected function draw():void{ if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(InvalidationType.SIZE)))){ drawEmphasized(); }; super.draw(); if (emphasizedBorder != null){ setChildIndex(emphasizedBorder, (numChildren - 1)); }; } public function get emphasized():Boolean{ return (_emphasized); } override protected function initializeAccessibility():void{ if (Button.createAccessibilityImplementation != null){ Button.createAccessibilityImplementation(this); }; } protected function drawEmphasized():void{ var _local1:Object; var _local2:Number; if (emphasizedBorder != null){ removeChild(emphasizedBorder); }; emphasizedBorder = null; if (!_emphasized){ return; }; _local1 = getStyleValue("emphasizedSkin"); if (_local1 != null){ emphasizedBorder = getDisplayObjectInstance(_local1); }; if (emphasizedBorder != null){ addChildAt(emphasizedBorder, 0); _local2 = Number(getStyleValue("emphasizedPadding")); emphasizedBorder.x = (emphasizedBorder.y = -(_local2)); emphasizedBorder.width = (width + (_local2 * 2)); emphasizedBorder.height = (height + (_local2 * 2)); }; } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), defaultStyles)); } } }//package fl.controls
Section 4
//ButtonLabelPlacement (fl.controls.ButtonLabelPlacement) package fl.controls { public class ButtonLabelPlacement { public static const TOP:String = "top"; public static const LEFT:String = "left"; public static const BOTTOM:String = "bottom"; public static const RIGHT:String = "right"; } }//package fl.controls
Section 5
//LabelButton (fl.controls.LabelButton) package fl.controls { import flash.display.*; import fl.core.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class LabelButton extends BaseButton implements IFocusManagerComponent { protected var _labelPlacement:String;// = "right" protected var _toggle:Boolean;// = false protected var icon:DisplayObject; protected var oldMouseState:String; protected var mode:String;// = "center" public var textField:TextField; protected var _label:String;// = "Label" private static var defaultStyles:Object = {icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false}; public static var createAccessibilityImplementation:Function; public function LabelButton(){ _labelPlacement = ButtonLabelPlacement.RIGHT; _toggle = false; _label = "Label"; mode = "center"; super(); } protected function toggleSelected(_arg1:MouseEvent):void{ selected = !(selected); dispatchEvent(new Event(Event.CHANGE, true)); } public function get labelPlacement():String{ return (_labelPlacement); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ if (oldMouseState == null){ oldMouseState = mouseState; }; setMouseState("down"); startPress(); }; } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ setMouseState(oldMouseState); oldMouseState = null; endPress(); dispatchEvent(new MouseEvent(MouseEvent.CLICK)); }; } override public function get selected():Boolean{ return ((_toggle) ? _selected : false); } public function set labelPlacement(_arg1:String):void{ _labelPlacement = _arg1; invalidate(InvalidationType.SIZE); } public function set toggle(_arg1:Boolean):void{ if (((!(_arg1)) && (super.selected))){ selected = false; }; _toggle = _arg1; if (_toggle){ addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, true); } else { removeEventListener(MouseEvent.CLICK, toggleSelected); }; invalidate(InvalidationType.STATE); } public function get label():String{ return (_label); } override public function set selected(_arg1:Boolean):void{ _selected = _arg1; if (_toggle){ invalidate(InvalidationType.STATE); }; } override protected function draw():void{ if (textField.text != _label){ label = _label; }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); drawIcon(); drawTextFormat(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } public function get toggle():Boolean{ return (_toggle); } override protected function configUI():void{ super.configUI(); textField = new TextField(); textField.type = TextFieldType.DYNAMIC; textField.selectable = false; addChild(textField); } override protected function drawLayout():void{ var _local1:Number; var _local2:String; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local1 = Number(getStyleValue("textPadding")); _local2 = ((((icon == null)) && ((mode == "center")))) ? ButtonLabelPlacement.TOP : _labelPlacement; textField.height = (textField.textHeight + 4); _local3 = (textField.textWidth + 4); _local4 = (textField.textHeight + 4); _local5 = ((icon)==null) ? 0 : (icon.width + _local1); _local6 = ((icon)==null) ? 0 : (icon.height + _local1); textField.visible = (label.length > 0); if (icon != null){ icon.x = Math.round(((width - icon.width) / 2)); icon.y = Math.round(((height - icon.height) / 2)); }; if (textField.visible == false){ textField.width = 0; textField.height = 0; } else { if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){ _local7 = Math.max(0, Math.min(_local3, (width - (2 * _local1)))); if ((height - 2) > _local4){ _local8 = _local4; } else { _local8 = (height - 2); }; _local3 = _local7; textField.width = _local3; _local4 = _local8; textField.height = _local4; textField.x = Math.round(((width - _local3) / 2)); textField.y = Math.round(((((height - textField.height) - _local6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0)); if (icon != null){ icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOTTOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1)); }; } else { _local7 = Math.max(0, Math.min(_local3, ((width - _local5) - (2 * _local1)))); _local3 = _local7; textField.width = _local3; textField.x = Math.round(((((width - _local3) - _local5) / 2) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0)); textField.y = Math.round(((height - textField.height) / 2)); if (icon != null){ icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEFT) ? (textField.x - _local5) : ((textField.x + _local3) + _local1)); }; }; }; super.drawLayout(); } override protected function initializeAccessibility():void{ if (LabelButton.createAccessibilityImplementation != null){ LabelButton.createAccessibilityImplementation(this); }; } protected function drawIcon():void{ var _local1:DisplayObject; var _local2:String; var _local3:Object; _local1 = icon; _local2 = (enabled) ? mouseState : "disabled"; if (selected){ _local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _local2.substr(1)); }; _local2 = (_local2 + "Icon"); _local3 = getStyleValue(_local2); if (_local3 == null){ _local3 = getStyleValue("icon"); }; if (_local3 != null){ icon = getDisplayObjectInstance(_local3); }; if (icon != null){ addChildAt(icon, 1); }; if (((!((_local1 == null))) && (!((_local1 == icon))))){ removeChild(_local1); }; } public function set label(_arg1:String):void{ _label = _arg1; if (textField.text != _label){ textField.text = _label; dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE)); }; invalidate(InvalidationType.SIZE); invalidate(InvalidationType.STYLES); } protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local2); _local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition())); } } }//package fl.controls
Section 6
//ComponentShim (fl.core.ComponentShim) package fl.core { import flash.display.*; public dynamic class ComponentShim extends MovieClip { } }//package fl.core
Section 7
//InvalidationType (fl.core.InvalidationType) package fl.core { public class InvalidationType { public static const SIZE:String = "size"; public static const ALL:String = "all"; public static const DATA:String = "data"; public static const SCROLL:String = "scroll"; public static const STATE:String = "state"; public static const STYLES:String = "styles"; public static const SELECTED:String = "selected"; public static const RENDERER_STYLES:String = "rendererStyles"; } }//package fl.core
Section 8
//UIComponent (fl.core.UIComponent) package fl.core { import flash.display.*; import flash.events.*; import fl.managers.*; import flash.utils.*; import fl.events.*; import flash.text.*; import flash.system.*; public class UIComponent extends Sprite { protected var _enabled:Boolean;// = true private var _mouseFocusEnabled:Boolean;// = true protected var startHeight:Number; protected var _height:Number; protected var _oldIMEMode:String;// = null protected var startWidth:Number; public var focusTarget:IFocusManagerComponent; protected var errorCaught:Boolean;// = false protected var uiFocusRect:DisplayObject; protected var _width:Number; public var version:String;// = "3.0.0.15" protected var isFocused:Boolean;// = false protected var callLaterMethods:Dictionary; private var _focusEnabled:Boolean;// = true private var tempText:TextField; protected var invalidateFlag:Boolean;// = false protected var _inspector:Boolean;// = false protected var sharedStyles:Object; protected var invalidHash:Object; protected var isLivePreview:Boolean;// = false protected var _imeMode:String;// = null protected var instanceStyles:Object; protected var _x:Number; protected var _y:Number; public static var inCallLaterPhase:Boolean = false; private static var defaultStyles:Object = {focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0)}; public static var createAccessibilityImplementation:Function; private static var focusManagers:Dictionary = new Dictionary(false); public function UIComponent(){ version = "3.0.0.15"; isLivePreview = false; invalidateFlag = false; _enabled = true; isFocused = false; _focusEnabled = true; _mouseFocusEnabled = true; _imeMode = null; _oldIMEMode = null; errorCaught = false; _inspector = false; super(); instanceStyles = {}; sharedStyles = {}; invalidHash = {}; callLaterMethods = new Dictionary(); StyleManager.registerInstance(this); configUI(); invalidate(InvalidationType.ALL); tabEnabled = (this is IFocusManagerComponent); focusRect = false; if (tabEnabled){ addEventListener(FocusEvent.FOCUS_IN, focusInHandler); addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler); addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); }; initializeFocusManager(); addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, true); } public function drawFocus(_arg1:Boolean):void{ var _local2:Number; isFocused = _arg1; if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){ removeChild(uiFocusRect); uiFocusRect = null; }; if (_arg1){ uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRectSkin")) as Sprite); if (uiFocusRect == null){ return; }; _local2 = Number(getStyleValue("focusRectPadding")); uiFocusRect.x = -(_local2); uiFocusRect.y = -(_local2); uiFocusRect.width = (width + (_local2 * 2)); uiFocusRect.height = (height + (_local2 * 2)); addChildAt(uiFocusRect, 0); }; } private function callLaterDispatcher(_arg1:Event):void{ var _local2:Dictionary; var _local3:Object; if (_arg1.type == Event.ADDED_TO_STAGE){ removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher); stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); return; }; _arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher); if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); return; }; inCallLaterPhase = true; _local2 = callLaterMethods; for (_local3 in _local2) { _local3(); delete _local2[_local3]; }; inCallLaterPhase = false; } private function addedHandler(_arg1:Event):void{ removeEventListener("addedToStage", addedHandler); initializeFocusManager(); } protected function getStyleValue(_arg1:String):Object{ return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : instanceStyles[_arg1]); } protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((_arg1 == this)); } override public function get scaleX():Number{ return ((width / startWidth)); } override public function get scaleY():Number{ return ((height / startHeight)); } override public function set height(_arg1:Number):void{ if (_height == _arg1){ return; }; setSize(width, _arg1); } protected function keyDownHandler(_arg1:KeyboardEvent):void{ } protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; if (isOurFocus((_arg1.target as DisplayObject))){ _local2 = focusManager; if (((_local2) && (_local2.showFocusIndicator))){ drawFocus(true); isFocused = true; }; }; } public function setStyle(_arg1:String, _arg2:Object):void{ if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; instanceStyles[_arg1] = _arg2; invalidate(InvalidationType.STYLES); } override public function get visible():Boolean{ return (super.visible); } public function get componentInspectorSetting():Boolean{ return (_inspector); } override public function get x():Number{ return ((isNaN(_x)) ? super.x : _x); } override public function get y():Number{ return ((isNaN(_y)) ? super.y : _y); } protected function setIMEMode(_arg1:Boolean){ var enabled = _arg1; if (_imeMode != null){ if (enabled){ IME.enabled = true; _oldIMEMode = IME.conversionMode; try { if (((!(errorCaught)) && (!((IME.conversionMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _imeMode; }; errorCaught = false; } catch(e:Error) { errorCaught = true; throw (new Error(("IME mode not supported: " + _imeMode))); }; } else { if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _oldIMEMode; }; IME.enabled = false; }; }; } public function set enabled(_arg1:Boolean):void{ if (_arg1 == _enabled){ return; }; _enabled = _arg1; invalidate(InvalidationType.STATE); } public function setSharedStyle(_arg1:String, _arg2:Object):void{ if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; sharedStyles[_arg1] = _arg2; if (instanceStyles[_arg1] == null){ invalidate(InvalidationType.STYLES); }; } protected function keyUpHandler(_arg1:KeyboardEvent):void{ } public function set focusEnabled(_arg1:Boolean):void{ _focusEnabled = _arg1; } override public function set scaleX(_arg1:Number):void{ setSize((startWidth * _arg1), height); } public function get mouseFocusEnabled():Boolean{ return (_mouseFocusEnabled); } override public function set scaleY(_arg1:Number):void{ setSize(width, (startHeight * _arg1)); } protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{ var classDef:Object; var skin = _arg1; classDef = null; if ((skin is Class)){ return ((new (skin) as DisplayObject)); }; if ((skin is DisplayObject)){ (skin as DisplayObject).x = 0; (skin as DisplayObject).y = 0; return ((skin as DisplayObject)); }; try { classDef = getDefinitionByName(skin.toString()); } catch(e:Error) { try { classDef = (loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object); } catch(e:Error) { }; }; if (classDef == null){ return (null); }; return ((new (classDef) as DisplayObject)); } protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):void{ var _local3:String; for (_local3 in _arg2) { _arg1.setStyle(_local3, getStyleValue(_arg2[_local3])); }; } protected function beforeComponentParameters():void{ } protected function callLater(_arg1:Function):void{ if (inCallLaterPhase){ return; }; callLaterMethods[_arg1] = true; if (stage != null){ stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); } else { addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); }; } protected function createFocusManager():void{ if (focusManagers[stage] == null){ focusManagers[stage] = new FocusManager(stage); }; } override public function set visible(_arg1:Boolean):void{ var _local2:String; if (super.visible == _arg1){ return; }; super.visible = _arg1; _local2 = (_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE; dispatchEvent(new ComponentEvent(_local2, true)); } protected function hookAccessibility(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, hookAccessibility); initializeAccessibility(); } public function set componentInspectorSetting(_arg1:Boolean):void{ _inspector = _arg1; if (_inspector){ beforeComponentParameters(); } else { afterComponentParameters(); }; } override public function set x(_arg1:Number):void{ move(_arg1, _y); } public function drawNow():void{ draw(); } override public function set y(_arg1:Number):void{ move(_x, _arg1); } protected function checkLivePreview():Boolean{ var className:String; if (parent == null){ return (false); }; try { className = getQualifiedClassName(parent); } catch(e:Error) { }; return ((className == "fl.livepreview::LivePreviewParent")); } protected function focusOutHandler(_arg1:FocusEvent):void{ if (isOurFocus((_arg1.target as DisplayObject))){ drawFocus(false); isFocused = false; }; } public function set mouseFocusEnabled(_arg1:Boolean):void{ _mouseFocusEnabled = _arg1; } public function getFocus():InteractiveObject{ if (stage){ return (stage.focus); }; return (null); } protected function validate():void{ invalidHash = {}; } override public function get height():Number{ return (_height); } public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{ invalidHash[_arg1] = true; if (_arg2){ this.callLater(draw); }; } public function get enabled():Boolean{ return (_enabled); } protected function getScaleX():Number{ return (super.scaleX); } protected function getScaleY():Number{ return (super.scaleY); } public function get focusEnabled():Boolean{ return (_focusEnabled); } protected function afterComponentParameters():void{ } protected function draw():void{ if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } protected function configUI():void{ var _local1:Number; var _local2:Number; var _local3:Number; isLivePreview = checkLivePreview(); _local1 = rotation; rotation = 0; _local2 = super.width; _local3 = super.height; var _local4 = 1; super.scaleY = _local4; super.scaleX = _local4; setSize(_local2, _local3); move(super.x, super.y); rotation = _local1; startWidth = _local2; startHeight = _local3; if (numChildren > 0){ removeChildAt(0); }; } protected function setScaleX(_arg1:Number):void{ super.scaleX = _arg1; } protected function setScaleY(_arg1:Number):void{ super.scaleY = _arg1; } private function initializeFocusManager():void{ if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, true); } else { createFocusManager(); }; } public function set focusManager(_arg1:IFocusManager):void{ UIComponent.focusManagers[this] = _arg1; } public function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } protected function isInvalid(_arg1:String, ... _args):Boolean{ if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){ return (true); }; while (_args.length > 0) { if (invalidHash[_args.pop()]){ return (true); }; }; return (false); } public function setSize(_arg1:Number, _arg2:Number):void{ _width = _arg1; _height = _arg2; invalidate(InvalidationType.SIZE); dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false)); } override public function set width(_arg1:Number):void{ if (_width == _arg1){ return; }; setSize(_arg1, height); } public function setFocus():void{ if (stage){ stage.focus = this; }; } protected function initializeAccessibility():void{ if (UIComponent.createAccessibilityImplementation != null){ UIComponent.createAccessibilityImplementation(this); }; } public function get focusManager():IFocusManager{ var _local1:DisplayObject; _local1 = this; while (_local1) { if (UIComponent.focusManagers[_local1] != null){ return (IFocusManager(UIComponent.focusManagers[_local1])); }; _local1 = _local1.parent; }; return (null); } override public function get width():Number{ return (_width); } public function move(_arg1:Number, _arg2:Number):void{ _x = _arg1; _y = _arg2; super.x = Math.round(_arg1); super.y = Math.round(_arg2); dispatchEvent(new ComponentEvent(ComponentEvent.MOVE)); } public function validateNow():void{ invalidate(InvalidationType.ALL, false); draw(); } public function getStyle(_arg1:String):Object{ return (instanceStyles[_arg1]); } public static function getStyleDefinition():Object{ return (defaultStyles); } public static function mergeStyles(... _args):Object{ var _local2:Object; var _local3:uint; var _local4:uint; var _local5:Object; var _local6:String; _local2 = {}; _local3 = _args.length; _local4 = 0; while (_local4 < _local3) { _local5 = _args[_local4]; for (_local6 in _local5) { if (_local2[_local6] != null){ } else { _local2[_local6] = _args[_local4][_local6]; }; }; _local4++; }; return (_local2); } } }//package fl.core
Section 9
//ComponentEvent (fl.events.ComponentEvent) package fl.events { import flash.events.*; public class ComponentEvent extends Event { public static const HIDE:String = "hide"; public static const BUTTON_DOWN:String = "buttonDown"; public static const MOVE:String = "move"; public static const RESIZE:String = "resize"; public static const ENTER:String = "enter"; public static const LABEL_CHANGE:String = "labelChange"; public static const SHOW:String = "show"; public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function toString():String{ return (formatToString("ComponentEvent", "type", "bubbles", "cancelable")); } override public function clone():Event{ return (new ComponentEvent(type, bubbles, cancelable)); } } }//package fl.events
Section 10
//FocusManager (fl.managers.FocusManager) package fl.managers { import fl.controls.*; import flash.display.*; import fl.core.*; import flash.events.*; import flash.utils.*; import flash.text.*; import flash.ui.*; public class FocusManager implements IFocusManager { private var focusableObjects:Dictionary; private var _showFocusIndicator:Boolean;// = true private var defButton:Button; private var focusableCandidates:Array; private var _form:DisplayObjectContainer; private var _defaultButtonEnabled:Boolean;// = true private var activated:Boolean;// = false private var _defaultButton:Button; private var calculateCandidates:Boolean;// = true private var lastFocus:InteractiveObject; private var lastAction:String; public function FocusManager(_arg1:DisplayObjectContainer){ activated = false; calculateCandidates = true; _showFocusIndicator = true; _defaultButtonEnabled = true; super(); focusableObjects = new Dictionary(true); if (_arg1 != null){ _form = _arg1; addFocusables(DisplayObject(_arg1)); _arg1.addEventListener(Event.ADDED, addedHandler); _arg1.addEventListener(Event.REMOVED, removedHandler); activate(); }; } public function get showFocusIndicator():Boolean{ return (_showFocusIndicator); } private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{ var _local5:int; var _local6:int; var _local7:DisplayObject; var _local8:IFocusManagerGroup; var _local9:int; var _local10:DisplayObject; var _local11:IFocusManagerGroup; _local5 = focusableCandidates.length; _local6 = _arg1; while (true) { if (_arg2){ _arg1--; } else { _arg1++; }; if (_arg3){ if (((_arg2) && ((_arg1 < 0)))){ break; }; if (((!(_arg2)) && ((_arg1 == _local5)))){ break; }; } else { _arg1 = ((_arg1 + _local5) % _local5); if (_local6 == _arg1){ break; }; }; if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){ _local7 = DisplayObject(findFocusManagerComponent(focusableCandidates[_arg1])); if ((_local7 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local7); _local9 = 0; while (_local9 < focusableCandidates.length) { _local10 = focusableCandidates[_local9]; if ((_local10 is IFocusManagerGroup)){ _local11 = IFocusManagerGroup(_local10); if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){ _arg1 = _local9; break; }; }; _local9++; }; }; return (_arg1); }; }; return (_arg1); } public function set form(_arg1:DisplayObjectContainer):void{ _form = _arg1; } private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{ var focusable:IFocusManagerComponent; var io:InteractiveObject; var doc:DisplayObjectContainer; var i:int; var child:DisplayObject; var o = _arg1; var skipTopLevel = _arg2; if (!skipTopLevel){ if ((o is IFocusManagerComponent)){ focusable = IFocusManagerComponent(o); if (focusable.focusEnabled){ if (((focusable.tabEnabled) && (isTabVisible(o)))){ focusableObjects[o] = true; calculateCandidates = true; }; o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; } else { if ((o is InteractiveObject)){ io = (o as InteractiveObject); if (((((io) && (io.tabEnabled))) && ((findFocusManagerComponent(io) == io)))){ focusableObjects[io] = true; calculateCandidates = true; }; io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; }; }; if ((o is DisplayObjectContainer)){ doc = DisplayObjectContainer(o); o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tabChildren))){ i = 0; while (i < doc.numChildren) { try { child = doc.getChildAt(i); if (child != null){ addFocusables(doc.getChildAt(i)); }; } catch(error:SecurityError) { }; i = (i + 1); }; }; }; } private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{ return (_arg1.getChildIndex(_arg2)); } private function mouseFocusChangeHandler(_arg1:FocusEvent):void{ if ((_arg1.relatedObject is TextField)){ return; }; _arg1.preventDefault(); } private function focusOutHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; _local2 = (_arg1.target as InteractiveObject); } private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{ var _local3:IFocusManagerGroup; if (!isEnabledAndVisible(_arg1)){ return (false); }; if ((_arg1 is IFocusManagerGroup)){ _local3 = IFocusManagerGroup(_arg1); if (_arg2 == _local3.groupName){ return (false); }; }; return (true); } public function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject{ var _local2:InteractiveObject; _local2 = _arg1; while (_arg1) { if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))){ return (_arg1); }; _arg1 = _arg1.parent; }; return (_local2); } private function sortFocusableObjectsTabIndex():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))){ focusableCandidates.push(_local2); }; }; focusableCandidates.sort(sortByTabIndex); } private function removeFocusables(_arg1:DisplayObject):void{ var _local2:Object; var _local3:DisplayObject; if ((_arg1 is DisplayObjectContainer)){ _arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); _arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); for (_local2 in focusableObjects) { _local3 = DisplayObject(_local2); if (DisplayObjectContainer(_arg1).contains(_local3)){ if (_local3 == lastFocus){ lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local2]; calculateCandidates = true; }; }; }; } private function addedHandler(_arg1:Event):void{ var _local2:DisplayObject; _local2 = DisplayObject(_arg1.target); if (_local2.stage){ addFocusables(DisplayObject(_arg1.target)); }; } private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{ while (_arg1 != InteractiveObject(form)) { if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (UIComponent(_arg1).enabled))){ return (_arg1); }; _arg1 = _arg1.parent; if (_arg1 == null){ break; }; }; return (null); } private function tabChildrenChangeHandler(_arg1:Event):void{ var _local2:DisplayObjectContainer; if (_arg1.target != _arg1.currentTarget){ return; }; calculateCandidates = true; _local2 = DisplayObjectContainer(_arg1.target); if (_local2.tabChildren){ addFocusables(_local2, true); } else { removeFocusables(_local2); }; } public function sendDefaultButtonEvent():void{ defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } public function getFocus():InteractiveObject{ var _local1:InteractiveObject; _local1 = form.stage.focus; return (findFocusManagerComponent(_local1)); } private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; var _local3:TextField; var _local4:SimpleButton; _local2 = DisplayObject(form).parent; while (_arg1 != _local2) { if ((_arg1 is UIComponent)){ if (!UIComponent(_arg1).enabled){ return (false); }; } else { if ((_arg1 is TextField)){ _local3 = TextField(_arg1); if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_local3.selectable)))){ return (false); }; } else { if ((_arg1 is SimpleButton)){ _local4 = SimpleButton(_arg1); if (!_local4.enabled){ return (false); }; }; }; }; if (!_arg1.visible){ return (false); }; _arg1 = _arg1.parent; }; return (true); } public function set defaultButton(_arg1:Button):void{ var _local2:Button; _local2 = (_arg1) ? Button(_arg1) : null; if (_local2 != _defaultButton){ if (_defaultButton){ _defaultButton.emphasized = false; }; if (defButton){ defButton.emphasized = false; }; _defaultButton = _local2; defButton = _local2; if (_local2){ _local2.emphasized = true; }; }; } private function deactivateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); } public function setFocus(_arg1:InteractiveObject):void{ if ((_arg1 is IFocusManagerComponent)){ IFocusManagerComponent(_arg1).setFocus(); } else { form.stage.focus = _arg1; }; } private function setFocusToNextObject(_arg1:FocusEvent):void{ var _local2:InteractiveObject; if (!hasFocusableObjects()){ return; }; _local2 = getNextFocusManagerComponent(_arg1.shiftKey); if (_local2){ setFocus(_local2); }; } private function hasFocusableObjects():Boolean{ var _local1:Object; for (_local1 in focusableObjects) { return (true); }; return (false); } private function tabIndexChangeHandler(_arg1:Event):void{ calculateCandidates = true; } private function sortFocusableObjects():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))) && ((_local2.tabIndex > 0)))){ sortFocusableObjectsTabIndex(); return; }; focusableCandidates.push(_local2); }; focusableCandidates.sort(sortByDepth); } private function keyFocusChangeHandler(_arg1:FocusEvent):void{ showFocusIndicator = true; if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){ setFocusToNextObject(_arg1); _arg1.preventDefault(); }; } private function getIndexOfFocusedObject(_arg1:DisplayObject):int{ var _local2:int; var _local3:int; _local2 = focusableCandidates.length; _local3 = 0; _local3 = 0; while (_local3 < _local2) { if (focusableCandidates[_local3] == _arg1){ return (_local3); }; _local3++; }; return (-1); } public function hideFocus():void{ } private function removedHandler(_arg1:Event):void{ var _local2:int; var _local3:DisplayObject; var _local4:InteractiveObject; _local3 = DisplayObject(_arg1.target); if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_local3] == true)))){ if (_local3 == lastFocus){ IFocusManagerComponent(lastFocus).drawFocus(false); lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local3]; calculateCandidates = true; } else { if ((((_local3 is InteractiveObject)) && ((focusableObjects[_local3] == true)))){ _local4 = (_local3 as InteractiveObject); if (_local4){ if (_local4 == lastFocus){ lastFocus = null; }; delete focusableObjects[_local4]; calculateCandidates = true; }; _local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); }; }; removeFocusables(_local3); } private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveObject):Number{ var _local3:String; var _local4:String; var _local5:int; var _local6:String; var _local7:String; var _local8:String; var _local9:DisplayObject; var _local10:DisplayObject; _local3 = ""; _local4 = ""; _local8 = "0000"; _local9 = DisplayObject(_arg1); _local10 = DisplayObject(_arg2); while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) { _local5 = getChildIndex(_local9.parent, _local9); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local3 = (_local7 + _local3); _local9 = _local9.parent; }; while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) { _local5 = getChildIndex(_local10.parent, _local10); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local4 = (_local7 + _local4); _local10 = _local10.parent; }; return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0); } public function get defaultButton():Button{ return (_defaultButton); } private function activateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); if (lastFocus){ if ((lastFocus is IFocusManagerComponent)){ IFocusManagerComponent(lastFocus).setFocus(); } else { form.stage.focus = lastFocus; }; }; lastAction = "ACTIVATE"; } public function showFocus():void{ } public function set defaultButtonEnabled(_arg1:Boolean):void{ _defaultButtonEnabled = _arg1; } public function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject{ var _local2:DisplayObject; var _local3:String; var _local4:int; var _local5:Boolean; var _local6:int; var _local7:int; var _local8:IFocusManagerGroup; if (!hasFocusableObjects()){ return (null); }; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; _local2 = form.stage.focus; _local2 = DisplayObject(findFocusManagerComponent(InteractiveObject(_local2))); _local3 = ""; if ((_local2 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local2); _local3 = _local8.groupName; }; _local4 = getIndexOfFocusedObject(_local2); _local5 = false; _local6 = _local4; if (_local4 == -1){ if (_arg1){ _local4 = focusableCandidates.length; }; _local5 = true; }; _local7 = getIndexOfNextObject(_local4, _arg1, _local5, _local3); return (findFocusManagerComponent(focusableCandidates[_local7])); } private function mouseDownHandler(_arg1:MouseEvent):void{ var _local2:InteractiveObject; if (_arg1.isDefaultPrevented()){ return; }; _local2 = getTopLevelFocusTarget(InteractiveObject(_arg1.target)); if (!_local2){ return; }; showFocusIndicator = false; if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local2 is TextField))))){ setFocus(_local2); }; lastAction = "MOUSEDOWN"; } private function isTabVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; _local2 = _arg1.parent; while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.parent) && ((_local2.parent is Stage))))))) { if (!_local2.tabChildren){ return (false); }; _local2 = _local2.parent; }; return (true); } public function get nextTabIndex():int{ return (0); } private function keyDownHandler(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.TAB){ lastAction = "KEY"; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; }; if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){ sendDefaultButtonEvent(); }; } private function focusInHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; var _local3:Button; _local2 = InteractiveObject(_arg1.target); if (form.contains(_local2)){ lastFocus = findFocusManagerComponent(InteractiveObject(_local2)); if ((lastFocus is Button)){ _local3 = Button(lastFocus); if (defButton){ defButton.emphasized = false; defButton = _local3; _local3.emphasized = true; }; } else { if (((defButton) && (!((defButton == _defaultButton))))){ defButton.emphasized = false; defButton = _defaultButton; _defaultButton.emphasized = true; }; }; }; } private function tabEnabledChangeHandler(_arg1:Event):void{ var _local2:InteractiveObject; var _local3:Boolean; calculateCandidates = true; _local2 = InteractiveObject(_arg1.target); _local3 = (focusableObjects[_local2] == true); if (_local2.tabEnabled){ if (((!(_local3)) && (isTabVisible(_local2)))){ if (!(_local2 is IFocusManagerComponent)){ _local2.focusRect = false; }; focusableObjects[_local2] = true; }; } else { if (_local3){ delete focusableObjects[_local2]; }; }; } public function set showFocusIndicator(_arg1:Boolean):void{ _showFocusIndicator = _arg1; } public function get form():DisplayObjectContainer{ return (_form); } private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{ return (((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : ((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2)); } public function activate():void{ if (activated){ return; }; form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true); form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true); form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true); form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true); form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = true; if (lastFocus){ setFocus(lastFocus); }; } public function deactivate():void{ form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler); form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler); form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.removeEventListener(Event.ACTIVATE, activateHandler); form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler); form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = false; } public function get defaultButtonEnabled():Boolean{ return (_defaultButtonEnabled); } } }//package fl.managers
Section 11
//IFocusManager (fl.managers.IFocusManager) package fl.managers { import fl.controls.*; import flash.display.*; public interface IFocusManager { function getFocus():InteractiveObject; function deactivate():void; function set defaultButton(_arg1:Button):void; function set showFocusIndicator(_arg1:Boolean):void; function get defaultButtonEnabled():Boolean; function get nextTabIndex():int; function get defaultButton():Button; function get showFocusIndicator():Boolean; function setFocus(_arg1:InteractiveObject):void; function activate():void; function showFocus():void; function set defaultButtonEnabled(_arg1:Boolean):void; function hideFocus():void; function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject; function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject; } }//package fl.managers
Section 12
//IFocusManagerComponent (fl.managers.IFocusManagerComponent) package fl.managers { public interface IFocusManagerComponent { function set focusEnabled(_arg1:Boolean):void; function drawFocus(_arg1:Boolean):void; function setFocus():void; function get focusEnabled():Boolean; function get tabEnabled():Boolean; function get tabIndex():int; function get mouseFocusEnabled():Boolean; } }//package fl.managers
Section 13
//IFocusManagerGroup (fl.managers.IFocusManagerGroup) package fl.managers { public interface IFocusManagerGroup { function set groupName(_arg1:String):void; function set selected(_arg1:Boolean):void; function get groupName():String; function get selected():Boolean; } }//package fl.managers
Section 14
//StyleManager (fl.managers.StyleManager) package fl.managers { import fl.core.*; import flash.utils.*; import flash.text.*; public class StyleManager { private var globalStyles:Object; private var classToDefaultStylesDict:Dictionary; private var styleToClassesHash:Object; private var classToStylesDict:Dictionary; private var classToInstancesDict:Dictionary; private static var _instance:StyleManager; public function StyleManager(){ styleToClassesHash = {}; classToInstancesDict = new Dictionary(true); classToStylesDict = new Dictionary(true); classToDefaultStylesDict = new Dictionary(true); globalStyles = UIComponent.getStyleDefinition(); } public static function clearComponentStyle(_arg1:Object, _arg2:String):void{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){ delete _local4[_arg2]; invalidateComponentStyle(_local3, _arg2); }; } private static function getClassDef(_arg1:Object):Class{ var component = _arg1; if ((component is Class)){ return ((component as Class)); }; try { return ((getDefinitionByName(getQualifiedClassName(component)) as Class)); } catch(e:Error) { if ((component is UIComponent)){ try { return ((component.loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(component)) as Class)); } catch(e:Error) { }; }; }; return (null); } public static function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } public static function setComponentStyle(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Class; var _local5:Object; _local4 = getClassDef(_arg1); _local5 = getInstance().classToStylesDict[_local4]; if (_local5 == null){ _local5 = (getInstance().classToStylesDict[_local4] = {}); }; if (_local5 == _arg3){ return; }; _local5[_arg2] = _arg3; invalidateComponentStyle(_local4, _arg2); } private static function setSharedStyles(_arg1:UIComponent):void{ var _local2:StyleManager; var _local3:Class; var _local4:Object; var _local5:String; _local2 = getInstance(); _local3 = getClassDef(_arg1); _local4 = _local2.classToDefaultStylesDict[_local3]; for (_local5 in _local4) { _arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5)); }; } public static function getComponentStyle(_arg1:Object, _arg2:String):Object{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; return (((_local4)==null) ? null : _local4[_arg2]); } private static function getInstance(){ if (_instance == null){ _instance = new (StyleManager); }; return (_instance); } private static function invalidateComponentStyle(_arg1:Class, _arg2:String):void{ var _local3:Dictionary; var _local4:Object; var _local5:UIComponent; _local3 = getInstance().classToInstancesDict[_arg1]; if (_local3 == null){ return; }; for (_local4 in _local3) { _local5 = (_local4 as UIComponent); if (_local5 == null){ } else { _local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2)); }; }; } private static function invalidateStyle(_arg1:String):void{ var _local2:Dictionary; var _local3:Object; _local2 = getInstance().styleToClassesHash[_arg1]; if (_local2 == null){ return; }; for (_local3 in _local2) { invalidateComponentStyle(Class(_local3), _arg1); }; } public static function registerInstance(_arg1:UIComponent):void{ var inst:StyleManager; var classDef:Class; var target:Class; var defaultStyles:Object; var styleToClasses:Object; var n:String; var instance = _arg1; inst = getInstance(); classDef = getClassDef(instance); if (classDef == null){ return; }; if (inst.classToInstancesDict[classDef] == null){ inst.classToInstancesDict[classDef] = new Dictionary(true); target = classDef; while (defaultStyles == null) { if (target["getStyleDefinition"] != null){ defaultStyles = target["getStyleDefinition"](); break; }; try { target = (instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class); } catch(err:Error) { try { target = (getDefinitionByName(getQualifiedSuperclassName(target)) as Class); } catch(e:Error) { defaultStyles = UIComponent.getStyleDefinition(); break; }; }; }; styleToClasses = inst.styleToClassesHash; for (n in defaultStyles) { if (styleToClasses[n] == null){ styleToClasses[n] = new Dictionary(true); }; styleToClasses[n][classDef] = true; }; inst.classToDefaultStylesDict[classDef] = defaultStyles; inst.classToStylesDict[classDef] = {}; }; inst.classToInstancesDict[classDef][instance] = true; setSharedStyles(instance); } public static function getStyle(_arg1:String):Object{ return (getInstance().globalStyles[_arg1]); } private static function getSharedStyle(_arg1:UIComponent, _arg2:String):Object{ var _local3:Class; var _local4:StyleManager; var _local5:Object; _local3 = getClassDef(_arg1); _local4 = getInstance(); _local5 = _local4.classToStylesDict[_local3][_arg2]; if (_local5 != null){ return (_local5); }; _local5 = _local4.globalStyles[_arg2]; if (_local5 != null){ return (_local5); }; return (_local4.classToDefaultStylesDict[_local3][_arg2]); } public static function setStyle(_arg1:String, _arg2:Object):void{ var _local3:Object; _local3 = getInstance().globalStyles; if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; _local3[_arg1] = _arg2; invalidateStyle(_arg1); } } }//package fl.managers
Section 15
//Regular (fl.transitions.easing.Regular) package fl.transitions.easing { public class Regular { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((_arg3 * _arg1) * _arg1) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2)); }; --_arg1; return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2)); } } }//package fl.transitions.easing
Section 16
//AbsorbWaterMinerals (AbsorbWaterMinerals) package { public dynamic class AbsorbWaterMinerals extends GreyButton { } }//package
Section 17
//AddDialog (AddDialog) package { import flash.display.*; import flash.events.*; import flash.text.*; public class AddDialog extends MovieClip { public var chosenElement:Number; public var cancelButton:CancelButton; public var theController:Controller; private var dotLength:Number;// = 95 private var tabWidth:Number;// = 300 private var beingShown:Boolean; private var tabList:Array; public var dottedLine:MovieClip; private var meristemHeight:Number;// = 16 public static var CANCELCLICKED = "CANCELCLICKED"; public static var ADDCLICKED = "ADDCLICKED"; public function AddDialog(_arg1:Controller){ tabList = new Array(); visible = false; beingShown = false; theController = _arg1; addEventListener(AddDialog.ADDCLICKED, theController.doGrow); addEventListener(AddDialog.CANCELCLICKED, theController.removeDialog); cancelButton.addEventListener(MouseEvent.CLICK, cancelClicked); } public function cancelClicked(_arg1:Event){ hide(); dispatchEvent(new Event(AddDialog.CANCELCLICKED)); } public function hide(){ beingShown = false; removeTabs(); visible = false; } public function addClicked(_arg1:Event){ chosenElement = removeTabs(); visible = false; dispatchEvent(new Event(AddDialog.ADDCLICKED)); } public function removeTabs():Number{ var _local2:int; var _local1:Number = -1; while (tabList.length > 0) { _local2 = (tabList.length - 1); if (tabList[_local2].selected){ _local1 = _local2; }; removeChild(tabList[_local2]); tabList.pop(); }; return (_local1); } public function show(_arg1:Number, _arg2:Number, _arg3:Array, _arg4:Number, _arg5:Number){ var _local7:Number; var _local9:AddTab; if (beingShown){ hide(); }; beingShown = true; var _local6:Number = 0; visible = true; _arg2 = (_arg2 - (meristemHeight / 2)); x = _arg1; y = _arg2; if (((_arg1 + dotLength) + tabWidth) > 1000){ x = (_arg1 - (dotLength + tabWidth)); cancelButton.x = 0; dottedLine.x = tabWidth; _local7 = 0; } else { _local7 = dotLength; dottedLine.x = 0; x = _arg1; cancelButton.x = (dotLength + tabWidth); }; var _local8:* = 0; while (_local8 < _arg3.length) { _local9 = new AddTab(this); _local9.show(_local7, _local6, _arg3[_local8].elementType, _arg3[_local8].costSugar, _arg3[_local8].costMinerals, _arg4, _arg5); tabList.push(_local9); addChild(_local9); _local6 = (_local6 + _local9.tabHeight); _local8++; }; if (getChildIndex(cancelButton) < getChildIndex(tabList[0])){ swapChildren(cancelButton, tabList[0]); }; } } }//package
Section 18
//AddTab (AddTab) package { import flash.display.*; import flash.events.*; import flash.text.*; public class AddTab extends MovieClip { public var needSugar:TextField; public var addButton:GrowButton; public var mineralBar:TabDisplay; private var tabList:Array; public var theDialog:AddDialog; public var newItem:TextField; public var selected:Boolean;// = false public var tabHeight:Number;// = 36 private var buttonLabel:Object; private var newLabel:Object; public var sugarBar:TabDisplay; public var needMinerals:TextField; public function AddTab(_arg1:AddDialog){ newLabel = {Root:"NEW ROOT", Leaf:"NEW LEAF", Stem:"GROW STEM", Flower:"NEW FLOWER", BigSeed:"GROW LARGER", FallOff:"EJECT SEED"}; buttonLabel = {Root:"Grow", Leaf:"Grow", Stem:"Grow", Flower:"Grow", BigSeed:"Grow", FallOff:"Fall"}; super(); theDialog = _arg1; addEventListener(AddDialog.ADDCLICKED, _arg1.addClicked); selected = false; } private function addClicked(_arg1:Event){ selected = true; dispatchEvent(new Event(AddDialog.ADDCLICKED)); } public function show(_arg1:Number, _arg2:Number, _arg3:String, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number){ x = _arg1; y = _arg2; newItem.text = newLabel[_arg3]; addButton.label.text = buttonLabel[_arg3]; sugarBar.set(_arg4, "Sugar", false, false, false); mineralBar.set(_arg5, "Minerals", false, false, false); needSugar.visible = false; needMinerals.visible = false; if ((((_arg4 > _arg6)) || ((_arg5 > _arg7)))){ addButton.visible = false; addButton.removeEventListener(MouseEvent.CLICK, addClicked); if (_arg4 > _arg6){ needSugar.visible = true; } else { needMinerals.visible = true; }; } else { addButton.visible = true; addButton.setEnabled(true); addButton.addEventListener(MouseEvent.CLICK, addClicked); }; } private function cancelClicked(_arg1:Event){ dispatchEvent(new Event(AddDialog.CANCELCLICKED)); } } }//package
Section 19
//BarDisplay (BarDisplay) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.text.*; public class BarDisplay extends MovieClip { private var valueChange:Number; private var maxWidth;// = 204 private var lightHighlight:Number;// = 0xD6D6D6 private var marks:Array; private var colourScheme:Object; private var colour:Number; private var icons:Object; private var barValue:Number; private var highlightColour:Number; private var animateTimer:Timer; private var darkHighlight:Number;// = 13089 private var newValue:Number; private var lastValue:Number; public var valueText:TextField; public function BarDisplay(){ colourScheme = {Sugar:16082193, Minerals:4217696, DarkMinerals:5404538, Carbon:5151046, Sunlight:15643663, Water:4427941}; icons = {Sugar:"sugarIcon", Minerals:"mineralIcon", Carbon:"carbonIcon", Sunlight:"sunlightIcon", Water:"waterIcon"}; super(); marks = new Array(); animateTimer = new Timer(40, 0); animateTimer.addEventListener(TimerEvent.TIMER, animateText); lastValue = 0; } public function removeMarks(){ graphics.clear(); while (marks.length > 0) { removeChild(marks.pop()); }; } public function animateText(_arg1:TimerEvent){ lastValue = (lastValue + valueChange); if (Math.abs((lastValue - newValue)) <= 1){ lastValue = newValue; animateTimer.stop(); }; setValue(lastValue); } private function setValue(_arg1:Number){ _arg1 = Math.round(_arg1); valueText.text = String(_arg1); } public function set(_arg1:Number, _arg2:String, _arg3:Boolean, _arg4:Boolean, _arg5:Boolean=true){ var _local6:*; var _local7:ColorTransform; var _local8:MovieClip; colour = colourScheme[_arg2]; newValue = _arg1; highlightColour = 0xFFFFFF; valueText.textColor = colour; if (((!((lastValue == newValue))) && (_arg4))){ valueChange = ((newValue - lastValue) / 25); if ((((valueChange < 0)) && ((valueChange > -1)))){ valueChange = -1; }; if ((((valueChange > 0)) && ((valueChange < 1)))){ valueChange = 1; }; animateTimer.start(); } else { lastValue = newValue; setValue(newValue); }; } } }//package
Section 20
//BarDisplayMark (BarDisplayMark) package { import flash.display.*; public dynamic class BarDisplayMark extends MovieClip { } }//package
Section 21
//Bee (Bee) package { public dynamic class Bee extends Insect { } }//package
Section 22
//BeeSound (BeeSound) package { import flash.media.*; public dynamic class BeeSound extends Sound { } }//package
Section 23
//Beetle (Beetle) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; public class Beetle extends MovieClip { public var eaten:MovieClip; public var dead:MovieClip; public var speed:Number;// = 6 public var animateTimer:Timer; public var alive:MovieClip; public var targetPoint:Point; public static var FOUNDTARGET:String = "found target"; public function Beetle(_arg1:Boolean){ y = (130 + (Math.random() * 50)); if (_arg1){ x = -500; speed = 8; targetPoint = new Point((Math.random() * 30), y); } else { x = (0x0400 - 500); speed = -8; scaleX = -1; targetPoint = new Point((50 + (Math.random() * 30)), y); }; animateTimer = new Timer(40, 0); animateTimer.addEventListener(TimerEvent.TIMER, animate); } public function start(_arg1:Function){ alive.visible = true; dead.visible = false; eaten.visible = false; addEventListener(FOUNDTARGET, _arg1); animateTimer.start(); } public function animate(_arg1:Event){ x = (x + speed); if (Point.distance(targetPoint, new Point(x, y)) < Math.abs((speed * 6))){ foundTarget(); }; } public function foundTarget(){ x = targetPoint.x; y = targetPoint.y; alive.visible = false; dead.visible = true; animateTimer.stop(); dispatchEvent(new Event(FOUNDTARGET)); } public function foundByRoot(){ eaten.visible = true; dead.visible = true; } } }//package
Section 24
//BigSeed (BigSeed) package { import flash.display.*; import flash.geom.*; public class BigSeed extends PlantElement { public var arrow1:MovieClip; public var node1:Meristem; public function BigSeed(_arg1:Sprite, _arg2:Controller, _arg3:Point){ super(_arg1, _arg2, _arg3); nodeCount = 1; elementType = "BigSeed"; initNodes([["FallOff"]], 0); } override public function setRotation(_arg1:Number){ rotation = 0; if (parentElement.rotation < 0){ scaleX = 1; } else { scaleX = -1; }; } override public function checkNode(_arg1){ return (true); } } }//package
Section 25
//Button_disabledSkin (Button_disabledSkin) package { import flash.display.*; public dynamic class Button_disabledSkin extends MovieClip { } }//package
Section 26
//Button_downSkin (Button_downSkin) package { import flash.display.*; public dynamic class Button_downSkin extends MovieClip { } }//package
Section 27
//Button_emphasizedSkin (Button_emphasizedSkin) package { import flash.display.*; public dynamic class Button_emphasizedSkin extends MovieClip { } }//package
Section 28
//Button_overSkin (Button_overSkin) package { import flash.display.*; public dynamic class Button_overSkin extends MovieClip { } }//package
Section 29
//Button_selectedDisabledSkin (Button_selectedDisabledSkin) package { import flash.display.*; public dynamic class Button_selectedDisabledSkin extends MovieClip { } }//package
Section 30
//Button_selectedDownSkin (Button_selectedDownSkin) package { import flash.display.*; public dynamic class Button_selectedDownSkin extends MovieClip { } }//package
Section 31
//Button_selectedOverSkin (Button_selectedOverSkin) package { import flash.display.*; public dynamic class Button_selectedOverSkin extends MovieClip { } }//package
Section 32
//Button_selectedUpSkin (Button_selectedUpSkin) package { import flash.display.*; public dynamic class Button_selectedUpSkin extends MovieClip { } }//package
Section 33
//Button_upSkin (Button_upSkin) package { import flash.display.*; public dynamic class Button_upSkin extends MovieClip { } }//package
Section 34
//ButtonClick (ButtonClick) package { import flash.media.*; public dynamic class ButtonClick extends Sound { } }//package
Section 35
//CancelButton (CancelButton) package { public dynamic class CancelButton extends GreyButton { } }//package
Section 36
//carbonIcon (carbonIcon) package { import flash.display.*; public dynamic class carbonIcon extends MovieClip { } }//package
Section 37
//ChompSound (ChompSound) package { import flash.media.*; public dynamic class ChompSound extends Sound { } }//package
Section 38
//Container (Container) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; public class Container extends Sprite { private var topScroll; private var scrollTop:Boolean; private var boxPos;// = 300 private var plantSprite:Sprite; private var scrollBack:Boolean; private var bottomScroll:Sprite; private var overBottom:Boolean; private var overTop:Boolean; private var offsetY:Number; public var scrollSprite:Sprite; private var scrollEnabled:Boolean;// = false private var scrollTimer:Timer; public static var SCROLL_RESET:String = "scroll reset"; public function Container(){ scrollSprite = new Sprite(); scrollTimer = new Timer(40, 0); scrollTimer.addEventListener(TimerEvent.TIMER, onScroll); scrollTimer.start(); makeScrollAreas(); } public function getScrollAreas():Sprite{ return (scrollSprite); } public function setScrollAreas(_arg1:Sprite, _arg2:Number){ plantSprite = _arg1; offsetY = _arg2; overTop = false; overBottom = false; scrollBack = false; } public function scrollToTop(){ scrollTop = true; } public function onScroll(_arg1:Event){ var _local2:Rectangle; if (scrollBack){ if (y > 0){ y = (y - 10); scrollSprite.y = -(y); } else { scrollBack = false; dispatchEvent(new Event(SCROLL_RESET)); }; }; if (scrollTop){ _local2 = plantSprite.getBounds(this); if ((y + _local2.top) < offsetY){ y = (y + 10); scrollSprite.y = -(y); } else { scrollTop = false; }; }; if (scrollEnabled){ if (overTop){ _local2 = plantSprite.getBounds(this); if ((y + _local2.top) < offsetY){ y = (y + 10); scrollSprite.y = -(y); }; }; if (overBottom){ if (y > 0){ y = (y - 10); scrollSprite.y = -(y); }; }; }; } public function removeScrollAreas(){ if (contains(scrollSprite)){ removeChild(scrollSprite); }; } public function onOverTop(_arg1:MouseEvent){ overTop = true; } private function makeScrollBox(_arg1:Function, _arg2:Function):Sprite{ var _local3:* = new Sprite(); _local3.graphics.beginFill(0xFF0000, 0); _local3.graphics.drawRect(0, 0, 0x0400, 100); _local3.graphics.endFill(); _local3.addEventListener(MouseEvent.MOUSE_OVER, _arg1); _local3.addEventListener(MouseEvent.MOUSE_OUT, _arg2); return (_local3); } public function onOverBottom(_arg1:MouseEvent){ overBottom = true; } public function makeScrollAreas(){ topScroll = makeScrollBox(onOverTop, onOutTop); scrollSprite.addChild(topScroll); bottomScroll = makeScrollBox(onOverBottom, onOutBottom); topScroll.height = 200; bottomScroll.y = 678; scrollSprite.addChild(bottomScroll); } public function onOutTop(_arg1:MouseEvent){ overTop = false; } public function onOutBottom(_arg1:MouseEvent){ overBottom = false; } public function resetScroll(){ scrollBack = true; } public function initScroll(){ y = 0; scrollSprite.y = 0; } public function enableScroll(_arg1:Boolean){ scrollEnabled = _arg1; } } }//package
Section 39
//Controller (Controller) package { import fl.controls.*; import flash.events.*; import flash.geom.*; import flash.media.*; public class Controller extends EventDispatcher { private var removeList:Array; public var newGrowth:Object; private var addDialog:AddDialog; private var eventList:Array; private var events:Object; private var currentEvent:Number; private var toBeRemoved:Number; public var resetButton:Button; private var theView:View; private var theModel:Model; public var elementList:Array; private var ejectSound:Sound; public static var REMOVE_ELEMENT:String = "remove element"; public static var DONEGROW:String = "doneGrow"; public static var CANCELGROW:String = "cancelGrow"; public function Controller(){ eventList = ["Pollinate", "Bugs", "Irrigation", "Insecticide", "ResetScroll", "Beetles", "Weeding", "Weather", "Nutrients"]; super(); ejectSound = new EjectSeedSound(); } public function elementGrowFinished(_arg1:Event){ trace("controller knows element has done animating"); theView.plantChanged(); } public function growAllSeeds(_arg1:Array){ var _local2:Number = 0; var _local3:* = 0; while (_local3 < _arg1.length) { if (_arg1[_local3].elementType == "Seed"){ growSeed(_arg1[_local3]); _local2++; }; _local3++; }; theModel.useResource((_local2 * 10), (_local2 * 10)); theView.plantChanged(); } public function stemOk(_arg1:PlantElement, _arg2:Point):Boolean{ return (theView.testStem(_arg1, _arg2)); } public function stopEvents(){ currentEvent = (eventList.length + 1); } public function growNew(_arg1:Point, _arg2:Number, _arg3:Array, _arg4:PlantElement, _arg5:Meristem){ dispatchEvent(new Event(View.RESETTIMEOUT)); theView.hideInfo(); newGrowth.rotation = _arg2; newGrowth.newPos = _arg1; newGrowth.growElement = _arg4; newGrowth.growNode = _arg5; elementList = _arg3; var _local6:Point = theView.plantSprite.localToGlobal(_arg1); addDialog.show(_local6.x, _local6.y, elementList, theModel.sugar, theModel.minerals); } public function removeSeed(_arg1:Event){ var _local2:*; toBeRemoved--; if (toBeRemoved <= 0){ theModel.useResource((removeList.length * 2), (removeList.length * 2)); _local2 = 0; while (_local2 < removeList.length) { removeList[_local2].removeEventListener(Controller.REMOVE_ELEMENT, removeElement); theView.removeElement(removeList[_local2]); _local2++; }; removeList = []; dispatchEvent(new Event(Controller.DONEGROW)); theView.plantChanged(); }; } public function doGrow(_arg1:Event){ var _local2:Number; dispatchEvent(new Event(View.RESETTIMEOUT)); var _local3:Object = elementList[addDialog.chosenElement]; newGrowth.elementType = _local3.elementType; if (_local3.elementType != "FallOff"){ dispatchEvent(new Event(Controller.DONEGROW)); theModel.useResource(_local3.costSugar, _local3.costMinerals); }; switch (_local3.elementType){ case "BigSeed": if ((((((((theModel.growThisMonth == 2)) && ((theModel.growth.seeds > 1)))) && (((theModel.minerals / 10) > theModel.growth.seeds)))) && (((theModel.sugar / 10) > theModel.growth.seeds)))){ theView.askAllSeeds(false); } else { growSeed(newGrowth.growElement); if (!theModel.growMessage){ theView.theContainer.resetScroll(); if (theModel.plantType == "Wild"){ theView.showInfo("Bad move", "As a wild plant you don't need to make big seeds, small ones will do."); } else { theView.showInfo("Great!", "The farmer prefers big seeds, so make as many as you can"); }; theModel.growMessage = true; }; theView.plantChanged(); }; break; case "FallOff": theView.displayAllNodes(false); _local2 = (theModel.growth.seeds + theModel.growth.bigSeeds); if ((((((((theModel.ejectThisMonth == 2)) && ((_local2 > 1)))) && (((theModel.minerals / 2) > _local2)))) && (((theModel.sugar / 2) > _local2)))){ theView.askAllSeeds(true); } else { ejectSeed(newGrowth.growElement); if (!theModel.ejectMessage){ theView.theContainer.resetScroll(); if (theModel.plantType == "Wild"){ theView.showInfo("Great!", "As a wild plant you need to eject as many seeds as possible."); } else { theView.showInfo("Bad move", "As a farm plant you need to keep your seeds so they can be harvested."); }; theModel.ejectMessage = true; }; theView.plantChanged(); }; break; case "Flower": newGrowth.newPos = newGrowth.growElement.getFlowerPos(newGrowth.growNode); default: theView.growElement(_local3.elementType, newGrowth); }; } public function init(_arg1:View, _arg2:Model){ theModel = _arg2; theView = _arg1; newGrowth = new Object(); addDialog = new AddDialog(this); theView.addChild(addDialog); theView.addEventListener(View.DONEEVENT, doneEvent); addEventListener(View.RESETTIMEOUT, theView.resetTimeOut); theView.introScreen(); removeList = []; toBeRemoved = 0; } public function growLastSeed(){ growSeed(newGrowth.growElement); theView.plantChanged(); } public function startEvents(){ currentEvent = -1; doneEvent(); } public function ejectLastSeed(){ ejectSeed(newGrowth.growElement); } public function growSeed(_arg1:PlantElement){ var _local2:Object = new Object(); _local2.growElement = _arg1; theModel.growThisMonth++; theView.growReplacementElement("BigSeed", _local2); } public function doneEvent(_arg1:Event=null){ currentEvent++; if (currentEvent < eventList.length){ dispatchEvent(new Event(View.RESETTIMEOUT)); switch (eventList[currentEvent]){ case "Pollinate": theView.pollinateFlowers(); break; case "Bugs": if (((theModel.pollinationMonth()) && ((theModel.plantType == "Wild")))){ theView.doPests(); } else { doneEvent(); }; break; case "Irrigation": if (theModel.plantType == "Farm"){ theView.doIrrigation(); } else { doneEvent(); }; break; case "Beetles": if (theModel.beetles < 2){ theView.doBeetles(); } else { doneEvent(); }; break; case "Insecticide": if (theModel.plantType == "Farm"){ theView.doInsecticide(); } else { doneEvent(); }; break; case "ResetScroll": theView.doResetScroll(); break; case "Weeding": if ((((((theModel.plantType == "Farm")) && (((theModel.currentMonth % 2) == 0)))) && ((theView.theNeighbours.growth > 0)))){ theView.doWeeding(); } else { doneEvent(); }; break; case "Weather": theView.doWeather(); break; case "Nutrients": theView.showContinue(); break; }; }; } public function removeElement(_arg1:Event){ newGrowth.growElement.removeEventListener(Controller.REMOVE_ELEMENT, removeElement); theView.removeElement(newGrowth.growElement); theView.plantChanged(); } private function ejectSeed(_arg1:PlantElement){ ejectSound.play(); _arg1.addEventListener(Controller.REMOVE_ELEMENT, removeSeed); _arg1.fall(); theModel.seedCount++; theModel.ejectThisMonth++; removeList.push(_arg1); toBeRemoved++; } public function endGame():Boolean{ return ((((theModel.currentMonth >= 9)) || (((theModel.noSugar()) || (theModel.noMinerals()))))); } public function doneGrowth(_arg1:Event){ addDialog.hide(); trace("done growth"); if (endGame()){ theView.countGrowth(); theView.theEndGame.show(theModel); } else { startEvents(); }; } public function ejectAllSeeds(_arg1:Array){ var _local2:* = 0; while (_local2 < _arg1.length) { if ((((_arg1[_local2].elementType == "Seed")) || ((_arg1[_local2].elementType == "BigSeed")))){ ejectSeed(_arg1[_local2]); }; _local2++; }; } public function removeDialog(_arg1:Event){ } public function newElementOk(_arg1:String, _arg2:Point, _arg3:Number, _arg4:Number):Boolean{ return (!(theView.testElement(_arg1, _arg2, _arg3, _arg4))); } } }//package
Section 40
//CreateSugar (CreateSugar) package { public dynamic class CreateSugar extends GreyButton { } }//package
Section 41
//Credits (Credits) package { public dynamic class Credits extends GreyButton { } }//package
Section 42
//DoAllSeeds (DoAllSeeds) package { import flash.display.*; import flash.events.*; import flash.text.*; public class DoAllSeeds extends MovieClip { public var eject:Boolean; public var doAll:PlayAsWildPlant; public var advice:TextField; public var cancel:PlayAsWildPlant; public var title:TextField; public function DoAllSeeds(){ x = 0; y = 200; visible = false; cancel.addEventListener(MouseEvent.CLICK, onDoOne); doAll.addEventListener(MouseEvent.CLICK, onDoAll); } public function hide(){ visible = false; } public function onDoOne(_arg1:MouseEvent){ visible = false; dispatchEvent(new Event(View.DOONESEED)); } public function show(_arg1:Boolean){ eject = _arg1; if (_arg1){ cancel.label.text = "Eject one seed"; doAll.label.text = "Eject all seeds"; title.text = "DO YOU WANT TO EJECT ALL YOUR SEEDS?"; advice.text = "This is a good idea for wild plants but NOT a good idea for farm plants."; } else { cancel.label.text = "Grow one seed"; doAll.label.text = "Grow all seeds"; title.text = "DO YOU WANT TO GROW ALL YOUR SEEDS?"; advice.text = "This is a good idea for farm plants but NOT a good idea for wild plants."; }; visible = true; } public function onDoAll(_arg1:MouseEvent){ visible = false; dispatchEvent(new Event(View.DOALLSEEDS)); } } }//package
Section 43
//EjectSeedSound (EjectSeedSound) package { import flash.media.*; public dynamic class EjectSeedSound extends Sound { } }//package
Section 44
//EndGame (EndGame) package { import flash.display.*; import flash.events.*; import flash.text.*; public class EndGame extends MovieClip { private var farmRatings:Array; public var endText:MovieClip; public var creditDisplay:MovieClip; var monthData:Object; public var creditButton:Credits; private var wildRatings:Array; var growthData:Object; public var backButton:GoBack; public function EndGame(_arg1:Number, _arg2:Number){ farmRatings = ["You'll have to make it in the wild or go extinct", "A few useful traits might keep you in the breeding programme, but only as a pollen donor", "Expensive delicacy - difficult to grow and not popular", "Secondary crop - just about worth the farmer's while", " Staple food - grown everywhere and eaten by millions"]; wildRatings = ["Extinct!", "Endangered species - you may not survive long", " Conservation dependent - you'll only survive in protected areas", "Just about viable - you can make it on your own", "Highly successful plant - found all over the place"]; super(); x = 0; y = 200; visible = false; endText.nextButton.addEventListener(MouseEvent.CLICK, playAgain); creditButton.addEventListener(MouseEvent.CLICK, showCredits); backButton.addEventListener(MouseEvent.CLICK, hideCredits); } public function showCredits(_arg1:Event){ dispatchEvent(new Event(View.RESETTIMEOUT)); creditDisplay.visible = true; creditButton.visible = false; backButton.visible = true; endText.visible = false; } public function hide(){ visible = false; } public function playAgain(_arg1:Event){ visible = false; dispatchEvent(new Event(View.PLAYAGAIN)); } public function show(_arg1:Model){ var _local3:Number; var _local2:* = _arg1.growth; creditDisplay.visible = false; creditButton.visible = true; backButton.visible = false; visible = true; endText.visible = true; if (_arg1.noMinerals()){ endText.endReason.text = "YOUR PLANT IS DEAD"; endText.report.text = "You have run out of minerals and have no roots to get some more\nHave another go and grow some roots this time."; endText.score.text = "Have another go and grow some roots this time."; } else { if (_arg1.noSugar()){ endText.endReason.text = "YOUR PLANT IS DEAD"; endText.report.text = "You have run out of sugar and need roots and leaves to make some more"; endText.score.text = "Have another go and grow roots and leaves this time."; } else { endText.endReason.text = "IT'S SEPTEMBER AND YOUR TIME IS UP"; if (_arg1.plantType == "Wild"){ if (_arg1.seedCount == 1){ endText.report.text = "You have created 1 seed this year"; } else { endText.report.text = (("You have created " + _arg1.seedCount) + " seeds this year"); }; endText.score.text = (("This gives you a " + Math.min((_arg1.seedCount * 4), 100)) + "% chance of passing your genes on to the next generation"); } else { if (_local2.bigSeeds == 1){ endText.report.text = "You have 1 big seed on your plant at the moment"; } else { endText.report.text = (("You have " + _local2.bigSeeds) + " big seeds on your plant at the moment"); }; endText.score.text = (("This gives you a " + Math.min(100, (_local2.bigSeeds * 4))) + "% chance of passing your genes on to the next generation"); }; }; }; if (_arg1.plantType == "Wild"){ _local3 = Math.min((wildRatings.length - 1), Math.floor(((_arg1.seedCount * 4) / 20))); endText.rating.text = wildRatings[_local3]; } else { _local3 = Math.min((farmRatings.length - 1), Math.floor(((_local2.bigSeeds * 4) / 20))); endText.rating.text = farmRatings[_local3]; }; } public function hideCredits(_arg1:Event){ dispatchEvent(new Event(View.RESETTIMEOUT)); creditDisplay.visible = false; creditButton.visible = true; backButton.visible = false; endText.visible = true; } } }//package
Section 45
//FarmBackground (FarmBackground) package { import flash.display.*; public dynamic class FarmBackground extends MovieClip { } }//package
Section 46
//FinishGrowingButton (FinishGrowingButton) package { public dynamic class FinishGrowingButton extends GreyButton { } }//package
Section 47
//FirstSeed (FirstSeed) package { import flash.display.*; import flash.geom.*; public class FirstSeed extends PlantElement { public var node2:Meristem; public var arrow1:MovieClip; public var arrow2:MovieClip; public var node1:Meristem; public function FirstSeed(_arg1:Sprite, _arg2:Controller, _arg3:Point){ super(_arg1, _arg2, _arg3); nodeCount = 2; elementType = "FirstSeed"; initNodes([["Leaf"], ["Root"]], 0); } } }//package
Section 48
//Flower (Flower) package { import flash.display.*; import flash.events.*; import flash.geom.*; public class Flower extends PlantElement { public static var outlinePoints = [new Point(20.9, -62), new Point(0.5, -29.1)]; public function Flower(_arg1:Sprite, _arg2:Controller, _arg3:Point){ super(_arg1, _arg2, _arg3); nodeCount = 0; pushUp = false; elementType = "Flower"; initNodes([], 0); } override public function setRotation(_arg1:Number){ rotation = _arg1; startGrow(); } override public function rightDirection(_arg1:Number):Boolean{ if (_arg1 < 0){ _arg1 = (_arg1 + 360); }; if (_arg1 > 359){ _arg1 = (_arg1 - 360); }; return ((((_arg1 < 90)) || ((_arg1 > 270)))); } override public function getEndPoint():Point{ var _local1:* = {x:0, y:-41.7}; var _local2:* = _local1.x; var _local3:* = _local1.y; var _local4:* = new Point(); var _local5:* = ((rotation * Math.PI) / 180); _local4.x = ((_local2 * Math.cos(_local5)) - (_local3 * Math.sin(_local5))); _local4.y = ((_local2 * Math.sin(_local5)) + (_local3 * Math.cos(_local5))); return (_local4); } } }//package
Section 49
//FlowerStem (FlowerStem) package { import flash.display.*; import flash.events.*; import flash.geom.*; public class FlowerStem extends PlantElement { public var arrow1:MovieClip; public var node1:Meristem; public static var outlinePoints = [new Point(20.9, -62), new Point(0.5, -29.1)]; public function FlowerStem(_arg1:Sprite, _arg2:Controller, _arg3:Point){ super(_arg1, _arg2, _arg3); pushUp = true; nodeCount = 1; setUpNodes(); } override public function setRotation(_arg1:Number){ rotation = _arg1; startGrow(); } override public function setUpNodes(){ nodeCount = 1; elementType = "FlowerStem"; initNodes([["Flower"]], 1); this["node1"].enabled = false; } override public function growProgress(_arg1:Event){ var _local2:Number = (scaleX - lastScale); lastScale = scaleX; var _local3:Point = new Point((pushAmount.x * _local2), (pushAmount.y * _local2)); pushElement.moveUp(_local3); } override public function rightDirection(_arg1:Number):Boolean{ if (_arg1 < 0){ _arg1 = (_arg1 + 360); }; if (_arg1 > 359){ _arg1 = (_arg1 - 360); }; return ((((_arg1 < 90)) || ((_arg1 > 270)))); } public function getGrowPos():Point{ return (toContainer(node1.growPos)); } override public function getEndPoint():Point{ var _local1:* = {x:0, y:-41.7}; var _local2:* = _local1.x; var _local3:* = _local1.y; var _local4:* = new Point(); var _local5:* = ((rotation * Math.PI) / 180); _local4.x = ((_local2 * Math.cos(_local5)) - (_local3 * Math.sin(_local5))); _local4.y = ((_local2 * Math.sin(_local5)) + (_local3 * Math.cos(_local5))); return (_local4); } } }//package
Section 50
//focusRectSkin (focusRectSkin) package { import flash.display.*; public dynamic class focusRectSkin extends MovieClip { } }//package
Section 51
//GoBack (GoBack) package { public dynamic class GoBack extends GreyButton { } }//package
Section 52
//GreyButton (GreyButton) package { import flash.display.*; import flash.events.*; import flash.media.*; import flash.text.*; public class GreyButton extends MovieClip { public var enable:Boolean;// = true public var enabledGraphic:MovieClip; public var label:TextField; public var disabledGraphic:MovieClip; public var over:Boolean; public var buttonClick:Sound; public var overGraphic:MovieClip; public function GreyButton(){ addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); addEventListener(MouseEvent.CLICK, onMouseClick); buttonClick = new ButtonClick(); } public function onMouseOut(_arg1:MouseEvent){ over = false; reDraw(); } public function onMouseOver(_arg1:MouseEvent){ if (enable){ over = true; reDraw(); }; } public function onMouseClick(_arg1:MouseEvent){ buttonClick.play(); } public function reDraw(){ enabledGraphic.visible = ((enable) && (!(over))); disabledGraphic.visible = !(enable); overGraphic.visible = ((over) && (enable)); if (enable){ label.textColor = 0xFFFFFF; } else { label.textColor = 8362384; }; } public function setEnabled(_arg1:Boolean){ enable = _arg1; reDraw(); } } }//package
Section 53
//GreyFrame (GreyFrame) package { import flash.display.*; public dynamic class GreyFrame extends MovieClip { } }//package
Section 54
//Grid (Grid) package { import flash.display.*; import flash.events.*; import flash.geom.*; public class Grid extends Sprite { private var traceBmp:BitmapData; public var traceOn:Boolean;// = false private var cells:Array; private var widthPixels; private var checkBmp:BitmapData; private var gridSize:Number; private var heightCells:Number; private var widthCells; private var numberOfCells:Number; private var heightPixels:Number; public function Grid(_arg1:Number, _arg2:Number, _arg3:Number){ widthPixels = _arg1; heightPixels = _arg2; gridSize = _arg3; widthCells = Math.ceil((widthPixels / gridSize)); heightCells = Math.ceil((heightPixels / gridSize)); numberOfCells = (widthCells * heightCells); createCells(); traceBmp = new BitmapData(widthPixels, heightPixels, true, 0); checkBmp = new BitmapData(widthPixels, heightPixels, true, 0); var _local4:Bitmap = new Bitmap(traceBmp); var _local5:Bitmap = new Bitmap(checkBmp); if (traceOn){ addChild(_local4); addChild(_local5); }; } public function setGridPoints(_arg1:Array, _arg2:Boolean){ var _local3:* = 0; while (_local3 < _arg1.length) { setGrid(_arg1[_local3].x, _arg1[_local3].y, _arg2); _local3++; }; } public function setGrid(_arg1:Number, _arg2:Number, _arg3:Boolean){ var _local4:int = Math.round((_arg1 / gridSize)); var _local5:int = Math.round((_arg2 / gridSize)); setCell(_local4, _local5, _arg3); } private function setCell(_arg1:int, _arg2:int, _arg3:Boolean){ var _local4:int = (_arg1 + (_arg2 * widthCells)); cells[_local4] = _arg3; var _local5:* = new Rectangle(((_arg1 - 0.5) * gridSize), ((_arg2 - 0.5) * gridSize), gridSize, gridSize); traceBmp.fillRect(_local5, 1727987712); } public function fillGrid(_arg1:DisplayObject){ var _local3:*; var _local2:* = _arg1.x; while (_local2 < (_arg1.x + _arg1.width)) { _local3 = _arg1.y; while (_local3 < (_arg1.y + _arg1.height)) { setGrid(_local2, _local3, true); _local3 = (_local3 + gridSize); }; _local2 = (_local2 + gridSize); }; } public function clearGrid(){ var _local1:* = 0; while (_local1 < (numberOfCells - 1)) { cells[_local1] = false; _local1++; }; var _local2:* = 0; while (_local2 < widthCells) { setGrid(_local2, 0, true); setGrid(_local2, 1, true); setGrid(_local2, (heightCells - 2), true); setGrid(_local2, (heightCells - 1), true); _local2++; }; var _local3:* = 0; while (_local3 < heightCells) { setGrid(0, _local3, true); setGrid(1, _local3, true); setGrid((widthCells - 1), _local3, true); setGrid((widthCells - 2), _local3, true); _local3++; }; } private function createCells(){ cells = new Array(numberOfCells); } public function resetCheck(){ trace("reset check bmp"); var _local1:* = new Rectangle(0, 0, widthPixels, heightPixels); checkBmp.fillRect(_local1, 0); } public function getGrid(_arg1:Number, _arg2:Number):Boolean{ var _local3:int = Math.round((_arg1 / gridSize)); var _local4:int = Math.round((_arg2 / gridSize)); var _local5:* = new Rectangle(((_local3 - 0.25) * gridSize), ((_local4 - 0.25) * gridSize), (gridSize * 0.5), (gridSize * 0.5)); checkBmp.fillRect(_local5, 1711341312); var _local6:int = (_local3 + (_local4 * widthCells)); return (cells[_local6]); } } }//package
Section 55
//GrowButton (GrowButton) package { public dynamic class GrowButton extends GreyButton { } }//package
Section 56
//InfoBox (InfoBox) package { import flash.display.*; import com.gskinner.motion.*; import fl.transitions.easing.*; import flash.text.*; public class InfoBox extends MovieClip { public var displayMessage:TextField; public var theController:Controller; public var chosenElement:Number; private var tabList:Array; public var displayTitle:TextField; private var growTween:GTween; public static var CANCELCLICKED = "CANCELCLICKED"; public static var ADDCLICKED = "ADDCLICKED"; public function InfoBox(){ visible = false; x = 30; y = 530; } public function hide(){ visible = false; } public function show(_arg1:String, _arg2:String, _arg3:Boolean=false){ if (_arg1 != ""){ visible = true; displayTitle.autoSize = TextFieldAutoSize.LEFT; displayMessage.autoSize = TextFieldAutoSize.LEFT; displayTitle.text = _arg1.toUpperCase(); displayMessage.y = ((displayTitle.y + displayTitle.textHeight) + 16); displayMessage.text = _arg2; if (_arg3){ GTween.defaultEase = Regular.easeOut; alpha = 0; growTween = new GTween(this, 0.5, {alpha:1}); }; }; } } }//package
Section 57
//Insect (Insect) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; public class Insect extends MovieClip { public var animateTimer:Timer; public var speed:Number;// = 8 public var targetFlower:PlantElement; public var directionCount:Number;// = 0 public var landed:Boolean;// = false public var hasFlower:Boolean;// = false public var targetPoint:Point; public static var DONE:String = "done"; public static var FOUNDTARGET:String = "found target"; public function Insect(){ x = (100 + (Math.random() * 50)); y = (100 + (Math.random() * 50)); rotation = (45 + (Math.random() * 90)); animateTimer = new Timer(40, 0); animateTimer.addEventListener(TimerEvent.TIMER, animate); animateTimer.start(); directionCount = 0; } public function animate(_arg1:Event){ var _local2:*; var _local3:Number; _local2 = ((rotation * Math.PI) / 180); x = (x + (Math.cos(_local2) * speed)); y = (y + (Math.sin(_local2) * speed)); directionCount++; if (directionCount > 10){ directionCount = 0; if (hasFlower){ if (Point.distance(targetPoint, new Point(x, y)) < (speed * 6)){ foundTarget(); }; _local3 = Math.atan2((targetPoint.y - y), (targetPoint.x - x)); rotation = ((_local3 * 180) / Math.PI); rotation = (rotation + ((Math.random() * 20) - 10)); } else { rotation = ((Math.random() * 30) - 15); if (x >= 0x0400){ trace("bee off screen"); dispatchEvent(new Event(DONE)); }; }; }; } public function setDone(_arg1:Function, _arg2:Number){ speed = _arg2; addEventListener(Insect.DONE, _arg1); } public function init(_arg1:PlantElement, _arg2:Function){ addEventListener(Insect.FOUNDTARGET, _arg2); hasFlower = true; targetFlower = _arg1; var _local3:Rectangle = _arg1.getBounds(parent); targetPoint = new Point(((_local3.left + _local3.right) / 2), ((_local3.top + _local3.bottom) / 2)); trace(("insect target =" + targetPoint)); } public function foundTarget(){ x = targetPoint.x; y = targetPoint.y; hasFlower = false; rotation = (45 + (Math.random() * 90)); dispatchEvent(new Event(FOUNDTARGET)); dispatchEvent(new Event(DONE)); } public function end(){ animateTimer.stop(); } } }//package
Section 58
//Insecticide (Insecticide) package { import flash.events.*; import flash.utils.*; public class Insecticide extends TimedEvent { public var animateTimer:Timer; public function Insecticide(_arg1:Function){ super(_arg1); } public function animate(_arg1:Event){ x = (x - 15); if (x < 0){ animateTimer.stop(); visible = false; dispatchEvent(new Event(DONE)); }; } override public function show(_arg1:Number){ visible = true; x = 0x0400; animateTimer = new Timer(40, 0); animateTimer.addEventListener(TimerEvent.TIMER, animate); animateTimer.start(); } } }//package
Section 59
//IntroScreen (IntroScreen) package { import flash.display.*; import flash.events.*; import flash.text.*; public class IntroScreen extends MovieClip { public var backToMenu:PlayAsWildPlant; public var nextButton:StartButton; public var farmButton:PlayAsFarmPlant; public var tenMinutes:TextField; public var plantType:String; public var wildInstructions:MovieClip; public var trackball:TextField; public var farmInstructions:MovieClip; private var theTimeOut:TimeOut; public var wildButton:PlayAsWildPlant; public var screenSizeChosen:Boolean;// = true public var farmEnabled:Boolean; public var window:PlayAsWildPlant; public var fullscreen:PlayAsFarmPlant; private var theModel:Model; public function IntroScreen(_arg1:Number, _arg2:Number, _arg3:Model, _arg4:TimeOut){ x = 0; ((_arg1 - width) / 2); y = 0; ((_arg2 - height) / 2); fullscreen.label.text = "Fill the whole screen"; window.label.text = "Stay this size"; fullscreen.addEventListener(MouseEvent.CLICK, choosefullscreen); window.addEventListener(MouseEvent.CLICK, chooseWindow); wildButton.addEventListener(MouseEvent.CLICK, chooseWild); theModel = _arg3; theTimeOut = _arg4; nextButton.addEventListener(MouseEvent.CLICK, startGame); backToMenu.label.text = "Back To Menu"; backToMenu.addEventListener(MouseEvent.CLICK, quitGame); visible = false; farmEnabled = false; } public function startGame(_arg1:Event){ visible = false; farmEnabled = true; dispatchEvent(new Event(View.STARTGAME)); } public function disableFarm(){ farmButton.visible = false; farmButton.removeEventListener(MouseEvent.CLICK, chooseFarm); } public function choosefullscreen(_arg1:Event){ var e = _arg1; if (stage.displayState == StageDisplayState.NORMAL){ try { theModel.webFullScreen = true; stage.displayState = StageDisplayState.FULL_SCREEN; } catch(e:SecurityError) { theModel.webFullScreen = false; trace("an error has occured. please modify the html file to allow fullscreen mode"); }; }; screenSizeChosen = true; choosePlantType(); } public function show(_arg1:Boolean){ if (!screenSizeChosen){ if (!theModel.webVersion){ screenSizeChosen = true; if (!theModel.studio108Version){ stage.displayState = StageDisplayState.FULL_SCREEN; }; }; }; stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); farmInstructions.visible = false; wildInstructions.visible = false; if (((theModel.webVersion) || (theModel.desktop))){ tenMinutes.visible = true; trackball.visible = false; } else { tenMinutes.visible = false; trackball.visible = true; }; backToMenu.visible = false; if (_arg1){ farmEnabled = false; }; visible = true; if (screenSizeChosen){ choosePlantType(); } else { fullscreen.visible = true; window.visible = true; farmButton.visible = false; wildButton.visible = false; nextButton.label.text = "Start"; nextButton.visible = false; }; } public function quitGame(_arg1:Event){ theTimeOut.dispatchEvent(new Event(TimeOut.TIMEOUT)); } public function chooseWild(_arg1:Event){ backToMenu.visible = false; tenMinutes.visible = false; trackball.visible = false; stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); if (((!(theModel.webVersion)) && (!(theModel.desktop)))){ theTimeOut.switchOn(); }; farmButton.visible = false; wildButton.visible = false; nextButton.visible = true; wildInstructions.visible = true; plantType = "Wild"; } public function enableFarm(){ farmButton.visible = true; farmButton.addEventListener(MouseEvent.CLICK, chooseFarm); } private function keyDownHandler(_arg1:KeyboardEvent):void{ trace("key down"); } public function chooseWindow(_arg1:Event){ screenSizeChosen = true; choosePlantType(); } private function choosePlantType(){ fullscreen.visible = false; window.visible = false; farmButton.visible = true; wildButton.visible = true; nextButton.label.text = "Start"; nextButton.visible = false; if (farmEnabled){ enableFarm(); } else { disableFarm(); }; } public function getPlantType():String{ return (plantType); } public function chooseFarm(_arg1:Event){ backToMenu.visible = false; tenMinutes.visible = false; trackball.visible = false; stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); if (((!(theModel.webVersion)) && (!(theModel.desktop)))){ theTimeOut.switchOn(); }; farmButton.visible = false; wildButton.visible = false; nextButton.visible = true; farmInstructions.visible = true; plantType = "Farm"; } } }//package
Section 60
//Irrigation (Irrigation) package { public class Irrigation extends TimedEvent { public function Irrigation(_arg1:Function){ addFrameScript(4, frame5); super(_arg1); } function frame5(){ gotoAndPlay(0); } } }//package
Section 61
//LargeButton (LargeButton) package { import flash.display.*; import flash.text.*; public dynamic class LargeButton extends MovieClip { public var label:TextField; } }//package
Section 62
//Leaf (Leaf) package { import flash.display.*; import flash.geom.*; public class Leaf extends PlantElement { public var graphicFrame:Number; public var arrow1:MovieClip; public var arrow2:MovieClip; public var node1:Meristem; public var flowerPos:MovieClip; public var rotationFrame:Number; public var node2:Meristem; public static var outlinePoints = [new Point(20.9, -62), new Point(0.5, -29.1)]; public function Leaf(_arg1:Sprite, _arg2:Controller, _arg3:Point){ addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4); super(_arg1, _arg2, _arg3); graphicFrame = 1; rotationFrame = 0; elementType = "Leaf"; gotoAndStop((graphicFrame + rotationFrame)); nodeCount = 2; setUpNodes(); } override public function rightDirection(_arg1:Number):Boolean{ if (_arg1 < 0){ _arg1 = (_arg1 + 360); }; if (_arg1 > 359){ _arg1 = (_arg1 - 360); }; return ((((_arg1 > 270)) || ((_arg1 < 90)))); } function frame1(){ } function frame3(){ } override public function setRotation(_arg1:Number){ if (_arg1 < 0){ _arg1 = (_arg1 + 360); }; if (_arg1 > 359){ _arg1 = (_arg1 - 360); }; rotation = _arg1; if ((((rotation >= 0)) && ((rotation < 180)))){ rotationFrame = 0; } else { rotationFrame = 2; }; changeGraphic(); startGrow(); } function frame2(){ } function frame4(){ } override public function setUpNodes(){ flowerPos.visible = false; initNodes([["Leaf", "Stem"], ["Flower"]], 6); } private function changeGraphic(){ gotoAndStop((graphicFrame + rotationFrame)); refreshNodes(); } override public function elementHasGrown(){ trace(("leaf has grown " + name)); graphicFrame = 2; changeGraphic(); } } }//package
Section 63
//LeafReport (LeafReport) package { import flash.display.*; import flash.events.*; import flash.text.*; public class LeafReport extends MovieClip { public var leavesOpen:Number; public var growth:TextField; private var monthData:Object; public var nextMonth:CreateSugar; public var leafIndicator:MovieClip; public var leavesCount:TextField; private var availableWater:Number; private var growthData:Object; public var sugarCreated:Number; public var slider:Slider; public var sunlightBar:ReportDisplay; public var co2Bar:ReportDisplay; public var noOfLeaves:TextField; public var waterBar:ReportDisplay; public var sugarBar:ReportDisplay; public function LeafReport(){ slider.addEventListener(Slider.THUMB_DRAG, sliderChange); slider.addEventListener(Slider.THUMB_RELEASE, sliderUpdate); nextMonth.addEventListener(MouseEvent.CLICK, doneLeaf); nextMonth.label.text = "Make sugar"; } function sliderChange(_arg1:Event):void{ leavesOpen = slider.getValue(); updateValues(); } public function show(_arg1:Number, _arg2:Object, _arg3:Object){ visible = true; dispatchEvent(new Event(View.RESETTIMEOUT)); monthData = _arg2; availableWater = _arg1; growthData = _arg3; noOfLeaves.text = growthData.leaves; leavesOpen = 0; var _local4:* = new Array(); var _local5:* = 0; while (_local5 <= growthData.leaves) { _local4.push([((_local5 / growthData.leaves) * 100), _local5]); _local5++; }; slider.show(); slider.initSlider(false, _local4); slider.setValue(leavesOpen); checkValues(false); updateValues(); nextMonth.visible = (((leavesOpen == growthData.leaves)) || ((availableWater == 0))); } public function hide(){ slider.hide(); visible = false; } private function updateValues(){ var _local1:Number; leafIndicator.leavesOpenDisplay.text = (leafCount(leavesOpen) + " open"); leafIndicator.leavesNumber.text = leavesOpen; leafIndicator.disallowed.visible = false; _local1 = (availableWater - ((leavesOpen * monthData.sunshine) / 4)); var _local2:Number = (leavesOpen * 20); var _local3:Number = ((monthData.sunshine * (growthData.leaves - (growthData.shadedLeaves * 0.5))) / 5); waterBar.set((_local1 / 5), "Water", false, false); if (_local1 < 0){ leafIndicator.disallowed.visible = true; leafIndicator.leavesOpenDisplay.text = (("You don't have enough water to open " + leafCount(leavesOpen)) + ". Try again."); }; co2Bar.set(((leavesOpen * 20) / 2), "Carbon", false, false); sunlightBar.set(_local3, "Sunlight", false, false); sugarCreated = Math.min(_local2, _local3); sugarBar.set(sugarCreated, "Sugar", false, false); } function doneLeaf(_arg1:Event){ trace("done leaf"); leavesOpen = 0; dispatchEvent(new Event(View.RESETTIMEOUT)); dispatchEvent(new Event(Nutrients.SHOWLEAVESOPEN)); dispatchEvent(new Event(Nutrients.DONELEAF)); } private function leafCount(_arg1:Number):String{ if (_arg1 == 1){ return ("1 leaf"); }; return ((_arg1 + " leaves")); } function checkValues(_arg1:Boolean){ var _local3:Number; var _local2:Number = leavesOpen; var _local4:Boolean; do { _local3 = ((availableWater - ((leavesOpen * monthData.sunshine) / 4)) * 5); if ((((_local3 < 0)) && ((leavesOpen > 0)))){ leavesOpen = (leavesOpen - 1); } else { _local4 = true; }; } while (!(_local4)); if (slider.getValue() != leavesOpen){ slider.setValue(leavesOpen); }; } public function showNumber(_arg1:Number):String{ if (_arg1 < 0){ return ("!"); }; return (String(_arg1)); } function sliderUpdate(_arg1:Event):void{ leavesOpen = slider.getValue(); nextMonth.visible = true; checkValues(true); updateValues(); dispatchEvent(new Event(View.RESETTIMEOUT)); } } }//package
Section 64
//Meristem (Meristem) package { import flash.display.*; import flash.events.*; import flash.geom.*; public class Meristem extends MovieClip { public var growPos:Point; public var border1:MovieClip; public var border2:MovieClip; public var border3:MovieClip; public var border4:MovieClip; public var allowedAngles:Array; public var possibleAngles:Array; public var isStem:Boolean; public var highlightGraphic:MovieClip; private var mineralCost; private var sugarCost; public var isFlower:Boolean; public var growType:String; public var allowedTypes:Array; public var flowerEnabled:Boolean; public var typeList:Array; public var upAngleIndex:Number; public var stemEnabled:Boolean; public function Meristem(){ mineralCost = {Root:5, Stem:5, Leaf:5, BigSeed:15, FallOff:2, Flower:10}; sugarCost = {Root:5, Stem:5, Leaf:5, BigSeed:15, FallOff:2, Flower:10}; super(); addEventListener(MouseEvent.MOUSE_OVER, highlightOn); addEventListener(MouseEvent.MOUSE_OUT, highlightOff); highlightOff(); growType = ""; isStem = false; isFlower = false; stemEnabled = true; flowerEnabled = true; } public function getTypes():Array{ var _local1:Array = new Array(); var _local2:* = 0; while (_local2 < typeList.length) { switch (typeList[_local2].elementType){ case "Root": case "Leaf": if (allowedAngles.length > 0){ _local1.push(typeList[_local2]); }; break; case "Stem": if (stemEnabled){ _local1.push(typeList[_local2]); }; break; case "Flower": if (flowerEnabled){ _local1.push(typeList[_local2]); }; break; default: _local1.push(typeList[_local2]); break; }; _local2++; }; return (_local1); } public function draw(){ var _local1:Number; rotation = -(parent.rotation); var _local2:Array = getTypes(); _local1 = 1; while (_local1 <= 4) { setColour(this[("border" + _local1)], 0xFFFFFF); _local1++; }; setColour(highlightGraphic, 16082193); _local1 = 0; while (_local1 < _local2.length) { switch (_local2[_local1].elementType){ case "Leaf": setColour(this["border1"], 0x456100); setColour(this["border4"], 0x456100); setColour(this["border2"], 0x456100); setColour(this["border3"], 0x456100); setColour(highlightGraphic, 0x456100); break; case "Flower": setColour(this["border1"], 15643663); setColour(this["border2"], 15643663); setColour(this["border3"], 15643663); setColour(this["border4"], 15643663); setColour(highlightGraphic, 15643663); break; case "BigSeed": case "FallOff": setColour(this["border3"], 0xFF4C00); setColour(this["border2"], 0xFF4C00); setColour(this["border1"], 0xFF4C00); setColour(this["border4"], 0xFF4C00); setColour(highlightGraphic, 0xFF4C00); break; }; _local1++; }; } public function setTypeList(_arg1:Array, _arg2:Number){ var _local4:String; typeList = new Array(); var _local3:* = 0; while (_local3 < _arg1.length) { _local4 = _arg1[_local3]; if (_local4 == "Root"){ growType = "Root"; }; if (_local4 == "Leaf"){ growType = "Leaf"; }; if (_local4 == "Stem"){ isStem = true; }; if (_local4 == "Flower"){ isFlower = true; }; typeList.push({elementType:_local4, costSugar:sugarCost[_local4], costMinerals:mineralCost[_local4]}); _local3++; }; } public function highlightOn(_arg1:Event){ highlightGraphic.visible = true; } public function setNodeHeight(_arg1:Number){ var _local2:Number; var _local3:String; _local2 = 0; while (_local2 < typeList.length) { _local3 = typeList[_local2].elementType; if ((((_local3 == "Leaf")) || ((_local3 == "Stem")))){ typeList[_local2].costSugar = (sugarCost[_local3] + Math.floor((_arg1 / 2))); typeList[_local2].costMinerals = (mineralCost[_local3] + Math.floor((_arg1 / 2))); }; _local2++; }; } function setColour(_arg1:MovieClip, _arg2:Number){ var _local3:ColorTransform = _arg1.transform.colorTransform; _local3.color = _arg2; _arg1.transform.colorTransform = _local3; } public function generateAngles(_arg1:Number, _arg2:Number){ var _local4:*; trace(("generate angles " + _arg1)); possibleAngles = new Array(); allowedAngles = new Array(); var _local3:* = 1; while (_local3 <= 13) { _local4 = false; if (Math.abs((_local3 - 7)) <= _arg2){ _local4 = true; }; possibleAngles.push({angle:(_arg1 + ((_local3 - 7) * 20)), enable:_local4}); _local3++; }; } public function highlightOff(_arg1:Event=null){ highlightGraphic.visible = false; } public function getTypeName(_arg1:int){ return (typeList[_arg1].elementType); } } }//package
Section 65
//mineralIcon (mineralIcon) package { import flash.display.*; public dynamic class mineralIcon extends MovieClip { } }//package
Section 66
//Model (Model) package { import flash.display.*; import flash.events.*; public class Model extends Sprite { public var shortMonthNames:Array; public var plantType:String; public var growth:Object; public var minerals:Number; public var growThisMonth:Number; public var currentMonth:Number; public var rainfallText:Array; public var sunshine:Array; public var ejectMessage:Boolean; public var webVersion:Boolean;// = true public var seedCount:Number; public var webFullScreen:Boolean;// = false public var beetles:Number; public var desktop:Boolean;// = false public var monthNames:Array; public var ejectThisMonth:Number; public var sunshineText:Array; public var growMessage:Boolean; public var studio108Version:Boolean;// = false public var rainFall:Array; public var sugar:Number; public function Model(){ monthNames = new Array("", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); shortMonthNames = new Array("", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEPT", "OCT", "NOV", "DEC"); rainFall = new Array(0, 68.7, 48.1, 59.2, 54.8, 52.8, 62.1, 53.4, 56.9, 61.4, 68.2, 68, 75.8); sunshine = new Array(0, 48.4, 66.1, 99.8, 134.4, 186.9, 173.1, 179.5, 173.9, 130.8, 100.8, 62.7, 41.5); rainfallText = ["Dry", "Showers", "Heavy rain"]; sunshineText = ["Clouds", "Some sun", "Sunshine"]; super(); reset(); } public function pollinationMonth():Boolean{ return (true); } public function getCurrentMonth():Object{ var _local1:* = new Object(); _local1.name = monthNames[currentMonth]; _local1.shortName = shortMonthNames[currentMonth]; _local1.rain = rainFall[currentMonth]; _local1.sunshine = sunshine[currentMonth]; _local1.rainfallIndex = Math.floor(((_local1.rain - 50) / 5)); _local1.rainfallText = rainfallText[_local1.rainfallIndex]; _local1.sunshineIndex = Math.floor(((_local1.sunshine - 99) / 30)); _local1.sunshineText = sunshineText[_local1.sunshineIndex]; _local1.monthNumber = currentMonth; return (_local1); } public function useResource(_arg1:Number, _arg2:Number){ minerals = (minerals - _arg2); sugar = (sugar - _arg1); dispatchEvent(new Event(View.UPDATE_RESOURCES)); } public function nextMonth(){ currentMonth++; } public function cancelButtonState():Boolean{ return (((!(webVersion)) || (((webVersion) && (webFullScreen))))); } public function noSugar():Boolean{ return ((((((growth.leaves <= 0)) || ((growth.roots <= 0)))) && ((sugar <= 0)))); } public function reset(){ minerals = 10; sugar = 10; currentMonth = 3; seedCount = 0; beetles = 0; ejectMessage = false; growMessage = false; ejectThisMonth = 0; growThisMonth = 0; } public function noMinerals():Boolean{ return ((((growth.roots <= 0)) && ((minerals <= 0)))); } } }//package
Section 67
//Neighbour (Neighbour) package { import flash.display.*; import flash.events.*; import com.gskinner.motion.*; import flash.geom.*; import flash.utils.*; import fl.transitions.easing.*; public class Neighbour extends MovieClip { public var growth:Number; public var waitTimer:Timer; public var wildCanopy:MovieClip; public var shadeheight:Number; private var growTween:GTween; public var canopyMask:MovieClip; private var targetPoint:Point; public static var DONE:String = "done"; public function Neighbour(_arg1:Function){ addEventListener(DONE, _arg1); x = 0; y = 504; shadeheight = y; growth = 0; wildCanopy.y = 0; } public function timesUp(_arg1:TimerEvent){ waitTimer.stop(); dispatchEvent(new Event(DONE)); } public function weed(_arg1:Number){ growth = 0; updateGrowth(); waitTimer = new Timer(_arg1, 1); waitTimer.addEventListener(TimerEvent.TIMER, timesUp); waitTimer.start(); } public function grow(){ if (growth < 4){ trace(("neighbours grow " + growth)); growth++; updateGrowth(); }; } private function updateGrowth(){ var _local1:Number = (-((wildCanopy.height / 4)) * growth); GTween.defaultEase = Regular.easeOut; growTween = new GTween(wildCanopy, 0.5, {y:_local1}); shadeheight = (y + _local1); } } }//package
Section 68
//Nutrients (Nutrients) package { import flash.display.*; import flash.events.*; public class Nutrients extends MovieClip { var leavesOpen:Number; var monthData:Object; var availableWater:Number; var growthData:Object; public var sugarCreated:Number; public var mineralsCreated:Number; public var rootBackground:MovieClip; public var leafReport:LeafReport; public var rootReport:RootReport; private var theModel:Model; public static var DONELEAF = "done roots"; public static var DONE = "Nutrients done"; public static var SHOWLEAVESOPEN = "show leaves open"; public static var SHOWROOTWATER = "show root water"; public static var DONEROOTS = "done roots"; public function Nutrients(_arg1:Number, _arg2:Number, _arg3:View){ x = ((_arg1 - width) / 2); y = 200; theModel = _arg3.theModel; rootReport.addEventListener(Nutrients.DONEROOTS, doneRoots); rootReport.addEventListener(View.RESETTIMEOUT, _arg3.resetTimeOut); leafReport.addEventListener(Nutrients.DONELEAF, doneLeaf); leafReport.addEventListener(View.RESETTIMEOUT, _arg3.resetTimeOut); hide(); } function doneLeaf(_arg1:Event){ sugarCreated = leafReport.sugarCreated; trace("done Nutrients"); dispatchEvent(new Event(Nutrients.DONE)); } public function hide(){ visible = false; } public function doneRoots(_arg1:Event){ rootBackground.visible = false; rootReport.hide(); availableWater = rootReport.availableWater; mineralsCreated = rootReport.mineralsCreated; leafReport.show(availableWater, monthData, growthData); } public function getOpenLeaves():Number{ return (leafReport.leavesOpen); } public function show(_arg1:Object, _arg2:Object, _arg3:String){ visible = true; leafReport.hide(); monthData = _arg1; growthData = _arg2; rootReport.show(monthData, growthData, _arg3, theModel); rootBackground.visible = true; } } }//package
Section 69
//Pest (Pest) package { import flash.events.*; import flash.utils.*; import flash.media.*; public class Pest extends Insect { var chompSound:Sound; var pauseTimer:Timer; public function Pest(){ speed = 10; chompSound = new ChompSound(); } public function pauseDone(_arg1:Event){ rotation = (45 + (Math.random() * 90)); dispatchEvent(new Event(FOUNDTARGET)); animateTimer.start(); } override public function foundTarget(){ x = targetPoint.x; y = targetPoint.y; trace(((("pest x=" + x) + " ") + y)); hasFlower = false; animateTimer.stop(); chompSound.play(); pauseTimer = new Timer(1000, 1); pauseTimer.addEventListener(TimerEvent.TIMER, pauseDone); pauseTimer.start(); } } }//package
Section 70
//PlantElement (PlantElement) package { import flash.display.*; import flash.events.*; import com.gskinner.motion.*; import flash.geom.*; import flash.utils.*; import fl.transitions.easing.*; import fl.motion.easing.*; import fl.transitions.*; public class PlantElement extends MovieClip { private var angles:Number; public var container:Sprite; public var animateTimer:Timer; public var pushElement:PlantElement; public var fallSpeed:Point; public var pushAmount:Point; private var growTween:GTween; public var nodeCount:int; public var growAngleIndex:Number; private var shadowFilter:Array; public var growNode:Meristem; public var heightOfElement:Number;// = 0 public var lastScale:Number; public var pushUp:Boolean;// = false public var elementType:String; public var clickedMeristem:Meristem; public var theController:Controller; public var parentElement:PlantElement; public var nodeIndex:Number; public var children:Array; public static var ANIMATEDONE:String = "animate done"; public function PlantElement(_arg1:Sprite, _arg2:Controller, _arg3:Point){ container = _arg1; theController = _arg2; children = new Array(); x = _arg3.x; y = _arg3.y; addEventListener(PlantElement.ANIMATEDONE, theController.elementGrowFinished); addEventListener(MouseEvent.CLICK, doNewCheck); } public function animateFall(_arg1:Event){ x = (x + fallSpeed.x); y = (y + fallSpeed.y); fallSpeed.y = (fallSpeed.y + 1); if (y > 0){ animateTimer.stop(); animateTimer = new Timer(1000, 0); animateTimer.addEventListener(TimerEvent.TIMER, removeNode); animateTimer.start(); }; } private function setNodeHeights(){ var _local1:* = 1; while (_local1 <= nodeCount) { this[("node" + _local1)].setNodeHeight(heightOfElement); _local1++; }; } public function setRotation(_arg1:Number){ rotation = _arg1; } public function addChildElement(_arg1:PlantElement){ children.push(_arg1); _arg1.setParent(this); } public function setUpNodes(){ } public function startGrow(){ GTween.defaultEase = Regular.easeOut; scaleX = 0; scaleY = 0; growTween = new GTween(this, 0.5, {scaleX:1, scaleY:1}); growTween.addEventListener(Event.COMPLETE, doneGrow); growTween.addEventListener(Event.CHANGE, growProgress); } public function refreshNodes(){ var _local2:*; var _local1:* = 1; while (_local1 <= nodeCount) { _local2 = this[("arrow" + _local1)].rotation; this[("node" + _local1)].generateAngles(_local2, angles); this[("node" + _local1)].x = this[("arrow" + _local1)].x; this[("node" + _local1)].y = this[("arrow" + _local1)].y; this[("node" + _local1)].growPos = new Point(this[("arrow" + _local1)].x, this[("arrow" + _local1)].y); _local1++; }; } public function initNodes(_arg1:Array, _arg2:Number){ angles = _arg2; var _local3:* = 1; while (_local3 <= nodeCount) { this[("node" + _local3)].addEventListener(MouseEvent.MOUSE_DOWN, nodeClick); this[("arrow" + _local3)].visible = false; this[("node" + _local3)].visible = false; this[("node" + _local3)].enabled = true; this[("node" + _local3)].setTypeList(_arg1[(_local3 - 1)], heightOfElement); _local3++; }; refreshNodes(); } public function checkNodes(){ var _local1:Boolean; var _local2:Number = 1; while (_local2 <= nodeCount) { checkNode(this[("node" + _local2)]); _local1 = (this[("node" + _local2)].getTypes().length > 0); this[("node" + _local2)].visible = ((_local1) && (this[("node" + _local2)].enabled)); this[("node" + _local2)].draw(); _local2++; }; } public function nodeClick(_arg1:MouseEvent){ var _local2:Number; clickedMeristem = (_arg1.currentTarget as Meristem); var _local3:Point = toContainer(clickedMeristem.growPos); if (clickedMeristem.allowedAngles.length > 0){ growAngleIndex = clickedMeristem.allowedAngles[clickedMeristem.upAngleIndex]; _local2 = clickedMeristem.possibleAngles[growAngleIndex].angle; } else { _local2 = 0; growAngleIndex = 0; }; theController.addEventListener(Controller.DONEGROW, nodeHasGrown); theController.addEventListener(Controller.CANCELGROW, nodeNotGrown); theController.growNew(_local3, _local2, clickedMeristem.getTypes(), this, clickedMeristem); } public function checkNode(_arg1){ var _local2:Array; var _local3:PlantElement; var _local4:Boolean; var _local5:Number; var _local7:*; var _local8:*; if (_arg1.growType == "Root"){ _local5 = 180; } else { _local5 = 0; }; var _local6:Point = toContainer(_arg1.growPos); if (_arg1.isStem){ _arg1.stemEnabled = theController.stemOk(this, _local6); }; if (_arg1.isFlower){ _arg1.flowerEnabled = theController.newElementOk("Flower", _local6, 0, nodeIndex); } else { _arg1.allowedAngles = new Array(); _arg1.upAngleIndex = 0; _local7 = 0; while (_local7 < _arg1.possibleAngles.length) { if (_arg1.possibleAngles[_local7].enable){ _local8 = (_arg1.possibleAngles[_local7].angle + this.rotation); if (rightDirection(_local8)){ if ((((_arg1.growType == "Leaf")) || ((_arg1.growType == "Root")))){ if (theController.newElementOk(_arg1.growType, _local6, _local8, -1)){ _arg1.allowedAngles.push(_local7); if (Math.abs((_local8 - _local5)) < Math.abs((_arg1.possibleAngles[_arg1.allowedAngles[_arg1.upAngleIndex]].angle + this.rotation))){ _arg1.upAngleIndex = (_arg1.allowedAngles.length - 1); }; }; } else { _arg1.allowedAngles.push(_local7); if (Math.abs(_local8) < Math.abs((_arg1.possibleAngles[_arg1.allowedAngles[_arg1.upAngleIndex]].angle + this.rotation))){ _arg1.upAngleIndex = (_arg1.allowedAngles.length - 1); }; }; }; }; _local7++; }; }; } public function doneGrow(_arg1:Event){ refreshNodes(); dispatchEvent(new Event(PlantElement.ANIMATEDONE)); } public function setParent(_arg1:PlantElement){ parentElement = _arg1; heightOfElement = (_arg1.heightOfElement + 1); setNodeHeights(); } public function getFlowerPos(_arg1:Meristem):Point{ return (toContainer(new Point(_arg1.x, _arg1.y))); } public function toContainer(_arg1:Point):Point{ var _local2:Point = this.localToGlobal(_arg1); _local2 = container.globalToLocal(_local2); return (_local2); } public function initPush(_arg1:PlantElement){ pushAmount = getEndPoint(); pushElement = _arg1; lastScale = 0; } public function moveUp(_arg1:Point){ x = (x + _arg1.x); y = (y + _arg1.y); var _local2:* = 0; while (_local2 < children.length) { children[_local2].moveUp(_arg1); _local2++; }; } public function nodeNotGrown(_arg1:Event){ theController.removeEventListener(Controller.DONEGROW, nodeHasGrown); theController.removeEventListener(Controller.CANCELGROW, nodeNotGrown); } public function rightDirection(_arg1:Number):Boolean{ return (true); } public function removeNode(_arg1:Event){ animateTimer.stop(); dispatchEvent(new Event(Controller.REMOVE_ELEMENT)); } public function getPoints():Array{ var _local1:* = new Array(); var _local2:* = 1; while (_local2 <= nodeCount) { _local1.push(toContainer(new Point(this[("node" + _local2)].x, this[("node" + _local2)].y))); _local2++; }; return (_local1); } public function elementHasGrown(){ } public function nodeHasGrown(_arg1:Event){ theController.removeEventListener(Controller.DONEGROW, nodeHasGrown); theController.removeEventListener(Controller.CANCELGROW, nodeNotGrown); if (theController.newGrowth.elementType == "Flower"){ clickedMeristem.enabled = false; }; elementHasGrown(); } public function removeChildElement(_arg1:PlantElement){ var _local2:* = children.indexOf(_arg1); if (_local2 != -1){ children.splice(_local2, 1); }; } public function growProgress(_arg1:Event){ } public function doNewCheck(_arg1:MouseEvent){ trace(((("This nodes is " + name) + " index=") + nodeIndex)); } public function getLocalPoints(_arg1:Number, _arg2:String):Array{ var _local3:Matrix = new Matrix(); _local3.rotate(((Math.PI / 180) * _arg1)); var _local4:* = new Array(); var _local5:Class = (getDefinitionByName(_arg2) as Class); var _local6:* = _local5["outlinePoints"]; var _local7:* = 0; while (_local7 < _local6.length) { _local4.push(_local3.transformPoint(_local6[_local7])); _local7++; }; return (_local4); } public function displayAllNodes(_arg1:Boolean){ var _local2:* = 1; while (_local2 <= nodeCount) { this[("node" + _local2)].visible = _arg1; if (_arg1){ this[("node" + _local2)].draw(); }; _local2++; }; } public function getEndPoint():Point{ return (new Point(0, 0)); } public function fall(){ animateTimer = new Timer(40, 0); animateTimer.addEventListener(TimerEvent.TIMER, animateFall); animateTimer.start(); fallSpeed = new Point(12, -5); if (x < 450){ fallSpeed = new Point(-12, -5); }; } } }//package
Section 71
//PlantLimit (PlantLimit) package { import flash.display.*; public dynamic class PlantLimit extends MovieClip { } }//package
Section 72
//PlayAgain (PlayAgain) package { public dynamic class PlayAgain extends GreyButton { } }//package
Section 73
//PlayAsFarmPlant (PlayAsFarmPlant) package { public dynamic class PlayAsFarmPlant extends GreyButton { } }//package
Section 74
//PlayAsWildPlant (PlayAsWildPlant) package { public dynamic class PlayAsWildPlant extends GreyButton { } }//package
Section 75
//QuitDialog (QuitDialog) package { import flash.display.*; import flash.events.*; import flash.text.*; public class QuitDialog extends MovieClip { public var eject:Boolean; public var doAll:PlayAsWildPlant; public var advice:TextField; public var cancel:PlayAsWildPlant; public var title:TextField; public function QuitDialog(){ visible = false; cancel.addEventListener(MouseEvent.CLICK, onContinue); doAll.addEventListener(MouseEvent.CLICK, onQuit); doAll.label.text = "End the game"; cancel.label.text = "Continue the game"; } public function onContinue(_arg1:MouseEvent){ visible = false; } public function hide(){ visible = false; } public function onQuit(_arg1:MouseEvent){ visible = false; dispatchEvent(new Event(TimeOut.TIMEOUT)); } public function show(){ visible = true; } } }//package
Section 76
//RainSound (RainSound) package { import flash.media.*; public dynamic class RainSound extends Sound { } }//package
Section 77
//ReportDisplay (ReportDisplay) package { public dynamic class ReportDisplay extends BarDisplay { } }//package
Section 78
//Root (Root) package { import flash.display.*; import flash.geom.*; public class Root extends PlantElement { public var graphicFrame:Number; public var arrow1:MovieClip; public var arrow2:MovieClip; public var node1:Meristem; public var node2:Meristem; public static var outlinePoints = [new Point(-13.8, -47.5), new Point(0.7, -23.1)]; public function Root(_arg1:Sprite, _arg2:Controller, _arg3:Point){ super(_arg1, _arg2, _arg3); graphicFrame = 1; elementType = "Root"; changeGraphic(); setUpNodes(); } override public function rightDirection(_arg1:Number):Boolean{ if (_arg1 < 0){ _arg1 = (_arg1 + 360); }; if (_arg1 > 359){ _arg1 = (_arg1 - 360); }; return ((((_arg1 > 90)) && ((_arg1 < 270)))); } override public function setRotation(_arg1:Number){ rotation = _arg1; if ((Math.floor(rotation) % 2) == 0){ graphicFrame = 1; } else { graphicFrame = 2; }; changeGraphic(); startGrow(); } override public function setUpNodes(){ nodeCount = 2; initNodes([["Root"], ["Root"]], 1); } private function changeGraphic(){ gotoAndStop(graphicFrame); } } }//package
Section 79
//RootReport (RootReport) package { import flash.display.*; import flash.events.*; import flash.text.*; public class RootReport extends MovieClip { public var month:TextField; public var nextButton:AbsorbWaterMinerals; public var mineralReport:TextField; public var availableWater:Number; private var monthData:Object; private var growthData:Object; private var plantType:String; public var mineralsCreated:Number; public var rootGraphic:MovieClip; public var leafButton:CreateSugar; public var leafReport:TextField; public var report:TextField; public var rootReport:TextField; private var theModel:Model; public function RootReport(){ leafButton.addEventListener(MouseEvent.CLICK, doneRoots); leafButton.label.text = "Create sugar"; nextButton.label.text = "Absorb minerals and water"; nextButton.addEventListener(MouseEvent.CLICK, doRoots); } public function hide(){ visible = false; } public function doRoots(_arg1:Event){ dispatchEvent(new Event(View.RESETTIMEOUT)); leafButton.visible = true; nextButton.visible = false; rootGraphic.visible = true; rootReport.visible = true; rootReport.visible = true; availableWater = (monthData.rain * growthData.roots); mineralReport.visible = true; if (plantType == "Farm"){ mineralsCreated = (growthData.roots * 20); } else { mineralsCreated = (growthData.roots * 15); }; if (growthData.beetlesFound > 0){ mineralsCreated = (mineralsCreated + (growthData.beetlesFound * 20)); }; rootGraphic.waterBar.set((availableWater / 5), "Water", false, false); rootGraphic.mineralBar.set(mineralsCreated, "DarkMinerals", false, false); theModel.useResource(0, Math.round(-(mineralsCreated))); } function doneRoots(_arg1:Event){ trace("done roots"); dispatchEvent(new Event(Nutrients.DONEROOTS)); } public function show(_arg1:Object, _arg2:Object, _arg3:String, _arg4:Model){ var _local5:String; var _local6:String; visible = true; theModel = _arg4; monthData = _arg1; growthData = _arg2; plantType = _arg3; mineralReport.text = ""; month.text = ("IN " + monthData.name.toUpperCase()); rootGraphic.y = 205; mineralReport.autoSize = TextFieldAutoSize.LEFT; mineralReport.text = ""; report.htmlText = (((("The weather was mainly <font face='DINOT-Bold'>" + monthData.rainfallText.toLowerCase()) + "</font> with <font face='DINOT-Bold'>") + monthData.sunshineText.toLowerCase()) + "</font>"); if (_arg3 == "Farm"){ mineralReport.appendText("The farmer watered you which lets you absorb more water\n"); monthData.rain = (monthData.rain + 20); }; if (growthData.beetlesFound > 0){ mineralReport.appendText("Your roots have found some dead beetles which gives you extra minerals\n"); }; rootGraphic.y = ((mineralReport.y + mineralReport.textHeight) + 20); if (growthData.roots == 1){ _local5 = "You have <font face='DINOT-Bold'>1</font> root which can absorb water and minerals"; } else { _local5 = (("You have <font face='DINOT-Bold'>" + growthData.roots) + "</font> roots which can absorb water and minerals"); }; rootReport.htmlText = _local5; if (growthData.leaves == 1){ _local6 = "You have <font face='DINOT-Bold'>1</font> leaf which can absorb sunlight and Carbon Dioxide"; if (growthData.shadedLeaves == 1){ _local6 = (_local6 + "\nbut it is shaded by other plants and doesn't get much sun"); }; } else { _local6 = (("You have <font face='DINOT-Bold'>" + growthData.leaves) + "</font> leaves which can absorb sunlight and Carbon Dioxide"); if (growthData.shadedLeaves == 1){ _local6 = (_local6 + ((",\nbut <font face='DINOT-Bold'>" + growthData.shadedLeaves) + "</font> is shaded by other plants and doesn't get much sun")); }; if (growthData.shadedLeaves > 1){ _local6 = (_local6 + ((",\nbut <font face='DINOT-Bold'>" + growthData.shadedLeaves) + "</font> are shaded by other plants and don't get much sun")); }; }; leafReport.htmlText = _local6; leafButton.visible = false; nextButton.visible = true; rootGraphic.visible = false; rootReport.visible = true; leafReport.visible = true; mineralReport.visible = false; } } }//package
Section 80
//Seed (Seed) package { import flash.display.*; import flash.geom.*; public class Seed extends PlantElement { public var arrow1:MovieClip; public var node1:Meristem; public function Seed(_arg1:Sprite, _arg2:Controller, _arg3:Point){ super(_arg1, _arg2, _arg3); nodeCount = 1; elementType = "Seed"; initNodes([["BigSeed", "FallOff"]], 0); node1.visible = false; } override public function setRotation(_arg1:Number){ rotation = 0; if (parentElement.rotation < 0){ scaleX = 1; } else { scaleX = -1; }; } override public function checkNode(_arg1){ } } }//package
Section 81
//SimPlant (SimPlant) package { import fl.controls.*; import flash.display.*; import flash.events.*; import flash.net.*; public class SimPlant extends Sprite { public var resetButton:Button; public var rootNode:PlantElement; private var theController:Controller; private var nodes:Array; private var theView:View; private var theGrid:Grid; private var theModel:Model; public function SimPlant(){ theController = new Controller(); addEventListener(Event.ADDED_TO_STAGE, init); } public function quitGame(_arg1:Event){ trace("Game quitting"); var _local2:LocalConnection = new LocalConnection(); _local2.send("AVM2toAVM1", "finishGame"); } private function init(_arg1:Event){ trace("added to stage"); theModel = new Model(); theView = new View(theModel); theView.setController(theController); addChild(theView); theView.addEventListener(View.QUITGAME, quitGame); theController.init(theView, theModel); } } }//package
Section 82
//Slider (Slider) package { import flash.display.*; import flash.events.*; public class Slider extends MovieClip { public var analogue:Boolean; public var arrow:MovieClip; public var valueRange:Number; public var pointList:Object; protected var moving:Boolean; protected var speed:Number;// = 0 public var measure:MovieClip; protected var targetValue:Number; public var quarter:MovieClip; public var maxValue:Number; public var threeQuarter:MovieClip; public var leftX:Number; public var half:MovieClip; public var buttonDown:Boolean; protected var lastValue:Number; public var rightX:Number; public var minValue:Number; public static var THUMB_DRAG = "Thumb drag"; public static var THUMB_RELEASE = "Thumb release"; public function Slider(){ mouseChildren = false; leftX = (this.measure.x + (this.arrow.width / 2)); rightX = ((this.measure.x + this.measure.width) - (this.arrow.width / 2)); setArrow(this.arrow.x); buttonDown = false; addEventListener(MouseEvent.MOUSE_DOWN, onPress); addEventListener(MouseEvent.MOUSE_UP, chooseValue); addEventListener(MouseEvent.MOUSE_OUT, chooseValue); } public function hide(){ visible = false; removeEventListener(Event.ENTER_FRAME, onEnterFrame); } public function getValue(){ var _local1:Array; if (analogue == false){ _local1 = findSlot(); return (_local1[1]); }; return (getValue()); } public function setArrow(_arg1){ this.arrow.x = _arg1; } public function initSlider(_arg1, _arg2){ analogue = _arg1; if (analogue){ maxValue = _arg2["max"]; minValue = _arg2["min"]; valueRange = (maxValue - minValue); } else { pointList = _arg2; minValue = pointList[0][1]; maxValue = pointList[(pointList.length - 1)][1]; valueRange = (maxValue - minValue); }; half.visible = false; quarter.visible = false; threeQuarter.visible = false; } public function getArrow(){ return ((this.arrow.x + (this.arrow.width / 2))); } public function findSlot():Array{ var _local1:*; var _local2:*; var _local3:*; var _local4:*; var _local5:*; _local1 = (((getArrow() - leftX) / (rightX - leftX)) * 100); _local4 = 100; _local5 = 0; while (_local5 < pointList.length) { if (Math.abs((pointList[_local5][0] - _local1)) < _local4){ _local4 = Math.abs((pointList[_local5][0] - _local1)); _local2 = pointList[_local5]; }; _local5++; }; return (_local2); } public function onEnterFrame(_arg1:Event){ if (buttonDown){ trace(((((("mouseX=" + this.mouseX) + " left=") + leftX) + " rightX=") + rightX)); setArrow(this.mouseX); dispatchEvent(new Event(THUMB_DRAG)); }; } public function onPress(_arg1:MouseEvent){ trace(("mouse event " + _arg1.type)); lastValue = getArrow(); buttonDown = true; } private function moveToCorrectPosition(){ var _local1:Array; targetValue = this.arrow.x; buttonDown = false; if (analogue == false){ _local1 = findSlot(); targetValue = (leftX + ((rightX - leftX) * (_local1[0] / 100))); }; setArrow(targetValue); } public function chooseValue(_arg1:MouseEvent=null){ trace(("mouse event " + _arg1.type)); if (buttonDown){ moveToCorrectPosition(); dispatchEvent(new Event(THUMB_RELEASE)); }; } public function setValue(_arg1:Number){ var _local3:Number; var _local2:Number = 9999; var _local4:* = 0; while (_local4 < pointList.length) { if (Math.abs((pointList[_local4][1] - _arg1)) < _local2){ _local2 = Math.abs((pointList[_local4][1] - _arg1)); _local3 = pointList[_local4][0]; }; _local4++; }; setArrow((leftX + ((_local3 / 100) * (rightX - leftX)))); moveToCorrectPosition(); } public function show(){ visible = true; addEventListener(Event.ENTER_FRAME, onEnterFrame); } } }//package
Section 83
//SmallButton (SmallButton) package { import flash.display.*; import flash.text.*; public dynamic class SmallButton extends MovieClip { public var label:TextField; } }//package
Section 84
//SmallDisplayMark (SmallDisplayMark) package { import flash.display.*; public dynamic class SmallDisplayMark extends MovieClip { } }//package
Section 85
//StartButton (StartButton) package { public dynamic class StartButton extends GreyButton { } }//package
Section 86
//StatusBarDisplay (StatusBarDisplay) package { public dynamic class StatusBarDisplay extends BarDisplay { } }//package
Section 87
//StatusDisplay (StatusDisplay) package { import flash.display.*; import flash.events.*; import flash.text.*; public class StatusDisplay extends MovieClip { public var rainLabel:TextField; public var runningScore1:TextField; public var wildLabel:MovieClip; public var sunshineLabel:TextField; public var monthsLeft1:TextField; public var monthsLeft2:TextField; public var farmLabel:MovieClip; public var mineralAmount:StatusBarDisplay; public var sunIcon:MovieClip; public var monthName1:TextField; public var monthName2:TextField; public var rainIcon:MovieClip; public var rainLabel2:TextField; public var sugarAmount:StatusBarDisplay; public var sunshineLabel2:TextField; public var runningScore2:TextField; public function StatusDisplay(_arg1:Number){ updateResources(10, 10); } public function hide(){ visible = false; } public function updateMonth(_arg1:Model){ var _local2:String; var _local3:* = _arg1.getCurrentMonth(); var _local4:* = (9 - _local3.monthNumber); if (_local4 == 1){ _local2 = "1 month left"; } else { _local2 = (_local4 + " months left"); }; monthsLeft1.text = _local2; monthsLeft2.text = _local2; monthName1.text = _local3.shortName; monthName2.text = _local3.shortName; rainLabel.text = _local3.rainfallText; sunshineLabel.text = _local3.sunshineText; rainLabel2.text = _local3.rainfallText; sunshineLabel2.text = _local3.sunshineText; rainIcon.gotoAndStop((_local3.rainfallIndex + 1)); sunIcon.gotoAndStop((_local3.sunshineIndex + 1)); } public function update(_arg1:Model){ updateResources(_arg1.sugar, _arg1.minerals); updateMonth(_arg1); updateType(_arg1.plantType); updateRunningScore(_arg1); } public function updateRunningScore(_arg1:Model){ if (_arg1.plantType == "Farm"){ runningScore1.text = (_arg1.growth.bigSeeds + " large seeds on the plant"); } else { runningScore1.text = (_arg1.seedCount + " seeds ejected"); }; runningScore2.text = runningScore1.text; } public function show(){ visible = true; } public function updateResources(_arg1:Number, _arg2:Number){ sugarAmount.set(_arg1, "Sugar", true, true, false); mineralAmount.set(_arg2, "Minerals", true, true, false); } public function hilightResources(){ } public function updateType(_arg1:String){ if (_arg1 == "Farm"){ wildLabel.visible = false; farmLabel.visible = true; } else { wildLabel.visible = true; farmLabel.visible = false; }; } } }//package
Section 88
//Stem (Stem) package { import flash.display.*; import flash.events.*; import flash.geom.*; public class Stem extends PlantElement { public var graphicFrame:Number; public var arrow1:MovieClip; public var node1:Meristem; public static var outlinePoints = [new Point(20.9, -62), new Point(0.5, -29.1)]; public function Stem(_arg1:Sprite, _arg2:Controller, _arg3){ super(_arg1, _arg2, _arg3); pushUp = true; elementType = "Stem"; setUpNodes(); } override public function setRotation(_arg1:Number){ rotation = _arg1; if ((Math.floor(rotation) % 2) == 0){ graphicFrame = 1; } else { graphicFrame = 2; }; changeGraphic(); startGrow(); } override public function rightDirection(_arg1:Number):Boolean{ if (_arg1 < 0){ _arg1 = (_arg1 + 360); }; if (_arg1 > 359){ _arg1 = (_arg1 - 360); }; return ((((_arg1 < 90)) || ((_arg1 > 270)))); } override public function growProgress(_arg1:Event){ var _local2:Number = (scaleX - lastScale); lastScale = scaleX; var _local3:Point = new Point((pushAmount.x * _local2), (pushAmount.y * _local2)); pushElement.moveUp(_local3); } override public function getEndPoint():Point{ var _local1:* = [{x:0, y:-45.2}, {x:4.5, y:-68.3}]; var _local2:* = _local1[(graphicFrame - 1)].x; var _local3:* = _local1[(graphicFrame - 1)].y; var _local4:* = new Point(); var _local5:* = ((rotation * Math.PI) / 180); _local4.x = ((_local2 * Math.cos(_local5)) - (_local3 * Math.sin(_local5))); _local4.y = ((_local2 * Math.sin(_local5)) + (_local3 * Math.cos(_local5))); return (_local4); } public function enableNode(){ this["node1"].enabled = true; } override public function setUpNodes(){ nodeCount = 1; initNodes([["Leaf"]], 6); this["node1"].enabled = false; } private function changeGraphic(){ gotoAndStop(graphicFrame); } } }//package
Section 89
//sugarIcon (sugarIcon) package { import flash.display.*; public dynamic class sugarIcon extends MovieClip { } }//package
Section 90
//sunlightIcon (sunlightIcon) package { import flash.display.*; public dynamic class sunlightIcon extends MovieClip { } }//package
Section 91
//TabDisplay (TabDisplay) package { public dynamic class TabDisplay extends BarDisplay { } }//package
Section 92
//TestElements (TestElements) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; public class TestElements extends Sprite { private var testElements:Object; private var elementList:Array; public function TestElements(_arg1){ var _local3:Class; var _local4:*; elementList = ["Leaf", "Root", "Stem", "Flower"]; super(); testElements = new Object(); var _local2:* = 0; while (_local2 < elementList.length) { _local3 = (getDefinitionByName(("Test" + elementList[_local2])) as Class); _local4 = (new _local3(this, _arg1, new Point(0, 0)) as PlantElement); addChild(_local4); _local4.visible = false; testElements[elementList[_local2]] = _local4; _local4.gotoAndStop(0); _local2++; }; } public function getTest(_arg1, _arg2, _arg3, _arg4):PlantElement{ var _local5:PlantElement; _local5 = testElements[_arg1]; _local5.x = _arg2; _local5.y = _arg3; _local5.setRotation(_arg4); return (_local5); } } }//package
Section 93
//TestFlower (TestFlower) package { import flash.display.*; import flash.geom.*; public class TestFlower extends Flower { public function TestFlower(_arg1:Sprite, _arg2:Controller, _arg3:Point){ super(_arg1, _arg2, _arg3); } override public function setUpNodes(){ nodeCount = 0; } override public function startGrow(){ } } }//package
Section 94
//TestLeaf (TestLeaf) package { import flash.display.*; import flash.geom.*; public class TestLeaf extends Leaf { public var testnode1:Meristem; public function TestLeaf(_arg1:Sprite, _arg2:Controller, _arg3:Point){ super(_arg1, _arg2, _arg3); } override public function setUpNodes(){ nodeCount = 0; } override public function startGrow(){ } } }//package
Section 95
//TestRoot (TestRoot) package { import flash.display.*; import flash.geom.*; public class TestRoot extends Root { public static var outlinePoints = [new Point(-13.8, -47.5), new Point(0.7, -23.1)]; public function TestRoot(_arg1:Sprite, _arg2:Controller, _arg3:Point){ super(_arg1, _arg2, _arg3); } override public function setUpNodes(){ nodeCount = 0; } override public function startGrow(){ } } }//package
Section 96
//TestStem (TestStem) package { import flash.display.*; public class TestStem extends Stem { public function TestStem(_arg1:Sprite, _arg2:Controller, _arg3){ super(_arg1, _arg2, _arg3); } override public function setUpNodes(){ nodeCount = 0; } override public function startGrow(){ } } }//package
Section 97
//TimedEvent (TimedEvent) package { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.media.*; public class TimedEvent extends MovieClip { public var waitTimer:Timer; public var soundChannel:SoundChannel;// = null public static var DONE:String = "done"; public function TimedEvent(_arg1:Function){ x = ((0x0400 - width) / 2); y = (((0x0300 - height) / 2) - 80); visible = false; addEventListener(DONE, _arg1); } public function timesUp(_arg1:TimerEvent){ if (soundChannel != null){ soundChannel.stop(); }; visible = false; dispatchEvent(new Event(DONE)); } public function show(_arg1:Number){ visible = true; waitTimer = new Timer(_arg1, 1); waitTimer.addEventListener(TimerEvent.TIMER, timesUp); waitTimer.start(); } } }//package
Section 98
//TimeOut (TimeOut) package { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.text.*; public class TimeOut extends MovieClip { private var startTime:Number; private var countDown:Number; public var displayText:TextField; private var state:String; private var checkTimer:Timer; public var title:TextField; private var text1:String; private var text2:String; private var visibleTime:Number; private var timeLimit:Number; private var countDownText:String; public static const RESET_TIMEOUT:String = "resetTimeOut"; public static const TIMEOUT:String = "timeOut"; public function TimeOut(){ checkTimer = new Timer(100, 0); checkTimer.addEventListener("timer", doCheck); addEventListener(MouseEvent.MOUSE_DOWN, reset); trace("starting timeout"); off(); } public function switchOn(){ checkTimer.start(); state = "counting"; reset(); } public function doCheck(_arg1:Object){ if (state == "counting"){ if ((getTimer() - startTime) > (timeLimit * 1000)){ doTimeOut(); visibleTime = getTimer(); }; }; if (state == "visible"){ countDown = (10 - Math.floor(((getTimer() - this.visibleTime) / 1000))); this["displayText"].text = ((((text1 + " ") + countDown) + " ") + text2); if (countDown < 1){ trace("send timeout message"); off(); dispatchEvent(new Event(TimeOut.TIMEOUT)); }; }; } public function doTimeOut(){ visible = true; state = "visible"; } public function reset(_arg1:Object=undefined){ startTime = getTimer(); if (state == "visible"){ state = "counting"; }; visible = false; } public function off(){ checkTimer.stop(); state = "off"; visible = false; } public function setup(_arg1){ countDownText = ""; timeLimit = _arg1; text1 = "Click on the screen or I'll reset in"; text2 = "seconds"; } } }//package
Section 99
//TopTips (TopTips) package { public class TopTips { private var farmTipList:Array; private var plantType:String; private var theTipList:Array; private var wildTipList:Array; public function TopTips(){ wildTipList = [{title:"Click on the crosses to grow your plant", text:"Try and get the right balance of roots and leaves. Roots collect water and minerals. Leaves collect light and carbon dioxide."}, {title:"Growing the plant uses sugar and minerals", text:"The top right of the screen shows you how much you've got left."}, {title:"Smart plant tip", text:"Grow a mixture of\nroots and leaves."}, {title:"Smart plant tip", text:"Don't grow flowers until the last few months, save your energy for roots and leaves."}, {title:"Smart plant tip", text:"Grow your leaves higher than your neighbours so they're not shaded."}, {title:"Smart plant tip", text:"Grow your roots to the dead beetles to get extra minerals."}, {title:"Smart plant tip", text:"Don't grow too many stems\nsave your resouces for\nroots and leaves."}, {title:"Smart plant tip", text:"Don't grow big seeds - save your resources for roots and leaves."}, {title:"Smart plant tip", text:"Remember to eject all your seeds so they can grow new plants."}]; farmTipList = [{title:"Click on the crosses to grow your plant", text:"Try and get the right balance of roots and leaves. Roots collect water and minerals. Leaves collect light and carbon dioxide."}, {title:"Growing the plant uses sugar and minerals", text:"The top right of the screen shows you how much you've got left."}, {title:"Smart plant tip", text:"Grow a mixture of\nroots and leaves."}, {title:"Smart plant tip", text:"Don't grow flowers until the last few months, save your energy for roots and leaves."}, {title:"Smart plant tip", text:"Don't worry about growing high, your neighbours will be removed by the farmer."}, {title:"Smart plant tip", text:"Don't worry about getting minerals from dead beetles, the farmer has fertilised you."}, {title:"Smart plant tip", text:"Don't eject your seeds, the farmer wants them on the plant."}, {title:"Smart plant tip", text:"Make sure you grow all your seeds."}]; super(); } public function reset(_arg1:String){ plantType = _arg1; resetTips(wildTipList); resetTips(farmTipList); if (plantType == "Wild"){ theTipList = wildTipList; } else { theTipList = farmTipList; }; } public function getTip(_arg1:Model):Object{ var _local4:Object; var _local2:Number = 0; var _local3:Boolean; while ((((_local2 < theTipList.length)) && (!(_local3)))) { if (!theTipList[_local2].done){ if (plantType == "Wild"){ _local3 = getWildTip(_local2, _arg1); } else { _local3 = getFarmTip(_local2, _arg1); }; }; _local2++; }; _local2--; if (_local3){ theTipList[_local2].done = true; return (theTipList[_local2]); }; return ({title:"", text:""}); } public function resetTips(_arg1:Array){ var _local2:Number = 0; while (_local2 < _arg1.length) { _arg1[_local2].done = false; _local2++; }; } private function getFarmTip(_arg1:Number, _arg2:Model):Boolean{ var _local3:Object; var _local4:Number; var _local5:Number; _local3 = _arg2.growth; switch (_arg1){ case 0: return (true); case 1: return (true); case 2: _local4 = (_local3.leaves / (_local3.roots + 0.0001)); if ((((_local4 > 3)) || ((_local4 < 0.3)))){ return (true); }; break; case 3: _local5 = (_local3.seeds + _local3.bigSeeds); if ((((_local5 > 0)) && ((_arg2.currentMonth <= 6)))){ return (true); }; break; case 4: _local4 = (_local3.leaves / (_local3.stem + 0.0001)); if (_local4 < 2){ return (true); }; break; case 5: if (_local3.beetlesFound > 1){ return (true); }; break; case 6: if (_arg2.seedCount > 0){ return (true); }; break; case 7: if (_local3.seeds > 0){ return (true); }; break; }; return (false); } public function getParticularTip(_arg1:Number, _arg2){ if (!theTipList[_arg1].done){ theTipList[_arg1].done = true; return (theTipList[_arg1]); }; return ({title:"", text:""}); } private function getWildTip(_arg1:Number, _arg2:Model):Boolean{ var _local3:Object; var _local4:Number; var _local5:Number; _local3 = _arg2.growth; switch (_arg1){ case 0: return (true); case 1: return (true); case 2: _local4 = (_local3.leaves / (_local3.roots + 0.0001)); if ((((_local4 > 3)) || ((_local4 < 0.3)))){ return (true); }; break; case 3: _local5 = (_local3.seeds + _local3.bigSeeds); if ((((_local5 > 0)) && ((_arg2.currentMonth <= 6)))){ return (true); }; break; case 4: if (_local3.shadedLeaves > 1){ return (true); }; break; case 5: if (_local3.beetlesFound == 0){ return (true); }; break; case 6: _local4 = (_local3.leaves / (_local3.stem + 0.0001)); if (_local4 < 2){ return (true); }; break; case 7: if (_local3.bigSeeds > 1){ return (true); }; break; case 8: if ((((_local3.seeds > 2)) && ((_arg2.seedCount == 0)))){ return (true); }; break; }; return (false); } } }//package
Section 100
//waterIcon (waterIcon) package { import flash.display.*; public dynamic class waterIcon extends MovieClip { } }//package
Section 101
//Weather (Weather) package { import flash.display.*; import flash.media.*; public class Weather extends TimedEvent { private var rainSound:Sound; public var lightRain:MovieClip; public var heavyRain:MovieClip; public function Weather(_arg1:Function){ super(_arg1); x = 0; y = 135; rainSound = new RainSound(); } public function showWeather(_arg1:Number, _arg2:Number){ trace(("weather rainfall =" + _arg2)); switch (_arg2){ case 1: heavyRain.visible = false; lightRain.visible = true; soundChannel = rainSound.play(0, 10); break; case 2: heavyRain.visible = true; lightRain.visible = false; soundChannel = rainSound.play(0, 10); break; default: _arg1 = 0; break; }; super.show(_arg1); } } }//package
Section 102
//View (View) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.media.*; import flash.filters.*; public class View extends Sprite { private var theNutrients:Nutrients; private var nextButton:GreyButton; private var theDoAllSeeds:DoAllSeeds; public var plantSprite:Sprite; private var flowerNodes:Array; public var theContainer:Container; private var plantLimit:PlantLimit; private var addFlowerFrom:FlowerStem; private var groundSprite:Sprite; public var insectsSprite:Sprite; public var theInsecticide:Insecticide; public var theModel:Model; public var infoBox:InfoBox; public var theWeather:Weather; public var theNeighbours:Neighbour; private var theTips:TopTips; private var cancelButton:MovieClip; private var theGrid:Grid; public var theIrrigation:Irrigation; public var thePlant:PlantElement; private var delayTimer:Timer; private var noOfPests:Number; public var theTimeOut:TimeOut; public var testElements:TestElements; private var beeSound:Sound; private var nodes:Array; private var shadowFilter:Array; private var continueButton:GreyButton; public var theEndGame:EndGame; private var theStatus:StatusDisplay; private var leavesEaten:Number; private var theIntroScreen:IntroScreen; public var theQuitDialog:QuitDialog; private var noOfBees:Number; public var beetleSprite:Sprite; private var theController:Controller; private var soundChannel:SoundChannel; public var eventSprite:Sprite; public static var QUITGAME = "quit game"; public static var DOONESEED = "do one seed"; public static var UPDATE_RESOURCES = "Update resources"; public static var RESETTIMEOUT = "reset timeout"; public static var DOALLSEEDS = "do all seeds"; public static var STARTGAME = "start game"; public static var PLAYAGAIN = "play again"; public static var DONEEVENT = "Done event"; public function View(_arg1:Model){ theModel = _arg1; nodes = new Array(); theModel.addEventListener(View.UPDATE_RESOURCES, this.updateResources); theContainer = new Container(); addChild(theContainer); theContainer.addEventListener(Container.SCROLL_RESET, doneScrollEvent); theStatus = new StatusDisplay(0x0400); nextButton = new FinishGrowingButton(); nextButton.x = 670; nextButton.y = 700; addChild(nextButton); continueButton = new PlayAsWildPlant(); continueButton.label.text = "Absorb nutrients"; continueButton.x = 756; continueButton.y = 700; addChild(continueButton); infoBox = new InfoBox(); eventSprite = new Sprite(); theIrrigation = new Irrigation(doneEvent); eventSprite.addChild(theIrrigation); theInsecticide = new Insecticide(doneEvent); eventSprite.addChild(theInsecticide); theWeather = new Weather(doneEvent); eventSprite.addChild(theWeather); insectsSprite = new Sprite(); eventSprite.addChild(insectsSprite); addChild(eventSprite); theNutrients = new Nutrients(0x0400, 0x0300, this); theNutrients.addEventListener(Nutrients.DONE, this.NutrientsDone); addChild(theNutrients); theEndGame = new EndGame(0x0400, 0x0300); theEndGame.addEventListener(View.PLAYAGAIN, introScreen); theEndGame.addEventListener(View.RESETTIMEOUT, resetTimeOut); theDoAllSeeds = new DoAllSeeds(); theDoAllSeeds.addEventListener(View.DOONESEED, doOneSeed); theDoAllSeeds.addEventListener(View.DOALLSEEDS, doAllSeeds); addChild(theEndGame); addChild(theDoAllSeeds); addChild(theStatus); theTimeOut = new TimeOut(); theIntroScreen = new IntroScreen(0x0400, 0x0300, theModel, theTimeOut); theIntroScreen.addEventListener(View.STARTGAME, start); addChild(theIntroScreen); theTips = new TopTips(); var _local2:* = new GreyFrame(); _local2.x = -456; _local2.y = -452.1; addChild(_local2); cancelButton = new CancelButton(); addChild(cancelButton); theQuitDialog = new QuitDialog(); theQuitDialog.addEventListener(TimeOut.TIMEOUT, introScreen); addChild(theQuitDialog); theTimeOut.addEventListener(TimeOut.TIMEOUT, introScreen); addChild(theTimeOut); theTimeOut.setup(60); cancelButton.x = 1013; cancelButton.y = 10; cancelButton.visible = theModel.cancelButtonState(); cancelButton.addEventListener(MouseEvent.CLICK, cancelClicked); beeSound = new BeeSound(); } public function testElement(_arg1:String, _arg2:Point, _arg3:Number, _arg4:Number):Boolean{ var _local5:PlantElement = testElements.getTest(_arg1, _arg2.x, _arg2.y, _arg3); var _local6:Boolean; var _local7:Number = 1; var _local8:* = plantLimit.getBounds(plantSprite); var _local9:* = _local5.getBounds(plantSprite); if (withinLimit(_local8, _local9)){ while ((((_local7 < nodes.length)) && ((_local6 == false)))) { if (_arg4 != _local7){ if (hitTest(nodes[_local7], _local5, plantSprite, plantSprite) != null){ _local6 = true; } else { _local7++; }; } else { _local7++; }; }; } else { _local6 = true; }; return (_local6); } private function childOutOfBounds(_arg1:PlantElement, _arg2:Rectangle, _arg3:Point):Boolean{ var _local4:Boolean; var _local5:Rectangle = _arg1.getBounds(plantSprite); _local5.offsetPoint(_arg3); if (!withinLimit(_arg2, _local5)){ return (true); }; var _local6:* = 0; while (_local6 < _arg1.children.length) { if (childOutOfBounds(_arg1.children[_local6], _arg2, _arg3)){ return (true); }; _local6++; }; return (false); } public function beeDone(_arg1:Event){ trace("bee done"); noOfBees--; if (noOfBees <= 0){ donePollinate(); }; } public function hideInfo(){ infoBox.hide(); } private function withinLimit(_arg1:Rectangle, _arg2:Rectangle):Boolean{ if ((((((_arg2.left > _arg1.left)) && ((_arg2.right < _arg1.right)))) && ((_arg2.bottom < _arg1.bottom)))){ return (true); }; return (false); } public function containsObject(_arg1:DisplayObject, _arg2:DisplayObject):Boolean{ var _local3:Rectangle = _arg1.getBounds(plantSprite); var _local4:Rectangle = _arg2.getBounds(plantSprite); return (_local3.containsRect(_local4)); } public function doneEvent(_arg1:Event){ hideInfo(); dispatchEvent(new Event(View.DONEEVENT)); } public function showInfo(_arg1:String, _arg2:String, _arg3:Boolean=false){ infoBox.show(_arg1, _arg2, _arg3); } public function cancelClicked(_arg1:Event){ if (theModel.webVersion){ if (theModel.webFullScreen){ stage.displayState = StageDisplayState.NORMAL; theModel.webFullScreen = false; cancelButton.visible = theModel.cancelButtonState(); }; } else { theQuitDialog.show(); }; } public function removePlant(){ var _local1:PlantElement; while (nodes.length > 0) { _local1 = nodes.pop(); if (plantSprite.contains(_local1)){ plantSprite.removeChild(_local1); }; }; if (plantSprite != null){ while (plantSprite.numChildren > 0) { plantSprite.removeChildAt(0); }; }; if (groundSprite != null){ groundSprite.visible = false; countGrowth(); }; } public function nextMonth(){ theModel.nextMonth(); theStatus.updateMonth(theModel); } public function hideNext(_arg1:Event){ theContainer.scrollToTop(); theContainer.enableScroll(false); nextButton.visible = false; displayAllNodes(false); } public function doPests(){ var _local3:*; var _local4:*; leavesEaten = 0; countGrowth(); noOfPests = Math.floor((theModel.growth.leaves / 4)); var _local1:Array = new Array(); var _local2:Number = (nodes.length - 1); while ((((_local1.length < noOfPests)) && ((_local2 > 0)))) { if ((((nodes[_local2].elementType == "Leaf")) && ((nodes[_local2].children.length == 0)))){ if (Math.random() > 0.2){ _local1.push(_local2); }; }; _local2--; }; if (_local1.length > 0){ showInfo("You're attacked by insects", ""); _local3 = 0; while (_local3 < noOfPests) { _local4 = new Pest(); insectsSprite.addChild(_local4); _local4.setDone(pestDone, 10); if (_local3 < _local1.length){ _local4.init(nodes[_local1[_local3]], this.eatLeaf); }; _local3++; }; } else { dispatchEvent(new Event(View.DONEEVENT)); }; } public function updateResources(_arg1:Event){ theStatus.updateResources(theModel.sugar, theModel.minerals); theStatus.hilightResources(); } public function showTip(){ var _local1:Object = theTips.getTip(theModel); showInfo(_local1.title, _local1.text, true); } public function addFlower(_arg1:PlantElement, _arg2:Sprite, _arg3:Controller, _arg4:Point){ var _local5:* = new Flower(_arg2, _arg3, _arg4); _local5.growNode = _arg1["node1"]; _arg1["node1"].enabled = false; _local5.setRotation(0); _arg2.addChild(_local5); _arg1.addChildElement(_local5); nodes.push(_local5); } public function growElement(_arg1:String, _arg2:Object){ var _local3:PlantElement; var _local5:String; displayAllNodes(false); nextButton.visible = false; var _local4:Class = (getDefinitionByName(_arg1) as Class); _arg2.newElement = (new _local4(plantSprite, theController, _arg2.newPos) as PlantElement); _arg2.newElement.growNode = _arg2.growNode; if (_arg2.newElement.elementType != "Flower"){ plantSprite.addChildAt(_arg2.newElement, 0); } else { plantSprite.addChild(_arg2.newElement); }; if (_arg2.newElement.pushUp){ _local3 = _arg2.growElement; if (_arg2.growElement.children.length > 0){ trace("push with children"); _local5 = _arg2.growElement.children[0].elementType; if ((((_local5 == "Leaf")) || ((_local5 == "Stem")))){ _local3 = _arg2.growElement.children[0]; }; }; _arg2.newElement.x = _local3.x; _arg2.newElement.y = _local3.y; _arg2.newElement.setRotation(_local3.rotation); _local3.parentElement.removeChildElement(_local3); _local3.parentElement.addChildElement(_arg2.newElement); _arg2.newElement.addChildElement(_local3); _arg2.newElement.initPush(_local3); } else { _arg2.newElement.setRotation((_arg2.rotation + _arg2.growElement.rotation)); _arg2.growElement.addChildElement(_arg2.newElement); }; if (_arg2.newElement.elementType == "FlowerStem"){ addFlowerFrom = _arg2.newElement; }; nodes.push(_arg2.newElement); } public function start(_arg1:Event){ theStatus.show(); theModel.plantType = theIntroScreen.getPlantType(); cancelButton.visible = theModel.cancelButtonState(); plantLimit = new PlantLimit(); plantLimit.visible = false; plantLimit.x = 116; plantLimit.y = 85; theContainer.addChild(plantLimit); if (groundSprite != null){ theContainer.removeChild(groundSprite); }; if (theContainer.contains(infoBox)){ theContainer.removeChild(infoBox); }; theContainer.removeScrollAreas(); if (theModel.plantType == "Wild"){ groundSprite = new WildBackground(); } else { groundSprite = new FarmBackground(); }; groundSprite.cacheAsBitmap = true; theNeighbours = new Neighbour(doneEvent); groundSprite.addChild(theNeighbours); beetleSprite = new Sprite(); groundSprite.addChild(beetleSprite); beetleSprite.x = 500; beetleSprite.y = 520; theContainer.addChild(groundSprite); theContainer.addChild(theContainer.getScrollAreas()); groundSprite.visible = true; plantSprite = new Sprite(); var _local2:* = new Sprite(); _local2.addChild(plantSprite); shadowFilter = new Array(); shadowFilter = [new DropShadowFilter(5, 45, 1, 5, 5)]; _local2.filters = shadowFilter; theGrid = new Grid(0x0400, 0x0300, 25); theContainer.addChild(theGrid); thePlant = new FirstSeed(plantSprite, theController, new Point(0, 0)); theContainer.addChild(_local2); theContainer.addChild(infoBox); theContainer.setScrollAreas(plantSprite, 150); plantSprite.addChild(testElements); plantSprite.addChild(thePlant); plantSprite.x = 500; plantSprite.y = 520; continueButton.visible = false; theGrid.setGridPoints(thePlant.getPoints(), true); nodes.push(thePlant); checkNodes(); countGrowth(); theNutrients.hide(); theModel.reset(); theStatus.update(theModel); theContainer.enableScroll(true); theContainer.initScroll(); theTips.reset(theModel.plantType); showTip(); theTimeOut.reset(); } public function displayAllNodes(_arg1:Boolean){ var _local2:* = 0; while (_local2 < nodes.length) { nodes[_local2].displayAllNodes(_arg1); _local2++; }; } public function testStem(_arg1, _arg2){ var _local3:PlantElement = testElements.getTest("Stem", _arg2.x, _arg2.y, _arg1.rotation); var _local4:Point = _local3.getEndPoint(); var _local5:* = plantLimit.getBounds(plantSprite); return (!(childOutOfBounds(_arg1, _local5, _local4))); } public function doResetScroll(){ theContainer.resetScroll(); } public function checkNodes(){ displayAllNodes(true); var _local1:* = 0; while (_local1 < nodes.length) { nodes[_local1].checkNodes(); nodes[_local1].nodeIndex = _local1; _local1++; }; } public function donePollinate(){ var _local1:*; var _local2:PlantElement; var _local3:Bee; soundChannel.stop(); trace("done pollinate"); countGrowth(); if (flowerNodes.length > 0){ _local1 = 0; while (_local1 < flowerNodes.length) { _local2 = new Seed(plantSprite, theController, new Point(flowerNodes[_local1].x, flowerNodes[_local1].y)); replaceElement(_local2, flowerNodes[_local1]); _local1++; }; countGrowth(); }; while (insectsSprite.numChildren > 0) { _local3 = (insectsSprite.getChildAt(0) as Bee); _local3.end(); insectsSprite.removeChildAt(0); }; hideInfo(); dispatchEvent(new Event(View.DONEEVENT)); } public function askAllSeeds(_arg1:Boolean){ theTimeOut.reset(); nextButton.visible = false; displayAllNodes(false); theDoAllSeeds.show(_arg1); } public function doBeetles(){ showInfo("A beetle dies in the ground", "Grow your roots to it to extract more minerals."); var _local1:Beetle = new Beetle((theModel.beetles == 0)); beetleSprite.addChild(_local1); theModel.beetles++; _local1.start(doneEvent); } public function setController(_arg1:Controller){ theController = _arg1; testElements = new TestElements(theController); nextButton.addEventListener(MouseEvent.CLICK, theController.doneGrowth); nextButton.addEventListener(MouseEvent.CLICK, hideNext); continueButton.addEventListener(MouseEvent.CLICK, showNutrients); } public function replaceElement(_arg1:PlantElement, _arg2:PlantElement){ _arg1.x = _arg2.x; _arg1.y = _arg2.y; _arg1.growNode = _arg2.growNode; _arg2.parentElement.addChildElement(_arg1); _arg2.parentElement.removeChildElement(_arg2); _arg1.setRotation(_arg2.rotation); plantSprite.addChild(_arg1); plantSprite.swapChildren(_arg1, _arg2); plantSprite.removeChild(_arg2); nodes[_arg2.nodeIndex] = _arg1; _arg1.nodeIndex = _arg2.nodeIndex; } public function pollinateFlowers(){ var _local1:Number; var _local3:*; countGrowth(); noOfBees = (theModel.growth.flowers + 3); if (theModel.growth.flowers > 0){ showInfo("Bees visit your plant", "They pollinate your flowers so they can become seeds."); } else { showInfo("Bees visit your plant", "But there are no flowers for them to pollinate."); }; if (theModel.currentMonth == 3){ _local1 = 8; } else { _local1 = 12; }; soundChannel = beeSound.play(0, 10); var _local2:* = 0; while (_local2 < noOfBees) { _local3 = new Bee(); insectsSprite.addChild(_local3); _local3.setDone(beeDone, _local1); if (_local2 < flowerNodes.length){ _local3.init(flowerNodes[_local2], this.flowerPollinate); }; _local2++; }; } public function doAllSeeds(_arg1:Event){ theDoAllSeeds.hide(); if (theDoAllSeeds.eject){ theController.ejectAllSeeds(nodes); } else { theController.growAllSeeds(nodes); }; } public function countGrowth(){ var _local3:*; var _local4:Beetle; var _local1:Object = {leaves:0, shadedLeaves:0, stem:0, roots:0, beetlesFound:0, flowers:0, seeds:0, bigSeeds:0}; flowerNodes = new Array(); var _local2:* = 0; while (_local2 < nodes.length) { nodes[_local2].nodeIndex = _local2; switch (nodes[_local2].elementType){ case "Leaf": _local1.leaves++; if (((nodes[_local2].y + plantSprite.y) - 35) > theNeighbours.shadeheight){ _local1.shadedLeaves++; }; break; case "Stem": _local1.stem++; break; case "Seed": _local1.seeds++; break; case "Root": _local1.roots++; _local3 = 0; while (_local3 < beetleSprite.numChildren) { _local4 = (beetleSprite.getChildAt(_local3) as Beetle); if (hitTest(_local4, nodes[_local2], beetleSprite, plantSprite)){ _local1.beetlesFound++; _local4.foundByRoot(); trace("Found a beetle"); }; _local3++; }; break; case "Flower": _local1.flowers++; flowerNodes.push(nodes[_local2]); break; case "BigSeed": _local1.bigSeeds++; break; }; _local2++; }; trace(((((("Number of Flowers =" + _local1.flowers) + " leaves ") + _local1.leaves) + " roots ") + _local1.roots)); theModel.growth = _local1; theStatus.update(theModel); } public function donePests(){ var _local1:Pest; countGrowth(); while (insectsSprite.numChildren > 0) { _local1 = (insectsSprite.getChildAt(0) as Pest); _local1.end(); insectsSprite.removeChildAt(0); }; hideInfo(); dispatchEvent(new Event(View.DONEEVENT)); } public function pestDone(_arg1:Event){ trace("pest done"); noOfPests--; if (noOfPests <= 0){ donePests(); }; } public function showContinue(){ continueButton.visible = true; countGrowth(); } public function doWeeding(){ showInfo("The farmer removes the surrounding weeds", ""); theNeighbours.weed(3000); countGrowth(); } public function hitTest(_arg1:DisplayObject, _arg2:DisplayObject, _arg3:DisplayObject, _arg4:DisplayObject, _arg5:Boolean=true, _arg6:int=0xFF):Rectangle{ var _local7:Rectangle; var _local8:Rectangle; var _local9:Rectangle; var _local10:BitmapData; var _local11:Matrix; var _local12:Matrix; var _local13:Rectangle; if (_arg1.hitTestObject(_arg2)){ _local7 = _arg1.getBounds(_arg3); _local8 = _arg2.getBounds(_arg4); _local9 = _local7.intersection(_local8); _local9.x = Math.floor(_local9.x); _local9.y = Math.floor(_local9.y); _local9.width = Math.ceil(_local9.width); _local9.height = Math.ceil(_local9.height); if ((((_local9.width < 1)) || ((_local9.height < 1)))){ return (null); }; if (!_arg5){ return (_local9); }; _local10 = new BitmapData(_local9.width, _local9.height, false); _local11 = _arg3.transform.concatenatedMatrix; _local11.invert(); _local12 = _arg1.transform.concatenatedMatrix; _local12.concat(_local11); _local12.translate(-(_local9.left), -(_local9.top)); _local10.draw(_arg1, _local12, new ColorTransform(1, 1, 1, 1, 0xFF, -255, -255, _arg6)); _local11 = _arg4.transform.concatenatedMatrix; _local11.invert(); _local12 = _arg2.transform.concatenatedMatrix; _local12.concat(_local11); _local12.translate(-(_local9.left), -(_local9.top)); _local10.draw(_arg2, _local12, new ColorTransform(1, 1, 1, 1, 0xFF, 0xFF, 0xFF, _arg6), "difference"); _local13 = _local10.getColorBoundsRect(4294967295, 4278255615); if (_local13.width == 0){ return (null); }; _local13.offset(_local9.left, _local9.top); _local10.dispose(); return (_local13); //unresolved jump }; return (null); } public function flowerPollinate(_arg1:Event){ var _local2:* = (_arg1.target.targetFlower as PlantElement); var _local3:PlantElement = new Seed(plantSprite, theController, new Point(_local2.x, _local2.y)); replaceElement(_local3, _local2); } public function eatLeaf(_arg1:Event){ trace("eat leaf"); var _local2:* = (_arg1.target.targetFlower as PlantElement); removeElement(_local2); leavesEaten++; showInfo("You're attacked by insects", (("They've eaten " + leavesEaten) + " of your leaves.")); } public function removeElement(_arg1:PlantElement){ var _local2:PlantElement = _arg1.parentElement; _local2.removeChildElement(_arg1); nodes.splice(_arg1.nodeIndex, 1); if (plantSprite.contains(_arg1)){ plantSprite.removeChild(_arg1); } else { trace((("removal element " + _arg1) + " not in plant sprite")); }; if ((((_local2.children.length == 0)) && ((_local2.elementType == "Stem")))){ (_local2 as Stem).enableNode(); }; } public function doInsecticide(){ showInfo("The farmer sprays you against pests", ""); theInsecticide.show(3000); } public function plantChanged(){ var _local1:Object; trace("plant changed"); if (addFlowerFrom != null){ addFlower(addFlowerFrom, plantSprite, theController, addFlowerFrom.getGrowPos()); addFlowerFrom = null; } else { _local1 = theTips.getParticularTip(1, theModel); showInfo(_local1.title, _local1.text, true); countGrowth(); checkNodes(); }; if (theModel.currentMonth > 3){ nextButton.visible = true; } else { if (theModel.sugar == 0){ showInfo("You've used all your sugar", "Click on ‘Finish growing for this month?’ to move on.", true); nextButton.visible = true; } else { if (theModel.minerals == 0){ showInfo("You've used all your minerals", "Click on ‘Finish growing for this month?’ to move on.", true); nextButton.visible = true; }; }; }; } public function doWeather(){ theWeather.showWeather(3000, theModel.getCurrentMonth().rainfallIndex); } public function doneScrollEvent(_arg1:Event){ dispatchEvent(new Event(View.DONEEVENT)); } public function doOneSeed(_arg1:Event){ theTimeOut.reset(); theDoAllSeeds.hide(); if (theDoAllSeeds.eject){ theController.ejectLastSeed(); } else { theController.growLastSeed(); }; } public function NutrientsDone(_arg1:Event){ theNutrients.hide(); nextMonth(); theModel.useResource(Math.round(-(theNutrients.sugarCreated)), 0); checkNodes(); theNeighbours.grow(); theContainer.enableScroll(true); theContainer.resetScroll(); theModel.ejectThisMonth = 0; theModel.growThisMonth = 0; if (theModel.currentMonth > 3){ nextButton.visible = true; } else { nextButton.visible = false; }; showTip(); } public function showNutrients(_arg1:Event){ theTimeOut.reset(); continueButton.visible = false; theNutrients.show(theModel.getCurrentMonth(), theModel.growth, theModel.plantType); } public function resetTimeOut(_arg1:Event){ theTimeOut.reset(); } public function introScreen(_arg1:Event=null){ var _local2:Boolean; if (_arg1 == null){ _arg1 = new Event("no event"); }; if (!theModel.webVersion){ theTimeOut.off(); }; if (!_local2){ nextButton.visible = false; theStatus.hide(); theQuitDialog.hide(); theNutrients.hide(); theDoAllSeeds.hide(); theEndGame.hide(); theController.stopEvents(); theIntroScreen.show((_arg1.type == TimeOut.TIMEOUT)); theModel.reset(); removePlant(); }; } public function doIrrigation(){ showInfo("The farmer waters and fertilises you", ""); theIrrigation.show(3000); } public function growReplacementElement(_arg1:String, _arg2:Object){ var _local3:Class = (getDefinitionByName(_arg1) as Class); _arg2.newElement = (new _local3(plantSprite, theController, new Point(0, 0)) as PlantElement); replaceElement(_arg2.newElement, _arg2.growElement); } } }//package
Section 103
//WildBackground (WildBackground) package { import flash.display.*; public dynamic class WildBackground extends MovieClip { } }//package

Library Items

Symbol 1 Sound {RainSound}
Symbol 2 Sound {EjectSeedSound}
Symbol 3 Sound {ChompSound}
Symbol 4 Sound {ButtonClick}
Symbol 5 Sound {BeeSound}
Symbol 6 GraphicUsed by:7 17 782 783
Symbol 7 MovieClipUses:6Used by:15 395
Symbol 8 GraphicUsed by:9 10 453 454 493 494 680 681 702 703 718 719
Symbol 9 MovieClipUses:8Used by:15 395 398 452
Symbol 10 MovieClipUses:8Used by:15 395 398 452
Symbol 11 GraphicUsed by:15 395 398 452 455 523 724
Symbol 12 FontUsed by:13 14 338 340 374 375 396 397 412 413 427 428 431 432 456 483 484 488 489 490 491 506 509 510 511 512 513 515 516 626 648 684 722 725 726
Symbol 13 EditableTextUses:12 508Used by:15
Symbol 14 EditableTextUses:12 508Used by:15
Symbol 15 MovieClip {TimeOut}Uses:7 9 10 11 13 14
Symbol 16 GraphicUsed by:27
Symbol 17 MovieClipUses:6Used by:23 505
Symbol 18 GraphicUsed by:23
Symbol 19 GraphicUsed by:20
Symbol 20 MovieClipUses:19Used by:23
Symbol 21 GraphicUsed by:22
Symbol 22 MovieClipUses:21Used by:23
Symbol 23 MovieClip {Meristem}Uses:17 18 20 22Used by:27 600 607 613 615 633 645 647
Symbol 24 GraphicUsed by:27
Symbol 25 GraphicUsed by:27
Symbol 26 GraphicUsed by:27
Symbol 27 MovieClip {TestLeaf}Uses:16 23 24 25 26
Symbol 28 GraphicUsed by:29
Symbol 29 MovieClipUses:28Used by:325
Symbol 30 GraphicUsed by:33 35 37 40 42 44 46 48 50 52 54 56 58 60 62 64 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 205 218 222 224 297 299 301 303 305 307 309 311 313 315 317 319 321
Symbol 31 GraphicUsed by:32 34 36 59 61 63 86 88 90 92 112 114 116 118 120 138 140 142 144 146 148 164 166 168 170 172 174 182 184 190 192 194 196 198 200 202 204 207 209 211 213 215 217 219 221 223 225 227 229 231 233 235 237 239 241 243 245 247 249 251 253 255 257 259 261 263 265 267 269 271 273 275 277 279 281 283 285 287 289 291 293
Symbol 32 MovieClipUses:31Used by:33
Symbol 33 MovieClipUses:30 32Used by:322
Symbol 34 MovieClipUses:31Used by:35
Symbol 35 MovieClipUses:30 34Used by:322
Symbol 36 MovieClipUses:31Used by:37
Symbol 37 MovieClipUses:30 36Used by:322
Symbol 38 GraphicUsed by:39 41 43 45 47 49 51 53 55 57 74 76 78 80 82 84
Symbol 39 MovieClipUses:38Used by:40
Symbol 40 MovieClipUses:30 39Used by:322
Symbol 41 MovieClipUses:38Used by:42
Symbol 42 MovieClipUses:30 41Used by:322
Symbol 43 MovieClipUses:38Used by:44
Symbol 44 MovieClipUses:30 43Used by:322
Symbol 45 MovieClipUses:38Used by:46
Symbol 46 MovieClipUses:30 45Used by:322
Symbol 47 MovieClipUses:38Used by:48
Symbol 48 MovieClipUses:30 47Used by:322
Symbol 49 MovieClipUses:38Used by:50
Symbol 50 MovieClipUses:30 49Used by:322
Symbol 51 MovieClipUses:38Used by:52
Symbol 52 MovieClipUses:30 51Used by:322
Symbol 53 MovieClipUses:38Used by:54
Symbol 54 MovieClipUses:30 53Used by:322
Symbol 55 MovieClipUses:38Used by:56
Symbol 56 MovieClipUses:30 55Used by:322
Symbol 57 MovieClipUses:38Used by:58
Symbol 58 MovieClipUses:30 57Used by:322
Symbol 59 MovieClipUses:31Used by:60
Symbol 60 MovieClipUses:30 59Used by:322
Symbol 61 MovieClipUses:31Used by:62
Symbol 62 MovieClipUses:30 61Used by:322
Symbol 63 MovieClipUses:31Used by:64
Symbol 64 MovieClipUses:30 63Used by:322
Symbol 65 GraphicUsed by:66 68 70 72 94 96 98 100 102 104 106 108 110 122 124 126 128 130 132 134 136 150 152 154 156 158 160 162 176 178 180 186 188
Symbol 66 MovieClipUses:65Used by:67
Symbol 67 MovieClipUses:30 66Used by:322
Symbol 68 MovieClipUses:65Used by:69
Symbol 69 MovieClipUses:30 68Used by:322
Symbol 70 MovieClipUses:65Used by:71
Symbol 71 MovieClipUses:30 70Used by:322
Symbol 72 MovieClipUses:65Used by:73
Symbol 73 MovieClipUses:30 72Used by:322
Symbol 74 MovieClipUses:38Used by:75
Symbol 75 MovieClipUses:30 74Used by:322
Symbol 76 MovieClipUses:38Used by:77
Symbol 77 MovieClipUses:30 76Used by:322
Symbol 78 MovieClipUses:38Used by:79
Symbol 79 MovieClipUses:30 78Used by:322
Symbol 80 MovieClipUses:38Used by:81
Symbol 81 MovieClipUses:30 80Used by:322
Symbol 82 MovieClipUses:38Used by:83
Symbol 83 MovieClipUses:30 82Used by:322
Symbol 84 MovieClipUses:38Used by:85
Symbol 85 MovieClipUses:30 84Used by:322
Symbol 86 MovieClipUses:31Used by:87
Symbol 87 MovieClipUses:30 86Used by:322
Symbol 88 MovieClipUses:31Used by:89
Symbol 89 MovieClipUses:30 88Used by:322
Symbol 90 MovieClipUses:31Used by:91
Symbol 91 MovieClipUses:30 90Used by:322
Symbol 92 MovieClipUses:31Used by:93
Symbol 93 MovieClipUses:30 92Used by:322
Symbol 94 MovieClipUses:65Used by:95
Symbol 95 MovieClipUses:30 94Used by:322
Symbol 96 MovieClipUses:65Used by:97
Symbol 97 MovieClipUses:30 96Used by:322
Symbol 98 MovieClipUses:65Used by:99
Symbol 99 MovieClipUses:30 98Used by:322
Symbol 100 MovieClipUses:65Used by:101
Symbol 101 MovieClipUses:30 100Used by:322
Symbol 102 MovieClipUses:65Used by:103
Symbol 103 MovieClipUses:30 102Used by:322
Symbol 104 MovieClipUses:65Used by:105
Symbol 105 MovieClipUses:30 104Used by:322
Symbol 106 MovieClipUses:65Used by:107
Symbol 107 MovieClipUses:30 106Used by:322
Symbol 108 MovieClipUses:65Used by:109
Symbol 109 MovieClipUses:30 108Used by:322
Symbol 110 MovieClipUses:65Used by:111
Symbol 111 MovieClipUses:30 110Used by:322
Symbol 112 MovieClipUses:31Used by:113
Symbol 113 MovieClipUses:30 112Used by:322
Symbol 114 MovieClipUses:31Used by:115
Symbol 115 MovieClipUses:30 114Used by:322
Symbol 116 MovieClipUses:31Used by:117
Symbol 117 MovieClipUses:30 116Used by:322
Symbol 118 MovieClipUses:31Used by:119
Symbol 119 MovieClipUses:30 118Used by:322
Symbol 120 MovieClipUses:31Used by:121
Symbol 121 MovieClipUses:30 120Used by:322
Symbol 122 MovieClipUses:65Used by:123
Symbol 123 MovieClipUses:30 122Used by:322
Symbol 124 MovieClipUses:65Used by:125
Symbol 125 MovieClipUses:30 124Used by:322
Symbol 126 MovieClipUses:65Used by:127
Symbol 127 MovieClipUses:30 126Used by:322
Symbol 128 MovieClipUses:65Used by:129
Symbol 129 MovieClipUses:30 128Used by:322
Symbol 130 MovieClipUses:65Used by:131
Symbol 131 MovieClipUses:30 130Used by:322
Symbol 132 MovieClipUses:65Used by:133
Symbol 133 MovieClipUses:30 132Used by:322
Symbol 134 MovieClipUses:65Used by:135
Symbol 135 MovieClipUses:30 134Used by:322
Symbol 136 MovieClipUses:65Used by:137
Symbol 137 MovieClipUses:30 136Used by:322
Symbol 138 MovieClipUses:31Used by:139
Symbol 139 MovieClipUses:30 138Used by:322
Symbol 140 MovieClipUses:31Used by:141
Symbol 141 MovieClipUses:30 140Used by:322
Symbol 142 MovieClipUses:31Used by:143
Symbol 143 MovieClipUses:30 142Used by:322
Symbol 144 MovieClipUses:31Used by:145
Symbol 145 MovieClipUses:30 144Used by:322
Symbol 146 MovieClipUses:31Used by:147
Symbol 147 MovieClipUses:30 146Used by:322
Symbol 148 MovieClipUses:31Used by:149
Symbol 149 MovieClipUses:30 148Used by:322
Symbol 150 MovieClipUses:65Used by:151
Symbol 151 MovieClipUses:30 150Used by:322
Symbol 152 MovieClipUses:65Used by:153
Symbol 153 MovieClipUses:30 152Used by:322
Symbol 154 MovieClipUses:65Used by:155
Symbol 155 MovieClipUses:30 154Used by:322
Symbol 156 MovieClipUses:65Used by:157
Symbol 157 MovieClipUses:30 156Used by:322
Symbol 158 MovieClipUses:65Used by:159
Symbol 159 MovieClipUses:30 158Used by:322
Symbol 160 MovieClipUses:65Used by:161
Symbol 161 MovieClipUses:30 160Used by:322
Symbol 162 MovieClipUses:65Used by:163
Symbol 163 MovieClipUses:30 162Used by:322
Symbol 164 MovieClipUses:31Used by:165
Symbol 165 MovieClipUses:30 164Used by:322
Symbol 166 MovieClipUses:31Used by:167
Symbol 167 MovieClipUses:30 166Used by:322
Symbol 168 MovieClipUses:31Used by:169
Symbol 169 MovieClipUses:30 168Used by:322
Symbol 170 MovieClipUses:31Used by:171
Symbol 171 MovieClipUses:30 170Used by:322
Symbol 172 MovieClipUses:31Used by:173
Symbol 173 MovieClipUses:30 172Used by:322
Symbol 174 MovieClipUses:31Used by:175
Symbol 175 MovieClipUses:30 174Used by:322
Symbol 176 MovieClipUses:65Used by:177
Symbol 177 MovieClipUses:30 176Used by:322
Symbol 178 MovieClipUses:65Used by:179
Symbol 179 MovieClipUses:30 178Used by:322
Symbol 180 MovieClipUses:65Used by:181
Symbol 181 MovieClipUses:30 180Used by:322
Symbol 182 MovieClipUses:31Used by:183
Symbol 183 MovieClipUses:30 182Used by:322
Symbol 184 MovieClipUses:31Used by:185
Symbol 185 MovieClipUses:30 184Used by:322
Symbol 186 MovieClipUses:65Used by:187
Symbol 187 MovieClipUses:30 186Used by:322
Symbol 188 MovieClipUses:65Used by:189
Symbol 189 MovieClipUses:30 188Used by:322
Symbol 190 MovieClipUses:31Used by:191
Symbol 191 MovieClipUses:30 190Used by:322
Symbol 192 MovieClipUses:31Used by:193
Symbol 193 MovieClipUses:30 192Used by:322
Symbol 194 MovieClipUses:31Used by:195
Symbol 195 MovieClipUses:30 194Used by:322
Symbol 196 MovieClipUses:31Used by:197
Symbol 197 MovieClipUses:30 196Used by:322
Symbol 198 MovieClipUses:31Used by:199
Symbol 199 MovieClipUses:30 198Used by:322
Symbol 200 MovieClipUses:31Used by:201
Symbol 201 MovieClipUses:30 200Used by:322
Symbol 202 MovieClipUses:31Used by:203
Symbol 203 MovieClipUses:30 202Used by:322
Symbol 204 MovieClipUses:31Used by:205
Symbol 205 MovieClipUses:30 204Used by:322
Symbol 206 GraphicUsed by:208 210 212 214 216 220 226 228 230 232 234 236 238 240 242 244 246 248 250 252 254 256 258 260 262 264 266 268 270 272 274 276 278 280 282 284 286 288 290 292 294
Symbol 207 MovieClipUses:31Used by:208
Symbol 208 MovieClipUses:206 207Used by:322
Symbol 209 MovieClipUses:31Used by:210
Symbol 210 MovieClipUses:206 209Used by:322
Symbol 211 MovieClipUses:31Used by:212
Symbol 212 MovieClipUses:206 211Used by:322
Symbol 213 MovieClipUses:31Used by:214
Symbol 214 MovieClipUses:206 213Used by:322
Symbol 215 MovieClipUses:31Used by:216
Symbol 216 MovieClipUses:206 215Used by:322
Symbol 217 MovieClipUses:31Used by:218
Symbol 218 MovieClipUses:30 217Used by:322
Symbol 219 MovieClipUses:31Used by:220
Symbol 220 MovieClipUses:206 219Used by:322
Symbol 221 MovieClipUses:31Used by:222
Symbol 222 MovieClipUses:30 221Used by:322
Symbol 223 MovieClipUses:31Used by:224
Symbol 224 MovieClipUses:30 223Used by:322
Symbol 225 MovieClipUses:31Used by:226
Symbol 226 MovieClipUses:206 225Used by:322
Symbol 227 MovieClipUses:31Used by:228
Symbol 228 MovieClipUses:206 227Used by:322
Symbol 229 MovieClipUses:31Used by:230
Symbol 230 MovieClipUses:206 229Used by:322
Symbol 231 MovieClipUses:31Used by:232
Symbol 232 MovieClipUses:206 231Used by:322
Symbol 233 MovieClipUses:31Used by:234
Symbol 234 MovieClipUses:206 233Used by:322
Symbol 235 MovieClipUses:31Used by:236
Symbol 236 MovieClipUses:206 235Used by:322
Symbol 237 MovieClipUses:31Used by:238
Symbol 238 MovieClipUses:206 237Used by:322
Symbol 239 MovieClipUses:31Used by:240
Symbol 240 MovieClipUses:206 239Used by:322
Symbol 241 MovieClipUses:31Used by:242
Symbol 242 MovieClipUses:206 241Used by:322
Symbol 243 MovieClipUses:31Used by:244
Symbol 244 MovieClipUses:206 243Used by:322
Symbol 245 MovieClipUses:31Used by:246
Symbol 246 MovieClipUses:206 245Used by:322
Symbol 247 MovieClipUses:31Used by:248
Symbol 248 MovieClipUses:206 247Used by:322
Symbol 249 MovieClipUses:31Used by:250
Symbol 250 MovieClipUses:206 249Used by:322
Symbol 251 MovieClipUses:31Used by:252
Symbol 252 MovieClipUses:206 251Used by:322
Symbol 253 MovieClipUses:31Used by:254
Symbol 254 MovieClipUses:206 253Used by:322
Symbol 255 MovieClipUses:31Used by:256
Symbol 256 MovieClipUses:206 255Used by:322
Symbol 257 MovieClipUses:31Used by:258
Symbol 258 MovieClipUses:206 257Used by:322
Symbol 259 MovieClipUses:31Used by:260
Symbol 260 MovieClipUses:206 259Used by:322
Symbol 261 MovieClipUses:31Used by:262
Symbol 262 MovieClipUses:206 261Used by:322
Symbol 263 MovieClipUses:31Used by:264
Symbol 264 MovieClipUses:206 263Used by:322
Symbol 265 MovieClipUses:31Used by:266
Symbol 266 MovieClipUses:206 265Used by:322
Symbol 267 MovieClipUses:31Used by:268
Symbol 268 MovieClipUses:206 267Used by:322
Symbol 269 MovieClipUses:31Used by:270
Symbol 270 MovieClipUses:206 269Used by:322
Symbol 271 MovieClipUses:31Used by:272
Symbol 272 MovieClipUses:206 271Used by:322
Symbol 273 MovieClipUses:31Used by:274
Symbol 274 MovieClipUses:206 273Used by:322
Symbol 275 MovieClipUses:31Used by:276
Symbol 276 MovieClipUses:206 275Used by:322
Symbol 277 MovieClipUses:31Used by:278
Symbol 278 MovieClipUses:206 277Used by:322
Symbol 279 MovieClipUses:31Used by:280
Symbol 280 MovieClipUses:206 279Used by:322
Symbol 281 MovieClipUses:31Used by:282
Symbol 282 MovieClipUses:206 281Used by:322
Symbol 283 MovieClipUses:31Used by:284
Symbol 284 MovieClipUses:206 283Used by:322
Symbol 285 MovieClipUses:31Used by:286
Symbol 286 MovieClipUses:206 285Used by:322
Symbol 287 MovieClipUses:31Used by:288
Symbol 288 MovieClipUses:206 287Used by:322
Symbol 289 MovieClipUses:31Used by:290
Symbol 290 MovieClipUses:206 289Used by:322
Symbol 291 MovieClipUses:31Used by:292
Symbol 292 MovieClipUses:206 291Used by:322
Symbol 293 MovieClipUses:31Used by:294
Symbol 294 MovieClipUses:206 293Used by:322
Symbol 295 GraphicUsed by:296 298 300 302 304 306 308 310 312 314 316 318 320
Symbol 296 MovieClipUses:295Used by:297
Symbol 297 MovieClipUses:30 296Used by:322
Symbol 298 MovieClipUses:295Used by:299
Symbol 299 MovieClipUses:30 298Used by:322
Symbol 300 MovieClipUses:295Used by:301
Symbol 301 MovieClipUses:30 300Used by:322
Symbol 302 MovieClipUses:295Used by:303
Symbol 303 MovieClipUses:30 302Used by:322
Symbol 304 MovieClipUses:295Used by:305
Symbol 305 MovieClipUses:30 304Used by:322
Symbol 306 MovieClipUses:295Used by:307
Symbol 307 MovieClipUses:30 306Used by:322
Symbol 308 MovieClipUses:295Used by:309
Symbol 309 MovieClipUses:30 308Used by:322
Symbol 310 MovieClipUses:295Used by:311
Symbol 311 MovieClipUses:30 310Used by:322
Symbol 312 MovieClipUses:295Used by:313
Symbol 313 MovieClipUses:30 312Used by:322
Symbol 314 MovieClipUses:295Used by:315
Symbol 315 MovieClipUses:30 314Used by:322
Symbol 316 MovieClipUses:295Used by:317
Symbol 317 MovieClipUses:30 316Used by:322
Symbol 318 MovieClipUses:295Used by:319
Symbol 319 MovieClipUses:30 318Used by:322
Symbol 320 MovieClipUses:295Used by:321
Symbol 321 MovieClipUses:30 320Used by:322
Symbol 322 MovieClipUses:33 35 37 40 42 44 46 48 50 52 54 56 58 60 62 64 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 205 208 210 212 214 216 218 220 222 224 226 228 230 232 234 236 238 240 242 244 246 248 250 252 254 256 258 260 262 264 266 268 270 272 274 276 278 280 282 284 286 288 290 292 294 297 299 301 303 305 307 309 311 313 315 317 319 321Used by:325
Symbol 323 GraphicUsed by:324
Symbol 324 MovieClipUses:323Used by:325
Symbol 325 MovieClip {Irrigation}Uses:29 322 324
Symbol 326 GraphicUsed by:373
Symbol 327 FontUsed by:328 338 433 434 435 683 710 714 715 720 723
Symbol 328 TextUses:327Used by:373
Symbol 329 BitmapUsed by:331
Symbol 330 BitmapUsed by:331
Symbol 331 GraphicUses:329 330Used by:373
Symbol 332 FontUsed by:333 336 337 433 435 495
Symbol 333 TextUses:332Used by:373
Symbol 334 FontUsed by:335 342 343 349 350 351 352 353 354 393 410 425 429 432 450 468 481 498 514 528 529 533 543 559 564 567 660 673
Symbol 335 TextUses:334Used by:373
Symbol 336 TextUses:332Used by:373
Symbol 337 TextUses:332Used by:373
Symbol 338 TextUses:327 12Used by:339
Symbol 339 MovieClipUses:338Used by:373
Symbol 340 TextUses:12Used by:341
Symbol 341 MovieClipUses:340Used by:373
Symbol 342 EditableTextUses:334Used by:373
Symbol 343 EditableTextUses:334Used by:373
Symbol 344 FontUsed by:345 346 347 485 518 534 545 546 649 714 722
Symbol 345 EditableTextUses:344 507Used by:373
Symbol 346 EditableTextUses:344 507Used by:373
Symbol 347 EditableTextUses:344 507Used by:348
Symbol 348 MovieClip {StatusBarDisplay}Uses:347Used by:373
Symbol 349 EditableTextUses:334Used by:373
Symbol 350 EditableTextUses:334Used by:373
Symbol 351 EditableTextUses:334Used by:373
Symbol 352 EditableTextUses:334Used by:373
Symbol 353 EditableTextUses:334Used by:373
Symbol 354 EditableTextUses:334Used by:373
Symbol 355 GraphicUsed by:364 371
Symbol 356 GraphicUsed by:357
Symbol 357 MovieClipUses:356Used by:364
Symbol 358 GraphicUsed by:364
Symbol 359 GraphicUsed by:360
Symbol 360 MovieClipUses:359Used by:364
Symbol 361 GraphicUsed by:364
Symbol 362 GraphicUsed by:363
Symbol 363 MovieClipUses:362Used by:364
Symbol 364 MovieClipUses:355 357 358 360 361 363Used by:373
Symbol 365 GraphicUsed by:366
Symbol 366 MovieClipUses:365Used by:371
Symbol 367 GraphicUsed by:371
Symbol 368 GraphicUsed by:371
Symbol 369 GraphicUsed by:370
Symbol 370 MovieClipUses:369Used by:371
Symbol 371 MovieClipUses:355 366 367 368 370Used by:373
Symbol 372 GraphicUsed by:373
Symbol 373 MovieClip {StatusDisplay}Uses:326 328 331 333 335 336 337 339 341 342 343 345 346 348 349 350 351 352 353 354 364 371 372
Symbol 374 EditableTextUses:12 508Used by:395
Symbol 375 EditableTextUses:12 508Used by:395
Symbol 376 GraphicUsed by:380
Symbol 377 GraphicUsed by:378 386
Symbol 378 MovieClipUses:377Used by:380
Symbol 379 GraphicUsed by:380 402 417 460 473 551 654 665
Symbol 380 MovieClipUses:376 378 379Used by:394
Symbol 381 GraphicUsed by:384
Symbol 382 GraphicUsed by:383 537
Symbol 383 MovieClipUses:382Used by:384
Symbol 384 MovieClipUses:381 383Used by:388 544
Symbol 385 GraphicUsed by:388
Symbol 386 MovieClipUses:377Used by:388
Symbol 387 GraphicUsed by:388 392 405 409 420 424 463 467 476 554 558 565 568 657 659 668 672
Symbol 388 MovieClipUses:384 385 386 387Used by:394
Symbol 389 GraphicUsed by:392
Symbol 390 GraphicUsed by:391
Symbol 391 MovieClipUses:390Used by:392
Symbol 392 MovieClipUses:389 391 387Used by:394
Symbol 393 EditableTextUses:334Used by:394
Symbol 394 MovieClip {PlayAsWildPlant}Uses:380 388 392 393Used by:395 398 727
Symbol 395 MovieClip {QuitDialog}Uses:7 9 10 11 374 375 394
Symbol 396 EditableTextUses:12 508Used by:398
Symbol 397 EditableTextUses:12 508Used by:398
Symbol 398 MovieClip {DoAllSeeds}Uses:9 10 11 396 397 394
Symbol 399 GraphicUsed by:402
Symbol 400 GraphicUsed by:401 404
Symbol 401 MovieClipUses:400Used by:402
Symbol 402 MovieClipUses:399 401 379Used by:411
Symbol 403 GraphicUsed by:405
Symbol 404 MovieClipUses:400Used by:405
Symbol 405 MovieClipUses:403 404 387Used by:411
Symbol 406 GraphicUsed by:409
Symbol 407 GraphicUsed by:408
Symbol 408 MovieClipUses:407Used by:409
Symbol 409 MovieClipUses:406 408 387Used by:411
Symbol 410 EditableTextUses:334Used by:411
Symbol 411 MovieClip {Credits}Uses:402 405 409 410Used by:452
Symbol 412 EditableTextUses:12 508Used by:430
Symbol 413 EditableTextUses:12 508Used by:430
Symbol 414 GraphicUsed by:417
Symbol 415 GraphicUsed by:416 419
Symbol 416 MovieClipUses:415Used by:417
Symbol 417 MovieClipUses:414 416 379Used by:426
Symbol 418 GraphicUsed by:420
Symbol 419 MovieClipUses:415Used by:420
Symbol 420 MovieClipUses:418 419 387Used by:426
Symbol 421 GraphicUsed by:424
Symbol 422 GraphicUsed by:423
Symbol 423 MovieClipUses:422Used by:424
Symbol 424 MovieClipUses:421 423 387Used by:426
Symbol 425 EditableTextUses:334Used by:426
Symbol 426 MovieClip {PlayAgain}Uses:417 420 424 425Used by:430
Symbol 427 EditableTextUses:12 508Used by:430
Symbol 428 EditableTextUses:12 508Used by:430
Symbol 429 TextUses:334Used by:430
Symbol 430 MovieClipUses:412 413 426 427 428 429Used by:452
Symbol 431 TextUses:12Used by:436
Symbol 432 TextUses:12 334Used by:436
Symbol 433 TextUses:327 332Used by:436
Symbol 434 TextUses:327Used by:436
Symbol 435 TextUses:327 332Used by:436
Symbol 436 MovieClipUses:431 432 433 434 435Used by:452
Symbol 437 GraphicUsed by:441
Symbol 438 GraphicUsed by:439 443
Symbol 439 MovieClipUses:438Used by:441
Symbol 440 GraphicUsed by:441
Symbol 441 MovieClipUses:437 439 440Used by:451
Symbol 442 GraphicUsed by:445
Symbol 443 MovieClipUses:438Used by:445
Symbol 444 GraphicUsed by:445 449
Symbol 445 MovieClipUses:442 443 444Used by:451
Symbol 446 GraphicUsed by:449
Symbol 447 GraphicUsed by:448
Symbol 448 MovieClipUses:447Used by:449
Symbol 449 MovieClipUses:446 448 444Used by:451
Symbol 450 EditableTextUses:334Used by:451
Symbol 451 MovieClip {GoBack}Uses:441 445 449 450Used by:452
Symbol 452 MovieClip {EndGame}Uses:10 9 11 411 430 436 451
Symbol 453 MovieClipUses:8Used by:455
Symbol 454 MovieClipUses:8Used by:455
Symbol 455 MovieClipUses:453 454 11Used by:524
Symbol 456 EditableTextUses:12 508Used by:492
Symbol 457 GraphicUsed by:460
Symbol 458 GraphicUsed by:459 462
Symbol 459 MovieClipUses:458Used by:460
Symbol 460 MovieClipUses:457 459 379Used by:469
Symbol 461 GraphicUsed by:463
Symbol 462 MovieClipUses:458Used by:463
Symbol 463 MovieClipUses:461 462 387Used by:469
Symbol 464 GraphicUsed by:467
Symbol 465 GraphicUsed by:466
Symbol 466 MovieClipUses:465Used by:467
Symbol 467 MovieClipUses:464 466 387Used by:469
Symbol 468 EditableTextUses:334Used by:469
Symbol 469 MovieClip {CreateSugar}Uses:460 463 467 468Used by:492 523
Symbol 470 GraphicUsed by:473
Symbol 471 GraphicUsed by:472 475
Symbol 472 MovieClipUses:471Used by:473
Symbol 473 MovieClipUses:470 472 379Used by:482
Symbol 474 GraphicUsed by:476
Symbol 475 MovieClipUses:471Used by:476
Symbol 476 MovieClipUses:474 475 387Used by:482
Symbol 477 GraphicUsed by:480
Symbol 478 GraphicUsed by:479
Symbol 479 MovieClipUses:478Used by:480
Symbol 480 MovieClipUses:477 479Used by:482
Symbol 481 EditableTextUses:334Used by:482
Symbol 482 MovieClip {AbsorbWaterMinerals}Uses:473 476 480 481Used by:492
Symbol 483 EditableTextUses:12 508Used by:487
Symbol 484 EditableTextUses:12 508Used by:487
Symbol 485 EditableTextUses:344 507Used by:486
Symbol 486 MovieClip {ReportDisplay}Uses:485Used by:487 523
Symbol 487 MovieClipUses:483 484 486Used by:492
Symbol 488 EditableTextUses:12 508Used by:492
Symbol 489 EditableTextUses:12 508Used by:492
Symbol 490 EditableTextUses:12 508Used by:492
Symbol 491 EditableTextUses:12 508Used by:492
Symbol 492 MovieClip {RootReport}Uses:456 469 482 487 488 489 490 491Used by:524
Symbol 493 MovieClipUses:8Used by:523
Symbol 494 MovieClipUses:8Used by:523
Symbol 495 TextUses:332Used by:497
Symbol 496 GraphicUsed by:497
Symbol 497 MovieClipUses:495 496Used by:505
Symbol 498 EditableTextUses:334Used by:500
Symbol 499 GraphicUsed by:500 547
Symbol 500 MovieClipUses:498 499Used by:505
Symbol 501 GraphicUsed by:504
Symbol 502 GraphicUsed by:503
Symbol 503 MovieClipUses:502Used by:504
Symbol 504 MovieClipUses:501 503Used by:505
Symbol 505 MovieClip {Slider}Uses:17 497 500 504Used by:523
Symbol 506 TextUses:12Used by:523
Symbol 507 FontUsed by:345 346 347 485 509 518 534 545 546 649 714
Symbol 508 FontUsed by:13 14 374 375 396 397 412 413 427 428 456 483 484 488 489 490 491 509 513 516 648 725 726
Symbol 509 TextUses:507 508 12Used by:523
Symbol 510 TextUses:12Used by:523
Symbol 511 TextUses:12Used by:523
Symbol 512 TextUses:12Used by:523
Symbol 513 EditableTextUses:12 508Used by:523
Symbol 514 EditableTextUses:334Used by:523
Symbol 515 TextUses:12Used by:523
Symbol 516 EditableTextUses:12 508Used by:521
Symbol 517 GraphicUsed by:521
Symbol 518 EditableTextUses:344 507Used by:521
Symbol 519 GraphicUsed by:520
Symbol 520 MovieClipUses:519Used by:521
Symbol 521 MovieClipUses:516 517 518 520Used by:523
Symbol 522 GraphicUsed by:523
Symbol 523 MovieClip {LeafReport}Uses:493 494 11 505 506 509 510 511 512 469 513 514 515 521 486 522Used by:524
Symbol 524 MovieClip {Nutrients}Uses:455 492 523
Symbol 525 GraphicUsed by:547
Symbol 526 GraphicUsed by:527
Symbol 527 MovieClipUses:526Used by:547
Symbol 528 TextUses:334Used by:547
Symbol 529 TextUses:334Used by:547
Symbol 530 GraphicUsed by:531 532
Symbol 531 MovieClipUses:530Used by:547
Symbol 532 MovieClipUses:530Used by:547
Symbol 533 EditableTextUses:334Used by:547
Symbol 534 EditableTextUses:344 507Used by:535
Symbol 535 MovieClip {TabDisplay}Uses:534Used by:547
Symbol 536 GraphicUsed by:538
Symbol 537 MovieClipUses:382Used by:538
Symbol 538 MovieClipUses:536 537Used by:544
Symbol 539 GraphicUsed by:542
Symbol 540 GraphicUsed by:541
Symbol 541 MovieClipUses:540Used by:542
Symbol 542 MovieClipUses:539 541Used by:544
Symbol 543 EditableTextUses:334Used by:544
Symbol 544 MovieClip {GrowButton}Uses:384 538 542 543Used by:547
Symbol 545 EditableTextUses:344 507Used by:547
Symbol 546 EditableTextUses:344 507Used by:547
Symbol 547 MovieClip {AddTab}Uses:525 527 528 529 499 531 532 533 535 544 545 546
Symbol 548 GraphicUsed by:551
Symbol 549 GraphicUsed by:550 553
Symbol 550 MovieClipUses:549Used by:551
Symbol 551 MovieClipUses:548 550 379Used by:560
Symbol 552 GraphicUsed by:554
Symbol 553 MovieClipUses:549Used by:554
Symbol 554 MovieClipUses:552 553 387Used by:560
Symbol 555 GraphicUsed by:558 568
Symbol 556 GraphicUsed by:557 566
Symbol 557 MovieClipUses:556Used by:558
Symbol 558 MovieClipUses:555 557 387Used by:560
Symbol 559 EditableTextUses:334Used by:560
Symbol 560 MovieClip {FinishGrowingButton}Uses:551 554 558 559
Symbol 561 GraphicUsed by:565 659
Symbol 562 GraphicUsed by:563 658
Symbol 563 MovieClipUses:562Used by:565
Symbol 564 EditableTextUses:334Used by:565
Symbol 565 MovieClip {SmallButton}Uses:561 563 387 564
Symbol 566 MovieClipUses:556Used by:568
Symbol 567 EditableTextUses:334Used by:568
Symbol 568 MovieClip {LargeButton}Uses:555 566 387 567
Symbol 569 GraphicUsed by:570
Symbol 570 MovieClipUses:569Used by:592
Symbol 571 MovieClip {fl.core.ComponentShim}Used by:592
Symbol 572 GraphicUsed by:573
Symbol 573 MovieClip {Button_disabledSkin}Uses:572Used by:592
Symbol 574 GraphicUsed by:575
Symbol 575 MovieClip {Button_downSkin}Uses:574Used by:592
Symbol 576 GraphicUsed by:577
Symbol 577 MovieClip {Button_emphasizedSkin}Uses:576Used by:592
Symbol 578 GraphicUsed by:579
Symbol 579 MovieClip {Button_overSkin}Uses:578Used by:592
Symbol 580 GraphicUsed by:581
Symbol 581 MovieClip {Button_selectedDisabledSkin}Uses:580Used by:592
Symbol 582 GraphicUsed by:583
Symbol 583 MovieClip {Button_selectedDownSkin}Uses:582Used by:592
Symbol 584 GraphicUsed by:585
Symbol 585 MovieClip {Button_selectedOverSkin}Uses:584Used by:592
Symbol 586 GraphicUsed by:587
Symbol 587 MovieClip {Button_selectedUpSkin}Uses:586Used by:592
Symbol 588 GraphicUsed by:589
Symbol 589 MovieClip {Button_upSkin}Uses:588Used by:592
Symbol 590 GraphicUsed by:591
Symbol 591 MovieClip {focusRectSkin}Uses:590Used by:592
Symbol 592 MovieClip {fl.controls.Button}Uses:570 571 573 575 577 579 581 583 585 587 589 591
Symbol 593 GraphicUsed by:595
Symbol 594 GraphicUsed by:595
Symbol 595 MovieClip {TestRoot}Uses:593 594
Symbol 596 GraphicUsed by:600
Symbol 597 GraphicUsed by:598
Symbol 598 MovieClipUses:597Used by:600 607 613 615 633 645 647
Symbol 599 GraphicUsed by:600
Symbol 600 MovieClip {Root}Uses:596 23 598 599
Symbol 601 GraphicUsed by:607
Symbol 602 GraphicUsed by:603
Symbol 603 MovieClipUses:602Used by:607
Symbol 604 GraphicUsed by:607
Symbol 605 GraphicUsed by:607
Symbol 606 GraphicUsed by:607
Symbol 607 MovieClip {Leaf}Uses:601 23 603 598 604 605 606
Symbol 608 GraphicUsed by:610
Symbol 609 GraphicUsed by:610
Symbol 610 MovieClip {TestStem}Uses:608 609
Symbol 611 GraphicUsed by:613
Symbol 612 GraphicUsed by:613
Symbol 613 MovieClip {Stem}Uses:611 23 598 612
Symbol 614 GraphicUsed by:615
Symbol 615 MovieClip {FirstSeed}Uses:614 23 598
Symbol 616 GraphicUsed by:620
Symbol 617 GraphicUsed by:618
Symbol 618 MovieClipUses:617Used by:620
Symbol 619 GraphicUsed by:620
Symbol 620 MovieClipUses:616 618 619Used by:627
Symbol 621 GraphicUsed by:625
Symbol 622 GraphicUsed by:623
Symbol 623 MovieClipUses:622Used by:625
Symbol 624 GraphicUsed by:625
Symbol 625 MovieClipUses:621 623 624Used by:627
Symbol 626 EditableTextUses:12Used by:627
Symbol 627 MovieClip {CancelButton}Uses:620 625 626Used by:631
Symbol 628 BitmapUsed by:629
Symbol 629 GraphicUses:628Used by:630
Symbol 630 MovieClipUses:629Used by:631
Symbol 631 MovieClip {AddDialog}Uses:627 630
Symbol 632 GraphicUsed by:633
Symbol 633 MovieClip {FlowerStem}Uses:632 23 598
Symbol 634 GraphicUsed by:635
Symbol 635 MovieClip {TestFlower}Uses:634
Symbol 636 GraphicUsed by:639
Symbol 637 GraphicUsed by:638
Symbol 638 MovieClipUses:637Used by:639
Symbol 639 MovieClip {Flower}Uses:636 638
Symbol 640 GraphicUsed by:641
Symbol 641 MovieClipUses:640Used by:642
Symbol 642 MovieClipUses:641Used by:643
Symbol 643 MovieClip {Bee}Uses:642
Symbol 644 GraphicUsed by:645
Symbol 645 MovieClip {BigSeed}Uses:644 23 598
Symbol 646 GraphicUsed by:647
Symbol 647 MovieClip {Seed}Uses:646 23 598
Symbol 648 EditableTextUses:12 508Used by:650
Symbol 649 EditableTextUses:344 507Used by:650
Symbol 650 MovieClip {InfoBox}Uses:648 649
Symbol 651 GraphicUsed by:654
Symbol 652 GraphicUsed by:653 656
Symbol 653 MovieClipUses:652Used by:654
Symbol 654 MovieClipUses:651 653 379Used by:661
Symbol 655 GraphicUsed by:657
Symbol 656 MovieClipUses:652Used by:657
Symbol 657 MovieClipUses:655 656 387Used by:661
Symbol 658 MovieClipUses:562Used by:659
Symbol 659 MovieClipUses:561 658 387Used by:661
Symbol 660 EditableTextUses:334Used by:661
Symbol 661 MovieClip {StartButton}Uses:654 657 659 660Used by:727
Symbol 662 GraphicUsed by:665
Symbol 663 GraphicUsed by:664 667
Symbol 664 MovieClipUses:663Used by:665
Symbol 665 MovieClipUses:662 664 379Used by:674
Symbol 666 GraphicUsed by:668
Symbol 667 MovieClipUses:663Used by:668
Symbol 668 MovieClipUses:666 667 387Used by:674
Symbol 669 GraphicUsed by:672
Symbol 670 GraphicUsed by:671
Symbol 671 MovieClipUses:670Used by:672
Symbol 672 MovieClipUses:669 671 387Used by:674
Symbol 673 EditableTextUses:334Used by:674
Symbol 674 MovieClip {PlayAsFarmPlant}Uses:665 668 672 673Used by:727
Symbol 675 GraphicUsed by:727
Symbol 676 GraphicUsed by:677 679
Symbol 677 MovieClipUses:676Used by:727
Symbol 678 GraphicUsed by:727
Symbol 679 MovieClipUses:676Used by:727
Symbol 680 MovieClipUses:8Used by:727
Symbol 681 MovieClipUses:8Used by:727
Symbol 682 GraphicUsed by:727
Symbol 683 TextUses:327Used by:727
Symbol 684 TextUses:12Used by:727
Symbol 685 GraphicUsed by:716
Symbol 686 GraphicUsed by:687
Symbol 687 MovieClipUses:686Used by:716
Symbol 688 GraphicUsed by:716
Symbol 689 GraphicUsed by:690
Symbol 690 MovieClipUses:689Used by:716
Symbol 691 GraphicUsed by:716
Symbol 692 GraphicUsed by:693 694 816 817
Symbol 693 MovieClipUses:692Used by:716
Symbol 694 MovieClipUses:692Used by:716
Symbol 695 GraphicUsed by:716
Symbol 696 GraphicUsed by:697 698 699 705
Symbol 697 MovieClipUses:696Used by:716
Symbol 698 MovieClipUses:696Used by:716
Symbol 699 MovieClipUses:696Used by:716
Symbol 700 GraphicUsed by:701
Symbol 701 MovieClipUses:700Used by:716
Symbol 702 MovieClipUses:8Used by:716
Symbol 703 MovieClipUses:8Used by:716
Symbol 704 GraphicUsed by:716
Symbol 705 MovieClipUses:696Used by:716
Symbol 706 GraphicUsed by:716
Symbol 707 GraphicUsed by:708 712 745 746
Symbol 708 MovieClipUses:707Used by:716
Symbol 709 GraphicUsed by:716
Symbol 710 TextUses:327Used by:716
Symbol 711 GraphicUsed by:716
Symbol 712 MovieClipUses:707Used by:716
Symbol 713 FontUsed by:714
Symbol 714 TextUses:327 507 344 713Used by:716
Symbol 715 TextUses:327Used by:716
Symbol 716 MovieClipUses:685 687 688 690 691 693 694 695 697 698 699 701 702 703 704 705 706 708 709 710 711 712 714 715Used by:727
Symbol 717 GraphicUsed by:724
Symbol 718 MovieClipUses:8Used by:724
Symbol 719 MovieClipUses:8Used by:724
Symbol 720 TextUses:327Used by:724
Symbol 721 GraphicUsed by:724
Symbol 722 TextUses:12 344Used by:724
Symbol 723 TextUses:327Used by:724
Symbol 724 MovieClipUses:717 718 719 11 720 721 722 723Used by:727
Symbol 725 EditableTextUses:12 508Used by:727
Symbol 726 EditableTextUses:12 508Used by:727
Symbol 727 MovieClip {IntroScreen}Uses:675 677 678 679 680 681 682 683 684 716 724 725 726 394 674 661
Symbol 728 GraphicUsed by:732
Symbol 729 GraphicUsed by:730
Symbol 730 MovieClipUses:729Used by:732
Symbol 731 GraphicUsed by:732
Symbol 732 MovieClip {FarmBackground}Uses:728 730 731
Symbol 733 GraphicUsed by:781
Symbol 734 GraphicUsed by:735
Symbol 735 MovieClipUses:734Used by:781
Symbol 736 GraphicUsed by:737
Symbol 737 MovieClipUses:736Used by:781
Symbol 738 GraphicUsed by:781
Symbol 739 GraphicUsed by:740
Symbol 740 MovieClipUses:739Used by:781
Symbol 741 GraphicUsed by:781
Symbol 742 GraphicUsed by:743
Symbol 743 MovieClipUses:742Used by:781
Symbol 744 GraphicUsed by:781
Symbol 745 MovieClipUses:707Used by:781
Symbol 746 MovieClipUses:707Used by:781
Symbol 747 GraphicUsed by:748
Symbol 748 MovieClipUses:747Used by:781
Symbol 749 GraphicUsed by:781
Symbol 750 GraphicUsed by:751
Symbol 751 MovieClipUses:750Used by:781
Symbol 752 GraphicUsed by:753
Symbol 753 MovieClipUses:752Used by:781
Symbol 754 GraphicUsed by:781
Symbol 755 GraphicUsed by:756
Symbol 756 MovieClipUses:755Used by:781
Symbol 757 GraphicUsed by:758
Symbol 758 MovieClipUses:757Used by:781
Symbol 759 GraphicUsed by:760
Symbol 760 MovieClipUses:759Used by:781
Symbol 761 GraphicUsed by:762
Symbol 762 MovieClipUses:761Used by:781
Symbol 763 GraphicUsed by:764
Symbol 764 MovieClipUses:763Used by:781
Symbol 765 GraphicUsed by:766
Symbol 766 MovieClipUses:765Used by:781
Symbol 767 GraphicUsed by:781
Symbol 768 GraphicUsed by:769
Symbol 769 MovieClipUses:768Used by:781
Symbol 770 GraphicUsed by:771
Symbol 771 MovieClipUses:770Used by:781
Symbol 772 GraphicUsed by:773
Symbol 773 MovieClipUses:772Used by:781
Symbol 774 GraphicUsed by:775
Symbol 775 MovieClipUses:774Used by:781
Symbol 776 GraphicUsed by:777
Symbol 777 MovieClipUses:776Used by:781
Symbol 778 GraphicUsed by:779
Symbol 779 MovieClipUses:778Used by:781
Symbol 780 GraphicUsed by:781
Symbol 781 MovieClip {WildBackground}Uses:733 735 737 738 740 741 743 744 745 746 748 749 751 753 754 756 758 760 762 764 766 767 769 771 773 775 777 779 780
Symbol 782 MovieClip {SmallDisplayMark}Uses:6
Symbol 783 MovieClip {BarDisplayMark}Uses:6
Symbol 784 GraphicUsed by:785
Symbol 785 MovieClip {PlantLimit}Uses:784
Symbol 786 BitmapUsed by:787
Symbol 787 GraphicUses:786Used by:788
Symbol 788 MovieClipUses:787Used by:789
Symbol 789 MovieClip {Pest}Uses:788
Symbol 790 GraphicUsed by:791
Symbol 791 MovieClipUses:790Used by:794
Symbol 792 GraphicUsed by:793
Symbol 793 MovieClipUses:792Used by:794
Symbol 794 MovieClip {Insecticide}Uses:791 793
Symbol 795 GraphicUsed by:796
Symbol 796 MovieClipUses:795Used by:797
Symbol 797 MovieClipUses:796Used by:801
Symbol 798 GraphicUsed by:799
Symbol 799 MovieClipUses:798Used by:800
Symbol 800 MovieClipUses:799Used by:801
Symbol 801 MovieClip {Weather}Uses:797 800
Symbol 802 GraphicUsed by:803
Symbol 803 MovieClipUses:802Used by:810
Symbol 804 GraphicUsed by:805
Symbol 805 MovieClipUses:804Used by:806
Symbol 806 MovieClipUses:805Used by:810
Symbol 807 GraphicUsed by:808
Symbol 808 MovieClipUses:807Used by:809
Symbol 809 MovieClipUses:808Used by:810
Symbol 810 MovieClip {Beetle}Uses:803 806 809
Symbol 811 GraphicUsed by:812
Symbol 812 MovieClipUses:811Used by:835
Symbol 813 GraphicUsed by:834
Symbol 814 GraphicUsed by:815 819
Symbol 815 MovieClipUses:814Used by:834
Symbol 816 MovieClipUses:692Used by:834
Symbol 817 MovieClipUses:692Used by:834
Symbol 818 GraphicUsed by:834
Symbol 819 MovieClipUses:814Used by:834
Symbol 820 GraphicUsed by:834
Symbol 821 GraphicUsed by:822 823 824 825 826 828 832 833
Symbol 822 MovieClipUses:821Used by:834
Symbol 823 MovieClipUses:821Used by:834
Symbol 824 MovieClipUses:821Used by:834
Symbol 825 MovieClipUses:821Used by:834
Symbol 826 MovieClipUses:821Used by:834
Symbol 827 GraphicUsed by:834
Symbol 828 MovieClipUses:821Used by:834
Symbol 829 GraphicUsed by:830 831
Symbol 830 MovieClipUses:829Used by:834
Symbol 831 MovieClipUses:829Used by:834
Symbol 832 MovieClipUses:821Used by:834
Symbol 833 MovieClipUses:821Used by:834
Symbol 834 MovieClipUses:813 815 816 817 818 819 820 822 823 824 825 826 827 828 830 831 832 833Used by:835
Symbol 835 MovieClip {Neighbour}Uses:812 834
Symbol 836 GraphicUsed by:837
Symbol 837 MovieClip {carbonIcon}Uses:836
Symbol 838 GraphicUsed by:839
Symbol 839 MovieClip {sunlightIcon}Uses:838
Symbol 840 GraphicUsed by:841
Symbol 841 MovieClip {sugarIcon}Uses:840
Symbol 842 GraphicUsed by:843
Symbol 843 MovieClip {mineralIcon}Uses:842
Symbol 844 GraphicUsed by:845
Symbol 845 MovieClip {waterIcon}Uses:844
Symbol 846 GraphicUsed by:847
Symbol 847 MovieClip {GreyFrame}Uses:846

Instance Names

"displayText"Symbol 15 MovieClip {TimeOut} Frame 1Symbol 13 EditableText
"title"Symbol 15 MovieClip {TimeOut} Frame 1Symbol 14 EditableText
"border1"Symbol 23 MovieClip {Meristem} Frame 1Symbol 20 MovieClip
"border3"Symbol 23 MovieClip {Meristem} Frame 1Symbol 20 MovieClip
"border2"Symbol 23 MovieClip {Meristem} Frame 1Symbol 20 MovieClip
"border4"Symbol 23 MovieClip {Meristem} Frame 1Symbol 20 MovieClip
"highlightGraphic"Symbol 23 MovieClip {Meristem} Frame 1Symbol 22 MovieClip
"testnode1"Symbol 27 MovieClip {TestLeaf} Frame 1Symbol 23 MovieClip {Meristem}
"valueText"Symbol 348 MovieClip {StatusBarDisplay} Frame 1Symbol 347 EditableText
"farmLabel"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 339 MovieClip
"wildLabel"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 341 MovieClip
"monthsLeft2"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 342 EditableText
"monthsLeft1"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 343 EditableText
"monthName2"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 345 EditableText
"monthName1"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 346 EditableText
"sugarAmount"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 348 MovieClip {StatusBarDisplay}
"mineralAmount"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 348 MovieClip {StatusBarDisplay}
"runningScore2"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 349 EditableText
"runningScore1"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 350 EditableText
"rainLabel2"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 351 EditableText
"rainLabel"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 352 EditableText
"sunshineLabel2"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 353 EditableText
"sunshineLabel"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 354 EditableText
"rainIcon"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 364 MovieClip
"sunIcon"Symbol 373 MovieClip {StatusDisplay} Frame 1Symbol 371 MovieClip
"disabledGraphic"Symbol 388 MovieClip Frame 1Symbol 384 MovieClip
"disabledGraphic"Symbol 394 MovieClip {PlayAsWildPlant} Frame 1Symbol 380 MovieClip
"overGraphic"Symbol 394 MovieClip {PlayAsWildPlant} Frame 1Symbol 388 MovieClip
"enabledGraphic"Symbol 394 MovieClip {PlayAsWildPlant} Frame 1Symbol 392 MovieClip
"label"Symbol 394 MovieClip {PlayAsWildPlant} Frame 1Symbol 393 EditableText
"advice"Symbol 395 MovieClip {QuitDialog} Frame 1Symbol 374 EditableText
"title"Symbol 395 MovieClip {QuitDialog} Frame 1Symbol 375 EditableText
"cancel"Symbol 395 MovieClip {QuitDialog} Frame 1Symbol 394 MovieClip {PlayAsWildPlant}
"doAll"Symbol 395 MovieClip {QuitDialog} Frame 1Symbol 394 MovieClip {PlayAsWildPlant}
"advice"Symbol 398 MovieClip {DoAllSeeds} Frame 1Symbol 396 EditableText
"title"Symbol 398 MovieClip {DoAllSeeds} Frame 1Symbol 397 EditableText
"cancel"Symbol 398 MovieClip {DoAllSeeds} Frame 1Symbol 394 MovieClip {PlayAsWildPlant}
"doAll"Symbol 398 MovieClip {DoAllSeeds} Frame 1Symbol 394 MovieClip {PlayAsWildPlant}
"disabledGraphic"Symbol 411 MovieClip {Credits} Frame 1Symbol 402 MovieClip
"overGraphic"Symbol 411 MovieClip {Credits} Frame 1Symbol 405 MovieClip
"enabledGraphic"Symbol 411 MovieClip {Credits} Frame 1Symbol 409 MovieClip
"label"Symbol 411 MovieClip {Credits} Frame 1Symbol 410 EditableText
"disabledGraphic"Symbol 426 MovieClip {PlayAgain} Frame 1Symbol 417 MovieClip
"overGraphic"Symbol 426 MovieClip {PlayAgain} Frame 1Symbol 420 MovieClip
"enabledGraphic"Symbol 426 MovieClip {PlayAgain} Frame 1Symbol 424 MovieClip
"label"Symbol 426 MovieClip {PlayAgain} Frame 1Symbol 425 EditableText
"endReason"Symbol 430 MovieClip Frame 1Symbol 412 EditableText
"report"Symbol 430 MovieClip Frame 1Symbol 413 EditableText
"nextButton"Symbol 430 MovieClip Frame 1Symbol 426 MovieClip {PlayAgain}
"score"Symbol 430 MovieClip Frame 1Symbol 427 EditableText
"rating"Symbol 430 MovieClip Frame 1Symbol 428 EditableText
"disabledGraphic"Symbol 451 MovieClip {GoBack} Frame 1Symbol 441 MovieClip
"overGraphic"Symbol 451 MovieClip {GoBack} Frame 1Symbol 445 MovieClip
"enabledGraphic"Symbol 451 MovieClip {GoBack} Frame 1Symbol 449 MovieClip
"label"Symbol 451 MovieClip {GoBack} Frame 1Symbol 450 EditableText
"creditButton"Symbol 452 MovieClip {EndGame} Frame 1Symbol 411 MovieClip {Credits}
"endText"Symbol 452 MovieClip {EndGame} Frame 1Symbol 430 MovieClip
"creditDisplay"Symbol 452 MovieClip {EndGame} Frame 1Symbol 436 MovieClip
"backButton"Symbol 452 MovieClip {EndGame} Frame 1Symbol 451 MovieClip {GoBack}
"disabledGraphic"Symbol 469 MovieClip {CreateSugar} Frame 1Symbol 460 MovieClip
"overGraphic"Symbol 469 MovieClip {CreateSugar} Frame 1Symbol 463 MovieClip
"enabledGraphic"Symbol 469 MovieClip {CreateSugar} Frame 1Symbol 467 MovieClip
"label"Symbol 469 MovieClip {CreateSugar} Frame 1Symbol 468 EditableText
"disabledGraphic"Symbol 482 MovieClip {AbsorbWaterMinerals} Frame 1Symbol 473 MovieClip
"overGraphic"Symbol 482 MovieClip {AbsorbWaterMinerals} Frame 1Symbol 476 MovieClip
"enabledGraphic"Symbol 482 MovieClip {AbsorbWaterMinerals} Frame 1Symbol 480 MovieClip
"label"Symbol 482 MovieClip {AbsorbWaterMinerals} Frame 1Symbol 481 EditableText
"valueText"Symbol 486 MovieClip {ReportDisplay} Frame 1Symbol 485 EditableText
"waterReport"Symbol 487 MovieClip Frame 1Symbol 483 EditableText
"mineralReport"Symbol 487 MovieClip Frame 1Symbol 484 EditableText
"waterBar"Symbol 487 MovieClip Frame 1Symbol 486 MovieClip {ReportDisplay}
"mineralBar"Symbol 487 MovieClip Frame 1Symbol 486 MovieClip {ReportDisplay}
"rootReport"Symbol 492 MovieClip {RootReport} Frame 1Symbol 456 EditableText
"leafButton"Symbol 492 MovieClip {RootReport} Frame 1Symbol 469 MovieClip {CreateSugar}
"nextButton"Symbol 492 MovieClip {RootReport} Frame 1Symbol 482 MovieClip {AbsorbWaterMinerals}
"rootGraphic"Symbol 492 MovieClip {RootReport} Frame 1Symbol 487 MovieClip
"leafReport"Symbol 492 MovieClip {RootReport} Frame 1Symbol 488 EditableText
"month"Symbol 492 MovieClip {RootReport} Frame 1Symbol 489 EditableText
"report"Symbol 492 MovieClip {RootReport} Frame 1Symbol 490 EditableText
"mineralReport"Symbol 492 MovieClip {RootReport} Frame 1Symbol 491 EditableText
"label"Symbol 500 MovieClip Frame 1Symbol 498 EditableText
"measure"Symbol 505 MovieClip {Slider} Frame 1Symbol 497 MovieClip
"quarter"Symbol 505 MovieClip {Slider} Frame 1Symbol 500 MovieClip
"half"Symbol 505 MovieClip {Slider} Frame 1Symbol 500 MovieClip
"threeQuarter"Symbol 505 MovieClip {Slider} Frame 1Symbol 500 MovieClip
"arrow"Symbol 505 MovieClip {Slider} Frame 1Symbol 504 MovieClip
"leavesOpenDisplay"Symbol 521 MovieClip Frame 1Symbol 516 EditableText
"leavesNumber"Symbol 521 MovieClip Frame 1Symbol 518 EditableText
"disallowed"Symbol 521 MovieClip Frame 1Symbol 520 MovieClip
"slider"Symbol 523 MovieClip {LeafReport} Frame 1Symbol 505 MovieClip {Slider}
"nextMonth"Symbol 523 MovieClip {LeafReport} Frame 1Symbol 469 MovieClip {CreateSugar}
"leavesCount"Symbol 523 MovieClip {LeafReport} Frame 1Symbol 513 EditableText
"noOfLeaves"Symbol 523 MovieClip {LeafReport} Frame 1Symbol 514 EditableText
"leafIndicator"Symbol 523 MovieClip {LeafReport} Frame 1Symbol 521 MovieClip
"co2Bar"Symbol 523 MovieClip {LeafReport} Frame 1Symbol 486 MovieClip {ReportDisplay}
"sunlightBar"Symbol 523 MovieClip {LeafReport} Frame 1Symbol 486 MovieClip {ReportDisplay}
"waterBar"Symbol 523 MovieClip {LeafReport} Frame 1Symbol 486 MovieClip {ReportDisplay}
"sugarBar"Symbol 523 MovieClip {LeafReport} Frame 1Symbol 486 MovieClip {ReportDisplay}
"rootBackground"Symbol 524 MovieClip {Nutrients} Frame 1Symbol 455 MovieClip
"rootReport"Symbol 524 MovieClip {Nutrients} Frame 1Symbol 492 MovieClip {RootReport}
"leafReport"Symbol 524 MovieClip {Nutrients} Frame 1Symbol 523 MovieClip {LeafReport}
"valueText"Symbol 535 MovieClip {TabDisplay} Frame 1Symbol 534 EditableText
"disabledGraphic"Symbol 544 MovieClip {GrowButton} Frame 1Symbol 384 MovieClip
"overGraphic"Symbol 544 MovieClip {GrowButton} Frame 1Symbol 538 MovieClip
"enabledGraphic"Symbol 544 MovieClip {GrowButton} Frame 1Symbol 542 MovieClip
"label"Symbol 544 MovieClip {GrowButton} Frame 1Symbol 543 EditableText
"newItem"Symbol 547 MovieClip {AddTab} Frame 1Symbol 533 EditableText
"sugarBar"Symbol 547 MovieClip {AddTab} Frame 1Symbol 535 MovieClip {TabDisplay}
"mineralBar"Symbol 547 MovieClip {AddTab} Frame 1Symbol 535 MovieClip {TabDisplay}
"addButton"Symbol 547 MovieClip {AddTab} Frame 1Symbol 544 MovieClip {GrowButton}
"needSugar"Symbol 547 MovieClip {AddTab} Frame 1Symbol 545 EditableText
"needMinerals"Symbol 547 MovieClip {AddTab} Frame 1Symbol 546 EditableText
"disabledGraphic"Symbol 560 MovieClip {FinishGrowingButton} Frame 1Symbol 551 MovieClip
"overGraphic"Symbol 560 MovieClip {FinishGrowingButton} Frame 1Symbol 554 MovieClip
"enabledGraphic"Symbol 560 MovieClip {FinishGrowingButton} Frame 1Symbol 558 MovieClip
"label"Symbol 560 MovieClip {FinishGrowingButton} Frame 1Symbol 559 EditableText
"label"Symbol 565 MovieClip {SmallButton} Frame 1Symbol 564 EditableText
"label"Symbol 568 MovieClip {LargeButton} Frame 1Symbol 567 EditableText
"node1"Symbol 600 MovieClip {Root} Frame 1Symbol 23 MovieClip {Meristem}
"node2"Symbol 600 MovieClip {Root} Frame 1Symbol 23 MovieClip {Meristem}
"arrow1"Symbol 600 MovieClip {Root} Frame 1Symbol 598 MovieClip
"arrow2"Symbol 600 MovieClip {Root} Frame 1Symbol 598 MovieClip
"node1"Symbol 607 MovieClip {Leaf} Frame 1Symbol 23 MovieClip {Meristem}
"node2"Symbol 607 MovieClip {Leaf} Frame 1Symbol 23 MovieClip {Meristem}
"flowerPos"Symbol 607 MovieClip {Leaf} Frame 1Symbol 603 MovieClip
"arrow1"Symbol 607 MovieClip {Leaf} Frame 1Symbol 598 MovieClip
"arrow2"Symbol 607 MovieClip {Leaf} Frame 1Symbol 598 MovieClip
"node1"Symbol 613 MovieClip {Stem} Frame 1Symbol 23 MovieClip {Meristem}
"arrow1"Symbol 613 MovieClip {Stem} Frame 1Symbol 598 MovieClip
"node1"Symbol 615 MovieClip {FirstSeed} Frame 1Symbol 23 MovieClip {Meristem}
"node2"Symbol 615 MovieClip {FirstSeed} Frame 1Symbol 23 MovieClip {Meristem}
"arrow2"Symbol 615 MovieClip {FirstSeed} Frame 1Symbol 598 MovieClip
"arrow1"Symbol 615 MovieClip {FirstSeed} Frame 1Symbol 598 MovieClip
"disabledGraphic"Symbol 627 MovieClip {CancelButton} Frame 1Symbol 620 MovieClip
"overGraphic"Symbol 627 MovieClip {CancelButton} Frame 1Symbol 625 MovieClip
"enabledGraphic"Symbol 627 MovieClip {CancelButton} Frame 1Symbol 620 MovieClip
"label"Symbol 627 MovieClip {CancelButton} Frame 1Symbol 626 EditableText
"cancelButton"Symbol 631 MovieClip {AddDialog} Frame 1Symbol 627 MovieClip {CancelButton}
"dottedLine"Symbol 631 MovieClip {AddDialog} Frame 1Symbol 630 MovieClip
"node1"Symbol 633 MovieClip {FlowerStem} Frame 1Symbol 23 MovieClip {Meristem}
"arrow1"Symbol 633 MovieClip {FlowerStem} Frame 1Symbol 598 MovieClip
"node1"Symbol 645 MovieClip {BigSeed} Frame 1Symbol 23 MovieClip {Meristem}
"arrow1"Symbol 645 MovieClip {BigSeed} Frame 1Symbol 598 MovieClip
"node1"Symbol 647 MovieClip {Seed} Frame 1Symbol 23 MovieClip {Meristem}
"arrow1"Symbol 647 MovieClip {Seed} Frame 1Symbol 598 MovieClip
"displayMessage"Symbol 650 MovieClip {InfoBox} Frame 1Symbol 648 EditableText
"displayTitle"Symbol 650 MovieClip {InfoBox} Frame 1Symbol 649 EditableText
"disabledGraphic"Symbol 661 MovieClip {StartButton} Frame 1Symbol 654 MovieClip
"overGraphic"Symbol 661 MovieClip {StartButton} Frame 1Symbol 657 MovieClip
"enabledGraphic"Symbol 661 MovieClip {StartButton} Frame 1Symbol 659 MovieClip
"label"Symbol 661 MovieClip {StartButton} Frame 1Symbol 660 EditableText
"disabledGraphic"Symbol 674 MovieClip {PlayAsFarmPlant} Frame 1Symbol 665 MovieClip
"overGraphic"Symbol 674 MovieClip {PlayAsFarmPlant} Frame 1Symbol 668 MovieClip
"enabledGraphic"Symbol 674 MovieClip {PlayAsFarmPlant} Frame 1Symbol 672 MovieClip
"label"Symbol 674 MovieClip {PlayAsFarmPlant} Frame 1Symbol 673 EditableText
"wildInstructions"Symbol 727 MovieClip {IntroScreen} Frame 1Symbol 716 MovieClip
"farmInstructions"Symbol 727 MovieClip {IntroScreen} Frame 1Symbol 724 MovieClip
"tenMinutes"Symbol 727 MovieClip {IntroScreen} Frame 1Symbol 725 EditableText
"trackball"Symbol 727 MovieClip {IntroScreen} Frame 1Symbol 726 EditableText
"wildButton"Symbol 727 MovieClip {IntroScreen} Frame 1Symbol 394 MovieClip {PlayAsWildPlant}
"farmButton"Symbol 727 MovieClip {IntroScreen} Frame 1Symbol 674 MovieClip {PlayAsFarmPlant}
"fullscreen"Symbol 727 MovieClip {IntroScreen} Frame 1Symbol 674 MovieClip {PlayAsFarmPlant}
"window"Symbol 727 MovieClip {IntroScreen} Frame 1Symbol 394 MovieClip {PlayAsWildPlant}
"backToMenu"Symbol 727 MovieClip {IntroScreen} Frame 1Symbol 394 MovieClip {PlayAsWildPlant}
"nextButton"Symbol 727 MovieClip {IntroScreen} Frame 1Symbol 661 MovieClip {StartButton}
"heavyRain"Symbol 801 MovieClip {Weather} Frame 1Symbol 797 MovieClip
"lightRain"Symbol 801 MovieClip {Weather} Frame 1Symbol 800 MovieClip
"dead"Symbol 810 MovieClip {Beetle} Frame 1Symbol 803 MovieClip
"eaten"Symbol 810 MovieClip {Beetle} Frame 1Symbol 806 MovieClip
"alive"Symbol 810 MovieClip {Beetle} Frame 1Symbol 809 MovieClip
"canopyMask"Symbol 835 MovieClip {Neighbour} Frame 1Symbol 812 MovieClip
"wildCanopy"Symbol 835 MovieClip {Neighbour} Frame 1Symbol 834 MovieClip

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata not present, AS3.




http://swfchan.com/26/129534/info.shtml
Created: 23/2 -2019 03:37:19 Last modified: 23/2 -2019 03:37:19 Server time: 07/05 -2024 10:00:53