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

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

i-dont-come-in-peace.swf

This is the info page for
Flash #124818

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


ActionScript [AS3]
Section 1
//BinaryItem (br.com.stimuli.loading.loadingtypes.BinaryItem) package br.com.stimuli.loading.loadingtypes { import flash.events.*; import flash.display.*; import flash.utils.*; import br.com.stimuli.loading.*; import flash.net.*; public class BinaryItem extends LoadingItem { public var loader:URLLoader; public function BinaryItem(_arg1:URLRequest, _arg2:String, _arg3:String){ super(_arg1, _arg2, _arg3); } override public function onErrorHandler(_arg1:ErrorEvent):void{ super.onErrorHandler(_arg1); } override public function stop():void{ try { if (loader){ loader.close(); }; } catch(e:Error) { }; super.stop(); } override public function cleanListeners():void{ if (loader){ loader.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false); loader.removeEventListener(Event.COMPLETE, onCompleteHandler, false); loader.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); loader.removeEventListener(BulkLoader.OPEN, onStartedHandler, false); loader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false); loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, super.onSecurityErrorHandler, false); }; } override public function load():void{ super.load(); loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true); loader.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true); loader.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 0, true); loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false, 0, true); loader.addEventListener(Event.OPEN, onStartedHandler, false, 0, true); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, super.onSecurityErrorHandler, false, 0, true); try { loader.load(url); } catch(e:SecurityError) { onSecurityErrorHandler(_createErrorEvent(e)); }; } override public function onStartedHandler(_arg1:Event):void{ super.onStartedHandler(_arg1); } override public function onCompleteHandler(_arg1:Event):void{ _content = _arg1.target.data; super.onCompleteHandler(_arg1); } override public function _parseOptions(_arg1:Object):Array{ return (super._parseOptions(_arg1)); } override public function destroy():void{ stop(); cleanListeners(); _content = null; loader = null; } } }//package br.com.stimuli.loading.loadingtypes
Section 2
//ImageItem (br.com.stimuli.loading.loadingtypes.ImageItem) package br.com.stimuli.loading.loadingtypes { import flash.events.*; import flash.display.*; import flash.utils.*; import br.com.stimuli.loading.*; import flash.net.*; public class ImageItem extends LoadingItem { public var loader:Loader; public function ImageItem(_arg1:URLRequest, _arg2:String, _arg3:String){ specificAvailableProps = [BulkLoader.CONTEXT]; super(_arg1, _arg2, _arg3); } override public function onErrorHandler(_arg1:ErrorEvent):void{ super.onErrorHandler(_arg1); } override public function stop():void{ try { if (loader){ loader.close(); }; } catch(e:Error) { }; super.stop(); } override public function load():void{ super.load(); loader = new Loader(); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true); loader.contentLoaderInfo.addEventListener(Event.INIT, onInitHandler, false, 0, true); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 100, true); loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityErrorHandler, false, 0, true); loader.contentLoaderInfo.addEventListener(Event.OPEN, onStartedHandler, false, 0, true); loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false, 0, true); try { loader.load(url, _context); } catch(e:SecurityError) { onSecurityErrorHandler(_createErrorEvent(e)); }; } override public function destroy():void{ stop(); cleanListeners(); _content = null; loader = null; } override public function _parseOptions(_arg1:Object):Array{ _context = ((_arg1[BulkLoader.CONTEXT]) || (null)); return (super._parseOptions(_arg1)); } public function getDefinitionByName(_arg1:String):Object{ if (loader.contentLoaderInfo.applicationDomain.hasDefinition(_arg1)){ return (loader.contentLoaderInfo.applicationDomain.getDefinition(_arg1)); }; return (null); } override public function isImage():Boolean{ return ((type == BulkLoader.TYPE_IMAGE)); } override public function onCompleteHandler(_arg1:Event):void{ var evt = _arg1; try { _content = loader.content; super.onCompleteHandler(evt); } catch(e:SecurityError) { _content = loader; super.onCompleteHandler(evt); }; } override public function cleanListeners():void{ var _local1:Object; if (loader){ _local1 = loader.contentLoaderInfo; _local1.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false); _local1.removeEventListener(Event.COMPLETE, onCompleteHandler, false); _local1.removeEventListener(Event.INIT, onInitHandler, false); _local1.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); _local1.removeEventListener(BulkLoader.OPEN, onStartedHandler, false); _local1.removeEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false); }; } override public function isSWF():Boolean{ return ((type == BulkLoader.TYPE_MOVIECLIP)); } public function _onHttpStatusHandler(_arg1:HTTPStatusEvent):void{ _httpStatus = _arg1.status; dispatchEvent(_arg1); } public function onInitHandler(_arg1:Event):void{ dispatchEvent(_arg1); } } }//package br.com.stimuli.loading.loadingtypes
Section 3
//LoadingItem (br.com.stimuli.loading.loadingtypes.LoadingItem) package br.com.stimuli.loading.loadingtypes { import flash.events.*; import flash.display.*; import flash.utils.*; import br.com.stimuli.loading.*; import flash.net.*; import br.com.stimuli.loading.utils.*; public class LoadingItem extends EventDispatcher { public var _priority:int;// = 0 public var _type:String; public var _parsedURL:SmartURL; public var _isLoaded:Boolean; public var _isLoading:Boolean; public var _additionIndex:int; public var _bytesTotal:int;// = -1 public var _httpStatus:int;// = -1 public var _content; public var status:String; public var _speed:Number; public var _weightPercentLoaded:Number; public var propertyParsingErrors:Array; public var url:URLRequest; public var errorEvent:ErrorEvent; public var weight:int;// = 1 public var _addedTime:int; public var _context;// = null public var preventCache:Boolean; public var _responseTime:Number; public var _uid:String; public var maxTries:int;// = 3 public var _bytesLoaded:int;// = 0 public var _percentLoaded:Number; public var _totalTime:int; public var numTries:int;// = 0 public var _id:String; public var _latency:Number; public var _startTime:int; public var _bytesRemaining:int;// = 10000000 public var _timeToDownload:Number; public var specificAvailableProps:Array; public static const STATUS_STOPPED:String = "stopped"; public static const STATUS_STARTED:String = "started"; public static const STATUS_ERROR:String = "error"; public static const STATUS_FINISHED:String = "finished"; public function LoadingItem(_arg1:URLRequest, _arg2:String, _arg3:String){ this._type = _arg2; this.url = _arg1; _parsedURL = new SmartURL(_arg1.url); if (!specificAvailableProps){ specificAvailableProps = []; }; this._uid = _arg3; } public function onSecurityErrorHandler(_arg1:ErrorEvent):void{ status = STATUS_ERROR; errorEvent = (_arg1 as ErrorEvent); _arg1.stopPropagation(); _dispatchErrorEvent(errorEvent); } public function stop():void{ if (_isLoaded){ return; }; status = STATUS_STOPPED; _isLoading = false; } public function isSound():Boolean{ return (false); } public function onCompleteHandler(_arg1:Event):void{ _totalTime = getTimer(); _timeToDownload = ((_totalTime - _responseTime) / 1000); if (_timeToDownload == 0){ _timeToDownload = 0.1; }; _speed = BulkLoader.truncateNumber(((bytesTotal / 0x0400) / _timeToDownload)); status = STATUS_FINISHED; _isLoaded = true; dispatchEvent(_arg1); _arg1.stopPropagation(); } public function get weightPercentLoaded():Number{ return (_weightPercentLoaded); } public function get id():String{ return (_id); } public function _dispatchErrorEvent(_arg1:ErrorEvent):void{ status = STATUS_ERROR; dispatchEvent(new ErrorEvent(BulkLoader.ERROR, true, false, _arg1.text)); } public function onHttpStatusHandler(_arg1:HTTPStatusEvent):void{ _httpStatus = _arg1.status; dispatchEvent(_arg1); } public function get totalTime():int{ return (_totalTime); } public function get type():String{ return (_type); } public function get speed():Number{ return (_speed); } public function _parseOptions(_arg1:Object):Array{ var _local3:String; preventCache = _arg1[BulkLoader.PREVENT_CACHING]; _id = _arg1[BulkLoader.ID]; _priority = ((int(_arg1[BulkLoader.PRIORITY])) || (0)); maxTries = ((_arg1[BulkLoader.MAX_TRIES]) || (3)); weight = ((int(_arg1[BulkLoader.WEIGHT])) || (1)); var _local2:Array = BulkLoader.GENERAL_AVAILABLE_PROPS.concat(specificAvailableProps); propertyParsingErrors = []; for (_local3 in _arg1) { if (_local2.indexOf(_local3) == -1){ propertyParsingErrors.push(((((this + ": got a wrong property name: ") + _local3) + ", with value:") + _arg1[_local3])); }; }; return (propertyParsingErrors); } public function get startTime():int{ return (_startTime); } public function get bytesLoaded():int{ return (_bytesLoaded); } public function isImage():Boolean{ return (false); } public function onStartedHandler(_arg1:Event):void{ _responseTime = getTimer(); _latency = BulkLoader.truncateNumber(((_responseTime - _startTime) / 1000)); status = STATUS_STARTED; dispatchEvent(_arg1); } public function get hostName():String{ return (_parsedURL.host); } override public function toString():String{ return (((((("LoadingItem url: " + url.url) + ", type:") + _type) + ", status: ") + status)); } public function isVideo():Boolean{ return (false); } public function isText():Boolean{ return (false); } public function get content(){ return (_content); } public function onProgressHandler(_arg1):void{ _bytesLoaded = _arg1.bytesLoaded; _bytesTotal = _arg1.bytesTotal; _bytesRemaining = (_bytesTotal - bytesLoaded); _percentLoaded = (_bytesLoaded / _bytesTotal); _weightPercentLoaded = (_percentLoaded * weight); dispatchEvent(_arg1); } public function isXML():Boolean{ return (false); } public function get bytesTotal():int{ return (_bytesTotal); } public function get httpStatus():int{ return (_httpStatus); } public function onErrorHandler(_arg1:ErrorEvent):void{ numTries++; _arg1.stopPropagation(); if (numTries < maxTries){ status = null; load(); } else { status = STATUS_ERROR; errorEvent = _arg1; _dispatchErrorEvent(errorEvent); }; } public function get humanFiriendlySize():String{ var _local1:Number = (_bytesTotal / 0x0400); if (_local1 < 0x0400){ return ((int(_local1) + " kb")); }; return (((_local1 / 0x0400).toPrecision(3) + " mb")); } public function isStreamable():Boolean{ return (false); } public function get percentLoaded():Number{ return (_percentLoaded); } public function get responseTime():Number{ return (_responseTime); } public function get priority():int{ return (_priority); } public function get bytesRemaining():int{ return (_bytesRemaining); } public function get isLoaded():Boolean{ return (_isLoaded); } public function get timeToDownload():int{ return (_timeToDownload); } public function isLoader():Boolean{ return (false); } public function load():void{ var _local1:String; if (preventCache){ _local1 = ((("BulkLoaderNoCache=" + _uid) + "_") + int(((Math.random() * 100) * getTimer()))); if (url.url.indexOf("?") == -1){ url.url = (url.url + ("?" + _local1)); } else { url.url = (url.url + ("&" + _local1)); }; }; _isLoading = true; _startTime = getTimer(); } public function getStats():String{ return (((((((((((("Item url: " + url.url) + "(s), total time: ") + (_totalTime / 1000).toPrecision(3)) + "(s), download time: ") + _timeToDownload.toPrecision(3)) + "(s), latency:") + _latency) + "(s), speed: ") + _speed) + " kb/s, size: ") + humanFiriendlySize)); } public function get addedTime():int{ return (_addedTime); } public function _createErrorEvent(_arg1:Error):ErrorEvent{ return (new ErrorEvent(BulkLoader.ERROR, false, false, _arg1.message)); } public function cleanListeners():void{ } public function isSWF():Boolean{ return (false); } public function destroy():void{ _content = null; } public function get latency():Number{ return (_latency); } } }//package br.com.stimuli.loading.loadingtypes
Section 4
//SoundItem (br.com.stimuli.loading.loadingtypes.SoundItem) package br.com.stimuli.loading.loadingtypes { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.media.*; import br.com.stimuli.loading.*; import flash.net.*; public class SoundItem extends LoadingItem { public var loader:Sound; public function SoundItem(_arg1:URLRequest, _arg2:String, _arg3:String){ specificAvailableProps = [BulkLoader.CONTEXT]; super(_arg1, _arg2, _arg3); } override public function onErrorHandler(_arg1:ErrorEvent):void{ super.onErrorHandler(_arg1); } override public function stop():void{ try { if (loader){ loader.close(); }; } catch(e:Error) { }; super.stop(); } override public function isStreamable():Boolean{ return (true); } override public function isSound():Boolean{ return (true); } override public function load():void{ super.load(); loader = new Sound(); loader.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true); loader.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true); loader.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 0, true); loader.addEventListener(Event.OPEN, onStartedHandler, false, 0, true); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, super.onSecurityErrorHandler, false, 0, true); try { loader.load(url, _context); } catch(e:SecurityError) { onSecurityErrorHandler(_createErrorEvent(e)); }; } override public function onStartedHandler(_arg1:Event):void{ _content = loader; super.onStartedHandler(_arg1); } override public function destroy():void{ cleanListeners(); stop(); _content = null; loader = null; } override public function _parseOptions(_arg1:Object):Array{ _context = ((_arg1[BulkLoader.CONTEXT]) || (null)); return (super._parseOptions(_arg1)); } override public function onCompleteHandler(_arg1:Event):void{ _content = loader; super.onCompleteHandler(_arg1); } override public function cleanListeners():void{ if (loader){ loader.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false); loader.removeEventListener(Event.COMPLETE, onCompleteHandler, false); loader.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); loader.removeEventListener(BulkLoader.OPEN, onStartedHandler, false); loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, super.onSecurityErrorHandler, false); }; } } }//package br.com.stimuli.loading.loadingtypes
Section 5
//URLItem (br.com.stimuli.loading.loadingtypes.URLItem) package br.com.stimuli.loading.loadingtypes { import flash.events.*; import br.com.stimuli.loading.*; import flash.net.*; public class URLItem extends LoadingItem { public var loader:URLLoader; public function URLItem(_arg1:URLRequest, _arg2:String, _arg3:String){ super(_arg1, _arg2, _arg3); } override public function stop():void{ try { if (loader){ loader.close(); }; } catch(e:Error) { }; super.stop(); } override public function cleanListeners():void{ if (loader){ loader.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false); loader.removeEventListener(Event.COMPLETE, onCompleteHandler, false); loader.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); loader.removeEventListener(BulkLoader.OPEN, onStartedHandler, false); loader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false); }; } override public function load():void{ super.load(); loader = new URLLoader(); loader.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true); loader.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true); loader.addEventListener(IOErrorEvent.IO_ERROR, super.onErrorHandler, false, 0, true); loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false, 0, true); loader.addEventListener(Event.OPEN, onStartedHandler, false, 0, true); try { loader.load(url); } catch(e:SecurityError) { onSecurityErrorHandler(_createErrorEvent(e)); }; } override public function isText():Boolean{ return (true); } override public function onStartedHandler(_arg1:Event):void{ super.onStartedHandler(_arg1); } override public function onCompleteHandler(_arg1:Event):void{ _content = loader.data; super.onCompleteHandler(_arg1); } override public function _parseOptions(_arg1:Object):Array{ return (super._parseOptions(_arg1)); } override public function destroy():void{ stop(); cleanListeners(); _content = null; loader = null; } } }//package br.com.stimuli.loading.loadingtypes
Section 6
//VideoItem (br.com.stimuli.loading.loadingtypes.VideoItem) package br.com.stimuli.loading.loadingtypes { import flash.events.*; import flash.display.*; import flash.utils.*; import br.com.stimuli.loading.*; import flash.net.*; public class VideoItem extends LoadingItem { public var stream:NetStream; public var dummyEventTrigger:Sprite; public var pausedAtStart:Boolean;// = false public var _metaData:Object; public var _canBeginStreaming:Boolean;// = false private var nc:NetConnection; public var _checkPolicyFile:Boolean; public function VideoItem(_arg1:URLRequest, _arg2:String, _arg3:String){ specificAvailableProps = [BulkLoader.CHECK_POLICY_FILE, BulkLoader.PAUSED_AT_START]; super(_arg1, _arg2, _arg3); _bytesTotal = (_bytesLoaded = 0); } public function get checkPolicyFile():Object{ return (_checkPolicyFile); } override public function onStartedHandler(_arg1:Event):void{ _content = stream; if (((pausedAtStart) && (stream))){ stream.pause(); }; super.onStartedHandler(_arg1); } override public function stop():void{ try { if (stream){ stream.close(); }; } catch(e:Error) { }; super.stop(); } override public function _parseOptions(_arg1:Object):Array{ pausedAtStart = ((_arg1[BulkLoader.PAUSED_AT_START]) || (false)); _checkPolicyFile = ((_arg1[BulkLoader.CHECK_POLICY_FILE]) || (false)); return (super._parseOptions(_arg1)); } private function fireCanBeginStreamingEvent():void{ if (_canBeginStreaming){ return; }; _canBeginStreaming = true; var _local1:Event = new Event(BulkLoader.CAN_BEGIN_PLAYING); dispatchEvent(_local1); } public function get metaData():Object{ return (_metaData); } function onNetStatus(_arg1:NetStatusEvent):void{ var _local2:Event; if (!stream){ return; }; stream.removeEventListener(NetStatusEvent.NET_STATUS, onNetStatus, false); if (_arg1.info.code == "NetStream.Play.Start"){ _content = stream; _local2 = new Event(Event.OPEN); onStartedHandler(_local2); } else { if (_arg1.info.code == "NetStream.Play.StreamNotFound"){ onErrorHandler(_createErrorEvent(new Error(("[VideoItem] NetStream not found at " + this.url.url)))); }; }; } override public function isStreamable():Boolean{ return (true); } override public function load():void{ super.load(); nc = new NetConnection(); nc.connect(null); stream = new NetStream(nc); stream.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 0, true); stream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus, false, 0, true); dummyEventTrigger = new Sprite(); dummyEventTrigger.addEventListener(Event.ENTER_FRAME, createNetStreamEvent, false, 0, true); var customClient:Object = new Object(); customClient.onCuePoint = function (... _args):void{ }; customClient.onMetaData = onVideoMetadata; customClient.onPlayStatus = function (... _args):void{ }; stream.client = customClient; try { stream.play(url.url, _checkPolicyFile); } catch(e:SecurityError) { onSecurityErrorHandler(_createErrorEvent(e)); }; stream.seek(0); } public function get canBeginStreaming():Boolean{ return (_canBeginStreaming); } function onVideoMetadata(_arg1):void{ _metaData = _arg1; } override public function onCompleteHandler(_arg1:Event):void{ _content = stream; super.onCompleteHandler(_arg1); } override public function cleanListeners():void{ if (stream){ stream.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); stream.removeEventListener(NetStatusEvent.NET_STATUS, onNetStatus, false); }; if (dummyEventTrigger){ dummyEventTrigger.removeEventListener(Event.ENTER_FRAME, createNetStreamEvent, false); dummyEventTrigger = null; }; } override public function isVideo():Boolean{ return (true); } public function createNetStreamEvent(_arg1:Event):void{ var _local2:Event; var _local3:Event; var _local4:ProgressEvent; var _local5:int; var _local6:Number; var _local7:Number; var _local8:Number; if ((((_bytesTotal == _bytesLoaded)) && ((_bytesTotal > 8)))){ if (dummyEventTrigger){ dummyEventTrigger.removeEventListener(Event.ENTER_FRAME, createNetStreamEvent, false); }; fireCanBeginStreamingEvent(); _local2 = new Event(Event.COMPLETE); onCompleteHandler(_local2); } else { if ((((((_bytesTotal == 0)) && (stream))) && ((stream.bytesTotal > 4)))){ _local3 = new Event(Event.OPEN); onStartedHandler(_local3); _bytesLoaded = stream.bytesLoaded; _bytesTotal = stream.bytesTotal; } else { if (stream){ _local4 = new ProgressEvent(ProgressEvent.PROGRESS, false, false, stream.bytesLoaded, stream.bytesTotal); if (((((isVideo()) && (metaData))) && (!(_canBeginStreaming)))){ _local5 = (getTimer() - responseTime); if (_local5 > 100){ _local6 = (bytesLoaded / (_local5 / 1000)); _bytesRemaining = (_bytesTotal - bytesLoaded); _local7 = (_bytesRemaining / (_local6 * 0.8)); _local8 = (metaData.duration - stream.bufferLength); if (_local8 > _local7){ fireCanBeginStreamingEvent(); }; }; }; super.onProgressHandler(_local4); }; }; }; } override public function destroy():void{ if (stream){ }; stop(); cleanListeners(); stream = null; super.destroy(); } } }//package br.com.stimuli.loading.loadingtypes
Section 7
//XMLItem (br.com.stimuli.loading.loadingtypes.XMLItem) package br.com.stimuli.loading.loadingtypes { import flash.events.*; import br.com.stimuli.loading.*; import flash.net.*; public class XMLItem extends LoadingItem { public var loader:URLLoader; public function XMLItem(_arg1:URLRequest, _arg2:String, _arg3:String){ super(_arg1, _arg2, _arg3); } override public function onErrorHandler(_arg1:ErrorEvent):void{ super.onErrorHandler(_arg1); } override public function stop():void{ try { if (loader){ loader.close(); }; } catch(e:Error) { }; super.stop(); } override public function cleanListeners():void{ if (loader){ loader.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false); loader.removeEventListener(Event.COMPLETE, onCompleteHandler, false); loader.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); loader.removeEventListener(BulkLoader.OPEN, onStartedHandler, false); loader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false); loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, super.onSecurityErrorHandler, false); }; } override public function load():void{ super.load(); loader = new URLLoader(); loader.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true); loader.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true); loader.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 0, true); loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false, 0, true); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, super.onSecurityErrorHandler, false, 0, true); loader.addEventListener(Event.OPEN, onStartedHandler, false, 0, true); try { loader.load(url); } catch(e:SecurityError) { onSecurityErrorHandler(_createErrorEvent(e)); }; } override public function isText():Boolean{ return (true); } override public function onStartedHandler(_arg1:Event):void{ super.onStartedHandler(_arg1); } override public function onCompleteHandler(_arg1:Event):void{ var evt = _arg1; try { _content = new XML(loader.data); } catch(e:Error) { _content = null; status = STATUS_ERROR; dispatchEvent(_createErrorEvent(e)); }; super.onCompleteHandler(evt); } override public function _parseOptions(_arg1:Object):Array{ return (super._parseOptions(_arg1)); } override public function destroy():void{ stop(); cleanListeners(); _content = null; loader = null; } } }//package br.com.stimuli.loading.loadingtypes
Section 8
//SmartURL (br.com.stimuli.loading.utils.SmartURL) package br.com.stimuli.loading.utils { public class SmartURL { public var rawString:String; public var port:int; public var path:String; public var queryObject:Object; public var queryString:String; public var host:String; public var queryLength:int;// = 0 public var protocol:String; public function SmartURL(_arg1:String){ var _local4:String; var _local5:String; var _local6:String; super(); this.rawString = _arg1; var _local2:RegExp = /((?P<protocol>[a-zA-Z]+: \/\/) (?P<host>[^:\/]*) (:(?P<port>\d+))?)? (?P<path>[^?]*)? ((?P<query>.*))? /x; var _local3:* = _local2.exec(_arg1); if (_local3){ protocol = (Boolean(_local3.protocol)) ? _local3.protocol : "http://"; protocol = protocol.substr(0, protocol.indexOf("://")); host = ((_local3.host) || (null)); port = (_local3.port) ? int(_local3.port) : 80; path = _local3.path; queryString = _local3.query; if (queryString){ queryObject = {}; queryString = queryString.substr(1); for each (_local6 in queryString.split("&")) { _local5 = _local6.split("=")[0]; _local4 = _local6.split("=")[1]; queryObject[_local5] = _local4; queryLength++; }; }; } else { trace("no match"); }; } public function toString(... _args):String{ if ((((_args.length > 0)) && ((_args[0] == true)))){ return (((((((((((("[URL] rawString :" + rawString) + ", protocol: ") + protocol) + ", port: ") + port) + ", host: ") + host) + ", path: ") + path) + ". queryLength: ") + queryLength)); }; return (rawString); } } }//package br.com.stimuli.loading.utils
Section 9
//BulkLoader (br.com.stimuli.loading.BulkLoader) package br.com.stimuli.loading { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.media.*; import flash.net.*; import br.com.stimuli.loading.loadingtypes.*; public class BulkLoader extends EventDispatcher { public var _itemsTotal:int;// = 0 public var speedAvg:Number; public var _numConnections:int;// = 12 public var _totalWeight:int;// = 0 public var _bytesTotalCurrent:int;// = 0 public var _itemsLoaded:int;// = 0 public var totalTime:Number; public var _additionIndex:int;// = 0 public var _bytesTotal:int;// = 0 public var _loadedRatio:Number;// = 0 public var _speed:Number; public var _lastSpeedCheck:int; public var _isPaused:Boolean;// = true public var _isFinished:Boolean; public var _name:String; public var _allowsAutoIDFromFileName:Boolean;// = false public var _contents:Dictionary; public var _logFunction:Function; public var _bytesLoaded:int;// = 0 public var _connections:Object; public var logLevel:int;// = 4 public var _percentLoaded:Number;// = 0 public var _weightPercent:Number; public var _lastBytesCheck:int; public var _isRunning:Boolean; public var _id:int; public var _items:Array; public var _stringSubstitutions:Object; public var avgLatency:Number; public var _startTime:int; public var maxConnectionsPerHost:int;// = 2 public var _speedTotal:Number; public var _endTIme:int; public static const CAN_BEGIN_PLAYING:String = "canBeginPlaying"; public static const TYPE_VIDEO:String = "video"; public static const PREVENT_CACHING:String = "preventCache"; public static const TYPE_TEXT:String = "text"; public static const ID:String = "id"; public static const PAUSED_AT_START:String = "pausedAtStart"; public static const SECURITY_ERROR:String = "securityError"; public static const LOG_WARNINGS:int = 3; public static const PROGRESS:String = "progress"; public static const COMPLETE:String = "complete"; public static const AVAILABLE_TYPES:Array = [TYPE_VIDEO, TYPE_XML, TYPE_TEXT, TYPE_SOUND, TYPE_MOVIECLIP, TYPE_IMAGE, TYPE_BINARY]; public static const LOG_VERBOSE:int = 0; public static const OPEN:String = "open"; public static const HEADERS:String = "headers"; public static const TYPE_XML:String = "xml"; public static const HTTP_STATUS:String = "httpStatus"; public static const CONTEXT:String = "context"; public static const WEIGHT:String = "weight"; public static const CHECK_POLICY_FILE:String = "checkPolicyFile"; public static const TYPE_MOVIECLIP:String = "movieclip"; public static const PRIORITY:String = "priority"; public static const TYPE_BINARY:String = "binary"; public static const TYPE_SOUND:String = "sound"; public static const MAX_TRIES:String = "maxTries"; public static const VERSION:String = "$Id$"; public static const GENERAL_AVAILABLE_PROPS:Array = [WEIGHT, MAX_TRIES, HEADERS, ID, PRIORITY, PREVENT_CACHING, "type"]; public static const DEFAULT_NUM_CONNECTIONS:int = 12; public static const LOG_SILENT:int = 10; public static const ERROR:String = "error"; public static const LOG_INFO:int = 2; public static const DEFAULT_LOG_LEVEL:int = 4; public static const LOG_ERRORS:int = 4; public static const TYPE_IMAGE:String = "image"; public static var MOVIECLIP_EXTENSIONS:Array = ["swf"]; public static var XML_EXTENSIONS:Array = ["xml"]; public static var SOUND_EXTENSIONS:Array = ["mp3", "f4a", "f4b"]; public static var TEXT_EXTENSIONS:Array = ["txt", "js", "php", "asp", "py"]; public static var AVAILABLE_EXTENSIONS:Array = ["swf", "jpg", "jpeg", "gif", "png", "flv", "mp3", "xml", "txt", "js"]; public static var _allLoaders:Object = {}; public static var VIDEO_EXTENSIONS:Array = ["flv", "f4v", "f4p", "mp4"]; public static var IMAGE_EXTENSIONS:Array = ["jpg", "jpeg", "gif", "png"]; public static var _customTypesExtensions:Object; public static var _typeClasses:Object = {image:ImageItem, movieclip:ImageItem, xml:XMLItem, video:VideoItem, sound:SoundItem, text:URLItem, binary:BinaryItem}; public static var _instancesCreated:int = 0; public function BulkLoader(_arg1:String, _arg2:int=12, _arg3:int=4){ var name = _arg1; var numConnections = _arg2; var logLevel = _arg3; _items = []; _contents = new Dictionary(true); _logFunction = trace; super(); if (Boolean(_allLoaders[name])){ __debug_print_loaders(); throw (new Error((("BulkLoader with name'" + name) + "' has already been created."))); }; if (!name){ throw (new Error("Cannot create a BulkLoader instance without a name")); }; _allLoaders[name] = this; if (numConnections > 0){ this._numConnections = numConnections; }; this.logLevel = logLevel; _name = name; _instancesCreated++; _id = _instancesCreated; _additionIndex = 0; addEventListener(BulkLoader.ERROR, function (_arg1:Event):void{ }, false, 1, true); } public function get allowsAutoIDFromFileName():Boolean{ return (_allowsAutoIDFromFileName); } public function _onItemComplete(_arg1:Event):void{ var _local2:LoadingItem = (_arg1.target as LoadingItem); _removeFromConnections(_local2); log("Loaded ", _local2, LOG_INFO); log("Items to load", getNotLoadedItems(), LOG_VERBOSE); _local2.cleanListeners(); _contents[_local2.url.url] = _local2.content; var _local3:Boolean = _loadNext(); var _local4:Boolean = _isAllDoneP(); if (_local4){ _onAllLoaded(); }; _arg1.stopPropagation(); } public function get loadedRatio():Number{ return (_loadedRatio); } public function loadNow(_arg1):Boolean{ var _local3:LoadingItem; var _local2:LoadingItem = get(_arg1); if (!_local2){ return (false); }; if (!_connections){ _connections = {}; }; if ((((_local2.status == LoadingItem.STATUS_FINISHED)) || ((_local2.status == LoadingItem.STATUS_STARTED)))){ return (true); }; if ((((_getNumConnections() >= numConnections)) || ((_getNumConnectionsForItem(_local2) >= maxConnectionsPerHost)))){ _local3 = _getLeastUrgentOpenedItem(); pause(_local3); _removeFromConnections(_local3); _local3.status = null; }; _local2._priority = highestPriority; _loadNext(_local2); return (true); } public function set allowsAutoIDFromFileName(_arg1:Boolean):void{ _allowsAutoIDFromFileName = _arg1; } public function _getContentAsType(_arg1, _arg2:Class, _arg3:Boolean=false){ var res:*; var key = _arg1; var type = _arg2; var clearMemory = _arg3; if (!_name){ throw (new Error("[BulkLoader] Cannot use an instance that has been cleared from memory (.clear())")); }; var item:LoadingItem = get(key); if (!item){ return (null); }; try { if (((item._isLoaded) || (((item.isStreamable()) && ((item.status == LoadingItem.STATUS_STARTED)))))){ res = (item.content as type); if (res == null){ throw (new Error("bad cast")); }; if (clearMemory){ remove(key); if (!_isPaused){ _loadNext(); }; }; return (res); }; } catch(e:Error) { log((("Failed to get content with url: '" + key) + "'as type:"), type, LOG_ERRORS); }; return (null); } public function set stringSubstitutions(_arg1:Object):void{ _stringSubstitutions = _arg1; } public function get contents():Object{ return (_contents); } public function get id():int{ return (_id); } public function _getConnectionsForHostName(_arg1:String):Array{ if (_connections[_arg1] == null){ _connections[_arg1] = []; }; return (_connections[_arg1]); } public function getBitmap(_arg1:String, _arg2:Boolean=false):Bitmap{ return (Bitmap(_getContentAsType(_arg1, Bitmap, _arg2))); } public function _removeFromConnections(_arg1):Boolean{ if (((!(_connections)) || ((_getNumConnectionsForItem(_arg1) == 0)))){ return (false); }; var _local2:Array = _getConnectionsForHostName(_arg1.hostName); var _local3:int = _local2.indexOf(_arg1); if (_local3 > -1){ _local2.splice(_local3, 1); return (true); }; return (false); } public function resume(_arg1):Boolean{ var _local2:LoadingItem = ((_arg1 is LoadingItem)) ? _arg1 : get(_arg1); _isPaused = false; if (((_local2) && ((_local2.status == LoadingItem.STATUS_STOPPED)))){ _local2.status = null; _loadNext(); return (true); }; return (false); } public function _onAllLoaded():void{ if (_isFinished){ return; }; var _local1:BulkProgressEvent = new BulkProgressEvent(COMPLETE); _local1.setInfo(bytesLoaded, bytesTotal, bytesTotalCurrent, _itemsLoaded, itemsTotal, weightPercent); var _local2:BulkProgressEvent = new BulkProgressEvent(PROGRESS); _local2.setInfo(bytesLoaded, bytesTotal, bytesTotalCurrent, _itemsLoaded, itemsTotal, weightPercent); _isRunning = false; _endTIme = getTimer(); totalTime = BulkLoader.truncateNumber(((_endTIme - _startTime) / 1000)); _updateStats(); _connections = {}; getStats(); _isFinished = true; log("Finished all", LOG_INFO); dispatchEvent(_local2); dispatchEvent(_local1); } public function removePausedItems():Boolean{ var stoppedLoads:Array = _items.filter(function (_arg1:LoadingItem, ... _args):Boolean{ return ((_arg1.status == LoadingItem.STATUS_STOPPED)); }); stoppedLoads.forEach(function (_arg1:LoadingItem, ... _args):void{ remove(_arg1); }); _loadNext(); return ((stoppedLoads.length > 0)); } public function resumeAll():Boolean{ log("Resuming all items", LOG_VERBOSE); var affected:Boolean; _items.forEach(function (_arg1:LoadingItem, ... _args):void{ if (_arg1.status == LoadingItem.STATUS_STOPPED){ resume(_arg1); affected = true; }; }); _loadNext(); return (affected); } public function get isRunning():Boolean{ return (_isRunning); } public function _getNumConnectionsForItem(_arg1:LoadingItem):int{ var _local2:Array = _getConnectionsForHostName(_arg1.hostName); if (!_local2){ return (0); }; return (_local2.length); } public function getProgressForItems(_arg1:Array):BulkProgressEvent{ var _local11:LoadingItem; var _local13:*; _bytesLoaded = (_bytesTotal = (_bytesTotalCurrent = 0)); var _local2:Number = 0; var _local3:int; var _local4:int; var _local5:Number = 0; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local12:Array = []; for each (_local13 in _arg1) { _local11 = get(_local13); if (!_local11){ } else { _local6++; _local3 = (_local3 + _local11.weight); if ((((((_local11.status == LoadingItem.STATUS_STARTED)) || ((_local11.status == LoadingItem.STATUS_FINISHED)))) || ((_local11.status == LoadingItem.STATUS_STOPPED)))){ _local8 = (_local8 + _local11._bytesLoaded); _local10 = (_local10 + _local11._bytesTotal); _local5 = (_local5 + ((_local11._bytesLoaded / _local11._bytesTotal) * _local11.weight)); if (_local11.status == LoadingItem.STATUS_FINISHED){ _local7++; }; _local4++; }; }; }; if (_local4 != _local6){ _local9 = Number.POSITIVE_INFINITY; } else { _local9 = _local10; }; _local2 = (_local5 / _local3); if (_local3 == 0){ _local2 = 0; }; var _local14:BulkProgressEvent = new BulkProgressEvent(PROGRESS); _local14.setInfo(_local8, _local9, _local9, _local7, _local6, _local2); return (_local14); } public function get logFunction():Function{ return (_logFunction); } public function getNetStreamMetaData(_arg1:String, _arg2:Boolean=false):Object{ var _local3:NetStream = getNetStream(_arg1, _arg2); return ((Boolean(_local3)) ? (get(_arg1) as Object).metaData : null); } public function getContent(_arg1:String, _arg2:Boolean=false){ return (_getContentAsType(_arg1, Object, _arg2)); } public function getSerializedData(_arg1, _arg2:Boolean=false, _arg3:Function=null){ var raw:*; var parsed:*; var key = _arg1; var clearMemory = _arg2; var encodingFunction = _arg3; try { raw = _getContentAsType(key, Object, clearMemory); parsed = encodingFunction.apply(null, [raw]); return (parsed); } catch(e:Error) { log("Failed to parse key:", key, ("with encodingFunction:" + encodingFunction), LOG_ERRORS); }; return (null); } public function log(... _args):void{ var _local2:int = (isNaN(_args[(_args.length - 1)])) ? 3 : int(_args.pop()); if (_local2 >= logLevel){ _logFunction(("[BulkLoader] " + _args.join(" "))); }; } public function clear():void{ removeAll(); delete _allLoaders[name]; _name = null; } public function get speed():Number{ var _local1:int = (getTimer() - _lastSpeedCheck); var _local2:int = ((bytesLoaded - _lastBytesCheck) / 0x0400); var _local3:int = (_local2 / (_local1 / 1000)); _lastSpeedCheck = _local1; _lastBytesCheck = bytesLoaded; return (_local3); } public function get bytesLoaded():int{ return (_bytesLoaded); } public function getFailedItems():Array{ return (_items.filter(function (_arg1:LoadingItem, ... _args):Boolean{ return ((_arg1.status == LoadingItem.STATUS_ERROR)); })); } public function _loadNext(_arg1:LoadingItem=null):Boolean{ var _local3:Array; if (_isFinished){ return (false); }; if (!_connections){ _connections = {}; }; var _local2:Boolean; _arg1 = ((_arg1) || (_getNextItemToLoad())); if (_arg1){ _local2 = true; _isRunning = true; if (_canOpenConnectioForItem(_arg1)){ _local3 = _getConnectionsForHostName(_arg1.hostName); _local3.push(_arg1); _arg1.load(); log("Will load item:", _arg1, LOG_INFO); }; if (_getNextItemToLoad()){ _loadNext(); }; }; return (_local2); } public function getSound(_arg1, _arg2:Boolean=false):Sound{ return (Sound(_getContentAsType(_arg1, Sound, _arg2))); } public function removeFailedItems():int{ var numCleared:int; var badItems:Array = _items.filter(function (_arg1:LoadingItem, ... _args):Boolean{ return ((_arg1.status == LoadingItem.STATUS_ERROR)); }); numCleared = badItems.length; badItems.forEach(function (_arg1:LoadingItem, ... _args):void{ remove(_arg1); }); _loadNext(); return (numCleared); } public function get(_arg1):LoadingItem{ var _local2:LoadingItem; if (!_arg1){ return (null); }; if ((_arg1 is LoadingItem)){ return (_arg1); }; for each (_local2 in _items) { if ((((((((_local2._id == _arg1)) || ((_local2._parsedURL.rawString == _arg1)))) || ((_local2.url == _arg1)))) || ((((_arg1 is URLRequest)) && ((_local2.url.url == _arg1.url)))))){ return (_local2); }; }; return (null); } public function _getNumConnections():int{ var _local2:String; var _local1:int; for (_local2 in _connections) { _local1 = (_local1 + _connections[_local2].length); }; return (_local1); } public function get highestPriority():int{ var _local2:LoadingItem; var _local1:int = int.MIN_VALUE; for each (_local2 in _items) { if (_local2.priority > _local1){ _local1 = _local2.priority; }; }; return (_local1); } public function start(_arg1:int=-1):void{ if (_arg1 > 0){ _numConnections = _arg1; }; if (_connections){ _loadNext(); return; }; _startTime = getTimer(); _connections = {}; _loadNext(); _isRunning = true; _lastBytesCheck = 0; _lastSpeedCheck = getTimer(); _isPaused = false; } public function _getAllConnections():Array{ var _local2:String; var _local1:Array = []; for (_local2 in _connections) { _local1 = _local1.concat(_connections[_local2]); }; return (_local1); } public function _getLeastUrgentOpenedItem():LoadingItem{ var _local1:Array = _getAllConnections(); _local1.sortOn(["priority", "bytesRemaining", "_additionIndex"], [Array.NUMERIC, Array.DESCENDING, Array.NUMERIC, Array.NUMERIC]); var _local2:LoadingItem = LoadingItem(_local1[0]); return (_local2); } public function getBitmapData(_arg1, _arg2:Boolean=false):BitmapData{ var key = _arg1; var clearMemory = _arg2; try { return (getBitmap(key, clearMemory).bitmapData); } catch(e:Error) { log("Failed to get bitmapData with url:", key, LOG_ERRORS); }; return (null); } public function set logFunction(_arg1:Function):void{ _logFunction = _arg1; } override public function toString():String{ return (((((("[BulkLoader] name:" + name) + ", itemsTotal: ") + itemsTotal) + ", itemsLoaded: ") + _itemsLoaded)); } public function get itemsTotal():int{ return (items.length); } public function sortItemsByPriority():void{ _items.sortOn(["priority", "_additionIndex"], [(Array.NUMERIC | Array.DESCENDING), Array.NUMERIC]); } public function get stringSubstitutions():Object{ return (_stringSubstitutions); } public function get name():String{ return (_name); } public function remove(_arg1, _arg2:Boolean=false):Boolean{ var item:LoadingItem; var allDone:Boolean; var key = _arg1; var internalCall = _arg2; try { item = get(key); if (!item){ return (false); }; _removeFromItems(item); _removeFromConnections(item); item.destroy(); delete _contents[item.url.url]; if (internalCall){ return (true); }; item = null; _onProgress(); allDone = _isAllDoneP(); if (allDone){ _onAllLoaded(); }; return (true); } catch(e:Error) { log(("Error while removing item from key:" + key), e.getStackTrace(), LOG_ERRORS); }; return (false); } public function removeAll():void{ var _local1:LoadingItem; for each (_local1 in _items.slice()) { remove(_local1, true); }; _items = []; _connections = {}; _contents = new Dictionary(); _percentLoaded = (_weightPercent = (_loadedRatio = 0)); } public function _updateStats():void{ var _local4:LoadingItem; avgLatency = 0; speedAvg = 0; var _local1:Number = 0; var _local2:int; _speedTotal = 0; var _local3:Number = 0; for each (_local4 in _items) { if (((_local4._isLoaded) && (!((_local4.status == LoadingItem.STATUS_ERROR))))){ _local1 = (_local1 + _local4.latency); _local2 = (_local2 + _local4.bytesTotal); _local3++; }; }; _speedTotal = ((_local2 / 0x0400) / totalTime); avgLatency = (_local1 / _local3); speedAvg = (_speedTotal / _local3); } public function reload(_arg1):Boolean{ var _local2:LoadingItem = get(_arg1); if (!_local2){ return (false); }; _removeFromItems(_local2); _removeFromConnections(_local2); _local2.stop(); _local2.cleanListeners(); _local2.status = null; _isFinished = false; _local2._addedTime = getTimer(); _local2._additionIndex = _additionIndex++; _local2.addEventListener(Event.COMPLETE, _onItemComplete, false, int.MIN_VALUE, true); _local2.addEventListener(Event.COMPLETE, _incrementItemsLoaded, false, int.MAX_VALUE, true); _local2.addEventListener(ERROR, _onItemError, false, 0, true); _local2.addEventListener(Event.OPEN, _onItemStarted, false, 0, true); _local2.addEventListener(ProgressEvent.PROGRESS, _onProgress, false, 0, true); _items.push(_local2); _itemsTotal = (_itemsTotal + 1); _totalWeight = (_totalWeight + _local2.weight); sortItemsByPriority(); _isFinished = false; loadNow(_local2); return (true); } public function _onItemStarted(_arg1:Event):void{ var _local2:LoadingItem = (_arg1.target as LoadingItem); log("Started loading", _local2, LOG_INFO); dispatchEvent(_arg1); } public function add(_arg1, _arg2:Object=null):LoadingItem{ var _local4:String; var _local6:String; if (!_name){ throw (new Error("[BulkLoader] Cannot use an instance that has been cleared from memory (.clear())")); }; if (((!(_arg1)) || (!(String(_arg1))))){ throw (new Error("[BulkLoader] Cannot add an item with a null url")); }; _arg2 = ((_arg2) || ({})); if ((_arg1 is String)){ _arg1 = new URLRequest(BulkLoader.substituteURLString(_arg1, _stringSubstitutions)); if (_arg2[HEADERS]){ _arg1.requestHeaders = _arg2[HEADERS]; }; } else { if ((!(_arg1) is URLRequest)){ throw (new Error(("[BulkLoader] cannot add object with bad type for url:'" + _arg1.url))); }; }; var _local3:LoadingItem = get(_arg2[ID]); if (_local3){ log((("Add received an already added id: " + _arg2[ID]) + ", not adding a new item")); return (_local3); }; if (_arg2["type"]){ _local4 = _arg2["type"].toLowerCase(); if (AVAILABLE_TYPES.indexOf(_local4) == -1){ log("add received an unknown type:", _local4, "and will cast it to text", LOG_WARNINGS); }; }; if (!_local4){ _local4 = guessType(_arg1.url); }; _additionIndex++; _local3 = new _typeClasses[_local4](_arg1, _local4, ((_instancesCreated + "_") + String(_additionIndex))); if (((!(_arg2["id"])) && (_allowsAutoIDFromFileName))){ _arg2["id"] = getFileName(_arg1.url); log("Adding automatic id from file name for item:", _local3, (("( id= " + _arg2["id"]) + " )")); }; var _local5:Array = _local3._parseOptions(_arg2); for each (_local6 in _local5) { log(_local6, LOG_WARNINGS); }; log("Added", _local3, LOG_VERBOSE); _local3._addedTime = getTimer(); _local3._additionIndex = _additionIndex; _local3.addEventListener(Event.COMPLETE, _onItemComplete, false, int.MIN_VALUE, true); _local3.addEventListener(Event.COMPLETE, _incrementItemsLoaded, false, int.MAX_VALUE, true); _local3.addEventListener(ERROR, _onItemError, false, 0, true); _local3.addEventListener(Event.OPEN, _onItemStarted, false, 0, true); _local3.addEventListener(ProgressEvent.PROGRESS, _onProgress, false, 0, true); _items.push(_local3); _itemsTotal = (_itemsTotal + 1); _totalWeight = (_totalWeight + _local3.weight); sortItemsByPriority(); _isFinished = false; if (!_isPaused){ _loadNext(); }; return (_local3); } public function getText(_arg1, _arg2:Boolean=false):String{ return (String(_getContentAsType(_arg1, String, _arg2))); } public function get percentLoaded():Number{ return (_percentLoaded); } public function get weightPercent():Number{ return (_weightPercent); } public function get bytesTotalCurrent():int{ return (_bytesTotalCurrent); } public function getAVM1Movie(_arg1:String, _arg2:Boolean=false):AVM1Movie{ return (AVM1Movie(_getContentAsType(_arg1, AVM1Movie, _arg2))); } public function get bytesTotal():int{ return (_bytesTotal); } public function getSprite(_arg1:String, _arg2:Boolean=false):Sprite{ return (Sprite(_getContentAsType(_arg1, Sprite, _arg2))); } public function get isFinished():Boolean{ return (_isFinished); } public function _getNextItemToLoad():LoadingItem{ var checkItem:LoadingItem; _getAllConnections().forEach(function (_arg1:LoadingItem, ... _args):void{ if ((((_arg1.status == LoadingItem.STATUS_ERROR)) && ((_arg1.numTries == _arg1.maxTries)))){ _removeFromConnections(_arg1); }; }); for each (checkItem in _items) { if (((((!(checkItem._isLoading)) && (!((checkItem.status == LoadingItem.STATUS_STOPPED))))) && (_canOpenConnectioForItem(checkItem)))){ return (checkItem); }; }; return (null); } public function changeItemPriority(_arg1:String, _arg2:int):Boolean{ var _local3:LoadingItem = get(_arg1); if (!_local3){ return (false); }; _local3._priority = _arg2; sortItemsByPriority(); return (true); } public function get items():Array{ return (_items.slice()); } public function getNetStream(_arg1:String, _arg2:Boolean=false):NetStream{ return (NetStream(_getContentAsType(_arg1, NetStream, _arg2))); } public function getHttpStatus(_arg1):int{ var _local2:LoadingItem = get(_arg1); if (_local2){ return (_local2.httpStatus); }; return (-1); } public function set itemsLoaded(_arg1:int):void{ _itemsLoaded = _arg1; } public function _onProgress(_arg1:Event=null):void{ var _local2:BulkProgressEvent = getProgressForItems(_items); _bytesLoaded = _local2.bytesLoaded; _bytesTotal = _local2.bytesTotal; _weightPercent = _local2.weightPercent; _percentLoaded = _local2.percentLoaded; _bytesTotalCurrent = _local2.bytesTotalCurrent; _loadedRatio = _local2.ratioLoaded; dispatchEvent(_local2); } public function hasItem(_arg1, _arg2:Boolean=true):Boolean{ var _local3:*; var _local4:BulkLoader; if (_arg2){ _local3 = _allLoaders; } else { _local3 = [this]; }; for each (_local4 in _local3) { if (_hasItemInBulkLoader(_arg1, _local4)){ return (true); }; }; return (false); } public function _removeFromItems(_arg1:LoadingItem):Boolean{ var _local2:int = _items.indexOf(_arg1); if (_local2 > -1){ _items.splice(_local2, 1); } else { return (false); }; if (_arg1._isLoaded){ _itemsLoaded--; }; _itemsTotal--; _totalWeight = (_totalWeight - _arg1.weight); log(("Removing " + _arg1), LOG_VERBOSE); _arg1.removeEventListener(Event.COMPLETE, _onItemComplete, false); _arg1.removeEventListener(Event.COMPLETE, _incrementItemsLoaded, false); _arg1.removeEventListener(ERROR, _onItemError, false); _arg1.removeEventListener(Event.OPEN, _onItemStarted, false); _arg1.removeEventListener(ProgressEvent.PROGRESS, _onProgress, false); return (true); } public function _incrementItemsLoaded(_arg1:Event):void{ _itemsLoaded++; } public function _getNumConnectionsForHostname(_arg1:String):int{ var _local2:Array = _getConnectionsForHostName(_arg1); if (!_local2){ return (0); }; return (_local2.length); } public function _onItemError(_arg1:ErrorEvent):void{ var _local2:LoadingItem = (_arg1.target as LoadingItem); _removeFromConnections(_local2); log(((("After " + _local2.numTries) + " I am giving up on ") + _local2.url.url), LOG_ERRORS); log("Error loading", _local2, _arg1.text, LOG_ERRORS); _loadNext(); dispatchEvent(_arg1); } public function pauseAll():void{ var _local1:LoadingItem; for each (_local1 in _items) { pause(_local1); }; _isRunning = false; _isPaused = true; log("Stopping all items", LOG_INFO); } public function _isAllDoneP():Boolean{ return (_items.every(function (_arg1:LoadingItem, ... _args):Boolean{ return (_arg1._isLoaded); })); } public function getNotLoadedItems():Array{ return (_items.filter(function (_arg1:LoadingItem, ... _args):Boolean{ return (!((_arg1.status == LoadingItem.STATUS_FINISHED))); })); } public function getXML(_arg1, _arg2:Boolean=false):XML{ return (XML(_getContentAsType(_arg1, XML, _arg2))); } public function get totalWeight():int{ return (_totalWeight); } public function get itemsLoaded():int{ return (_itemsLoaded); } public function _canOpenConnectioForItem(_arg1:LoadingItem):Boolean{ if (_getNumConnections() >= numConnections){ return (false); }; if (_getNumConnectionsForItem(_arg1) >= maxConnectionsPerHost){ return (false); }; return (true); } public function getMovieClip(_arg1:String, _arg2:Boolean=false):MovieClip{ return (MovieClip(_getContentAsType(_arg1, MovieClip, _arg2))); } public function getDisplayObjectLoader(_arg1:String, _arg2:Boolean=false):Loader{ return (Loader(_getContentAsType(_arg1, Loader, _arg2))); } public function get numConnections():int{ return (_numConnections); } public function getStats():String{ var stats:Array = []; stats.push("\n************************************"); stats.push((("All items loaded(" + itemsTotal) + ")")); stats.push(("Total time(s): " + totalTime)); stats.push(("Average latency(s): " + truncateNumber(avgLatency))); stats.push(("Average speed(kb/s): " + truncateNumber(speedAvg))); stats.push(("Median speed(kb/s): " + truncateNumber(_speedTotal))); stats.push(("KiloBytes total: " + truncateNumber((bytesTotal / 0x0400)))); var itemsInfo:Array = _items.map(function (_arg1:LoadingItem, ... _args):String{ return (("\t" + _arg1.getStats())); }); stats.push(itemsInfo.join("\n")); stats.push("************************************"); var statsString:String = stats.join("\n"); log(statsString, LOG_VERBOSE); return (statsString); } public function pause(_arg1, _arg2:Boolean=false):Boolean{ var _local3:LoadingItem = get(_arg1); if (!_local3){ return (false); }; if (_local3.status != LoadingItem.STATUS_FINISHED){ _local3.stop(); }; log("STOPPED ITEM:", _local3, LOG_INFO); var _local4:Boolean = _removeFromConnections(_local3); if (_arg2){ _loadNext(); }; return (_local4); } public function getBinary(_arg1, _arg2:Boolean=false):ByteArray{ return (ByteArray(_getContentAsType(_arg1, ByteArray, _arg2))); } public static function getLoader(_arg1:String):BulkLoader{ return ((BulkLoader._allLoaders[_arg1] as BulkLoader)); } public static function whichLoaderHasItem(_arg1):BulkLoader{ var _local2:BulkLoader; for each (_local2 in _allLoaders) { if (BulkLoader._hasItemInBulkLoader(_arg1, _local2)){ return (_local2); }; }; return (null); } public static function truncateNumber(_arg1:Number, _arg2:int=2):Number{ var _local3:int = Math.pow(10, _arg2); return ((Math.round((_arg1 * _local3)) / _local3)); } public static function __debug_printStackTrace():void{ try { throw (new Error("stack trace")); } catch(e:Error) { trace(e.getStackTrace()); }; } public static function __debug_print_loaders():void{ var instNames:String; var theNames:Array = []; for each (instNames in BulkLoader._allLoaders) { theNames.push(instNames); }; theNames.sort(); trace("All loaders"); theNames.forEach(function (_arg1, ... _args):void{ trace("\t", _arg1); }); trace("==========="); } public static function pauseAllLoaders():void{ var _local1:BulkLoader; for each (_local1 in _allLoaders) { _local1.pauseAll(); }; } public static function _hasItemInBulkLoader(_arg1, _arg2:BulkLoader):Boolean{ var _local3:LoadingItem = _arg2.get(_arg1); if (_local3){ return (true); }; return (false); } public static function createUniqueNamedLoader(_arg1:int=12, _arg2:int=4):BulkLoader{ return (new BulkLoader(BulkLoader.getUniqueName(), _arg1, _arg2)); } public static function removeAllLoaders():void{ var _local1:BulkLoader; for each (_local1 in _allLoaders) { _local1.removeAll(); _local1.clear(); _local1 = null; }; _allLoaders = {}; } public static function getFileName(_arg1:String):String{ if (_arg1.lastIndexOf("/") == (_arg1.length - 1)){ return (getFileName(_arg1.substring(0, (_arg1.length - 1)))); }; var _local2:int = (_arg1.lastIndexOf("/") + 1); var _local3:String = _arg1.substring(_local2); var _local4:int = _local3.indexOf("."); if (_local4 == -1){ if (_local3.indexOf("?") > -1){ _local4 = _local3.indexOf("?"); } else { _local4 = _local3.length; }; }; var _local5:String = _local3.substring(0, _local4); return (_local5); } public static function __debug_print_num_loaders():void{ var _local2:String; var _local1:int; for each (_local2 in BulkLoader._allLoaders) { _local1++; }; trace("BulkLoader has ", _local1, "instances"); } public static function guessType(_arg1:String):String{ var _local5:String; var _local6:String; var _local7:String; var _local2:String = ((_arg1.indexOf("?") > -1)) ? _arg1.substring(0, _arg1.indexOf("?")) : _arg1; var _local3:String = _local2.substring(_local2.lastIndexOf("/")); var _local4:String = _local3.substring((_local3.lastIndexOf(".") + 1)).toLowerCase(); if (!Boolean(_local4)){ _local4 = BulkLoader.TYPE_TEXT; }; if ((((_local4 == BulkLoader.TYPE_IMAGE)) || ((BulkLoader.IMAGE_EXTENSIONS.indexOf(_local4) > -1)))){ _local5 = BulkLoader.TYPE_IMAGE; } else { if ((((_local4 == BulkLoader.TYPE_SOUND)) || ((BulkLoader.SOUND_EXTENSIONS.indexOf(_local4) > -1)))){ _local5 = BulkLoader.TYPE_SOUND; } else { if ((((_local4 == BulkLoader.TYPE_VIDEO)) || ((BulkLoader.VIDEO_EXTENSIONS.indexOf(_local4) > -1)))){ _local5 = BulkLoader.TYPE_VIDEO; } else { if ((((_local4 == BulkLoader.TYPE_XML)) || ((BulkLoader.XML_EXTENSIONS.indexOf(_local4) > -1)))){ _local5 = BulkLoader.TYPE_XML; } else { if ((((_local4 == BulkLoader.TYPE_MOVIECLIP)) || ((BulkLoader.MOVIECLIP_EXTENSIONS.indexOf(_local4) > -1)))){ _local5 = BulkLoader.TYPE_MOVIECLIP; } else { for (_local6 in _customTypesExtensions) { for each (_local7 in _customTypesExtensions[_local6]) { if (_local7 == _local4){ _local5 = _local6; break; }; if (_local5){ break; }; }; }; if (!_local5){ _local5 = BulkLoader.TYPE_TEXT; }; }; }; }; }; }; return (_local5); } public static function registerNewType(_arg1:String, _arg2:String, _arg3:Class=null):Boolean{ var _local4:Array; if (_arg1.charAt(0) == "."){ _arg1 = _arg1.substring(1); }; if (!_customTypesExtensions){ _customTypesExtensions = {}; }; if (AVAILABLE_TYPES.indexOf(_arg2) == -1){ if (!Boolean(_arg3)){ throw (new Error("[BulkLoader]: When adding a new type and extension, you must determine which class to use")); }; _typeClasses[_arg2] = _arg3; if (!_customTypesExtensions[_arg2]){ _customTypesExtensions[_arg2] = []; AVAILABLE_TYPES.push(_arg2); }; _customTypesExtensions[_arg2].push(_arg1); return (true); } else { if (_customTypesExtensions[_arg2]){ _customTypesExtensions[_arg2].push(_arg1); }; }; var _local5:Object = {}; _local5[TYPE_IMAGE] = IMAGE_EXTENSIONS; _local5[TYPE_MOVIECLIP] = MOVIECLIP_EXTENSIONS; _local5[TYPE_VIDEO] = VIDEO_EXTENSIONS; _local5[TYPE_SOUND] = SOUND_EXTENSIONS; _local5[TYPE_TEXT] = TEXT_EXTENSIONS; _local5[TYPE_XML] = XML_EXTENSIONS; _local4 = _local5[_arg2]; if (((_local4) && ((_local4.indexOf(_arg1) == -1)))){ _local4.push(_arg1); return (true); }; return (false); } public static function substituteURLString(_arg1:String, _arg2:Object):String{ var _local9:Object; var _local10:Object; var _local12:String; if (!_arg2){ return (_arg1); }; var _local3:RegExp = /(?P<var_name>\{\s*[^\}]*\})/g; var _local4:Object = _local3.exec(_arg1); var _local5:String = (_local4) ? _local4.var_name : null; var _local6:Array = []; var _local7:int; while (((Boolean(_local4)) && (Boolean(_local4.var_name)))) { if (_local4.var_name){ _local5 = _local4.var_name; _local5 = _local5.replace("{", ""); _local5 = _local5.replace("}", ""); _local5 = _local5.replace(/\s*/g, ""); }; _local6.push({start:_local4.index, end:(_local4.index + _local4.var_name.length), changeTo:_arg2[_local5]}); _local7++; if (_local7 > 400){ break; }; _local4 = _local3.exec(_arg1); _local5 = (_local4) ? _local4.var_name : null; }; if (_local6.length == 0){ return (_arg1); }; var _local8:Array = []; var _local11:String = _arg1.substr(0, _local6[0].start); for each (_local10 in _local6) { if (_local9){ _local11 = _arg1.substring(_local9.end, _local10.start); }; _local8.push(_local11); _local8.push(_local10.changeTo); _local9 = _local10; }; _local8.push(_arg1.substring(_local10.end)); return (_local8.join("")); } public static function getUniqueName():String{ return (("BulkLoader-" + _instancesCreated)); } } }//package br.com.stimuli.loading
Section 10
//BulkProgressEvent (br.com.stimuli.loading.BulkProgressEvent) package br.com.stimuli.loading { import flash.events.*; public class BulkProgressEvent extends ProgressEvent { public var bytesTotalCurrent:int; public var itemsTotal:int; public var itemsLoaded:int; public var _percentLoaded:Number; public var _weightPercent:Number; public var _ratioLoaded:Number; public var name:String; public static const COMPLETE:String = "complete"; public static const PROGRESS:String = "progress"; public function BulkProgressEvent(_arg1:String, _arg2:Boolean=true, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); this.name = _arg1; } override public function clone():Event{ var _local1:BulkProgressEvent = new BulkProgressEvent(name, bubbles, cancelable); _local1.setInfo(bytesLoaded, bytesTotal, bytesTotalCurrent, itemsLoaded, itemsTotal, weightPercent); return (_local1); } public function get weightPercent():Number{ return (_weightPercent); } public function set ratioLoaded(_arg1:Number):void{ if (((isNaN(_arg1)) || (!(isFinite(_arg1))))){ _arg1 = 0; }; _ratioLoaded = _arg1; } public function setInfo(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:Number):void{ this.bytesLoaded = _arg1; this.bytesTotal = _arg2; this.bytesTotalCurrent = _arg3; this.itemsLoaded = _arg4; this.itemsTotal = _arg5; this.weightPercent = _arg6; this.percentLoaded = ((_arg2 > 0)) ? (_arg1 / _arg2) : 0; ratioLoaded = ((_arg5 == 0)) ? 0 : (_arg4 / _arg5); } public function set percentLoaded(_arg1:Number):void{ if (((isNaN(_arg1)) || (!(isFinite(_arg1))))){ _arg1 = 0; }; _percentLoaded = _arg1; } public function loadingStatus():String{ var _local1:Array = []; _local1.push(("bytesLoaded: " + bytesLoaded)); _local1.push(("bytesTotal: " + bytesTotal)); _local1.push(("itemsLoaded: " + itemsLoaded)); _local1.push(("itemsTotal: " + itemsTotal)); _local1.push(("bytesTotalCurrent: " + bytesTotalCurrent)); _local1.push(("percentLoaded: " + BulkLoader.truncateNumber(percentLoaded))); _local1.push(("weightPercent: " + BulkLoader.truncateNumber(weightPercent))); _local1.push(("ratioLoaded: " + BulkLoader.truncateNumber(ratioLoaded))); return ((("BulkProgressEvent " + _local1.join(", ")) + ";")); } public function get ratioLoaded():Number{ return (_ratioLoaded); } public function get percentLoaded():Number{ return (_percentLoaded); } public function set weightPercent(_arg1:Number):void{ if (((isNaN(_arg1)) || (!(isFinite(_arg1))))){ _arg1 = 0; }; _weightPercent = _arg1; } override public function toString():String{ return (super.toString()); } } }//package br.com.stimuli.loading
Section 11
//MD5 (com.adobe.crypto.MD5) package com.adobe.crypto { import flash.utils.*; import com.adobe.utils.*; public class MD5 { public static var digest:ByteArray; private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function f(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg2) | (~(_arg1) & _arg3))); } private static function g(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg3) | (_arg2 & ~(_arg3)))); } private static function h(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 ^ _arg2) ^ _arg3)); } private static function i(_arg1:int, _arg2:int, _arg3:int):int{ return ((_arg2 ^ (_arg1 | ~(_arg3)))); } private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{ var _local9:int = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8); return ((IntUtil.rol(_local9, _arg7) + _arg3)); } private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hash(_arg1:String):String{ var _local2:ByteArray = new ByteArray(); _local2.writeUTFBytes(_arg1); return (hashBinary(_local2)); } private static function createBlocks(_arg1:ByteArray):Array{ var _local2:Array = new Array(); var _local3:int = (_arg1.length * 8); var _local4 = 0xFF; var _local5:int; while (_local5 < _local3) { _local2[int((_local5 >> 5))] = (_local2[int((_local5 >> 5))] | ((_arg1[(_local5 / 8)] & _local4) << (_local5 % 32))); _local5 = (_local5 + 8); }; _local2[int((_local3 >> 5))] = (_local2[int((_local3 >> 5))] | (128 << (_local3 % 32))); _local2[int(((((_local3 + 64) >>> 9) << 4) + 14))] = _local3; return (_local2); } public static function hashBinary(_arg1:ByteArray):String{ var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local2 = 1732584193; var _local3 = -271733879; var _local4 = -1732584194; var _local5 = 271733878; var _local10:Array = createBlocks(_arg1); var _local11:int = _local10.length; var _local12:int; while (_local12 < _local11) { _local6 = _local2; _local7 = _local3; _local8 = _local4; _local9 = _local5; _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 7, -680876936); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 1))], 12, -389564586); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 17, 606105819); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 3))], 22, -1044525330); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 7, -176418897); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 5))], 12, 1200080426); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 17, -1473231341); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 7))], 22, -45705983); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 7, 1770035416); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 9))], 12, -1958414417); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 17, -42063); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 11))], 22, -1990404162); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 7, 1804603682); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 13))], 12, -40341101); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 17, -1502002290); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 15))], 22, 1236535329); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 5, -165796510); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 6))], 9, -1069501632); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 14, 643717713); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 0))], 20, -373897302); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 5, -701558691); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 10))], 9, 38016083); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 14, -660478335); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 4))], 20, -405537848); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 5, 568446438); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 14))], 9, -1019803690); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 14, -187363961); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 8))], 20, 1163531501); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 5, -1444681467); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 2))], 9, -51403784); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 14, 1735328473); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 12))], 20, -1926607734); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 4, -378558); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 8))], 11, -2022574463); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 16, 1839030562); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 14))], 23, -35309556); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 4, -1530992060); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 4))], 11, 1272893353); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 16, -155497632); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 10))], 23, -1094730640); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 4, 681279174); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 0))], 11, -358537222); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 16, -722521979); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 6))], 23, 76029189); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 4, -640364487); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 12))], 11, -421815835); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 16, 530742520); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 2))], 23, -995338651); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 6, -198630844); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 7))], 10, 1126891415); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 15, -1416354905); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 5))], 21, -57434055); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 6, 1700485571); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 3))], 10, -1894986606); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 15, -1051523); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 1))], 21, -2054922799); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 6, 1873313359); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 15))], 10, -30611744); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 15, -1560198380); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 13))], 21, 1309151649); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 6, -145523070); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 11))], 10, -1120210379); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 15, 718787259); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 9))], 21, -343485551); _local2 = (_local2 + _local6); _local3 = (_local3 + _local7); _local4 = (_local4 + _local8); _local5 = (_local5 + _local9); _local12 = (_local12 + 16); }; digest = new ByteArray(); digest.writeInt(_local2); digest.writeInt(_local3); digest.writeInt(_local4); digest.writeInt(_local5); digest.position = 0; return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5))); } private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hashBytes(_arg1:ByteArray):String{ return (hashBinary(_arg1)); } } }//package com.adobe.crypto
Section 12
//IntUtil (com.adobe.utils.IntUtil) package com.adobe.utils { public class IntUtil { private static var hexChars:String = "0123456789abcdef"; public static function toHex(_arg1:int, _arg2:Boolean=false):String{ var _local4:int; var _local5:int; var _local3 = ""; if (_arg2){ _local4 = 0; while (_local4 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15)))); _local4++; }; } else { _local5 = 0; while (_local5 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15)))); _local5++; }; }; return (_local3); } public static function ror(_arg1:int, _arg2:int):uint{ var _local3:int = (32 - _arg2); return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3)))); } public static function rol(_arg1:int, _arg2:int):int{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } } }//package com.adobe.utils
Section 13
//Base64 (com.dynamicflash.util.Base64) package com.dynamicflash.util { import flash.utils.*; public class Base64 { public static const version:String = "1.1.0"; private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; public function Base64(){ throw (new Error("Base64 class is static container only")); } public static function encode(_arg1:String):String{ var _local2:ByteArray = new ByteArray(); _local2.writeUTFBytes(_arg1); return (encodeByteArray(_local2)); } public static function encodeByteArray(_arg1:ByteArray):String{ var _local3:Array; var _local5:uint; var _local6:uint; var _local7:uint; var _local2 = ""; var _local4:Array = new Array(4); _arg1.position = 0; while (_arg1.bytesAvailable > 0) { _local3 = new Array(); _local5 = 0; while ((((_local5 < 3)) && ((_arg1.bytesAvailable > 0)))) { _local3[_local5] = _arg1.readUnsignedByte(); _local5++; }; _local4[0] = ((_local3[0] & 252) >> 2); _local4[1] = (((_local3[0] & 3) << 4) | (_local3[1] >> 4)); _local4[2] = (((_local3[1] & 15) << 2) | (_local3[2] >> 6)); _local4[3] = (_local3[2] & 63); _local6 = _local3.length; while (_local6 < 3) { _local4[(_local6 + 1)] = 64; _local6++; }; _local7 = 0; while (_local7 < _local4.length) { _local2 = (_local2 + BASE64_CHARS.charAt(_local4[_local7])); _local7++; }; }; return (_local2); } public static function decode(_arg1:String):String{ var _local2:ByteArray = decodeToByteArray(_arg1); return (_local2.readUTFBytes(_local2.length)); } public static function decodeToByteArray(_arg1:String):ByteArray{ var _local6:uint; var _local7:uint; var _local2:ByteArray = new ByteArray(); var _local3:Array = new Array(4); var _local4:Array = new Array(3); var _local5:uint; while (_local5 < _arg1.length) { _local6 = 0; while ((((_local6 < 4)) && (((_local5 + _local6) < _arg1.length)))) { _local3[_local6] = BASE64_CHARS.indexOf(_arg1.charAt((_local5 + _local6))); _local6++; }; _local4[0] = ((_local3[0] << 2) + ((_local3[1] & 48) >> 4)); _local4[1] = (((_local3[1] & 15) << 4) + ((_local3[2] & 60) >> 2)); _local4[2] = (((_local3[2] & 3) << 6) + _local3[3]); _local7 = 0; while (_local7 < _local4.length) { if (_local3[(_local7 + 1)] == 64){ break; }; _local2.writeByte(_local4[_local7]); _local7++; }; _local5 = (_local5 + 4); }; _local2.position = 0; return (_local2); } } }//package com.dynamicflash.util
Section 14
//GTween (com.gskinner.motion.GTween) package com.gskinner.motion { import flash.events.*; import flash.display.*; import flash.utils.*; public class GTween { protected var _rangeValues:Object; public var autoPlay:Boolean;// = true protected var _delay:Number;// = 0 public var ratio:Number; public var pluginData:Object; public var useFrames:Boolean; protected var _position:Number;// = 0 public var target:Object; public var duration:Number; public var onInit:Function; public var calculatedPosition:Number; public var calculatedPositionOld:Number; public var ratioOld:Number; public var data; public var suppressEvents:Boolean; public var repeatCount:int;// = 1 public var nextTween:GTween; protected var _referenceTime:Number; public var reflect:Boolean; public var positionOld:Number; protected var _values:Object; public var onComplete:Function; protected var _paused:Boolean;// = true protected var _inited:Boolean; public var ease:Function; protected var _proxy:TargetProxy; protected var _initValues:Object; public var onChange:Function; public var timeScale:Number;// = 1 protected static var plugins:Object = {}; protected static var shape:Shape; public static var timeScaleAll:Number = 1; protected static var gcLockList:Dictionary = new Dictionary(false); public static var pauseAll:Boolean = false; protected static var time:Number; public static var defaultEase:Function = linearEase; protected static var hasStarPlugins:Boolean = false; protected static var tickList:Dictionary = new Dictionary(true); public function GTween(_arg1:Object=null, _arg2:Number=1, _arg3:Object=null, _arg4:Object=null, _arg5:Object=null){ var _local6:Boolean; super(); ease = defaultEase; this.target = _arg1; this.duration = _arg2; this.pluginData = copy(_arg5, {}); if (_arg4){ _local6 = _arg4.swapValues; delete _arg4.swapValues; }; copy(_arg4, this); resetValues(_arg3); if (_local6){ swapValues(); }; if ((((((this.duration == 0)) && ((delay == 0)))) && (autoPlay))){ position = 0; }; } public function get delay():Number{ return (_delay); } public function getInitValue(_arg1:String):Number{ return (_initValues[_arg1]); } public function set delay(_arg1:Number):void{ if (_position <= 0){ _position = -(_arg1); }; _delay = _arg1; } public function init():void{ var _local1:String; var _local2:Array; var _local3:uint; var _local4:Number; var _local5:uint; _inited = true; _initValues = {}; _rangeValues = {}; for (_local1 in _values) { if (plugins[_local1]){ _local2 = plugins[_local1]; _local3 = _local2.length; _local4 = ((_local1 in target)) ? target[_local1] : NaN; _local5 = 0; while (_local5 < _local3) { _local4 = _local2[_local5].init(this, _local1, _local4); _local5++; }; if (!isNaN(_local4)){ _rangeValues[_local1] = (_values[_local1] - (_initValues[_local1] = _local4)); }; } else { _rangeValues[_local1] = (_values[_local1] - (_initValues[_local1] = target[_local1])); }; }; if (hasStarPlugins){ _local2 = plugins["*"]; _local3 = _local2.length; _local5 = 0; while (_local5 < _local3) { _local2[_local5].init(this, "*", NaN); _local5++; }; }; if (((!((onInit == null))) && (!(suppressEvents)))){ onInit(this); }; } public function getValues():Object{ return (copy(_values, {})); } public function setValues(_arg1:Object):void{ copy(_arg1, _values, true); invalidate(); } public function get position():Number{ return (_position); } protected function setGCLock(_arg1:Boolean):void{ if (_arg1){ if ((target is IEventDispatcher)){ target.addEventListener("_", setGCLock); } else { gcLockList[this] = true; }; } else { if ((target is IEventDispatcher)){ target.removeEventListener("_", setGCLock); }; delete gcLockList[this]; }; } public function swapValues():void{ var _local2:String; var _local3:Number; if (!_inited){ init(); }; var _local1:Object = _values; _values = _initValues; _initValues = _local1; for (_local2 in _rangeValues) { _rangeValues[_local2] = (_rangeValues[_local2] * -1); }; if (_position < 0){ _local3 = positionOld; position = 0; _position = positionOld; positionOld = _local3; } else { position = _position; }; } public function setValue(_arg1:String, _arg2:Number):void{ _values[_arg1] = _arg2; invalidate(); } public function get paused():Boolean{ return (_paused); } public function getValue(_arg1:String):Number{ return (_values[_arg1]); } protected function invalidate():void{ _inited = false; if (_position > 0){ _position = 0; }; if (autoPlay){ paused = false; }; } protected function copy(_arg1:Object, _arg2:Object, _arg3:Boolean=false):Object{ var _local4:String; for (_local4 in _arg1) { if (((_arg3) && ((_arg1[_local4] == null)))){ delete _arg2[_local4]; } else { _arg2[_local4] = _arg1[_local4]; }; }; return (_arg2); } public function deleteValue(_arg1:String):Boolean{ delete _rangeValues[_arg1]; delete _initValues[_arg1]; return (delete _values[_arg1]); } public function resetValues(_arg1:Object=null):void{ _values = {}; setValues(_arg1); } public function set position(_arg1:Number):void{ var _local4:String; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Array; var _local9:uint; var _local10:uint; positionOld = _position; ratioOld = ratio; calculatedPositionOld = calculatedPosition; var _local2:Number = (repeatCount * duration); var _local3:Boolean = (((_arg1 >= _local2)) && ((repeatCount > 0))); if (_local3){ if (calculatedPositionOld == _local2){ return; }; _position = _local2; calculatedPosition = (((reflect) && (!((repeatCount & 1))))) ? 0 : duration; } else { _position = ((_arg1)<-(_delay)) ? -(_delay) : _arg1; calculatedPosition = ((_position < 0)) ? 0 : (_position % duration); if (((reflect) && (((_position / duration) & 1)))){ calculatedPosition = (duration - calculatedPosition); }; }; ratio = ((((duration == 0)) && ((_position >= 0)))) ? 1 : ease((calculatedPosition / duration), 0, 1, 1); if (((((target) && ((((_position >= 0)) || ((positionOld >= 0)))))) && (!((_position == positionOld))))){ if (!_inited){ init(); }; for (_local4 in _values) { _local5 = _initValues[_local4]; _local6 = _rangeValues[_local4]; _local7 = (_local5 + (_local6 * ratio)); _local8 = plugins[_local4]; if (_local8){ _local9 = _local8.length; _local10 = 0; while (_local10 < _local9) { _local7 = _local8[_local10].tween(this, _local4, _local7, _local5, _local6, ratio, _local3); _local10++; }; if (!isNaN(_local7)){ target[_local4] = _local7; }; } else { target[_local4] = _local7; }; }; }; if (hasStarPlugins){ _local8 = plugins["*"]; _local9 = _local8.length; _local10 = 0; while (_local10 < _local9) { _local8[_local10].tween(this, "*", NaN, NaN, NaN, ratio, _local3); _local10++; }; }; if (((!((onChange == null))) && (!(suppressEvents)))){ onChange(this); }; if (_local3){ paused = true; if (nextTween){ nextTween.paused = false; }; if (((!((onComplete == null))) && (!(suppressEvents)))){ onComplete(this); }; }; } public function end():void{ position = ((repeatCount)>0) ? (repeatCount * duration) : duration; } public function beginning():void{ position = 0; paused = true; } public function set paused(_arg1:Boolean):void{ if (_arg1 == _paused){ return; }; _paused = _arg1; if (_paused){ delete tickList[this]; setGCLock(false); } else { if (((!((repeatCount == 0))) && ((_position >= (repeatCount * duration))))){ _inited = false; _position = -(delay); }; tickList[this] = true; setGCLock(true); }; } public function get proxy():TargetProxy{ if (_proxy == null){ _proxy = new TargetProxy(this); }; return (_proxy); } public static function installPlugin(_arg1:Object, _arg2:Array, _arg3:Boolean=false):void{ var _local5:String; var _local4:uint; while (_local4 < _arg2.length) { _local5 = _arg2[_local4]; if (_local5 == "*"){ hasStarPlugins = true; }; if (plugins[_local5] == null){ plugins[_local5] = [_arg1]; } else { if (_arg3){ plugins[_local5].unshift(_arg1); } else { plugins[_local5].push(_arg1); }; }; _local4++; }; } protected static function staticTick(_arg1:Event):void{ var _local4:Object; var _local5:GTween; var _local2:Number = time; time = (getTimer() / 1000); if (pauseAll){ return; }; var _local3:Number = ((time - _local2) * timeScaleAll); for (_local4 in tickList) { _local5 = (_local4 as GTween); (_local4 as GTween).position = (_local5._position + ((_local5.useFrames) ? timeScaleAll : _local3 * _local5.timeScale)); }; } public static function linearEase(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (_arg1); } protected static function staticInit():void{ (shape = new Shape()).addEventListener(Event.ENTER_FRAME, staticTick); time = (getTimer() / 1000); } staticInit(); } }//package com.gskinner.motion import flash.utils.*; dynamic class TargetProxy extends Proxy { private var tween:GTween; private function TargetProxy(_arg1:GTween):void{ this.tween = _arg1; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{ tween.deleteValue(_arg1); return (true); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ if ((((((_arg2 is Boolean)) || ((_arg2 is String)))) || (isNaN(_arg2)))){ tween.target[_arg1] = _arg2; } else { tween.setValue(String(_arg1), Number(_arg2)); }; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function callProperty(_arg1, ... _args){ return (tween.target[_arg1].apply(null, _args)); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ var _local2:Number = tween.getValue(_arg1); return ((isNaN(_local2)) ? tween.target[_arg1] : _local2); } }
Section 15
//GTweener (com.gskinner.motion.GTweener) package com.gskinner.motion { import flash.utils.*; public class GTweener { protected static var tweens:Dictionary; protected static var instance:GTweener; public function init(_arg1:GTween, _arg2:String, _arg3:Number):Number{ return (_arg3); } public function tween(_arg1:GTween, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean):Number{ if (((_arg7) && (_arg1.pluginData.GTweener))){ remove(_arg1); }; return (_arg3); } public static function add(_arg1:GTween):void{ var _local2:Object = _arg1.target; var _local3:Array = tweens[_local2]; if (_local3){ clearValues(_local2, _arg1.getValues()); } else { _local3 = (tweens[_local2] = []); }; _local3.push(_arg1); _arg1.pluginData.GTweener = true; } public static function resumeTweens(_arg1:Object):void{ pauseTweens(_arg1, false); } public static function getTweens(_arg1:Object):Array{ return (((tweens[_arg1]) || ([]))); } public static function from(_arg1:Object=null, _arg2:Number=1, _arg3:Object=null, _arg4:Object=null, _arg5:Object=null):GTween{ var _local6:GTween = to(_arg1, _arg2, _arg3, _arg4, _arg5); _local6.swapValues(); return (_local6); } public static function remove(_arg1:GTween):void{ delete _arg1.pluginData.GTweener; var _local2:Array = tweens[_arg1.target]; if (_local2 == null){ return; }; var _local3:uint = _local2.length; var _local4:uint; while (_local4 < _local3) { if (_local2[_local4] == _arg1){ _local2.splice(_local4, 1); return; }; _local4++; }; } public static function removeTweens(_arg1:Object):void{ pauseTweens(_arg1); var _local2:Array = tweens[_arg1]; if (_local2 == null){ return; }; var _local3:uint = _local2.length; var _local4:uint; while (_local4 < _local3) { delete _local2[_local4].pluginData.GTweener; _local4++; }; delete tweens[_arg1]; } protected static function staticInit():void{ tweens = new Dictionary(true); instance = new (GTweener); GTween.installPlugin(instance, ["*"]); } protected static function clearValues(_arg1:Object, _arg2:Object):void{ var n:String; var tween:GTween; var target = _arg1; var values = _arg2; for (n in values) { tween = getTween(target, n); try { if (tween){ tween.deleteValue(n); }; } catch(e:Error) { }; }; } public static function to(_arg1:Object=null, _arg2:Number=1, _arg3:Object=null, _arg4:Object=null, _arg5:Object=null):GTween{ var _local6:GTween = new GTween(_arg1, _arg2, _arg3, _arg4, _arg5); add(_local6); return (_local6); } public static function getTween(_arg1:Object, _arg2:String):GTween{ var _local6:GTween; var _local3:Array = tweens[_arg1]; if (_local3 == null){ return (null); }; var _local4:uint = _local3.length; var _local5:uint; while (_local5 < _local4) { _local6 = _local3[_local5]; if (!isNaN(_local6.getValue(_arg2))){ return (_local6); }; _local5++; }; return (null); } public static function pauseTweens(_arg1:Object, _arg2:Boolean=true):void{ var _local3:Array = tweens[_arg1]; if (_local3 == null){ return; }; var _local4:uint = _local3.length; var _local5:uint; while (_local5 < _local4) { _local3[_local5].paused = _arg2; _local5++; }; } staticInit(); } }//package com.gskinner.motion
Section 16
//GraphicalDialog (com.halfbot.cutscenes.GraphicalDialog) package com.halfbot.cutscenes { import com.pblabs.engine.core.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.hanclinto.platformer.*; import com.hanclinto.cutscene.*; import flash.text.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; public class GraphicalDialog extends SceneAction { private var _keyAdvance:Boolean;// = false private var keyAdvance:Boolean;// = false public var nonModal:Boolean;// = false public var text:String;// = "" private var startTime:int; public var Label:HBLabel; private var _isFinished:Boolean;// = true private static const margin:Number = 8; private static const dialogBoxHeight:Number = 0.333333333333333; private static var dialogBox:DisplayObjectContainer; private static var dialogTextField:TextField; private static var dialogTextFormat:TextFormat; private static var dialogBg:Bitmap; static var clearNonModal:Boolean = false; public function GraphicalDialog(){ Label = new HBLabel(); super(); } private function buildDialogGui():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2:Class = GraphicalDialog_ImageBorder; var _local3:Bitmap = new (_local2); _local3.x = ((GameData.SCREEN_WIDTH / 2) - (_local3.width / 2)); var _local4:BitmapData = new BitmapData((_local3.width - (margin * 2)), ((GameData.SCREEN_HEIGHT * dialogBoxHeight) - margin), true, 3221225472); dialogBg = new Bitmap(_local4); if (dialogBox){ PBE.mainStage.removeChild(dialogBox); dialogBox = new Sprite(); } else { dialogBox = new Sprite(); Label.width = (dialogBg.width - (margin * 2)); Label.height = (dialogBg.height - (margin * 2)); }; dialogBox.addChild(_local3); dialogBox.addChild(Label); Label.x = (_local3.x + margin); Label.y = (margin + 5); dialogBox.visible = false; PBE.mainStage.addChild(dialogBox); dialogBox.x = margin; dialogBox.y = (((PBE.scene.sceneView.height * (1 - dialogBoxHeight)) - _local3.height) - (_local3.height / 4)); } override public function get isFinished():Boolean{ return (_isFinished); } private function showGui():void{ dialogBox.visible = true; PBE.mainStage.setChildIndex(dialogBox, (PBE.mainStage.numChildren - 1)); if (!nonModal){ if ((PBE.spatialManager is PlatformSpatialManager)){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; }; } override public function activate():void{ buildDialogGui(); startTime = PBE.processManager.virtualTime; _isFinished = false; Label.fontName = "Hud Font"; Label.fontSize = 8.5; Label.fontColor = 11589887; Label.caption = text; if (dialogBg){ }; Label.refresh(); if (nonModal){ keyAdvance = ((((PBE.isKeyDown(InputKey.SPACE)) || (PBE.isKeyDown(InputKey.UP)))) || (PBE.isKeyDown(InputKey.MOUSE_BUTTON))); _keyAdvance = keyAdvance; clearNonModal = (text == ""); _isFinished = true; }; showGui(); } private function hideGui():void{ dialogBox.visible = false; } override public function onTick(_arg1:Number):void{ keyAdvance = ((((PBE.isKeyDown(InputKey.SPACE)) || (PBE.isKeyDown(InputKey.UP)))) || (PBE.isKeyDown(InputKey.MOUSE_BUTTON))); if (((!(_keyAdvance)) && (keyAdvance))){ _isFinished = true; hideGui(); }; if (((nonModal) && (clearNonModal))){ hideGui(); }; _keyAdvance = keyAdvance; } } }//package com.halfbot.cutscenes
Section 17
//GraphicalDialog_ImageBorder (com.halfbot.cutscenes.GraphicalDialog_ImageBorder) package com.halfbot.cutscenes { import mx.core.*; public class GraphicalDialog_ImageBorder extends BitmapAsset { } }//package com.halfbot.cutscenes
Section 18
//creditsMenu (com.halfbot.menus.creditsMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.gskinner.motion.*; import com.hanclinto.platformer.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import flash.ui.*; import com.halfbot.system.*; public class creditsMenu extends ImageScreen { public var cloudsBg1:Bitmap; public var cloudsBg2:Bitmap; public var waiting:Boolean;// = true public var scores_button:HBButton; public var Hills2:Bitmap; public var play_button:HBButton; public var fence2:Bitmap; public var copyright_button:HBButton; public var fence1:Bitmap; public var help_button:HBButton; public var credits_button:HBButton; public var Hills1:Bitmap; public function creditsMenu(){ play_button = new HBButton(); help_button = new HBButton(); scores_button = new HBButton(); credits_button = new HBButton(); copyright_button = new HBButton(); super("../res/images/bgs/PlainsBG01_far.png"); createScrollingElements(); createButtons(); createTitleAndCopyright(); startScrollHills(null); startScrollClouds(null); startScrollFence(null); var _local1:* = new HB.SponsorsLogo2(); var _local2:* = new HBButton(); addChild(_local2); _local2.x = ((550 - _local1.width) / 2); _local2.y = 10; _local2.image_normal = new HB.SponsorsLogo2(); _local2.image_over = new HB.SponsorsLogo2(); _local2.callback = goToMyURL_Sponsor; _local2.buttonMode = true; _local2.refresh(); } public function startScrollHills(_arg1):void{ Hills1.x = 0; Hills1.y = (0 + 60); Hills2.x = (Hills1.x + Hills2.width); Hills2.y = Hills1.y; GTweener.to(Hills1, 120, {x:-(Hills1.width)}, {onComplete:startScrollHills}); GTweener.to(Hills2, 120, {x:0}); } protected function nextScreenBack(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:goBack}); } public function createScrollingElements():void{ var _local1:Class = creditsMenu_ImageClouds; var _local2:Class = creditsMenu_ImageHills; var _local3:Class = creditsMenu_ImageFence; cloudsBg1 = new (_local1); cloudsBg2 = new (_local1); Hills1 = new (_local2); Hills2 = new (_local2); fence1 = new (_local3); fence2 = new (_local3); addChild(cloudsBg1); addChild(cloudsBg2); addChild(Hills1); addChild(Hills2); addChild(fence1); addChild(fence2); } public function createTitleAndCopyright():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2:Class = creditsMenu_Imageclogo; var _local3:Bitmap = new (_local2); _local3.x = ((GameData.SCREEN_WIDTH / 2) - (_local3.width / 2)); _local3.y = 60; addChild(_local3); var _local4:Class = creditsMenu_ImagecpyrightNormal; var _local5:Class = creditsMenu_ImagecpyrightNormalOver; var _local6:Bitmap = new (_local4); addChild(copyright_button); copyright_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local6.width / 2)); copyright_button.y = ((GameData.SCREEN_HEIGHT - _local6.height) - 10); copyright_button.image_normal = new (_local4); copyright_button.image_over = new (_local5); copyright_button.callback = pressHandler; copyright_button.refresh(); } public function startScrollClouds(_arg1):void{ cloudsBg1.x = 0; cloudsBg1.y = 0; cloudsBg2.x = (cloudsBg1.x + cloudsBg2.width); cloudsBg2.y = cloudsBg1.y; GTweener.to(cloudsBg1, 150, {x:-(cloudsBg1.width)}, {onComplete:startScrollClouds}); GTweener.to(cloudsBg2, 150, {x:0}); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } protected function backCallback():void{ nextScreenBack(null); } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } public function pressHandler():void{ var url = "http://www.halfbot.com/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } private function goToMyURL_Sponsor():void{ if (HB.SPONSORED){ navigateToURL(new URLRequest(HB.SPONSOR_URL)); }; } public function startScrollFence(_arg1):void{ var _local2:IUITarget = PBE.scene.sceneView; fence1.x = 0; fence1.y = ((GameData.SCREEN_HEIGHT - fence1.height) + 15); fence2.x = (fence1.x + fence2.width); fence2.y = fence1.y; GTweener.to(fence1, 20, {x:-(fence1.width)}, {onComplete:startScrollFence}); GTweener.to(fence2, 20, {x:0}); } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; } protected function nextScreenCallback():void{ nextScreen(null); } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2 = 50; var _local3 = 9; var _local4:Class = creditsMenu_ImageBackNormal; var _local5:Class = creditsMenu_ImageBackNormalOver; addChild(help_button); help_button.x = (((GameData.SCREEN_WIDTH / 2) - (help_button.width / 2)) + 6); help_button.y = (GameData.SCREEN_HEIGHT - (help_button.height * 4)); help_button.image_normal = new (_local4); help_button.image_over = new (_local5); help_button.callback = backCallback; help_button.refresh(); } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("levelSelect"); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case Keyboard.SPACE: nextScreen(null); }; } protected function nextScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNext}); } protected function goBack(_arg1):void{ ScreenManager.instance.goto("intro"); } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; } override public function onShow():void{ alpha = 0; waiting = true; thisScene(null); } } }//package com.halfbot.menus
Section 19
//creditsMenu_ImageBackNormal (com.halfbot.menus.creditsMenu_ImageBackNormal) package com.halfbot.menus { import mx.core.*; public class creditsMenu_ImageBackNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 20
//creditsMenu_ImageBackNormalOver (com.halfbot.menus.creditsMenu_ImageBackNormalOver) package com.halfbot.menus { import mx.core.*; public class creditsMenu_ImageBackNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 21
//creditsMenu_Imageclogo (com.halfbot.menus.creditsMenu_Imageclogo) package com.halfbot.menus { import mx.core.*; public class creditsMenu_Imageclogo extends BitmapAsset { } }//package com.halfbot.menus
Section 22
//creditsMenu_ImageClouds (com.halfbot.menus.creditsMenu_ImageClouds) package com.halfbot.menus { import mx.core.*; public class creditsMenu_ImageClouds extends BitmapAsset { } }//package com.halfbot.menus
Section 23
//creditsMenu_ImagecpyrightNormal (com.halfbot.menus.creditsMenu_ImagecpyrightNormal) package com.halfbot.menus { import mx.core.*; public class creditsMenu_ImagecpyrightNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 24
//creditsMenu_ImagecpyrightNormalOver (com.halfbot.menus.creditsMenu_ImagecpyrightNormalOver) package com.halfbot.menus { import mx.core.*; public class creditsMenu_ImagecpyrightNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 25
//creditsMenu_ImageFence (com.halfbot.menus.creditsMenu_ImageFence) package com.halfbot.menus { import mx.core.*; public class creditsMenu_ImageFence extends BitmapAsset { } }//package com.halfbot.menus
Section 26
//creditsMenu_ImageHills (com.halfbot.menus.creditsMenu_ImageHills) package com.halfbot.menus { import mx.core.*; public class creditsMenu_ImageHills extends BitmapAsset { } }//package com.halfbot.menus
Section 27
//helpMenu (com.halfbot.menus.helpMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.gskinner.motion.*; import com.hanclinto.platformer.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import flash.ui.*; import com.halfbot.system.*; public class helpMenu extends ImageScreen { public var cloudsBg1:Bitmap; public var cloudsBg2:Bitmap; public var waiting:Boolean;// = true public var scores_button:HBButton; public var Hills2:Bitmap; public var play_button:HBButton; public var fence2:Bitmap; public var copyright_button:HBButton; public var fence1:Bitmap; public var help_button:HBButton; public var credits_button:HBButton; public var Hills1:Bitmap; public function helpMenu(){ play_button = new HBButton(); help_button = new HBButton(); scores_button = new HBButton(); credits_button = new HBButton(); copyright_button = new HBButton(); super("../res/images/bgs/PlainsBG01_far.png"); createScrollingElements(); createTitleAndCopyright(); createButtons(); startScrollHills(null); startScrollClouds(null); startScrollFence(null); var _local1:* = new HB.SponsorsLogo2(); var _local2:* = new HBButton(); addChild(_local2); _local2.x = (((550 - _local1.width) / 2) - 170); _local2.y = 365; _local2.buttonMode = true; _local2.image_normal = new HB.SponsorsLogo2(); _local2.image_over = new HB.SponsorsLogo2(); _local2.callback = goToMyURL_Sponsor; _local2.refresh(); } public function startScrollHills(_arg1):void{ Hills1.x = 0; Hills1.y = (0 + 60); Hills2.x = (Hills1.x + Hills2.width); Hills2.y = Hills1.y; GTweener.to(Hills1, 120, {x:-(Hills1.width)}, {onComplete:startScrollHills}); GTweener.to(Hills2, 120, {x:0}); } protected function nextScreenBack(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:goBack}); } public function createScrollingElements():void{ var _local1:Class = helpMenu_ImageClouds; var _local2:Class = helpMenu_ImageHills; var _local3:Class = helpMenu_ImageFence; cloudsBg1 = new (_local1); cloudsBg2 = new (_local1); Hills1 = new (_local2); Hills2 = new (_local2); fence1 = new (_local3); fence2 = new (_local3); addChild(cloudsBg1); addChild(cloudsBg2); addChild(Hills1); addChild(Hills2); addChild(fence1); addChild(fence2); } public function createTitleAndCopyright():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2:Class = helpMenu_Imageclogo; var _local3:Bitmap = new (_local2); _local3.x = ((GameData.SCREEN_WIDTH / 2) - (_local3.width / 2)); _local3.y = 0; addChild(_local3); var _local4:Class = helpMenu_ImagecpyrightNormal; var _local5:Class = helpMenu_ImagecpyrightNormalOver; var _local6:Bitmap = new (_local4); addChild(copyright_button); copyright_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local6.width / 2)); copyright_button.y = ((GameData.SCREEN_HEIGHT - _local6.height) - 10); copyright_button.image_normal = new (_local4); copyright_button.image_over = new (_local5); copyright_button.callback = pressHandler; copyright_button.refresh(); } public function startScrollClouds(_arg1):void{ cloudsBg1.x = 0; cloudsBg1.y = 0; cloudsBg2.x = (cloudsBg1.x + cloudsBg2.width); cloudsBg2.y = cloudsBg1.y; GTweener.to(cloudsBg1, 150, {x:-(cloudsBg1.width)}, {onComplete:startScrollClouds}); GTweener.to(cloudsBg2, 150, {x:0}); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } protected function backCallback():void{ nextScreenBack(null); } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } public function pressHandler():void{ var url = "http://www.halfbot.com/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } private function goToMyURL_Sponsor():void{ if (HB.SPONSORED){ navigateToURL(new URLRequest(HB.SPONSOR_URL)); }; } public function startScrollFence(_arg1):void{ var _local2:IUITarget = PBE.scene.sceneView; fence1.x = 0; fence1.y = ((GameData.SCREEN_HEIGHT - fence1.height) + 15); fence2.x = (fence1.x + fence2.width); fence2.y = fence1.y; GTweener.to(fence1, 20, {x:-(fence1.width)}, {onComplete:startScrollFence}); GTweener.to(fence2, 20, {x:0}); } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; } protected function nextScreenCallback():void{ nextScreen(null); } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2 = 50; var _local3 = 9; var _local4:Class = helpMenu_ImageBackNormal; var _local5:Class = helpMenu_ImageBackNormalOver; addChild(help_button); help_button.x = (((GameData.SCREEN_WIDTH / 2) - (help_button.width / 2)) + 6); help_button.y = (GameData.SCREEN_HEIGHT - (help_button.height * 3)); help_button.image_normal = new (_local4); help_button.image_over = new (_local5); help_button.callback = backCallback; help_button.refresh(); } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("levelSelect"); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case Keyboard.SPACE: nextScreen(null); }; } protected function nextScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNext}); } protected function goBack(_arg1):void{ ScreenManager.instance.goto("intro"); } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; } override public function onShow():void{ alpha = 0; waiting = true; thisScene(null); } } }//package com.halfbot.menus
Section 28
//helpMenu_ImageBackNormal (com.halfbot.menus.helpMenu_ImageBackNormal) package com.halfbot.menus { import mx.core.*; public class helpMenu_ImageBackNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 29
//helpMenu_ImageBackNormalOver (com.halfbot.menus.helpMenu_ImageBackNormalOver) package com.halfbot.menus { import mx.core.*; public class helpMenu_ImageBackNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 30
//helpMenu_Imageclogo (com.halfbot.menus.helpMenu_Imageclogo) package com.halfbot.menus { import mx.core.*; public class helpMenu_Imageclogo extends BitmapAsset { } }//package com.halfbot.menus
Section 31
//helpMenu_ImageClouds (com.halfbot.menus.helpMenu_ImageClouds) package com.halfbot.menus { import mx.core.*; public class helpMenu_ImageClouds extends BitmapAsset { } }//package com.halfbot.menus
Section 32
//helpMenu_ImagecpyrightNormal (com.halfbot.menus.helpMenu_ImagecpyrightNormal) package com.halfbot.menus { import mx.core.*; public class helpMenu_ImagecpyrightNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 33
//helpMenu_ImagecpyrightNormalOver (com.halfbot.menus.helpMenu_ImagecpyrightNormalOver) package com.halfbot.menus { import mx.core.*; public class helpMenu_ImagecpyrightNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 34
//helpMenu_ImageFence (com.halfbot.menus.helpMenu_ImageFence) package com.halfbot.menus { import mx.core.*; public class helpMenu_ImageFence extends BitmapAsset { } }//package com.halfbot.menus
Section 35
//helpMenu_ImageHills (com.halfbot.menus.helpMenu_ImageHills) package com.halfbot.menus { import mx.core.*; public class helpMenu_ImageHills extends BitmapAsset { } }//package com.halfbot.menus
Section 36
//levelCompleteMenu (com.halfbot.menus.levelCompleteMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import flash.geom.*; import com.gskinner.motion.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.text.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Triggers.*; import flash.ui.*; public class levelCompleteMenu extends ImageScreen { public var local_totalScore:int;// = 0 public var waiting:Boolean;// = true public var score:HBLabel; public var resume_button:HBButton; public var start:HBLabel; public var copyright_button:HBButton; public var totalScore:HBLabel; public var skip_button:HBButton; public var nextLevelCalled:Boolean;// = false public var main_button:HBButton; public var local_score:int;// = 0 public function levelCompleteMenu(){ main_button = new HBButton(); resume_button = new HBButton(); skip_button = new HBButton(); score = new HBLabel(); totalScore = new HBLabel(); start = new HBLabel(); copyright_button = new HBButton(); super("../res/images/Level_Complete/Level-Complete_frame.png"); createButtons(); } override public function onShow():void{ nextLevelCalled = false; local_totalScore = (PlayerInventory.playerTotalScore - PlayerInventory.playerScore); local_score = 0; GameData.paused = false; alpha = 0; waiting = true; thisScene(null); GameData.currentLevelComplete = false; } protected function fadeStart(_arg1):void{ if (start.alpha == 0){ GTweener.to(start, 1, {alpha:1}, {onComplete:fadeStart}); } else { GTweener.to(start, 1, {alpha:0}, {onComplete:fadeStart}); }; } public function pressHandler():void{ var url = "http://www.halfbot.com/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } protected function exitScreenCallback():void{ ScreenManager.instance.goto("intro"); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } protected function nextScreenCallback():void{ nextScreen(null); } public function finishRetry(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; loadNextLevel((GameData.currentLevel + 1)); PlayerInventory.playerScore = 0; } protected function nextlevelCallback():void{ retryScreen(null); } protected function nextScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNext}); GTweener.to(GameData.gameInstance, 0.5, {alpha:0}); } protected function loadNextLevel(_arg1:int):void{ var _local2:int; var _local3:int; var _local4:Array; var _local5:IEntity; if (_arg1 >= GameData.maxLevel){ GameData.maxLevel = _arg1; }; if (_arg1 == 21){ ScreenManager.instance.goto("story_end"); } else { GameData.currentLevel = _arg1; _local2 = 0; _local3 = LevelManager.instance.currentLevel; _local4 = GroupManagerComponent.getGroupByName("group_dynamic_entities").entityList; _local2 = 0; while (_local2 < _local4.length) { _local5 = (_local4[_local2] as IEntity); _local5.destroy(); _local2++; }; LevelManager.instance.unloadCurrentLevel(); LevelManager.instance.loadLevel(GameData.currentLevel); ScreenManager.instance.goto("game"); }; GameData.saveData(); } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2:Class = levelCompleteMenu_ImageResumeNormal; var _local3:Class = levelCompleteMenu_ImageResumeNormalOver; var _local4:Class = levelCompleteMenu_ImageMainNormal; var _local5:Class = levelCompleteMenu_ImageMainNormalOver; var _local6:Bitmap = new (_local2); var _local7 = 70; addChild(resume_button); resume_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local6.width / 2)); resume_button.y = ((((GameData.SCREEN_HEIGHT / 2) - (_local6.height / 2)) + 20) + _local7); resume_button.image_normal = new (_local2); resume_button.image_over = new (_local3); resume_button.callback = nextScreenCallback; resume_button.refresh(); addChild(main_button); main_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local6.width / 2)); main_button.y = ((((GameData.SCREEN_HEIGHT / 2) - (_local6.height / 2)) - 20) + _local7); main_button.image_normal = new (_local4); main_button.image_over = new (_local5); main_button.callback = nextlevelCallback; main_button.refresh(); score.x = ((GameData.SCREEN_WIDTH / 2) - (score.width / 2)); score.y = (main_button.y - 90); score.fontSize = 16; score.fontAlign = TextFormatAlign.CENTER; score.caption = ("" + local_score); score.fontColor = 3322879; score.refresh(); totalScore.x = ((GameData.SCREEN_WIDTH / 2) - (score.width / 2)); totalScore.y = (main_button.y - 35); totalScore.fontAlign = TextFormatAlign.CENTER; totalScore.fontSize = 16; totalScore.caption = ("" + local_totalScore); totalScore.fontColor = 3322879; totalScore.refresh(); addChild(score); addChild(totalScore); start.extents = new Rectangle(0, 0, 400, start.extents.height); start.caption = "Spacebar To Continue"; start.fontColor = 16233507; start.fontAlign = TextFormatAlign.CENTER; start.fontBold = true; start.fontSize = 16; start.refresh(); start.x = ((GameData.SCREEN_WIDTH / 2) - (start.width / 2)); start.y = (GameData.SCREEN_HEIGHT - 75); addChild(start); var _local8:Class = levelCompleteMenu_ImagecpyrightNormal; var _local9:Class = levelCompleteMenu_ImagecpyrightNormalOver; var _local10:Bitmap = new (_local8); addChild(copyright_button); copyright_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local10.width / 2)); copyright_button.y = ((GameData.SCREEN_HEIGHT - _local10.height) - 10); copyright_button.image_normal = new (_local8); copyright_button.image_over = new (_local9); copyright_button.callback = pressHandler; copyright_button.refresh(); GTweener.to(start, 1, {alpha:0}, {onComplete:fadeStart}); } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.pop(); ScreenManager.instance.goto("levelSelect"); } public function keyDownHandler(_arg1:KeyboardEvent):void{ if (nextLevelCalled){ return; }; switch (_arg1.keyCode){ case Keyboard.SPACE: nextlevelCallback(); nextLevelCalled = true; }; } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; if (PlayerInventory.playerScore != local_score){ local_score = (local_score + 100); if (local_score >= PlayerInventory.playerScore){ local_score = PlayerInventory.playerScore; }; score.caption = ("" + local_score); score.refresh(); } else { if (PlayerInventory.playerTotalScore != local_totalScore){ local_totalScore = (local_totalScore + 100); if (local_totalScore >= PlayerInventory.playerTotalScore){ local_totalScore = PlayerInventory.playerTotalScore; }; totalScore.caption = ("" + local_totalScore); totalScore.refresh(); }; }; } protected function retryScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); local_score = PlayerInventory.playerScore; local_totalScore = PlayerInventory.playerTotalScore; totalScore.caption = ("" + local_totalScore); totalScore.refresh(); score.caption = ("" + local_score); score.refresh(); PBE.processManager.schedule(500, this, delayTransition); } public function delayTransition():void{ trace("delay transition"); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishRetry}); GTweener.to(GameData.gameInstance, 0.5, {alpha:0}); } } }//package com.halfbot.menus
Section 37
//levelCompleteMenu_ImagecpyrightNormal (com.halfbot.menus.levelCompleteMenu_ImagecpyrightNormal) package com.halfbot.menus { import mx.core.*; public class levelCompleteMenu_ImagecpyrightNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 38
//levelCompleteMenu_ImagecpyrightNormalOver (com.halfbot.menus.levelCompleteMenu_ImagecpyrightNormalOver) package com.halfbot.menus { import mx.core.*; public class levelCompleteMenu_ImagecpyrightNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 39
//levelCompleteMenu_ImageMainNormal (com.halfbot.menus.levelCompleteMenu_ImageMainNormal) package com.halfbot.menus { import mx.core.*; public class levelCompleteMenu_ImageMainNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 40
//levelCompleteMenu_ImageMainNormalOver (com.halfbot.menus.levelCompleteMenu_ImageMainNormalOver) package com.halfbot.menus { import mx.core.*; public class levelCompleteMenu_ImageMainNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 41
//levelCompleteMenu_ImageResumeNormal (com.halfbot.menus.levelCompleteMenu_ImageResumeNormal) package com.halfbot.menus { import mx.core.*; public class levelCompleteMenu_ImageResumeNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 42
//levelCompleteMenu_ImageResumeNormalOver (com.halfbot.menus.levelCompleteMenu_ImageResumeNormalOver) package com.halfbot.menus { import mx.core.*; public class levelCompleteMenu_ImageResumeNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 43
//levelSelectMenu (com.halfbot.menus.levelSelectMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import flash.geom.*; import com.gskinner.motion.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Triggers.*; import flash.ui.*; import com.halfbot.system.*; public class levelSelectMenu extends ImageScreen { public var cloudsBg1:Bitmap; public var cloudsBg2:Bitmap; public var waiting:Boolean;// = true public var scores_button:HBButton; public var Hills2:Bitmap; public var play_button:HBButton; public var fence2:Bitmap; public var copyright_button:HBButton; public var fence1:Bitmap; public var help_button:HBButton; public var credits_button:HBButton; public var Hills1:Bitmap; public static var NUM_LEVELS:int = 19; public function levelSelectMenu(){ play_button = new HBButton(); help_button = new HBButton(); scores_button = new HBButton(); credits_button = new HBButton(); copyright_button = new HBButton(); super("../res/images/bgs/PlainsBG01_far.png"); createScrollingElements(); createOverlayAndCopyright(); createButtons(); startScrollHills(null); startScrollClouds(null); startScrollFence(null); var _local1:* = new HB.SponsorsLogo2(); var _local2:* = new HBButton(); addChild(_local2); _local2.x = ((550 - _local1.width) / 2); _local2.y = 330; _local2.buttonMode = true; _local2.image_normal = new HB.SponsorsLogo2(); _local2.image_over = new HB.SponsorsLogo2(); _local2.callback = goToMyURL_Sponsor; _local2.refresh(); } public function startScrollHills(_arg1):void{ Hills1.x = 0; Hills1.y = (0 + 60); Hills2.x = (Hills1.x + Hills2.width); Hills2.y = Hills1.y; GTweener.to(Hills1, 120, {x:-(Hills1.width)}, {onComplete:startScrollHills}); GTweener.to(Hills2, 120, {x:0}); } public function createOverlayAndCopyright():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2:Class = levelSelectMenu_Imageclogo; var _local3:Bitmap = new (_local2); _local3.x = ((GameData.SCREEN_WIDTH / 2) - (_local3.width / 2)); _local3.y = (((GameData.SCREEN_HEIGHT / 2) - (_local3.height / 2)) - 40); addChild(_local3); var _local4:Class = levelSelectMenu_ImagecpyrightNormal; var _local5:Class = levelSelectMenu_ImagecpyrightNormalOver; var _local6:Bitmap = new (_local4); addChild(copyright_button); copyright_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local6.width / 2)); copyright_button.y = ((GameData.SCREEN_HEIGHT - _local6.height) - 10); copyright_button.image_normal = new (_local4); copyright_button.image_over = new (_local5); copyright_button.callback = pressHandler; copyright_button.refresh(); } protected function playGame(_arg1):void{ GameData.paused = false; if (GameData.currentLevel > 1){ goToCurrentLevel(); ScreenManager.instance.goto("game"); } else { ScreenManager.instance.goto("story"); }; } public function createScrollingElements():void{ var _local1:Class = levelSelectMenu_ImageClouds; var _local2:Class = levelSelectMenu_ImageHills; var _local3:Class = levelSelectMenu_ImageFence; cloudsBg1 = new (_local1); cloudsBg2 = new (_local1); Hills1 = new (_local2); Hills2 = new (_local2); fence1 = new (_local3); fence2 = new (_local3); addChild(cloudsBg1); addChild(cloudsBg2); addChild(Hills1); addChild(Hills2); addChild(fence1); addChild(fence2); } protected function backCallback():void{ nextScreenBack(null); } public function startScrollClouds(_arg1):void{ cloudsBg1.x = 0; cloudsBg1.y = 0; cloudsBg2.x = (cloudsBg1.x + cloudsBg2.width); cloudsBg2.y = cloudsBg1.y; GTweener.to(cloudsBg1, 150, {x:-(cloudsBg1.width)}, {onComplete:startScrollClouds}); GTweener.to(cloudsBg2, 150, {x:0}); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } protected function nextScreenPlay(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:playGame}); } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } public function pressHandler():void{ var url = "http://www.halfbot.com/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } protected function playCallback(_arg1:int):Function{ var level = _arg1; return (function (_arg1:Event):void{ if (level <= GameData.maxLevel){ GameData.paused = false; PlayerInventory.partsPickedUp = (PlayerInventory._totalPartsToPickedUp = (PlayerInventory.keyPickedUp = 0)); PlayerInventory.playerScore = 0; PlayerInventory.playerTotalScore = 0; GameData.currentLevel = level; nextScreenPlay(null); }; }); } private function goToMyURL_Sponsor():void{ if (HB.SPONSORED){ navigateToURL(new URLRequest(HB.SPONSOR_URL)); }; } public function startScrollFence(_arg1):void{ var _local2:IUITarget = PBE.scene.sceneView; fence1.x = 0; fence1.y = ((GameData.SCREEN_HEIGHT - fence1.height) + 15); fence2.x = (fence1.x + fence2.width); fence2.y = fence1.y; GTweener.to(fence1, 20, {x:-(fence1.width)}, {onComplete:startScrollFence}); GTweener.to(fence2, 20, {x:0}); } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2 = 50; var _local3 = 9; var _local4:Class = levelSelectMenu_ImagePlayNormal; var _local5:Class = levelSelectMenu_ImagePlayNormalOver; var _local6:Class = levelSelectMenu_ImageBackNormal; var _local7:Class = levelSelectMenu_ImageBackNormalOver; var _local8:Bitmap = new (_local4); var _local9:Bitmap = new (_local6); addChild(play_button); play_button.x = ((GameData.SCREEN_WIDTH - _local8.width) - 10); play_button.y = ((GameData.SCREEN_HEIGHT - _local8.height) - 10); play_button.image_normal = new (_local4); play_button.image_over = new (_local5); play_button.callback = playCallbackButton; play_button.refresh(); addChild(help_button); help_button.x = 10; help_button.y = play_button.y; help_button.image_normal = new (_local6); help_button.image_over = new (_local7); help_button.callback = backCallback; help_button.refresh(); createLevelButtons(); } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("game"); } protected function nextScreenBack(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:goBack}); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case Keyboard.SPACE: nextScreenPlay(null); }; } protected function playCallbackButton():void{ GameData.paused = false; GameData.currentLevel = GameData.maxLevel; PlayerInventory.partsPickedUp = (PlayerInventory._totalPartsToPickedUp = (PlayerInventory.keyPickedUp = 0)); PlayerInventory.playerScore = 0; PlayerInventory.playerTotalScore = 0; nextScreenPlay(null); } protected function goToCurrentLevel():void{ var _local4:IEntity; ScreenManager.instance.pop(); var _local1:int; var _local2:int = LevelManager.instance.currentLevel; var _local3:Array = GroupManagerComponent.getGroupByName("group_dynamic_entities").entityList; _local1 = 0; while (_local1 < _local3.length) { _local4 = (_local3[_local1] as IEntity); _local4.destroy(); _local1++; }; LevelManager.instance.unloadCurrentLevel(); LevelManager.instance.loadLevel(GameData.currentLevel); PBE.processManager.start(); } protected function goBack(_arg1):void{ ScreenManager.instance.goto("intro"); } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; } public function createLevelButtons():void{ var _local11:HBButton; var _local1:Class = levelSelectMenu_ImageLevelButton; var _local2:Class = levelSelectMenu_ImageLevelButton_Roll; var _local3:Class = levelSelectMenu_ImageLockIcon; var _local4 = 95; var _local5 = 53; var _local6 = 78; var _local7 = 67; var _local8 = 5; var _local9:int; var _local10:int; while (_local10 <= NUM_LEVELS) { _local11 = new HBButton(); addChild(_local11); _local11.x = (_local4 + ((_local10 % _local8) * _local6)); _local11.y = (_local5 + (Math.floor((_local10 / _local8)) * _local7)); _local11.image_normal = new (_local1); _local11.callback = playCallback((_local10 + 1)); _local11.parameter_id = (_local10 + 1); _local11.showTextLabel = true; if ((GameData.maxLevel - 1) < _local10){ _local11.showImageLabel = true; } else { _local11.image_over = new (_local2); }; _local11.image_label = new (_local3); _local11.label = ("" + (_local10 + 1)); _local11.textLabel.extents = new Rectangle(0, 0, _local11.image_normal.width, _local11.image_normal.height); _local11.textLabel.x = 2; _local11.textLabel.y = 4; _local11.textLabel.fontColor = 16233507; _local11.textLabel.refresh(); _local11.refresh(); _local10++; }; } override public function onShow():void{ createButtons(); alpha = 0; waiting = true; thisScene(null); } } }//package com.halfbot.menus
Section 44
//levelSelectMenu_ImageBackNormal (com.halfbot.menus.levelSelectMenu_ImageBackNormal) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImageBackNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 45
//levelSelectMenu_ImageBackNormalOver (com.halfbot.menus.levelSelectMenu_ImageBackNormalOver) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImageBackNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 46
//levelSelectMenu_Imageclogo (com.halfbot.menus.levelSelectMenu_Imageclogo) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_Imageclogo extends BitmapAsset { } }//package com.halfbot.menus
Section 47
//levelSelectMenu_ImageClouds (com.halfbot.menus.levelSelectMenu_ImageClouds) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImageClouds extends BitmapAsset { } }//package com.halfbot.menus
Section 48
//levelSelectMenu_ImagecpyrightNormal (com.halfbot.menus.levelSelectMenu_ImagecpyrightNormal) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImagecpyrightNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 49
//levelSelectMenu_ImagecpyrightNormalOver (com.halfbot.menus.levelSelectMenu_ImagecpyrightNormalOver) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImagecpyrightNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 50
//levelSelectMenu_ImageFence (com.halfbot.menus.levelSelectMenu_ImageFence) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImageFence extends BitmapAsset { } }//package com.halfbot.menus
Section 51
//levelSelectMenu_ImageHills (com.halfbot.menus.levelSelectMenu_ImageHills) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImageHills extends BitmapAsset { } }//package com.halfbot.menus
Section 52
//levelSelectMenu_ImageLevelButton (com.halfbot.menus.levelSelectMenu_ImageLevelButton) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImageLevelButton extends BitmapAsset { } }//package com.halfbot.menus
Section 53
//levelSelectMenu_ImageLevelButton_Roll (com.halfbot.menus.levelSelectMenu_ImageLevelButton_Roll) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImageLevelButton_Roll extends BitmapAsset { } }//package com.halfbot.menus
Section 54
//levelSelectMenu_ImageLockIcon (com.halfbot.menus.levelSelectMenu_ImageLockIcon) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImageLockIcon extends BitmapAsset { } }//package com.halfbot.menus
Section 55
//levelSelectMenu_ImagePlayNormal (com.halfbot.menus.levelSelectMenu_ImagePlayNormal) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImagePlayNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 56
//levelSelectMenu_ImagePlayNormalOver (com.halfbot.menus.levelSelectMenu_ImagePlayNormalOver) package com.halfbot.menus { import mx.core.*; public class levelSelectMenu_ImagePlayNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 57
//mainMenu (com.halfbot.menus.mainMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.gskinner.motion.*; import com.hanclinto.platformer.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import flash.ui.*; import com.halfbot.system.*; public class mainMenu extends ImageScreen { public var music_button:HBButton; public var scores_button:HBButton; public var play_button:HBButton; public var fence1:Bitmap; public var fence2:Bitmap; public var copyright_button:HBButton; public var sfx_button:HBButton; public var Hills1:Bitmap; public var Hills2:Bitmap; public var waiting:Boolean;// = true public var cloudsBg1:Bitmap; public var cloudsBg2:Bitmap; public var help_button:HBButton; public var credits_button:HBButton; public function mainMenu(){ music_button = new HBButton(); sfx_button = new HBButton(); play_button = new HBButton(); help_button = new HBButton(); scores_button = new HBButton(); credits_button = new HBButton(); copyright_button = new HBButton(); super("../res/images/bgs/PlainsBG01_far.png"); createScrollingElements(); createButtons(); createTitleAndCopyright(); setupSoundHudAndPause(); startScrollHills(null); startScrollClouds(null); startScrollFence(null); var _local1:* = new HB.SponsorsLogo2(); var _local2:* = new HBButton(); addChild(_local2); _local2.x = (((550 - _local1.width) / 2) - 170); _local2.y = 365; _local2.buttonMode = true; _local2.image_normal = new HB.SponsorsLogo2(); _local2.image_over = new HB.SponsorsLogo2(); _local2.callback = goToMyURL_Sponsor; _local2.refresh(); } override public function onShow():void{ GameData.paused = false; alpha = 0; waiting = true; thisScene(null); music_button.refresh(); if (!GameData.music_on){ music_button.disable(); }; sfx_button.refresh(); if (!GameData.sfx_on){ sfx_button.disable(); }; } public function setupSoundHudAndPause():void{ var _local1:Class = mainMenu_ImageMusicNormal; var _local2:Class = mainMenu_ImageMusicNormalAlt; var _local3:Class = mainMenu_ImageMusicNormalOver; var _local4:Class = mainMenu_ImageSoundNormal; var _local5:Class = mainMenu_ImageSoundNormalAlt; var _local6:Class = mainMenu_ImageSoundNormalOver; var _local7:Class = mainMenu_ImagePauseNormal; var _local8:Class = mainMenu_ImagePauseNormalOver; var _local9:Bitmap = new (_local1); var _local10:Bitmap = new (_local4); var _local11:Bitmap = new (_local7); var _local12 = 10; addChild(music_button); music_button.x = ((GameData.SCREEN_WIDTH - _local9.width) - _local12); music_button.y = _local12; music_button.image_normal = new (_local1); music_button.image_normal_alt = new (_local2); music_button.image_over = new (_local3); music_button.callback = GameData.toggle_music_on; music_button.refresh(); if (!GameData.music_on){ music_button.disable(); }; addChild(sfx_button); sfx_button.x = ((GameData.SCREEN_WIDTH - (_local9.width * 2)) - _local12); sfx_button.y = (_local12 + (_local9.height - _local10.height)); sfx_button.image_normal = new (_local4); sfx_button.image_normal_alt = new (_local5); sfx_button.image_over = new (_local6); sfx_button.callback = GameData.toggle_sfx_on; sfx_button.refresh(); if (!GameData.sfx_on){ sfx_button.disable(); }; } public function pressHandler():void{ var url = "http://www.halfbot.com/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } protected function creditsScreenCallback():void{ creditsScreen(null); } public function startScrollClouds(_arg1):void{ cloudsBg1.x = 0; cloudsBg1.y = 0; cloudsBg2.x = (cloudsBg1.x + cloudsBg2.width); cloudsBg2.y = cloudsBg1.y; GTweener.to(cloudsBg1, 150, {x:-(cloudsBg1.width)}, {onComplete:startScrollClouds}); GTweener.to(cloudsBg2, 150, {x:0}); } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } public function createTitleAndCopyright():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2:Class = mainMenu_Imageclogo; var _local3:Bitmap = new (_local2); _local3.x = ((GameData.SCREEN_WIDTH / 2) - (_local3.width / 2)); _local3.y = 30; addChild(_local3); var _local4:Class = mainMenu_ImagecpyrightNormal; var _local5:Class = mainMenu_ImagecpyrightNormalOver; var _local6:Bitmap = new (_local4); addChild(copyright_button); copyright_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local6.width / 2)); copyright_button.y = ((GameData.SCREEN_HEIGHT - _local6.height) - 10); copyright_button.image_normal = new (_local4); copyright_button.image_over = new (_local5); copyright_button.callback = pressHandler; copyright_button.refresh(); } public function finishNextCredits(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("credits"); } public function finishNextHelp(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("help"); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } private function goToMyURL_Sponsor():void{ if (HB.SPONSORED){ navigateToURL(new URLRequest(HB.SPONSOR_URL)); }; } public function startScrollFence(_arg1):void{ var _local2:IUITarget = PBE.scene.sceneView; fence1.x = 0; fence1.y = ((GameData.SCREEN_HEIGHT - fence1.height) + 15); fence2.x = (fence1.x + fence2.width); fence2.y = fence1.y; GTweener.to(fence1, 20, {x:-(fence1.width)}, {onComplete:startScrollFence}); GTweener.to(fence2, 20, {x:0}); } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; } protected function nextScreenCallback():void{ nextScreen(null); } protected function helpScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNextHelp}); } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("levelSelect"); } protected function creditsScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNextCredits}); } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; } public function startScrollHills(_arg1):void{ Hills1.x = 0; Hills1.y = (0 + 60); Hills2.x = (Hills1.x + Hills2.width); Hills2.y = Hills1.y; GTweener.to(Hills1, 120, {x:-(Hills1.width)}, {onComplete:startScrollHills}); GTweener.to(Hills2, 120, {x:0}); } protected function nextScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNext}); } protected function scoresScreenCallback():void{ scoresScreen(null); } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2 = 50; var _local3 = 9; var _local4:Class = mainMenu_ImageResumeNormal; var _local5:Class = mainMenu_ImageResumeNormalOver; var _local6:Class = mainMenu_ImageHelpNormal; var _local7:Class = mainMenu_ImageHelpNormalOver; var _local8:Class = mainMenu_ImageScoresNormal; var _local9:Class = mainMenu_ImageScoresNormalOver; var _local10:Class = mainMenu_ImageCreditsNormal; var _local11:Class = mainMenu_ImageCreditsNormalOver; var _local12:Bitmap = new (_local4); var _local13:Bitmap = new (_local4); var _local14:Bitmap = new (_local4); var _local15:Bitmap = new (_local4); addChild(play_button); play_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local12.width / 2)); play_button.y = (((GameData.SCREEN_HEIGHT / 2) - (_local12.height / 2)) + _local2); play_button.image_normal = new (_local4); play_button.image_over = new (_local5); play_button.callback = nextScreenCallback; play_button.refresh(); addChild(help_button); help_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local13.width / 2)); help_button.y = (((((GameData.SCREEN_HEIGHT / 2) - (_local13.height / 2)) + _local2) + help_button.height) + _local3); help_button.image_normal = new (_local6); help_button.image_over = new (_local7); help_button.callback = helpScreenCallback; help_button.refresh(); addChild(scores_button); scores_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local13.width / 2)); scores_button.y = ((((GameData.SCREEN_HEIGHT / 2) - (_local13.height / 2)) + _local2) + ((scores_button.height + _local3) * 2)); scores_button.image_normal = new (_local8); scores_button.image_over = new (_local9); scores_button.callback = scoresScreenCallback; scores_button.refresh(); addChild(credits_button); credits_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local13.width / 2)); credits_button.y = ((((GameData.SCREEN_HEIGHT / 2) - (_local13.height / 2)) + _local2) + ((credits_button.height + _local3) * 3)); credits_button.image_normal = new (_local10); credits_button.image_over = new (_local11); credits_button.callback = creditsScreenCallback; credits_button.refresh(); } public function finishNextScores(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("scores"); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case Keyboard.SPACE: nextScreen(null); }; } protected function scoresScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNextScores}); } public function createScrollingElements():void{ var _local1:Class = mainMenu_ImageClouds; var _local2:Class = mainMenu_ImageHills; var _local3:Class = mainMenu_ImageFence; cloudsBg1 = new (_local1); cloudsBg2 = new (_local1); Hills1 = new (_local2); Hills2 = new (_local2); fence1 = new (_local3); fence2 = new (_local3); addChild(cloudsBg1); addChild(cloudsBg2); addChild(Hills1); addChild(Hills2); addChild(fence1); addChild(fence2); } protected function helpScreenCallback():void{ helpScreen(null); } } }//package com.halfbot.menus
Section 58
//mainMenu_Imageclogo (com.halfbot.menus.mainMenu_Imageclogo) package com.halfbot.menus { import mx.core.*; public class mainMenu_Imageclogo extends BitmapAsset { } }//package com.halfbot.menus
Section 59
//mainMenu_ImageClouds (com.halfbot.menus.mainMenu_ImageClouds) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageClouds extends BitmapAsset { } }//package com.halfbot.menus
Section 60
//mainMenu_ImagecpyrightNormal (com.halfbot.menus.mainMenu_ImagecpyrightNormal) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImagecpyrightNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 61
//mainMenu_ImagecpyrightNormalOver (com.halfbot.menus.mainMenu_ImagecpyrightNormalOver) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImagecpyrightNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 62
//mainMenu_ImageCreditsNormal (com.halfbot.menus.mainMenu_ImageCreditsNormal) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageCreditsNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 63
//mainMenu_ImageCreditsNormalOver (com.halfbot.menus.mainMenu_ImageCreditsNormalOver) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageCreditsNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 64
//mainMenu_ImageFence (com.halfbot.menus.mainMenu_ImageFence) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageFence extends BitmapAsset { } }//package com.halfbot.menus
Section 65
//mainMenu_ImageHelpNormal (com.halfbot.menus.mainMenu_ImageHelpNormal) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageHelpNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 66
//mainMenu_ImageHelpNormalOver (com.halfbot.menus.mainMenu_ImageHelpNormalOver) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageHelpNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 67
//mainMenu_ImageHills (com.halfbot.menus.mainMenu_ImageHills) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageHills extends BitmapAsset { } }//package com.halfbot.menus
Section 68
//mainMenu_ImageMusicNormal (com.halfbot.menus.mainMenu_ImageMusicNormal) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageMusicNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 69
//mainMenu_ImageMusicNormalAlt (com.halfbot.menus.mainMenu_ImageMusicNormalAlt) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageMusicNormalAlt extends BitmapAsset { } }//package com.halfbot.menus
Section 70
//mainMenu_ImageMusicNormalOver (com.halfbot.menus.mainMenu_ImageMusicNormalOver) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageMusicNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 71
//mainMenu_ImagePauseNormal (com.halfbot.menus.mainMenu_ImagePauseNormal) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImagePauseNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 72
//mainMenu_ImagePauseNormalOver (com.halfbot.menus.mainMenu_ImagePauseNormalOver) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImagePauseNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 73
//mainMenu_ImageResumeNormal (com.halfbot.menus.mainMenu_ImageResumeNormal) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageResumeNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 74
//mainMenu_ImageResumeNormalOver (com.halfbot.menus.mainMenu_ImageResumeNormalOver) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageResumeNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 75
//mainMenu_ImageScoresNormal (com.halfbot.menus.mainMenu_ImageScoresNormal) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageScoresNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 76
//mainMenu_ImageScoresNormalOver (com.halfbot.menus.mainMenu_ImageScoresNormalOver) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageScoresNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 77
//mainMenu_ImageSoundNormal (com.halfbot.menus.mainMenu_ImageSoundNormal) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageSoundNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 78
//mainMenu_ImageSoundNormalAlt (com.halfbot.menus.mainMenu_ImageSoundNormalAlt) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageSoundNormalAlt extends BitmapAsset { } }//package com.halfbot.menus
Section 79
//mainMenu_ImageSoundNormalOver (com.halfbot.menus.mainMenu_ImageSoundNormalOver) package com.halfbot.menus { import mx.core.*; public class mainMenu_ImageSoundNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 80
//nameEntryMenu (com.halfbot.menus.nameEntryMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import flash.geom.*; import com.gskinner.motion.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.system.*; import flash.text.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Triggers.*; import com.adobe.crypto.*; import flash.ui.*; import com.halfbot.system.*; public class nameEntryMenu extends ImageScreen { public var letterCount:int;// = 0 public var back_button:HBButton; public var loader:URLLoader; public var fence1:Bitmap; public var fence2:Bitmap; public var totalScore:HBLabel; public var submit_button:HBButton; public var Hills1:Bitmap; public var name_label:HBLabel; public var cloudsBg1:Bitmap; public var cloudsBg2:Bitmap; public var waiting:Boolean;// = true public var Hills2:Bitmap; public var clear_button:HBButton; public var MAX_LETTERS:int;// = 7 public var alphabet:Array; public var credits_button:HBButton; public static var NUM_LEVELS:int = 19; public function nameEntryMenu(){ submit_button = new HBButton(); back_button = new HBButton(); clear_button = new HBButton(); credits_button = new HBButton(); totalScore = new HBLabel(); name_label = new HBLabel(); loader = new URLLoader(); alphabet = new Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"); super("../res/images/bgs/PlainsBG01_far.png"); createScrollingElements(); if (HB.GAMEPIRATES){ Security.allowDomain("*"); Security.loadPolicyFile("http://hiscore.gamepirate.com/crossdomain.xml"); }; createOverlayAndCopyright(); createButtons(); startScrollHills(null); startScrollClouds(null); startScrollFence(null); } override public function onShow():void{ createButtons(); alpha = 0; waiting = true; thisScene(null); totalScore.caption = ("" + PlayerInventory.playerTotalScore); totalScore.refresh(); } public function createOverlayAndCopyright():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2:Class = nameEntryMenu_Imageclogo; var _local3:Bitmap = new (_local2); _local3.x = ((GameData.SCREEN_WIDTH / 2) - (_local3.width / 2)); _local3.y = ((GameData.SCREEN_HEIGHT / 2) - (_local3.height / 2)); addChild(_local3); name_label.caption = ""; name_label.extents = new Rectangle(0, 0, 200, name_label.extents.height); name_label.fontAlign = TextFormatAlign.CENTER; name_label.fontSize = 16; name_label.refresh(); name_label.x = ((GameData.SCREEN_WIDTH / 2) - (name_label.width / 2)); name_label.y = 305; addChild(name_label); addChild(totalScore); totalScore.caption = ("" + PlayerInventory.playerTotalScore); totalScore.extents = new Rectangle(0, 0, 200, name_label.extents.height); totalScore.fontSize = 16; totalScore.refresh(); totalScore.x = (GameData.SCREEN_WIDTH / 2); totalScore.y = 278; } public function varsLoaded2(_arg1:Event):void{ } protected function letterCallback(_arg1:String):Function{ var letter = _arg1; return (function (_arg1:Event):void{ if ((letterCount + 1) > MAX_LETTERS){ return; }; letterCount++; name_label.caption = (name_label.caption + letter); name_label.refresh(); }); } public function startScrollClouds(_arg1):void{ cloudsBg1.x = 0; cloudsBg1.y = 0; cloudsBg2.x = (cloudsBg1.x + cloudsBg2.width); cloudsBg2.y = cloudsBg1.y; GTweener.to(cloudsBg1, 150, {x:-(cloudsBg1.width)}, {onComplete:startScrollClouds}); GTweener.to(cloudsBg2, 150, {x:0}); } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } protected function nextScreenPlay(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:playGame}); } public function startScrollFence(_arg1):void{ var _local2:IUITarget = PBE.scene.sceneView; fence1.x = 0; fence1.y = ((GameData.SCREEN_HEIGHT - fence1.height) + 15); fence2.x = (fence1.x + fence2.width); fence2.y = fence1.y; GTweener.to(fence1, 20, {x:-(fence1.width)}, {onComplete:startScrollFence}); GTweener.to(fence2, 20, {x:0}); } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("game"); } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; } protected function goSubmit(_arg1):void{ var variables:URLVariables; var urlReq:URLRequest; var Name:String; var Score:Number; var request:URLRequest; var loader:URLLoader; var e = _arg1; try { if (!HB.GAMEPIRATES){ variables = new URLVariables((((("name=" + name_label.caption) + "&score=") + PlayerInventory.playerTotalScore) + "&pass=EExZQTTb")); urlReq = new URLRequest("http://www.halfbot.com/scoreUpload/idcip/new_score.php"); urlReq.method = URLRequestMethod.GET; urlReq.data = variables; loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, varsLoaded2); loader.load(urlReq); } else { if (HB.GAMEPIRATES){ Name = name_label.caption; Score = PlayerInventory.playerTotalScore; variables = new URLVariables(); variables.n = Name; variables.s = Score; variables.k = MD5.hash(("" + (Score + 1518))); variables.m = 1; trace(variables); request = new URLRequest("http://hiscore.gamepirate.com/idontcomeinpeace_submit.php"); request.method = "POST"; request.data = variables; loader = new URLLoader(); loader.load(request); loader.addEventListener(Event.COMPLETE, varsLoaded2); }; }; } catch(e:Error) { }; } protected function playCallbackButton():void{ GameData.paused = false; GameData.currentLevel = GameData.maxLevel; PlayerInventory.partsPickedUp = (PlayerInventory._totalPartsToPickedUp = (PlayerInventory.keyPickedUp = 0)); PlayerInventory.playerScore = 0; PlayerInventory.playerTotalScore = 0; nextScreenPlay(null); } protected function goToCurrentLevel():void{ var _local4:IEntity; ScreenManager.instance.pop(); var _local1:int; var _local2:int = LevelManager.instance.currentLevel; var _local3:Array = GroupManagerComponent.getGroupByName("group_dynamic_entities").entityList; _local1 = 0; while (_local1 < _local3.length) { _local4 = (_local3[_local1] as IEntity); _local4.destroy(); _local1++; }; LevelManager.instance.unloadCurrentLevel(); LevelManager.instance.loadLevel(GameData.currentLevel); PBE.processManager.start(); } protected function nextScreenSubmit(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); this.goSubmit(null); GTweener.to(this, 0.5, {alpha:0}, {onComplete:varsLoaded}); } public function startScrollHills(_arg1):void{ Hills1.x = 0; Hills1.y = (0 + 60); Hills2.x = (Hills1.x + Hills2.width); Hills2.y = Hills1.y; GTweener.to(Hills1, 120, {x:-(Hills1.width)}, {onComplete:startScrollHills}); GTweener.to(Hills2, 120, {x:0}); } protected function playGame(_arg1):void{ GameData.paused = false; goToCurrentLevel(); ScreenManager.instance.goto("game"); } protected function backCallback():void{ nextScreenBack(null); } protected function clear():void{ this.name_label.caption = ""; this.name_label.refresh(); letterCount = 0; } public function varsLoaded(_arg1):void{ ScreenManager.instance.goto("scores"); } protected function nextScreenBack(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:goBack}); } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2 = 50; var _local3 = 9; var _local4:Class = nameEntryMenu_ImageClearNormal; var _local5:Class = nameEntryMenu_ImageClearNormalOver; var _local6:Class = nameEntryMenu_ImageSubmitNormal; var _local7:Class = nameEntryMenu_ImageSubmitNormalOver; var _local8:Class = nameEntryMenu_ImageBackNormal; var _local9:Class = nameEntryMenu_ImageBackNormalOver; var _local10:Bitmap = new (_local6); var _local11:Bitmap = new (_local8); addChild(submit_button); submit_button.x = ((GameData.SCREEN_WIDTH - _local10.width) - 90); submit_button.y = ((GameData.SCREEN_HEIGHT - _local10.height) - 65); submit_button.image_normal = new (_local6); submit_button.image_over = new (_local7); submit_button.callback = submitCallback; submit_button.refresh(); addChild(back_button); back_button.x = 10; back_button.y = ((GameData.SCREEN_HEIGHT - back_button.height) - 10); back_button.image_normal = new (_local8); back_button.image_over = new (_local9); back_button.callback = backCallback; back_button.refresh(); addChild(clear_button); clear_button.x = 90; clear_button.y = submit_button.y; clear_button.image_normal = new (_local4); clear_button.image_over = new (_local5); clear_button.callback = clear; clear_button.refresh(); createLevelButtons(); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case Keyboard.SPACE: nextScreenPlay(null); }; } protected function goBack(_arg1):void{ ScreenManager.instance.goto("intro"); } public function createScrollingElements():void{ var _local1:Class = nameEntryMenu_ImageClouds; var _local2:Class = nameEntryMenu_ImageHills; var _local3:Class = nameEntryMenu_ImageFence; cloudsBg1 = new (_local1); cloudsBg2 = new (_local1); Hills1 = new (_local2); Hills2 = new (_local2); fence1 = new (_local3); fence2 = new (_local3); addChild(cloudsBg1); addChild(cloudsBg2); addChild(Hills1); addChild(Hills2); addChild(fence1); addChild(fence2); } public function createLevelButtons():void{ var _local11:HBButton; var _local12:int; var _local13:int; var _local1:Class = nameEntryMenu_ImageLevelButton; var _local2:Class = nameEntryMenu_ImageLevelButton_Roll; var _local3:Class = nameEntryMenu_ImageLockIcon; var _local4 = 92; var _local5:int = (55 + 40); var _local6 = 53; var _local7 = 49; var _local8 = 7; var _local9:int; var _local10:int; while (_local10 < alphabet.length) { _local11 = new HBButton(); addChild(_local11); _local12 = (_local4 + ((_local10 % _local8) * _local6)); _local13 = (_local4 + (((_local10 + 1) % _local8) * _local6)); _local11.x = ((Math.floor((_local10 / _local8)))!=3) ? _local12 : _local13; _local11.y = (_local5 + (Math.floor((_local10 / _local8)) * _local7)); _local11.image_normal = new (_local1); _local11.callback = letterCallback(alphabet[_local10]); _local11.parameter_id = (_local10 + 1); _local11.showTextLabel = true; _local11.image_over = new (_local2); _local11.image_label = new (_local3); _local11.label = ("" + alphabet[_local10]); _local11.textLabel.extents = new Rectangle(0, 0, _local11.image_normal.width, _local11.image_normal.height); _local11.textLabel.x = 2; _local11.textLabel.y = 4; _local11.textLabel.refresh(); _local11.refresh(); _local10++; }; } protected function submitCallback():void{ nextScreenSubmit(null); } } }//package com.halfbot.menus
Section 81
//nameEntryMenu_ImageBackNormal (com.halfbot.menus.nameEntryMenu_ImageBackNormal) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageBackNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 82
//nameEntryMenu_ImageBackNormalOver (com.halfbot.menus.nameEntryMenu_ImageBackNormalOver) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageBackNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 83
//nameEntryMenu_ImageClearNormal (com.halfbot.menus.nameEntryMenu_ImageClearNormal) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageClearNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 84
//nameEntryMenu_ImageClearNormalOver (com.halfbot.menus.nameEntryMenu_ImageClearNormalOver) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageClearNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 85
//nameEntryMenu_Imageclogo (com.halfbot.menus.nameEntryMenu_Imageclogo) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_Imageclogo extends BitmapAsset { } }//package com.halfbot.menus
Section 86
//nameEntryMenu_ImageClouds (com.halfbot.menus.nameEntryMenu_ImageClouds) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageClouds extends BitmapAsset { } }//package com.halfbot.menus
Section 87
//nameEntryMenu_ImageFence (com.halfbot.menus.nameEntryMenu_ImageFence) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageFence extends BitmapAsset { } }//package com.halfbot.menus
Section 88
//nameEntryMenu_ImageHills (com.halfbot.menus.nameEntryMenu_ImageHills) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageHills extends BitmapAsset { } }//package com.halfbot.menus
Section 89
//nameEntryMenu_ImageLevelButton (com.halfbot.menus.nameEntryMenu_ImageLevelButton) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageLevelButton extends BitmapAsset { } }//package com.halfbot.menus
Section 90
//nameEntryMenu_ImageLevelButton_Roll (com.halfbot.menus.nameEntryMenu_ImageLevelButton_Roll) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageLevelButton_Roll extends BitmapAsset { } }//package com.halfbot.menus
Section 91
//nameEntryMenu_ImageLockIcon (com.halfbot.menus.nameEntryMenu_ImageLockIcon) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageLockIcon extends BitmapAsset { } }//package com.halfbot.menus
Section 92
//nameEntryMenu_ImageSubmitNormal (com.halfbot.menus.nameEntryMenu_ImageSubmitNormal) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageSubmitNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 93
//nameEntryMenu_ImageSubmitNormalOver (com.halfbot.menus.nameEntryMenu_ImageSubmitNormalOver) package com.halfbot.menus { import mx.core.*; public class nameEntryMenu_ImageSubmitNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 94
//pauseMenu (com.halfbot.menus.pauseMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.gskinner.motion.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import flash.ui.*; public class pauseMenu extends ImageScreen { public var resume_button:HBButton; public var waiting:Boolean;// = true public var copyright_button:HBButton; public var skip_button:HBButton; public var main_button:HBButton; public function pauseMenu(){ main_button = new HBButton(); resume_button = new HBButton(); skip_button = new HBButton(); copyright_button = new HBButton(); super("../res/images/Pause/Pause_Frame.png"); createButtons(); } override public function onHide():void{ super.onHide(); } override public function onShow():void{ alpha = 0; waiting = true; thisScene(null); } protected function nextScreenCallback():void{ nextScreen(null); } public function pressHandler():void{ var url = "http://www.halfbot.com/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } protected function exitScreenCallback():void{ GameData.gameInstance.alpha = 0; ScreenManager.instance.goto("intro"); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; PBE.processManager.stop(); } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2:Class = pauseMenu_ImageResumeNormal; var _local3:Class = pauseMenu_ImageResumeNormalOver; var _local4:Class = pauseMenu_ImageMainNormal; var _local5:Class = pauseMenu_ImageMainNormalOver; var _local6:Bitmap = new (_local2); addChild(resume_button); resume_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local6.width / 2)); resume_button.y = (((GameData.SCREEN_HEIGHT / 2) - (_local6.height / 2)) - 20); resume_button.image_normal = new (_local2); resume_button.image_over = new (_local3); resume_button.callback = nextScreenCallback; resume_button.refresh(); addChild(main_button); main_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local6.width / 2)); main_button.y = (((GameData.SCREEN_HEIGHT / 2) - (_local6.height / 2)) + 20); main_button.image_normal = new (_local4); main_button.image_over = new (_local5); main_button.callback = exitScreenCallback; main_button.refresh(); var _local7:Class = pauseMenu_ImagecpyrightNormal; var _local8:Class = pauseMenu_ImagecpyrightNormalOver; var _local9:Bitmap = new (_local7); addChild(copyright_button); copyright_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local9.width / 2)); copyright_button.y = ((GameData.SCREEN_HEIGHT - _local9.height) - 10); copyright_button.image_normal = new (_local7); copyright_button.image_over = new (_local8); copyright_button.callback = pressHandler; copyright_button.refresh(); } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.pop(); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case Keyboard.SPACE: nextScreen(null); }; } protected function skipCallback():void{ var _local4:IEntity; ScreenManager.instance.pop(); var _local1:int; var _local2:int = LevelManager.instance.currentLevel; var _local3:Array = GroupManagerComponent.getGroupByName("group_dynamic_entities").entityList; trace((("Deleting " + _local3.length.toString()) + " entities")); _local1 = 0; while (_local1 < _local3.length) { _local4 = (_local3[_local1] as IEntity); _local4.destroy(); _local1++; }; LevelManager.instance.unloadCurrentLevel(); LevelManager.instance.loadLevel((_local2 + 1)); PBE.processManager.start(); } protected function nextScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNext}); } } }//package com.halfbot.menus
Section 95
//pauseMenu_ImagecpyrightNormal (com.halfbot.menus.pauseMenu_ImagecpyrightNormal) package com.halfbot.menus { import mx.core.*; public class pauseMenu_ImagecpyrightNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 96
//pauseMenu_ImagecpyrightNormalOver (com.halfbot.menus.pauseMenu_ImagecpyrightNormalOver) package com.halfbot.menus { import mx.core.*; public class pauseMenu_ImagecpyrightNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 97
//pauseMenu_ImageMainNormal (com.halfbot.menus.pauseMenu_ImageMainNormal) package com.halfbot.menus { import mx.core.*; public class pauseMenu_ImageMainNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 98
//pauseMenu_ImageMainNormalOver (com.halfbot.menus.pauseMenu_ImageMainNormalOver) package com.halfbot.menus { import mx.core.*; public class pauseMenu_ImageMainNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 99
//pauseMenu_ImageResumeNormal (com.halfbot.menus.pauseMenu_ImageResumeNormal) package com.halfbot.menus { import mx.core.*; public class pauseMenu_ImageResumeNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 100
//pauseMenu_ImageResumeNormalOver (com.halfbot.menus.pauseMenu_ImageResumeNormalOver) package com.halfbot.menus { import mx.core.*; public class pauseMenu_ImageResumeNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 101
//retryMenu (com.halfbot.menus.retryMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.gskinner.motion.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.text.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Triggers.*; public class retryMenu extends ImageScreen { public var submit_button:HBButton; public var local_totalScore:int;// = 0 public var waiting:Boolean;// = true public var restart_button:HBButton; public var copyright_button:HBButton; public var totalScore:HBLabel; public var main_button:HBButton; public var skip_button:HBButton; public function retryMenu(){ main_button = new HBButton(); restart_button = new HBButton(); skip_button = new HBButton(); submit_button = new HBButton(); totalScore = new HBLabel(); copyright_button = new HBButton(); super("../res/images/Level_End/Game-over_Frame.png"); createButtons(); } protected function mainScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishMain}); GTweener.to(GameData.gameInstance, 0.5, {alpha:0}); } public function pressHandler():void{ var url = "http://www.halfbot.com/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } protected function exitScreenCallback():void{ ScreenManager.instance.goto("intro"); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } protected function loadNextLevel(_arg1:int):void{ var _local5:IEntity; if (_arg1 >= GameData.maxLevel){ GameData.maxLevel = _arg1; }; GameData.currentLevel = _arg1; var _local2:int; var _local3:int = LevelManager.instance.currentLevel; var _local4:Array = GroupManagerComponent.getGroupByName("group_dynamic_entities").entityList; _local2 = 0; while (_local2 < _local4.length) { _local5 = (_local4[_local2] as IEntity); _local5.destroy(); _local2++; }; LevelManager.instance.unloadCurrentLevel(); LevelManager.instance.loadLevel(GameData.currentLevel); GameData.saveData(); } public function finishRetry(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; PlayerInventory.partsPickedUp = (PlayerInventory._totalPartsToPickedUp = (PlayerInventory.keyPickedUp = 0)); PlayerInventory.playerScore = 0; PlayerInventory.playerTotalScore = 0; loadNextLevel(GameData.currentLevel); ScreenManager.instance.goto("game"); } protected function nextlevelCallback():void{ ScreenManager.instance.pop(); PlayerInventory.playerScore = 0; PBE.processManager.start(); } protected function nameScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishName}); GTweener.to(GameData.gameInstance, 0.5, {alpha:0}); } protected function retryScreenCallback():void{ retryScreen(null); } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; local_totalScore = PlayerInventory.playerTotalScore; totalScore.caption = ("" + local_totalScore); totalScore.refresh(); } protected function mainCallback():void{ mainScreen(null); } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2:Class = retryMenu_ImageRestartNormal; var _local3:Class = retryMenu_ImageRestartNormalOver; var _local4:Class = retryMenu_ImageMainNormal; var _local5:Class = retryMenu_ImageMainNormalOver; var _local6:Class = retryMenu_ImageSubmitNormal; var _local7:Class = retryMenu_ImageSubmitNormalOver; var _local8:Bitmap = new (_local2); var _local9 = 70; addChild(restart_button); restart_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local8.width / 2)); restart_button.y = ((((GameData.SCREEN_HEIGHT / 2) - (_local8.height / 2)) - 60) + _local9); restart_button.image_normal = new (_local2); restart_button.image_over = new (_local3); restart_button.callback = retryScreenCallback; restart_button.refresh(); addChild(submit_button); submit_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local8.width / 2)); submit_button.y = ((((GameData.SCREEN_HEIGHT / 2) - (_local8.height / 2)) - 20) + _local9); submit_button.image_normal = new (_local6); submit_button.image_over = new (_local7); submit_button.callback = nameScreenCallback; submit_button.refresh(); addChild(main_button); main_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local8.width / 2)); main_button.y = ((((GameData.SCREEN_HEIGHT / 2) - (_local8.height / 2)) + 20) + _local9); main_button.image_normal = new (_local4); main_button.image_over = new (_local5); main_button.callback = mainCallback; main_button.refresh(); totalScore.x = ((GameData.SCREEN_WIDTH / 2) - (totalScore.width / 2)); totalScore.y = (main_button.y - 125); totalScore.fontAlign = TextFormatAlign.CENTER; totalScore.fontSize = 16; totalScore.fontColor = 3322879; totalScore.caption = ("" + local_totalScore); totalScore.refresh(); addChild(totalScore); var _local10:Class = retryMenu_ImagecpyrightNormal; var _local11:Class = retryMenu_ImagecpyrightNormalOver; var _local12:Bitmap = new (_local10); addChild(copyright_button); copyright_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local12.width / 2)); copyright_button.y = ((GameData.SCREEN_HEIGHT - _local12.height) - 10); copyright_button.image_normal = new (_local10); copyright_button.image_over = new (_local11); copyright_button.callback = pressHandler; copyright_button.refresh(); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ }; } public function finishMain(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.pop(); ScreenManager.instance.goto("intro"); } protected function retryScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishRetry}); GTweener.to(GameData.gameInstance, 0.5, {alpha:0}); } protected function nameScreenCallback():void{ nameScreen(null); } override public function onShow():void{ local_totalScore = (PlayerInventory.playerTotalScore - PlayerInventory.playerScore); alpha = 0; waiting = true; thisScene(null); GameData.currentLevelComplete = false; } public function finishName(_arg1):void{ ScreenManager.instance.goto("name"); } } }//package com.halfbot.menus
Section 102
//retryMenu_ImagecpyrightNormal (com.halfbot.menus.retryMenu_ImagecpyrightNormal) package com.halfbot.menus { import mx.core.*; public class retryMenu_ImagecpyrightNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 103
//retryMenu_ImagecpyrightNormalOver (com.halfbot.menus.retryMenu_ImagecpyrightNormalOver) package com.halfbot.menus { import mx.core.*; public class retryMenu_ImagecpyrightNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 104
//retryMenu_ImageMainNormal (com.halfbot.menus.retryMenu_ImageMainNormal) package com.halfbot.menus { import mx.core.*; public class retryMenu_ImageMainNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 105
//retryMenu_ImageMainNormalOver (com.halfbot.menus.retryMenu_ImageMainNormalOver) package com.halfbot.menus { import mx.core.*; public class retryMenu_ImageMainNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 106
//retryMenu_ImageRestartNormal (com.halfbot.menus.retryMenu_ImageRestartNormal) package com.halfbot.menus { import mx.core.*; public class retryMenu_ImageRestartNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 107
//retryMenu_ImageRestartNormalOver (com.halfbot.menus.retryMenu_ImageRestartNormalOver) package com.halfbot.menus { import mx.core.*; public class retryMenu_ImageRestartNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 108
//retryMenu_ImageSubmitNormal (com.halfbot.menus.retryMenu_ImageSubmitNormal) package com.halfbot.menus { import mx.core.*; public class retryMenu_ImageSubmitNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 109
//retryMenu_ImageSubmitNormalOver (com.halfbot.menus.retryMenu_ImageSubmitNormalOver) package com.halfbot.menus { import mx.core.*; public class retryMenu_ImageSubmitNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 110
//scoresMenu (com.halfbot.menus.scoresMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.gskinner.motion.*; import com.hanclinto.platformer.*; import flash.system.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import flash.ui.*; import com.halfbot.system.*; public class scoresMenu extends ImageScreen { public var startingPosition:int;// = 0 public var scores_button:HBButton; public var loader:URLLoader; public var childrenArray:Array; public var play_button:HBButton; public var fence2:Bitmap; public var fence1:Bitmap; public var copyright_button:HBButton; public var Hills1:Bitmap; public var Hills2:Bitmap; public var waiting:Boolean;// = true public var cloudsBg1:Bitmap; public var cloudsBg2:Bitmap; public var up_button:HBButton; public var down_button:HBButton; public var help_button:HBButton; public var credits_button:HBButton; public function scoresMenu(){ play_button = new HBButton(); help_button = new HBButton(); scores_button = new HBButton(); credits_button = new HBButton(); copyright_button = new HBButton(); up_button = new HBButton(); down_button = new HBButton(); loader = new URLLoader(); childrenArray = new Array(); super("../res/images/bgs/PlainsBG01_far.png"); createScrollingElements(); if (HB.GAMEPIRATES){ Security.allowDomain("*"); Security.loadPolicyFile("http://hiscore.gamepirate.com/crossdomain.xml"); }; createTitleAndCopyright(); createButtons(); startScrollHills(null); startScrollClouds(null); startScrollFence(null); var _local1:* = new HB.SponsorsLogo2(); var _local2:* = new HBButton(); addChild(_local2); _local2.x = ((550 - _local1.width) / 2); _local2.y = 10; _local2.image_normal = new HB.SponsorsLogo2(); _local2.image_over = new HB.SponsorsLogo2(); _local2.callback = goToMyURL_Sponsor; _local2.buttonMode = true; _local2.refresh(); } protected function downCallback():void{ var urlReq:URLRequest; var loadmode:int; var request:URLRequest; if (startingPosition < 90){ this.startingPosition = (this.startingPosition + 10); down_button.alpha = 1; if (startingPosition <= 0){ up_button.alpha = 0; } else { up_button.alpha = 1; }; if (startingPosition >= 90){ down_button.alpha = 0; } else { down_button.alpha = 1; }; } else { down_button.alpha = 0; }; try { if (!HB.GAMEPIRATES){ urlReq = new URLRequest("http://www.halfbot.com/scoreUpload/idcip/get_score2.php?flash=1"); urlReq.method = URLRequestMethod.GET; loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, varsLoaded); loader.load(urlReq); } else { if (HB.GAMEPIRATES){ loadmode = 1; request = new URLRequest("http://hiscore.gamepirate.com/idontcomeinpeace_get.php"); request.method = URLRequestMethod.POST; request.data = ("m=" + loadmode); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, varsLoaded); loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); loader.load(request); }; }; } catch(e:Error) { }; } public function createTitleAndCopyright():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2:Class = scoresMenu_Imageclogo; var _local3:Bitmap = new (_local2); _local3.x = ((GameData.SCREEN_WIDTH / 2) - (_local3.width / 2)); _local3.y = 0; addChild(_local3); } public function startScrollClouds(_arg1):void{ cloudsBg1.x = 0; cloudsBg1.y = 0; cloudsBg2.x = (cloudsBg1.x + cloudsBg2.width); cloudsBg2.y = cloudsBg1.y; GTweener.to(cloudsBg1, 150, {x:-(cloudsBg1.width)}, {onComplete:startScrollClouds}); GTweener.to(cloudsBg2, 150, {x:0}); } public function pressHandler():void{ var url = "http://www.halfbot.com/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } protected function upCallback():void{ var urlReq:URLRequest; var loadmode:int; var request:URLRequest; if (startingPosition >= 10){ this.startingPosition = (this.startingPosition - 10); up_button.alpha = 1; if (startingPosition <= 0){ up_button.alpha = 0; } else { up_button.alpha = 1; }; if (startingPosition >= 90){ down_button.alpha = 0; } else { down_button.alpha = 1; }; } else { up_button.alpha = 0; }; try { if (!HB.GAMEPIRATES){ urlReq = new URLRequest("http://www.halfbot.com/scoreUpload/idcip/get_score2.php?flash=1"); urlReq.method = URLRequestMethod.GET; loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, varsLoaded); loader.load(urlReq); } else { if (HB.GAMEPIRATES){ loadmode = 1; request = new URLRequest("http://hiscore.gamepirate.com/idontcomeinpeace_get.php"); request.method = URLRequestMethod.POST; request.data = ("m=" + loadmode); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, varsLoaded); loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); loader.load(request); }; }; } catch(e:Error) { }; } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } private function goToMyURL_Sponsor():void{ if (HB.SPONSORED){ navigateToURL(new URLRequest(HB.SPONSOR_URL)); }; } public function startScrollFence(_arg1):void{ var _local2:IUITarget = PBE.scene.sceneView; fence1.x = 0; fence1.y = ((GameData.SCREEN_HEIGHT - fence1.height) + 15); fence2.x = (fence1.x + fence2.width); fence2.y = fence1.y; GTweener.to(fence1, 20, {x:-(fence1.width)}, {onComplete:startScrollFence}); GTweener.to(fence2, 20, {x:0}); } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; } protected function nextScreenCallback():void{ nextScreen(null); } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("levelSelect"); } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; } public function startScrollHills(_arg1):void{ Hills1.x = 0; Hills1.y = (0 + 60); Hills2.x = (Hills1.x + Hills2.width); Hills2.y = Hills1.y; GTweener.to(Hills1, 120, {x:-(Hills1.width)}, {onComplete:startScrollHills}); GTweener.to(Hills2, 120, {x:0}); } protected function nextScreenBack(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:goBack}); } protected function onIOError(_arg1:IOErrorEvent):void{ trace("Error loading URL."); } protected function backCallback():void{ nextScreenBack(null); } public function varsLoaded(_arg1:Event):void{ var _local7:HBLabel; var _local8:HBLabel; var _local9:HBLabel; var _local2:int; while (childrenArray.length > 0) { removeChild(childrenArray.pop()); }; var _local3 = 159; var _local4 = 110; var _local5 = 50; var _local6 = 19; _local2 = startingPosition; while (_local2 < (startingPosition + 10)) { _local7 = new HBLabel(); _local8 = new HBLabel(); _local9 = new HBLabel(); _local7.fontName = "Hud Font"; _local8.fontName = "Hud Font"; _local9.fontName = "Hud Font"; if ((_local2 + 1) < 10){ _local7.caption = ("00" + (_local2 + 1)); } else { if ((_local2 + 1) <= 99){ _local7.caption = ("0" + (_local2 + 1)); } else { if ((_local2 + 1) >= 100){ _local7.caption = ("" + (_local2 + 1)); }; }; }; if (((loader.data) && (loader.data[("name" + (_local2 + 1))]))){ _local8.caption = loader.data[("name" + (_local2 + 1))]; _local9.caption = loader.data[("score" + (_local2 + 1))]; } else { _local8.caption = "Empty"; _local9.caption = ("" + 0); }; _local7.fontSize = 16; _local8.fontSize = 16; _local9.fontSize = 16; _local7.fontColor = 14862502; _local8.fontColor = 14862502; _local9.fontColor = 14862502; _local7.x = _local3; _local7.y = _local4; _local8.x = (_local3 + _local5); _local8.y = _local4; _local9.x = (_local8.x + (_local5 * 2)); _local9.y = _local4; _local7.refresh(); _local8.refresh(); _local9.refresh(); addChild(_local7); addChild(_local8); addChild(_local9); childrenArray.push(_local7); childrenArray.push(_local8); childrenArray.push(_local9); _local4 = (_local4 + _local6); _local2++; }; } protected function nextScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNext}); } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2 = 50; var _local3 = 9; var _local4:Class = scoresMenu_ImageBackNormal; var _local5:Class = scoresMenu_ImageBackNormalOver; var _local6:Class = scoresMenu_ImageArrowUp; var _local7:Class = scoresMenu_ImageArrowUp_Roll; var _local8:Class = scoresMenu_ImageArrowDown; var _local9:Class = scoresMenu_ImageArrowDown_Roll; addChild(up_button); up_button.image_normal = new (_local6); up_button.image_over = new (_local7); up_button.callback = upCallback; up_button.x = ((GameData.SCREEN_WIDTH / 2) - (up_button.image_over.width / 2)); up_button.y = 100; up_button.refresh(); addChild(down_button); down_button.image_normal = new (_local8); down_button.image_over = new (_local9); down_button.callback = downCallback; down_button.x = ((GameData.SCREEN_WIDTH / 2) - (down_button.image_normal.width / 2)); down_button.y = (up_button.y + 210); down_button.refresh(); addChild(help_button); help_button.x = (((GameData.SCREEN_WIDTH / 2) - (help_button.width / 2)) + 6); help_button.y = (GameData.SCREEN_HEIGHT - (help_button.height * 2)); help_button.image_normal = new (_local4); help_button.image_over = new (_local5); help_button.callback = backCallback; help_button.refresh(); var _local10:Class = scoresMenu_ImagecpyrightNormal; var _local11:Class = scoresMenu_ImagecpyrightNormalOver; var _local12:Bitmap = new (_local10); addChild(copyright_button); copyright_button.x = ((GameData.SCREEN_WIDTH / 2) - (_local12.width / 2)); copyright_button.y = ((GameData.SCREEN_HEIGHT - _local12.height) - 10); copyright_button.image_normal = new (_local10); copyright_button.image_over = new (_local11); copyright_button.callback = pressHandler; copyright_button.refresh(); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case Keyboard.SPACE: nextScreen(null); }; } public function createScrollingElements():void{ var _local1:Class = scoresMenu_ImageClouds; var _local2:Class = scoresMenu_ImageHills; var _local3:Class = scoresMenu_ImageFence; cloudsBg1 = new (_local1); cloudsBg2 = new (_local1); Hills1 = new (_local2); Hills2 = new (_local2); fence1 = new (_local3); fence2 = new (_local3); addChild(cloudsBg1); addChild(cloudsBg2); addChild(Hills1); addChild(Hills2); addChild(fence1); addChild(fence2); } protected function goBack(_arg1):void{ ScreenManager.instance.goto("intro"); } override public function onShow():void{ startingPosition = 0; upCallback(); alpha = 0; waiting = true; thisScene(null); } } }//package com.halfbot.menus
Section 111
//scoresMenu_ImageArrowDown (com.halfbot.menus.scoresMenu_ImageArrowDown) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImageArrowDown extends BitmapAsset { } }//package com.halfbot.menus
Section 112
//scoresMenu_ImageArrowDown_Roll (com.halfbot.menus.scoresMenu_ImageArrowDown_Roll) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImageArrowDown_Roll extends BitmapAsset { } }//package com.halfbot.menus
Section 113
//scoresMenu_ImageArrowUp (com.halfbot.menus.scoresMenu_ImageArrowUp) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImageArrowUp extends BitmapAsset { } }//package com.halfbot.menus
Section 114
//scoresMenu_ImageArrowUp_Roll (com.halfbot.menus.scoresMenu_ImageArrowUp_Roll) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImageArrowUp_Roll extends BitmapAsset { } }//package com.halfbot.menus
Section 115
//scoresMenu_ImageBackNormal (com.halfbot.menus.scoresMenu_ImageBackNormal) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImageBackNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 116
//scoresMenu_ImageBackNormalOver (com.halfbot.menus.scoresMenu_ImageBackNormalOver) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImageBackNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 117
//scoresMenu_Imageclogo (com.halfbot.menus.scoresMenu_Imageclogo) package com.halfbot.menus { import mx.core.*; public class scoresMenu_Imageclogo extends BitmapAsset { } }//package com.halfbot.menus
Section 118
//scoresMenu_ImageClouds (com.halfbot.menus.scoresMenu_ImageClouds) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImageClouds extends BitmapAsset { } }//package com.halfbot.menus
Section 119
//scoresMenu_ImagecpyrightNormal (com.halfbot.menus.scoresMenu_ImagecpyrightNormal) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImagecpyrightNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 120
//scoresMenu_ImagecpyrightNormalOver (com.halfbot.menus.scoresMenu_ImagecpyrightNormalOver) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImagecpyrightNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 121
//scoresMenu_ImageFence (com.halfbot.menus.scoresMenu_ImageFence) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImageFence extends BitmapAsset { } }//package com.halfbot.menus
Section 122
//scoresMenu_ImageHills (com.halfbot.menus.scoresMenu_ImageHills) package com.halfbot.menus { import mx.core.*; public class scoresMenu_ImageHills extends BitmapAsset { } }//package com.halfbot.menus
Section 123
//sponsor (com.halfbot.menus.sponsor) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import flash.display.*; import flash.net.*; import com.pblabs.engine.*; public class sponsor extends ImageScreen { public var calledNextState:Boolean;// = false var Swf:Class; protected var m_swf:MovieClip;// = null public var mc:MovieClip;// = null public var l:Loader; public function sponsor(){ Swf = sponsor_Swf; super("../res/images/Title_Screen/Title_Screen.png"); m_swf = new Swf(); m_swf.x = 0; m_swf.y = 0; addChild(m_swf); m_swf.buttonMode = true; m_swf.addEventListener(Event.COMPLETE, onComplete); m_swf.addEventListener(MouseEvent.CLICK, goToMyURL); } private function goToMyURL(_arg1:MouseEvent=null):void{ if (!calledNextState){ navigateToURL(new URLRequest("http://www.gamepirate.com")); }; } override public function onTick(_arg1:Number):void{ if (((((mc) && ((mc.currentFrame >= 134)))) && (!(calledNextState)))){ calledNextState = true; removeChild(m_swf); PBE.pushStageQuality(StageQuality.LOW); m_swf.removeEventListener(MouseEvent.CLICK, goToMyURL); ScreenManager.instance.goto("splash"); }; } private function onComplete(_arg1:Event):void{ l = (m_swf.getChildAt(0) as Loader); mc = (l.content as MovieClip); mc.gotoAndPlay(0); } } }//package com.halfbot.menus
Section 124
//sponsor_Swf (com.halfbot.menus.sponsor_Swf) package com.halfbot.menus { import flash.utils.*; import mx.core.*; public class sponsor_Swf extends MovieClipLoaderAsset { public var dataClass:Class; private static var bytes:ByteArray = null; public function sponsor_Swf(){ dataClass = sponsor_Swf_dataClass; super(); initialWidth = (11000 / 20); initialHeight = (8000 / 20); } override public function get movieClipData():ByteArray{ if (bytes == null){ bytes = ByteArray(new dataClass()); }; return (bytes); } } }//package com.halfbot.menus
Section 125
//sponsor_Swf_dataClass (com.halfbot.menus.sponsor_Swf_dataClass) package com.halfbot.menus { import mx.core.*; public class sponsor_Swf_dataClass extends ByteArrayAsset { } }//package com.halfbot.menus
Section 126
//storyEndingMenu (com.halfbot.menus.storyEndingMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.gskinner.motion.*; import com.hanclinto.platformer.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import flash.ui.*; public class storyEndingMenu extends ImageScreen { public var scores_button:HBButton; public var play_button:HBButton; public var fence2:Bitmap; public var fence1:Bitmap; public var Hills2:Bitmap; public var waiting:Boolean;// = true public var cloudsBg1:Bitmap; public var cloudsBg2:Bitmap; public var Hills1:Bitmap; public var ImageclogoImage:Bitmap; public var help_button:HBButton; public var credits_button:HBButton; public function storyEndingMenu(){ play_button = new HBButton(); help_button = new HBButton(); scores_button = new HBButton(); credits_button = new HBButton(); super(null); createScrollingElements(); createTitleAndCopyright(); createButtons(); } override public function onShow():void{ alpha = 0; waiting = true; thisScene(null); if (ImageclogoImage){ this.removeChild(ImageclogoImage); }; var _local1:Class = storyEndingMenu_Imageclogo; ImageclogoImage = new (_local1); ImageclogoImage.x = ((GameData.SCREEN_WIDTH / 2) - (ImageclogoImage.width / 2)); ImageclogoImage.y = 0; addChild(ImageclogoImage); } public function createTitleAndCopyright():void{ var _local1:IUITarget = PBE.scene.sceneView; } public function startScrollClouds(_arg1):void{ cloudsBg1.x = 0; cloudsBg1.y = 0; cloudsBg2.x = (cloudsBg1.x + cloudsBg2.width); cloudsBg2.y = cloudsBg1.y; GTweener.to(cloudsBg1, 150, {x:-(cloudsBg1.width)}, {onComplete:startScrollClouds}); GTweener.to(cloudsBg2, 150, {x:0}); } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } public function fadeFirstScreen():void{ GTweener.to(this, 0.5, {alpha:0}, {onComplete:endFirstScreen}); } public function startScrollFence(_arg1):void{ var _local2:IUITarget = PBE.scene.sceneView; fence1.x = 0; fence1.y = ((GameData.SCREEN_HEIGHT - fence1.height) + 15); fence2.x = (fence1.x + fence2.width); fence2.y = fence1.y; GTweener.to(fence1, 20, {x:-(fence1.width)}, {onComplete:startScrollFence}); GTweener.to(fence2, 20, {x:0}); } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; } protected function nextScreenCallback():void{ nextScreen(null); } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("levelSelect"); } public function endSecondScreenFadin(_arg1):void{ removeChild(ImageclogoImage); var _local2:Class = storyEndingMenu_Imageclogo3; ImageclogoImage = new (_local2); ImageclogoImage.x = ((GameData.SCREEN_WIDTH / 2) - (ImageclogoImage.width / 2)); ImageclogoImage.y = 0; addChild(ImageclogoImage); GTweener.to(this, 0.5, {alpha:1}, {onComplete:fadeThirdScreen}); trace("end Fade second screen"); } public function fadeSecondScreen(_arg1):void{ PBE.processManager.schedule(2000, this, endSecondScreen); } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; PBE.processManager.schedule(2000, this, fadeFirstScreen); } public function fadeThirdScreen(_arg1):void{ PBE.processManager.schedule(4000, this, endThirdScreen); } protected function nextScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNext}); } public function startScrollHills(_arg1):void{ Hills1.x = 0; Hills1.y = (0 + 60); Hills2.x = (Hills1.x + Hills2.width); Hills2.y = Hills1.y; GTweener.to(Hills1, 120, {x:-(Hills1.width)}, {onComplete:startScrollHills}); GTweener.to(Hills2, 120, {x:0}); } protected function nextScreenBack(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:goBack}); } protected function backCallback():void{ nextScreenBack(null); } public function endThirdScreen():void{ GTweener.to(this, 0.5, {alpha:0}, {onComplete:endThirdScreenDone}); } public function endFirstScreen(_arg1):void{ removeChild(ImageclogoImage); ScreenManager.instance.goto("name"); } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2 = 50; var _local3 = 9; var _local4:Class = storyEndingMenu_ImageBackNormal; var _local5:Class = storyEndingMenu_ImageBackNormalOver; help_button.x = (((GameData.SCREEN_WIDTH / 2) - (help_button.width / 2)) + 6); help_button.y = (GameData.SCREEN_HEIGHT - (help_button.height * 3)); help_button.image_normal = new (_local4); help_button.image_over = new (_local5); help_button.callback = backCallback; help_button.refresh(); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case Keyboard.SPACE: nextScreen(null); }; } protected function goBack(_arg1):void{ ScreenManager.instance.goto("name"); } public function createScrollingElements():void{ var _local1:Class = storyEndingMenu_ImageClouds; var _local2:Class = storyEndingMenu_ImageHills; var _local3:Class = storyEndingMenu_ImageFence; } public function endThirdScreenDone(_arg1):void{ ScreenManager.instance.goto("game"); } public function endSecondScreen():void{ GTweener.to(this, 0.5, {alpha:0}, {onComplete:endSecondScreenFadin}); } } }//package com.halfbot.menus
Section 127
//storyEndingMenu_ImageBackNormal (com.halfbot.menus.storyEndingMenu_ImageBackNormal) package com.halfbot.menus { import mx.core.*; public class storyEndingMenu_ImageBackNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 128
//storyEndingMenu_ImageBackNormalOver (com.halfbot.menus.storyEndingMenu_ImageBackNormalOver) package com.halfbot.menus { import mx.core.*; public class storyEndingMenu_ImageBackNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 129
//storyEndingMenu_Imageclogo (com.halfbot.menus.storyEndingMenu_Imageclogo) package com.halfbot.menus { import mx.core.*; public class storyEndingMenu_Imageclogo extends BitmapAsset { } }//package com.halfbot.menus
Section 130
//storyEndingMenu_Imageclogo3 (com.halfbot.menus.storyEndingMenu_Imageclogo3) package com.halfbot.menus { import mx.core.*; public class storyEndingMenu_Imageclogo3 extends BitmapAsset { } }//package com.halfbot.menus
Section 131
//storyEndingMenu_ImageClouds (com.halfbot.menus.storyEndingMenu_ImageClouds) package com.halfbot.menus { import mx.core.*; public class storyEndingMenu_ImageClouds extends BitmapAsset { } }//package com.halfbot.menus
Section 132
//storyEndingMenu_ImageFence (com.halfbot.menus.storyEndingMenu_ImageFence) package com.halfbot.menus { import mx.core.*; public class storyEndingMenu_ImageFence extends BitmapAsset { } }//package com.halfbot.menus
Section 133
//storyEndingMenu_ImageHills (com.halfbot.menus.storyEndingMenu_ImageHills) package com.halfbot.menus { import mx.core.*; public class storyEndingMenu_ImageHills extends BitmapAsset { } }//package com.halfbot.menus
Section 134
//storyIntroMenu (com.halfbot.menus.storyIntroMenu) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.gskinner.motion.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; public class storyIntroMenu extends ImageScreen { public var Skipped:Boolean;// = false public var scores_button:HBButton; public var play_button:HBButton; public var fence2:Bitmap; public var Hills1:Bitmap; public var Hills2:Bitmap; public var fence1:Bitmap; public var cloudsBg1:Bitmap; public var cloudsBg2:Bitmap; public var waiting:Boolean;// = true public var ImageclogoImage:Bitmap; public var skip_button:HBButton; public var help_button:HBButton; public var credits_button:HBButton; public function storyIntroMenu(){ play_button = new HBButton(); help_button = new HBButton(); scores_button = new HBButton(); credits_button = new HBButton(); skip_button = new HBButton(); super(null); createScrollingElements(); createTitleAndCopyright(); createButtons(); } override public function onShow():void{ Skipped = false; alpha = 0; waiting = true; thisScene(null); if (ImageclogoImage){ this.removeChild(ImageclogoImage); }; var _local1:Class = storyIntroMenu_Imageclogo; ImageclogoImage = new (_local1); ImageclogoImage.x = ((GameData.SCREEN_WIDTH / 2) - (ImageclogoImage.width / 2)); ImageclogoImage.y = 0; addChild(ImageclogoImage); this.setChildIndex(this.skip_button, this.getChildIndex(ImageclogoImage)); } public function createTitleAndCopyright():void{ var _local1:IUITarget = PBE.scene.sceneView; } public function startScrollClouds(_arg1):void{ cloudsBg1.x = 0; cloudsBg1.y = 0; cloudsBg2.x = (cloudsBg1.x + cloudsBg2.width); cloudsBg2.y = cloudsBg1.y; GTweener.to(cloudsBg1, 150, {x:-(cloudsBg1.width)}, {onComplete:startScrollClouds}); GTweener.to(cloudsBg2, 150, {x:0}); } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } public function fadeSecondScreen(_arg1):void{ if (!Skipped){ PBE.processManager.schedule(2000, this, endSecondScreen); }; } public function keyUpHandler(_arg1:KeyboardEvent):void{ } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; PBE.processManager.schedule(2000, this, fadeFirstScreen); } public function startScrollFence(_arg1):void{ var _local2:IUITarget = PBE.scene.sceneView; fence1.x = 0; fence1.y = ((GameData.SCREEN_HEIGHT - fence1.height) + 15); fence2.x = (fence1.x + fence2.width); fence2.y = fence1.y; GTweener.to(fence1, 20, {x:-(fence1.width)}, {onComplete:startScrollFence}); GTweener.to(fence2, 20, {x:0}); } protected function nextScreenCallback():void{ nextScreen(null); } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("levelSelect"); } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; } protected function goToCurrentLevel():void{ var _local4:IEntity; ScreenManager.instance.pop(); var _local1:int; var _local2:int = LevelManager.instance.currentLevel; var _local3:Array = GroupManagerComponent.getGroupByName("group_dynamic_entities").entityList; _local1 = 0; while (_local1 < _local3.length) { _local4 = (_local3[_local1] as IEntity); _local4.destroy(); _local1++; }; LevelManager.instance.unloadCurrentLevel(); LevelManager.instance.loadLevel(GameData.currentLevel); PBE.processManager.start(); } public function endSecondScreenFadin(_arg1):void{ removeChild(ImageclogoImage); var _local2:Class = storyIntroMenu_Imageclogo3; ImageclogoImage = new (_local2); ImageclogoImage.x = ((GameData.SCREEN_WIDTH / 2) - (ImageclogoImage.width / 2)); ImageclogoImage.y = 0; addChild(ImageclogoImage); this.setChildIndex(this.skip_button, this.getChildIndex(ImageclogoImage)); GTweener.to(this, 0.5, {alpha:1}, {onComplete:fadeThirdScreen}); trace("end Fade second screen"); } public function fadeFirstScreen():void{ if (!Skipped){ GTweener.to(this, 0.5, {alpha:0}, {onComplete:endFirstScreen}); }; } public function fadeThirdScreen(_arg1):void{ if (!Skipped){ PBE.processManager.schedule(2000, this, endThirdScreen); }; } public function startScrollHills(_arg1):void{ Hills1.x = 0; Hills1.y = (0 + 60); Hills2.x = (Hills1.x + Hills2.width); Hills2.y = Hills1.y; GTweener.to(Hills1, 120, {x:-(Hills1.width)}, {onComplete:startScrollHills}); GTweener.to(Hills2, 120, {x:0}); } protected function nextScreenBack(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:goBack}); } protected function backCallback():void{ endThirdScreenDone(null); Skipped = true; } protected function nextScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNext}); } public function endThirdScreen():void{ if (!Skipped){ GTweener.to(this, 0.5, {alpha:0}, {onComplete:endThirdScreenDone}); }; } public function endFirstScreen(_arg1):void{ removeChild(ImageclogoImage); var _local2:Class = storyIntroMenu_Imageclogo2; ImageclogoImage = new (_local2); ImageclogoImage.x = ((GameData.SCREEN_WIDTH / 2) - (ImageclogoImage.width / 2)); ImageclogoImage.y = 0; addChild(ImageclogoImage); this.setChildIndex(this.skip_button, this.getChildIndex(ImageclogoImage)); GTweener.to(this, 0.5, {alpha:1}, {onComplete:fadeSecondScreen}); } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2 = 50; var _local3 = 9; var _local4:Class = storyIntroMenu_ImageSkipNormal; var _local5:Class = storyIntroMenu_ImageSkipNormalOver; addChild(skip_button); skip_button.x = ((GameData.SCREEN_WIDTH - skip_button.width) - 10); skip_button.y = (GameData.SCREEN_HEIGHT - (skip_button.height * 1.5)); skip_button.image_normal = new (_local4); skip_button.image_over = new (_local5); skip_button.callback = backCallback; skip_button.refresh(); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ }; } protected function goBack(_arg1):void{ ScreenManager.instance.goto("intro"); } public function createScrollingElements():void{ var _local1:Class = storyIntroMenu_ImageClouds; var _local2:Class = storyIntroMenu_ImageHills; var _local3:Class = storyIntroMenu_ImageFence; } public function endThirdScreenDone(_arg1):void{ if (!Skipped){ goToCurrentLevel(); ScreenManager.instance.goto("game"); }; } public function endSecondScreen():void{ GTweener.to(this, 0.5, {alpha:0}, {onComplete:endSecondScreenFadin}); } } }//package com.halfbot.menus
Section 135
//storyIntroMenu_Imageclogo (com.halfbot.menus.storyIntroMenu_Imageclogo) package com.halfbot.menus { import mx.core.*; public class storyIntroMenu_Imageclogo extends BitmapAsset { } }//package com.halfbot.menus
Section 136
//storyIntroMenu_Imageclogo2 (com.halfbot.menus.storyIntroMenu_Imageclogo2) package com.halfbot.menus { import mx.core.*; public class storyIntroMenu_Imageclogo2 extends BitmapAsset { } }//package com.halfbot.menus
Section 137
//storyIntroMenu_Imageclogo3 (com.halfbot.menus.storyIntroMenu_Imageclogo3) package com.halfbot.menus { import mx.core.*; public class storyIntroMenu_Imageclogo3 extends BitmapAsset { } }//package com.halfbot.menus
Section 138
//storyIntroMenu_ImageClouds (com.halfbot.menus.storyIntroMenu_ImageClouds) package com.halfbot.menus { import mx.core.*; public class storyIntroMenu_ImageClouds extends BitmapAsset { } }//package com.halfbot.menus
Section 139
//storyIntroMenu_ImageFence (com.halfbot.menus.storyIntroMenu_ImageFence) package com.halfbot.menus { import mx.core.*; public class storyIntroMenu_ImageFence extends BitmapAsset { } }//package com.halfbot.menus
Section 140
//storyIntroMenu_ImageHills (com.halfbot.menus.storyIntroMenu_ImageHills) package com.halfbot.menus { import mx.core.*; public class storyIntroMenu_ImageHills extends BitmapAsset { } }//package com.halfbot.menus
Section 141
//storyIntroMenu_ImageSkipNormal (com.halfbot.menus.storyIntroMenu_ImageSkipNormal) package com.halfbot.menus { import mx.core.*; public class storyIntroMenu_ImageSkipNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 142
//storyIntroMenu_ImageSkipNormalOver (com.halfbot.menus.storyIntroMenu_ImageSkipNormalOver) package com.halfbot.menus { import mx.core.*; public class storyIntroMenu_ImageSkipNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 143
//titleScreen (com.halfbot.menus.titleScreen) package com.halfbot.menus { import flash.events.*; import com.pblabs.screens.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import flash.geom.*; import com.gskinner.motion.*; import com.hanclinto.platformer.*; import flash.media.*; import flash.text.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import flash.ui.*; import com.halfbot.system.*; public class titleScreen extends ImageScreen { public var cloudsBg1:Bitmap; public var cloudsBg2:Bitmap; public var scores_button:HBButton; public var waiting:Boolean;// = true public var Hills2:Bitmap; public var play_button:HBButton; public var fence2:Bitmap; public var start:HBLabel; public var fence1:Bitmap; public var help_button:HBButton; public var credits_button:HBButton; public var music_not_started:Boolean;// = true public var Hills1:Bitmap; public function titleScreen(){ play_button = new HBButton(); help_button = new HBButton(); scores_button = new HBButton(); credits_button = new HBButton(); start = new HBLabel(); super("../res/images/Title_Screen/Title_Screen.png"); createButtons(); createTitleAndCopyright(); PBE.mainStage.addEventListener(MouseEvent.CLICK, nextScreen); } protected function fadeStart(_arg1):void{ if (start.alpha == 0){ GTweener.to(start, 1, {alpha:1}, {onComplete:fadeStart}); } else { GTweener.to(start, 1, {alpha:0}, {onComplete:fadeStart}); }; } public function createScrollingElements():void{ } public function createTitleAndCopyright():void{ var _local1:IUITarget = PBE.scene.sceneView; start.extents = new Rectangle(0, 0, 200, start.extents.height); start.caption = "Click To Start"; start.fontColor = 16233507; start.fontAlign = TextFormatAlign.CENTER; start.fontBold = true; start.fontSize = 24; start.refresh(); start.x = ((GameData.SCREEN_WIDTH / 2) - (start.width / 2)); start.y = (GameData.SCREEN_HEIGHT - 50); addChild(start); GTweener.to(start, 1, {alpha:0}, {onComplete:fadeStart}); var _local2:* = new HB.SponsorsLogo2(); var _local3:* = new HBButton(); _local3.x = (((550 - _local2.width) / 2) + 160); _local3.y = 5; _local3.image_normal = new HB.SponsorsLogo2(); _local3.image_over = new HB.SponsorsLogo2(); _local3.callback = goToMyURL_Sponsor; _local3.buttonMode = true; _local3.refresh(); } protected function nextScreenBack(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:goBack}); } protected function goBack(_arg1):void{ ScreenManager.instance.goto("intro"); } protected function backCallback():void{ nextScreenBack(null); } protected function thisScene(_arg1):void{ if (!waiting){ return; }; waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:1}, {onComplete:startThis}); } public function keyUpHandler(_arg1:KeyboardEvent):void{ } private function goToMyURL_Sponsor():void{ if (HB.SPONSORED){ navigateToURL(new URLRequest(HB.SPONSOR_URL)); }; } override public function onTick(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; } protected function nextScreenCallback():void{ nextScreen(null); } public function createButtons():void{ var _local1:IUITarget = PBE.scene.sceneView; var _local2 = 50; var _local3 = 9; var _local4:Class = titleScreen_ImageBackNormal; var _local5:Class = titleScreen_ImageBackNormalOver; } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.goto("intro"); } public function keyDownHandler(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case Keyboard.SPACE: nextScreen(null); }; } protected function nextScreen(_arg1):void{ if (!waiting){ return; }; PBE.mainStage.removeEventListener(MouseEvent.CLICK, nextScreen); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = false; PBE.processManager.start(); GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNext}); } public function startThis(_arg1):void{ PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); waiting = true; } override public function onShow():void{ alpha = 0; waiting = true; thisScene(null); GameData.initializeSaveData(); GameData.play(); if (((!(GameData.music_on)) && (GameData.musicController))){ GameData.stop(); }; } } }//package com.halfbot.menus
Section 144
//titleScreen_ImageBackNormal (com.halfbot.menus.titleScreen_ImageBackNormal) package com.halfbot.menus { import mx.core.*; public class titleScreen_ImageBackNormal extends BitmapAsset { } }//package com.halfbot.menus
Section 145
//titleScreen_ImageBackNormalOver (com.halfbot.menus.titleScreen_ImageBackNormalOver) package com.halfbot.menus { import mx.core.*; public class titleScreen_ImageBackNormalOver extends BitmapAsset { } }//package com.halfbot.menus
Section 146
//HBBaseMovementComponent (com.halfbot.platformer.Component.Movers.HBBaseMovementComponent) package com.halfbot.platformer.Component.Movers { import com.pblabs.engine.entity.*; public class HBBaseMovementComponent extends EntityComponent { public var left:Number;// = 0 public var lastjump:int;// = 0 public var down_alt:Number;// = 0 public var lastUp:int;// = 0 public var actionHeld:Number;// = 0 public var up:Number;// = 0 public var down:Number;// = 0 public var right:Number;// = 0 public var jump:Number;// = 0 public var lastdown_alt:int;// = 0 public var lastAction:int;// = 0 public var action:Number;// = 0 public var lastdown:int;// = 0 public function onUpdate():void{ } } }//package com.halfbot.platformer.Component.Movers
Section 147
//HBCharacterBaseAiComponent (com.halfbot.platformer.Component.Movers.HBCharacterBaseAiComponent) package com.halfbot.platformer.Component.Movers { import com.pblabs.rendering2D.*; import com.halfbot.platformer.Entity.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; public class HBCharacterBaseAiComponent extends HBBaseMovementComponent { public var detectedPlayer:Boolean;// = false public var mySpatial:HBPlatformEntity; public var Ttl:Number;// = 1 public var state:int;// = 0 public var lastSwitchTime:int;// = 0 public var maxTimeInState:int;// = 3 public var player:HBPlatformCharacterEntity; public var minTimeInState:int;// = 1 public var AttackDistanceX:int;// = 30 public var AttackDistanceY:int;// = 5 public static const STATE_FLY:int = 2; public static const TOO_CLOSE:int = 30; public static const STATE_IDLE:int = 1; public static const DETECT_DISTANCE:int = 400; public static const STATE_WALK:int = 2; public static const STATE_SHOOT_SQUAT:int = 4; public static const STATE_SPAWN_FLY:int = 7; public static const STATE_SLEEP:int = 0; public static const STATE_PULSE:int = 8; public static const STATE_SHOOT_UP:int = 5; public static const STATE_SHOOT_DOWN:int = 6; public static const STATE_SHOOT:int = 3; public static const STATE_SPAWN_WALK:int = 7; public function updateState():void{ if (GameData.movement_paused){ return; }; switch (state){ case STATE_SLEEP: detectedPlayer = false; fixDirection(); break; case STATE_IDLE: detectedPlayer = true; updateIdleState(); fixDirection(); break; case STATE_SPAWN_WALK: case STATE_WALK: updateWalkState(); break; case STATE_SHOOT_UP: case STATE_SHOOT_DOWN: case STATE_SHOOT_SQUAT: case STATE_SHOOT: if (canSwitchState()){ setState(STATE_IDLE); }; break; }; } public function canSwitchState():Boolean{ return (((Ttl * 1000) < (PBE.processManager.virtualTime - lastSwitchTime))); } override public function onUpdate():void{ if (!player){ player = (PBE.nameManager.lookupComponentByName("AlienHero", "Spatial") as HBPlatformCharacterEntity); }; if (!mySpatial){ mySpatial = (owner.lookupComponentByName("Spatial") as HBPlatformCharacterEntity); }; updateState(); } public function updateIdleState():void{ var _local1:int; if (((!(player)) || (!(mySpatial)))){ return; }; if ((((((Math.abs((player.position.x - mySpatial.position.x)) <= DETECT_DISTANCE)) && ((Math.abs((player.position.x - mySpatial.position.x)) >= TOO_CLOSE)))) && (canSwitchState()))){ if ((((((player.position.y < mySpatial.position.y)) && ((Math.abs((player.position.y - mySpatial.position.y)) > 50)))) && ((Math.abs((player.position.x - mySpatial.position.x)) < 50)))){ setState(STATE_SHOOT_UP); } else { if ((((((player.position.y > mySpatial.position.y)) && ((Math.abs((player.position.y - mySpatial.position.y)) > 50)))) && ((Math.abs((player.position.x - mySpatial.position.x)) < 50)))){ setState(STATE_SHOOT_DOWN); } else { if (Math.abs((player.position.y - mySpatial.position.y)) <= 10){ _local1 = PBUtil.pickWithBias(0, 5); if (_local1 == 0){ setState(STATE_SHOOT); } else { if (_local1 == 1){ setState(STATE_SHOOT_SQUAT); } else { if (_local1 == 2){ setState(STATE_IDLE); } else { setState(STATE_WALK); }; }; }; }; }; }; } else { if (canSwitchState()){ _local1 = PBUtil.pickWithBias(0, 2); if (_local1 == 0){ setState(STATE_IDLE); } else { if (_local1 == 1){ setState(STATE_WALK); }; }; }; }; } public function setState(_arg1:int):void{ if (state == _arg1){ return; }; lastSwitchTime = PBE.processManager.virtualTime; state = _arg1; action = 0; right = 0; down = 0; up = 0; left = 0; down_alt = 0; switch (state){ case STATE_SLEEP: detectedPlayer = false; break; case STATE_IDLE: break; case STATE_SPAWN_WALK: case STATE_WALK: break; case STATE_SHOOT: action = 1; if (mySpatial){ mySpatial.velocity.x = 0; mySpatial.velocity.y = 0; }; break; case STATE_SHOOT_SQUAT: down = 1; action = 1; break; case STATE_SHOOT_UP: up = 1; action = 1; break; case STATE_SHOOT_DOWN: down_alt = 1; action = 1; break; }; } public function fixDirection():void{ var _local1:SpriteSheetRenderer; _local1 = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); if (((!(player)) || (!(mySpatial)))){ return; }; if (Math.abs((player.position.x - mySpatial.position.x)) <= DETECT_DISTANCE){ if (!this.detectedPlayer){ setState(STATE_IDLE); }; if (((((player.position.x - mySpatial.position.x) < -1)) && (!((mySpatial.faceing == -1))))){ left = 1; mySpatial.faceing = -1; _local1.scale.x = -1; } else { if (((((player.position.x - mySpatial.position.x) >= 0)) && (!((mySpatial.faceing == 1))))){ right = 1; mySpatial.faceing = 1; _local1.scale.x = 1; } else { right = 0; left = 0; }; }; }; } public function updateWalkState():void{ var _local1:int; if (!player){ return; }; if ((((((((Math.abs((player.position.x - mySpatial.position.x)) <= DETECT_DISTANCE)) && ((Math.abs((player.position.x - mySpatial.position.x)) >= TOO_CLOSE)))) && ((left == 0)))) && ((right == 0)))){ _local1 = PBUtil.pickWithBias(0, 2); if (state == STATE_SPAWN_WALK){ _local1 = 0; }; if (_local1 == 0){ left = 1; right = 0; } else { if (_local1 == 1){ right = 1; left = 0; }; }; } else { if ((((Math.abs((player.position.x - mySpatial.position.x)) > DETECT_DISTANCE)) && ((Math.abs((player.position.x - mySpatial.position.x)) < 0)))){ right = 1; left = 0; } else { if ((((Math.abs((player.position.x - mySpatial.position.x)) > DETECT_DISTANCE)) && ((Math.abs((player.position.x - mySpatial.position.x)) >= 0)))){ right = 0; left = 1; }; }; }; if (mySpatial.onGround){ if (mySpatial.onCliff != 0){ if (mySpatial.onCliff == 1){ left = 1; right = 0; } else { if (mySpatial.onCliff == -1){ left = 0; right = 1; }; }; }; if (mySpatial.onWall != 0){ if (mySpatial.onWall == 1){ left = 1; right = 0; } else { if (mySpatial.onWall == -1){ left = 0; right = 1; }; }; }; }; if (canSwitchState()){ setState(STATE_IDLE); }; } } }//package com.halfbot.platformer.Component.Movers
Section 148
//HBCharacterKeyboardComponent (com.halfbot.platformer.Component.Movers.HBCharacterKeyboardComponent) package com.halfbot.platformer.Component.Movers { import com.pblabs.engine.core.*; import com.pblabs.engine.*; public class HBCharacterKeyboardComponent extends HBBaseMovementComponent { protected var heldTime:int;// = -1 override public function onUpdate():void{ lastUp = up; lastAction = action; lastjump = jump; lastdown = down; left = (((PBE.isKeyDown(InputKey.LEFT)) || (PBE.isKeyDown(InputKey.A)))) ? 1 : 0; right = (((PBE.isKeyDown(InputKey.RIGHT)) || (PBE.isKeyDown(InputKey.D)))) ? 1 : 0; up = (((PBE.isKeyDown(InputKey.UP)) || (PBE.isKeyDown(InputKey.W)))) ? 1 : 0; down = (((PBE.isKeyDown(InputKey.DOWN)) || (PBE.isKeyDown(InputKey.S)))) ? 1 : 0; action = (((PBE.isKeyDown(InputKey.X)) || (PBE.isKeyDown(InputKey.COMMA)))) ? 1 : 0; jump = (((PBE.isKeyDown(InputKey.C)) || (PBE.isKeyDown(InputKey.PERIOD)))) ? 1 : 0; if ((((lastAction == 1)) && ((action == 1)))){ if (heldTime == -1){ heldTime = PBE.processManager.virtualTime; }; if ((PBE.processManager.virtualTime - heldTime) > 500){ if (actionHeld == 0){ }; actionHeld = 1; }; } else { if (action == 0){ if (actionHeld == 1){ }; actionHeld = 0; heldTime = -1; }; }; } override protected function onAdd():void{ } } }//package com.halfbot.platformer.Component.Movers
Section 149
//HBFlyingMovementComponent (com.halfbot.platformer.Component.Movers.HBFlyingMovementComponent) package com.halfbot.platformer.Component.Movers { import com.pblabs.rendering2D.*; import com.halfbot.platformer.Entity.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; public class HBFlyingMovementComponent extends HBCharacterBaseAiComponent { public var onlyShootBelow:Boolean;// = false private var lastDirection:int;// = -1 public var spr:SpriteSheetRenderer; public var canShoot:Boolean;// = false override protected function onAdd():void{ super.onAdd(); state = STATE_FLY; } public function updateFlyState():void{ var _local1:int; if (((!(player)) || (!(mySpatial)))){ return; }; if ((((((((left == 0)) && ((right == 0)))) && ((up == 0)))) && ((down == 0)))){ if ((((lastDirection >= 0)) && (canSwitchState()))){ if (lastDirection == 0){ left = 1; } else { if (lastDirection == 1){ right = 1; } else { if (lastDirection == 2){ up = 1; } else { if (lastDirection == 3){ down = 1; }; }; }; }; lastDirection = -1; }; }; if ((((((Math.abs((player.position.x - mySpatial.position.x)) <= AttackDistanceX)) && ((Math.abs((player.position.y - mySpatial.position.y)) <= AttackDistanceY)))) && (((((onlyShootBelow) && (((player.position.y - mySpatial.position.y) >= 0)))) || (!(onlyShootBelow)))))){ if ((((mySpatial.faceing == -1)) && (((player.position.x - mySpatial.position.x) >= 0)))){ mySpatial.faceing = 1; if (((canSwitchState()) && (canShoot))){ if (mySpatial.explodeWithParticles){ setState(STATE_PULSE); } else { setState(STATE_SHOOT); }; }; } else { if ((((mySpatial.faceing == 1)) && (((player.position.x - mySpatial.position.x) < 0)))){ mySpatial.faceing = -1; if (((canSwitchState()) && (canShoot))){ if (mySpatial.explodeWithParticles){ setState(STATE_PULSE); } else { setState(STATE_SHOOT); }; }; } else { if (((canSwitchState()) && (canShoot))){ if (mySpatial.explodeWithParticles){ setState(STATE_PULSE); } else { setState(STATE_SHOOT); }; }; }; }; }; if (((!((mySpatial.onWall == 0))) && (canSwitchState()))){ if (mySpatial.onWall == 1){ left = 1; right = 0; } else { if (mySpatial.onWall == -1){ left = 0; right = 1; }; }; }; } override public function updateState():void{ if (GameData.movement_paused){ return; }; switch (state){ case STATE_PULSE: break; case STATE_SLEEP: break; case STATE_IDLE: updateFlyState(); break; case STATE_SPAWN_FLY: case STATE_FLY: updateFlyState(); break; case STATE_SHOOT: if (canSwitchState()){ setState(STATE_FLY); }; break; }; } override public function canSwitchState():Boolean{ return (((((Ttl * 1000) < (PBE.processManager.virtualTime - lastSwitchTime))) && (!((state == STATE_PULSE))))); } override public function onUpdate():void{ player = (PBE.nameManager.lookupComponentByName("AlienHero", "Spatial") as HBPlatformCharacterEntity); mySpatial = (owner.lookupComponentByName("Spatial") as HBFlyingCharacterEntity); if (!spr){ spr = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); }; updateState(); } override public function setState(_arg1:int):void{ if (state == _arg1){ return; }; lastSwitchTime = PBE.processManager.virtualTime; state = _arg1; if (left == 1){ lastDirection = 0; } else { if (right == 1){ lastDirection = 1; } else { if (up == 1){ lastDirection = 2; } else { if (down == 1){ lastDirection = 3; }; }; }; }; action = 0; right = 0; down = 0; up = 0; left = 0; down_alt = 0; switch (state){ case STATE_PULSE: mySpatial.stateMachine.stateMachine.setCurrentState("Pulse"); break; case STATE_IDLE: break; case STATE_SPAWN_FLY: case STATE_FLY: break; case STATE_SHOOT: action = 1; break; }; } override public function updateIdleState():void{ var _local1:int; if (((!(player)) || (!(mySpatial)))){ return; }; if ((((Math.abs((player.position.x - mySpatial.position.x)) <= DETECT_DISTANCE)) && ((Math.abs((player.position.x - mySpatial.position.x)) >= TOO_CLOSE)))){ if (Math.abs((player.position.x - mySpatial.position.x)) <= 40){ _local1 = PBUtil.pickWithBias(0, 2); if (_local1 == 0){ setState(STATE_FLY); } else { setState(STATE_FLY); }; }; } else { if (state != STATE_FLY){ _local1 = PBUtil.pickWithBias(0, 2); if (_local1 == 0){ setState(STATE_FLY); } else { if (_local1 == 1){ setState(STATE_FLY); }; }; }; }; } } }//package com.halfbot.platformer.Component.Movers
Section 150
//HBPatroleMovementComponent (com.halfbot.platformer.Component.Movers.HBPatroleMovementComponent) package com.halfbot.platformer.Component.Movers { import flash.geom.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; public class HBPatroleMovementComponent extends HBCharacterBaseAiComponent { public var repeatLastLocationCount:int;// = 0 public var prevPositiont:Point; public var lastDirectionChange:int;// = 0 public function HBPatroleMovementComponent(){ prevPositiont = new Point(0, 0); super(); } override protected function onAdd():void{ super.onAdd(); state = STATE_WALK; Ttl = 0.3; } override public function updateState():void{ if (GameData.movement_paused){ return; }; switch (state){ case STATE_SLEEP: break; case STATE_IDLE: detectedPlayer = true; updateIdleState(); fixDirection(); break; case STATE_SPAWN_WALK: case STATE_WALK: updateWalkState(); break; case STATE_SHOOT: if (canSwitchState()){ setState(STATE_WALK); }; break; }; } override public function canSwitchState():Boolean{ return (((Ttl * 1000) < (PBE.processManager.virtualTime - lastSwitchTime))); } override public function setState(_arg1:int):void{ if (state == _arg1){ return; }; lastSwitchTime = PBE.processManager.virtualTime; state = _arg1; action = 0; right = 0; down = 0; up = 0; left = 0; down_alt = 0; switch (state){ case STATE_IDLE: break; case STATE_SPAWN_WALK: case STATE_WALK: break; case STATE_SHOOT: action = 1; break; }; } override public function updateIdleState():void{ var _local1:int; if (((!(player)) || (!(mySpatial)))){ return; }; if ((((((Math.abs((player.position.x - mySpatial.position.x)) <= DETECT_DISTANCE)) && ((Math.abs((player.position.x - mySpatial.position.x)) >= TOO_CLOSE)))) && (canSwitchState()))){ if (Math.abs((player.position.x - mySpatial.position.x)) <= 40){ _local1 = PBUtil.pickWithBias(0, 2); if (_local1 == 0){ setState(STATE_IDLE); } else { setState(STATE_WALK); }; }; } else { if (((canSwitchState()) && (!((state == STATE_WALK))))){ _local1 = PBUtil.pickWithBias(0, 2); if (_local1 == 0){ setState(STATE_IDLE); } else { if (_local1 == 1){ setState(STATE_WALK); }; }; }; }; } override public function updateWalkState():void{ var _local1:int; if (!player){ return; }; if ((((left == 0)) && ((right == 0)))){ left = 1; }; if ((((Math.abs((player.position.x - mySpatial.position.x)) <= AttackDistanceX)) && ((Math.abs((player.position.y - mySpatial.position.y)) <= 5)))){ if ((((mySpatial.faceing == -1)) && (((player.position.x - mySpatial.position.x) >= 0)))){ mySpatial.faceing = 1; setState(STATE_SHOOT); } else { if ((((mySpatial.faceing == 1)) && (((player.position.x - mySpatial.position.x) < 0)))){ mySpatial.faceing = -1; setState(STATE_SHOOT); } else { setState(STATE_SHOOT); }; }; } else { if ((((((Math.abs((player.position.x - mySpatial.position.x)) <= 100)) && ((Math.abs((player.position.y - mySpatial.position.y)) <= 5)))) && (((PBE.processManager.virtualTime - lastDirectionChange) >= 1000)))){ if ((((left == 1)) && (((player.position.x - mySpatial.position.x) >= 0)))){ right = 1; left = 0; mySpatial.faceing = right; } else { if ((((right == 1)) && (((player.position.x - mySpatial.position.x) < 0)))){ right = 0; left = 1; mySpatial.faceing = left; }; }; lastDirectionChange = PBE.processManager.virtualTime; }; }; if (mySpatial.onGround){ if (mySpatial.onCliff != 0){ if (mySpatial.onCliff == 1){ left = 1; right = 0; } else { if (mySpatial.onCliff == -1){ left = 0; right = 1; }; }; lastDirectionChange = PBE.processManager.virtualTime; } else { if (mySpatial.mapEdgeX != 0){ if (mySpatial.mapEdgeX == 1){ left = 1; right = 0; } else { if (mySpatial.mapEdgeX == -1){ left = 0; right = 1; }; }; lastDirectionChange = PBE.processManager.virtualTime; } else { if (((!((mySpatial.onWall == 0))) && (((PBE.processManager.virtualTime - this.lastDirectionChange) >= 1000)))){ if (mySpatial.onWall == 1){ left = 1; right = 0; } else { if (mySpatial.onWall == -1){ left = 0; right = 1; }; }; lastDirectionChange = PBE.processManager.virtualTime; } else { if (((!((mySpatial.onCollidableObject == 0))) && (((PBE.processManager.virtualTime - this.lastDirectionChange) >= 1000)))){ if (mySpatial.onCollidableObject == 1){ left = 1; right = 0; } else { if (mySpatial.onCollidableObject == -1){ left = 0; right = 1; }; }; lastDirectionChange = PBE.processManager.virtualTime; }; }; }; }; if (((((((this.mySpatial) && ((prevPositiont.x == mySpatial.position.x)))) && ((prevPositiont.y == mySpatial.position.y)))) && (((PBE.processManager.virtualTime - this.lastDirectionChange) >= 1000)))){ repeatLastLocationCount++; if (repeatLastLocationCount > 5){ repeatLastLocationCount = 0; if (right == 1){ right = 0; left = 1; } else { left = 0; right = 1; }; lastDirectionChange = PBE.processManager.virtualTime; }; } else { repeatLastLocationCount = 0; prevPositiont.x = mySpatial.position.x; prevPositiont.y = mySpatial.position.y; }; }; } } }//package com.halfbot.platformer.Component.Movers
Section 151
//HBSpawnAwareTilemap (com.halfbot.platformer.Component.Tilemaps.HBSpawnAwareTilemap) package com.halfbot.platformer.Component.Tilemaps { import com.pblabs.engine.core.*; import com.hanclinto.platformer.*; public class HBSpawnAwareTilemap extends TileMap { public var spawning:ObjectType; override protected function onAdd():void{ super.onAdd(); } } }//package com.halfbot.platformer.Component.Tilemaps
Section 152
//PlayerInventory (com.halfbot.platformer.Component.Triggers.PlayerInventory) package com.halfbot.platformer.Component.Triggers { import flash.events.*; import com.pblabs.engine.entity.*; import flash.geom.*; import com.hanclinto.platformer.*; import com.pblabs.components.basic.*; import com.halfbot.platformer.Entity.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; public class PlayerInventory extends BaseTriggerObject { public var breakable:Boolean;// = false public var player:HBPlatformCharacterEntity; public var needkey:Boolean;// = false public var typeId:int;// = 0 public var mySpatial:HBPlatformItemPickup; public static const ID_KEY:int = 2; public static const ID_STAR:int = 1; public static const ID_PART:int = 0; public static var playerScore:int = 0; public static var extraunused:int = 0; public static var playerTotalScore:int = 0; public static var _totalPartsToPickedUp:int = 0; public static var keyPickedUp:int = 0; public static var partsPickedUp:int = 0; public static var health:int = 100; public function PlayerInventory(){ super(); onEnter = function ():void{ var _local1:HealthComponent; var _local2:HBPlatformEntity; if ((((needkey == false)) || (((needkey) && ((keyPickedUp > 0)))))){ if (needkey){ keyPickedUp--; }; mySpatial = (owner.lookupComponentByName("Spatial") as HBPlatformItemPickup); if (!player){ player = (PBE.nameManager.lookupComponentByName("AlienHero", "Spatial") as HBPlatformCharacterEntity); }; _local1 = (player.owner.lookupComponentByName("Health") as HealthComponent); if (!mySpatial){ _local2 = (owner.lookupComponentByName("Spatial") as HBPlatformEntity); if (((_local2) && (!((_local2.stateMachine.stateMachine.getState("Explode") == null))))){ _local2.gravity.y = 0; _local2.solid = false; _local2.Explode(); _local2.stateMachine.stateMachine.setCurrentState("Explode"); owner.eventDispatcher.dispatchEvent(new Event("PickupStar")); if (GameData.sfx_on){ owner.eventDispatcher.dispatchEvent(new Event("PickupStar_Sound")); }; } else { return; }; } else { if (mySpatial.hasBeenPickedup){ return; }; owner.eventDispatcher.dispatchEvent(new Event("PickupStar")); if (GameData.sfx_on){ owner.eventDispatcher.dispatchEvent(new Event("PickupStar_Sound")); }; mySpatial.stateMachine.stateMachine.setCurrentState("Pickup"); PBE.processManager.schedule(1000, this, owner.destroy); }; if (typeId == ID_PART){ partsPickedUp++; if ((((partsPickedUp >= totalPartsToPickedUp)) && (!(GameData.currentLevelComplete)))){ GameData.currentLevelComplete = true; }; }; if (mySpatial){ _local1.damage(-(mySpatial.healthValue)); PBE.processManager.callLater(delaySpawnScore); }; if (typeId == ID_KEY){ keyPickedUp++; if (GameData.sfx_on){ owner.eventDispatcher.dispatchEvent(new Event("PickupStar_Sound")); }; }; }; }; } public function set totalPartsToPickedUp(_arg1:int):void{ _totalPartsToPickedUp = _arg1; } public function get totalPartsToPickedUp():int{ return (_totalPartsToPickedUp); } public function delaySpawnScore():void{ var _local1:IEntity = PBE.makeEntity("floatingText", {@Spatial.pointValue:mySpatial.pointValue, @Render.alpha:0, @Spatial.position:new Point(mySpatial.position.x, mySpatial.position.y)}); } override public function get bounds():Rectangle{ if (owner == null){ return (new Rectangle()); }; var _local1:Point = owner.getProperty(positionReference); var _local2:Point = owner.getProperty(sizeReference); if (((!(_local1)) || (!(_local2)))){ return (new Rectangle()); }; return (new Rectangle((_local1.x - ((_local2.x + 20) / 2)), (_local1.y - (_local2.y / 2)), (_local2.x + 20), _local2.y)); } } }//package com.halfbot.platformer.Component.Triggers
Section 153
//HBCharacterWeaponComponent (com.halfbot.platformer.Component.Weapons.HBCharacterWeaponComponent) package com.halfbot.platformer.Component.Weapons { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import flash.geom.*; import com.halfbot.platformer.Entity.*; import com.pblabs.engine.*; public class HBCharacterWeaponComponent extends EntityComponent { public var shootUpPointOffset:Point; public var duckPointOffset:Point; public var fireAlt:Boolean;// = false public var standingPointOffset:Point; public var ammoCount:Number;// = 0 public var shootDownPointOffset:Point; public var spawnEntity2:String; public var duckingPointOffset:Point; public var spawnEntity:String; public function HBCharacterWeaponComponent(){ duckPointOffset = new Point(0, 0); duckingPointOffset = new Point(0, 0); shootDownPointOffset = new Point(0, 0); shootUpPointOffset = new Point(0, 0); standingPointOffset = new Point(0, 0); super(); } public function onShoot(_arg1:Event):void{ PBE.processManager.callLater(ShootDelaySpawn); } public function onShootDown(_arg1:Event):void{ PBE.processManager.callLater(ShootDownDelaySpawn); } public function ShootDelaySpawn():void{ var _local1:IEntity; var _local4:int; var _local5:int; var _local2:HBPlatformEntity = (owner.lookupComponentByName("Spatial") as HBPlatformEntity); var _local3:String = spawnEntity; if (((fireAlt) && (spawnEntity2))){ _local3 = spawnEntity2; }; if (_local2.faceing == 1){ _local4 = (standingPointOffset.x * _local2.faceing); _local1 = PBE.makeEntity(_local3, {@Render.alpha:0, @Spatial.position:new Point((_local2.position.x + _local4), (_local2.position.y + standingPointOffset.y)), @Spatial.faceing:_local2.faceing, @Mover.right:1}); } else { _local5 = (standingPointOffset.x * _local2.faceing); _local1 = PBE.makeEntity(_local3, {@Render.alpha:0, @Spatial.position:new Point((_local2.position.x + _local5), (_local2.position.y + standingPointOffset.y)), @Spatial.faceing:_local2.faceing, @Mover.left:1}); }; fireAlt = false; } public function onShootDuck(_arg1:Event):void{ PBE.processManager.callLater(onShootDuckDelaySpawn); } override protected function onAdd():void{ owner.eventDispatcher.addEventListener("Shoot", onShoot); owner.eventDispatcher.addEventListener("ShootUp", onShootUp); owner.eventDispatcher.addEventListener("ShootDown", onShootDown); owner.eventDispatcher.addEventListener("ShootDuck", onShootDuck); } public function onShootUp(_arg1:Event):void{ PBE.processManager.callLater(ShootUpDelaySpawn); } public function ShootDownDelaySpawn():void{ var _local1:IEntity; var _local2:HBPlatformEntity = (owner.lookupComponentByName("Spatial") as HBPlatformEntity); var _local3:String = spawnEntity; if (((fireAlt) && (spawnEntity2))){ _local3 = spawnEntity2; }; var _local4:int = (shootDownPointOffset.x * _local2.faceing); _local1 = PBE.makeEntity(_local3, {@Render.alpha:0, @Spatial.position:new Point((_local2.position.x + _local4), (_local2.position.y + shootDownPointOffset.y)), @Spatial.faceing:_local2.faceing, @Mover.down:1}); fireAlt = false; var _local5:BitmapRenderer = (_local1.lookupComponentByName("Render") as BitmapRenderer); if (_local5){ _local5.alpha = 0; }; } public function ShootUpDelaySpawn():void{ var _local1:IEntity; var _local2:HBPlatformEntity = (owner.lookupComponentByName("Spatial") as HBPlatformEntity); var _local3:String = spawnEntity; if (((fireAlt) && (spawnEntity2))){ _local3 = spawnEntity2; }; var _local4:int = (shootUpPointOffset.x * _local2.faceing); _local1 = PBE.makeEntity(_local3, {@Render.alpha:0, @Spatial.position:new Point((_local2.position.x + _local4), (_local2.position.y + shootUpPointOffset.y)), @Spatial.faceing:_local2.faceing, @Mover.up:1}); fireAlt = false; } public function onShootDuckDelaySpawn():void{ var _local1:IEntity; var _local4:int; var _local5:int; var _local2:HBPlatformEntity = (owner.lookupComponentByName("Spatial") as HBPlatformEntity); var _local3:String = spawnEntity; if (((fireAlt) && (spawnEntity2))){ _local3 = spawnEntity2; }; if (_local2.faceing == 1){ _local4 = (duckPointOffset.x * _local2.faceing); _local1 = PBE.makeEntity(_local3, {@Render.alpha:0, @Spatial.position:new Point((_local2.position.x + _local4), (_local2.position.y + duckPointOffset.y)), @Spatial.faceing:_local2.faceing, @Mover.right:1}); } else { _local5 = (duckPointOffset.x * _local2.faceing); _local1 = PBE.makeEntity(_local3, {@Render.alpha:0, @Spatial.position:new Point((_local2.position.x + _local5), (_local2.position.y + duckPointOffset.y)), @Spatial.faceing:_local2.faceing, @Mover.left:1}); }; fireAlt = false; } } }//package com.halfbot.platformer.Component.Weapons
Section 154
//HBCameraTrackEntity (com.halfbot.platformer.Entity.HBCameraTrackEntity) package com.halfbot.platformer.Entity { import com.pblabs.rendering2D.*; import com.pblabs.engine.*; public class HBCameraTrackEntity extends HBPlatformEntity { public var tracking:HBPlatformEntity; public static const CAMERA_ACCEL:Number = 2; override protected function onAdd():void{ super.onAdd(); (PBE.scene as BitmapDataScene).trackObject = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); } override public function setupStatesAndTransitions():void{ super.setupStatesAndTransitions(); stateMachine.stateMachine.setCurrentState("Idle"); } public function isRemovedFromWorld(_arg1:HBPlatformEntity):void{ } override public function onTick(_arg1:Number):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; super.onTick(_arg1); var _local2:HBPlatformEntity = (PBE.nameManager.lookupComponentByName("AlienHero", "Spatial") as HBPlatformEntity); if (_local2){ _local3 = (position.x - _local2.position.x); _local4 = (position.y - _local2.position.y); if ((_local3 * _local3) > (CAMERA_ACCEL << 2)){ _local5 = (((_local3 < 0)) ? -(_local3) : _local3 / (CAMERA_ACCEL << 2)); _local6 = ((_local3)<0) ? _local5 : -(_local5); position.x = (position.x + _local6); }; if ((_local4 * _local4) > (CAMERA_ACCEL << 1)){ _local7 = (((_local4 < 0)) ? -(_local4) : _local4 / (CAMERA_ACCEL << 1)); _local8 = ((_local4)<0) ? _local7 : -(_local7); position.y = (position.y + _local8); }; }; } } }//package com.halfbot.platformer.Entity
Section 155
//HBFlyerHint (com.halfbot.platformer.Entity.HBFlyerHint) package com.halfbot.platformer.Entity { import com.hanclinto.platformer.*; public class HBFlyerHint extends EnemyFlyerHint { override protected function onAdd():void{ HBFlyingCharacterEntity.hints.push(this); } override protected function onRemove():void{ var _local1:int = EnemyFlyerController.hints.indexOf(this); HBFlyingCharacterEntity.hints.splice(_local1, 1); } } }//package com.halfbot.platformer.Entity
Section 156
//HBFlyingCharacterEntity (com.halfbot.platformer.Entity.HBFlyingCharacterEntity) package com.halfbot.platformer.Entity { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.utils.*; import com.pblabs.components.basic.*; import com.pblabs.components.stateMachine.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Triggers.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.States.*; import com.halfbot.platformer.Component.*; public class HBFlyingCharacterEntity extends HBPlatformEntity { public var spriteIndexIdle:int;// = 15 public var blinkDelay:int;// = 0 public var airJumpRechargeOnWall:Boolean;// = false public var invincibleTime:int;// = 3 public var shouldProcessTriggers:Boolean;// = true public var spriteIndexJumpDown:int;// = 14 public var pixelsPerStep:Number;// = 15 public var airJumpFactor:Number;// = 1 protected var isDying:Boolean;// = false public var airControl:Number;// = 0.5 public var wallJumpFactor:Number;// = 0.8 public var airJumpsAvailable:int;// = 0 public var velocityBeforeHit:Point; public var jumpSpeed:Number;// = 0 public var wallJumpEnable:Boolean;// = true public var spriteIndexHurt:int;// = 4 public var spriteIndexRunEnd:int;// = 5 public var defferCount:int;// = 0 public var hurtDuration:int;// = 1000 public var spriteIndexRunStart:int;// = 0 public var airJumpHorizSlowdown:Number;// = 0.5 public var blinkDelayCount:int;// = 0 protected var levelCompleteCalled:Boolean;// = false public var wallSlideSlowdown:Number;// = 0.9 public var booleanHit:Boolean;// = false public var spriteIndexWallSlideUp:int;// = 0 public var attackTimeDelay:Number;// = 1 public var skipCount:int;// = 3 public var spriteIndexWallSlideDown:int;// = 0 public var invincibleOnHit:Boolean;// = false public var spriteIndexJumpUp:int;// = 13 public var locationBeforeHit:Point; public var currentTime:int;// = 0 public var traked:String; protected var lastAttackTime:int;// = -1 public var wallJumpHorizPushoff:Number;// = 5 protected var hitTriggers:Array; public var airJumpCapacity:int;// = 1 protected var hurtTime:int;// = -1 public var preduckY:Number; public static var hints:Array = []; public function HBFlyingCharacterEntity(){ hitTriggers = new Array(); super(); } public function delayLevelComplete():void{ if (PlayerInventory.partsPickedUp >= PlayerInventory._totalPartsToPickedUp){ ScreenManager.instance.push("levelComplete"); levelCompleteCalled = true; }; } override public function onTick(_arg1:Number):void{ var _local2:int; super.onTick(_arg1); if (shouldProcessTriggers){ if (defferCount <= skipCount){ defferCount++; } else { defferCount = 0; processTriggers(); }; }; if (!booleanHit){ locationBeforeHit = position; velocityBeforeHit = velocity; } else { position = locationBeforeHit; booleanHit = false; position = position_of_collision; velocity.x = 0; velocity.y = 0; PBE.processManager.schedule(1000, this, restureLocation); }; } override public function setupStatesAndTransitions():void{ stateMachine.stateMachine.addState("Move", new HBPlatformMoveState()); stateMachine.stateMachine.addState("MoveUp", new HBPlatformMoveUpState()); stateMachine.stateMachine.addState("MoveDown", new HBPlatformMoveDownState()); stateMachine.stateMachine.addState("Death", new DeathState()); stateMachine.stateMachine.addState("Shoot", new HBPlatformShootState()); stateMachine.stateMachine.addState("Idle", new HBPlatformIdleState()); stateMachine.stateMachine.addState("Hit", new HBPlatformHitFlyingState()); stateMachine.stateMachine.addState("Pulse", new HBPlatformPulseState()); stateMachine.stateMachine.setCurrentState("Idle"); } public function canAttack():Boolean{ return (((attackTimeDelay * 1000) < (PBE.processManager.virtualTime - lastAttackTime))); } public function duck():void{ preduckY = position.y; ducking = true; position.y = (position.y + ((originalSolidSize.y - duckSolidSize.y) / 2)); solidSize.y = duckSolidSize.y; size.y = duckSolidSize.y; } override public function handleTileMapBoundaryCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ var _local4:HealthComponent; mapEdgeX = _arg2; if ((((_arg3 == 1)) && (!(isDying)))){ isDying = true; deathTime = PBE.processManager.virtualTime; _local4 = (owner.lookupComponentByType(HealthComponent) as HealthComponent); if (_local4){ _local4.damage(_local4.health); }; if (stateMachine.stateMachine.currentStateName != "Explode"){ gravity.y = 0; if (stateMachine.stateMachine.getState("Explode") != null){ stateMachine.stateMachine.setCurrentState("Explode"); } else { PBE.processManager.schedule(10, this, owner.destroy); }; }; }; } public function processTriggers():void{ var _local1:Array; var _local2:int; var _local4:EnemyFlyerHint; if (!myMover){ return; }; if ((myMover as HBFlyingMovementComponent).state != HBCharacterBaseAiComponent.STATE_FLY){ return; }; var _local3:int; while (_local3 < hints.length) { _local4 = (hints[_local3] as EnemyFlyerHint); if (_local4 != null){ if (_local4.bounds.containsPoint(position)){ if ((((_local4.direction.x > 0)) && (!((myMover.right == 1))))){ myMover.right = 1; myMover.left = 0; myMover.up = 0; myMover.down = 0; velocity.y = 0; } else { if ((((_local4.direction.x < 0)) && (!((myMover.left == 1))))){ myMover.left = 1; myMover.right = 0; myMover.up = 0; myMover.down = 0; velocity.y = 0; }; }; if ((((_local4.direction.y > 0)) && (!((myMover.up == 1))))){ myMover.right = 0; myMover.left = 0; myMover.up = 1; myMover.down = 0; velocity.x = 0; } else { if ((((_local4.direction.y < 0)) && (!((myMover.down == 1))))){ myMover.right = 0; myMover.left = 0; myMover.down = 1; myMover.up = 0; velocity.x = 0; }; }; break; }; }; _local3++; }; } override protected function onRemove():void{ super.onRemove(); } override protected function onAdd():void{ super.onAdd(); reactsToHit = true; } override public function onHit():void{ lastHitTime = PBE.processManager.virtualTime; } public function showComplete():void{ } public function isInDuckState():Boolean{ return ((((((stateMachine.stateMachine.currentStateName == "Duck")) || ((stateMachine.stateMachine.currentStateName == "ShootDuck")))) || ((stateMachine.stateMachine.currentStateName == "MoveDuck")))); } public function restureLocation():void{ solid = true; } override public function processStateSwitches():void{ if (!myMover){ return; }; if (!animationIsDone){ return; }; var _local1:int = (myMover.right - myMover.left); var _local2:int = (myMover.up - myMover.down); if (animationIsDone){ if ((((((Math.abs(velocity.x) < 0.1)) && ((_local1 == 0)))) && ((((Math.abs(velocity.y) < 0.1)) && ((_local2 == 0)))))){ if (stateMachine.stateMachine.currentStateName != "Idle"){ stateMachine.stateMachine.setCurrentState("Idle"); }; } else { if ((((myMover.right == 1)) || ((myMover.left == 1)))){ if (stateMachine.stateMachine.currentStateName != "Move"){ stateMachine.stateMachine.setCurrentState("Move"); }; } else { if (myMover.down == 1){ if (((!((stateMachine.stateMachine.currentStateName == "MoveDown"))) && (!((stateMachine.stateMachine.currentStateName == "Explode"))))){ stateMachine.stateMachine.setCurrentState("MoveDown"); }; } else { if (myMover.up == 1){ if (((!((stateMachine.stateMachine.currentStateName == "MoveUp"))) && (!((stateMachine.stateMachine.currentStateName == "Explode"))))){ stateMachine.stateMachine.setCurrentState("MoveUp"); }; }; }; }; }; }; if (((((((!((myMover.action == myMover.lastAction))) && (myMover.action))) && (animationIsDone))) && (canAttack()))){ if (((!((lastAttackTime == -1))) && (!((stateMachine.stateMachine.currentStateName == "Shoot"))))){ stateMachine.stateMachine.setCurrentState("Shoot"); velocity.x = 0; velocity.y = 0; }; lastAttackTime = PBE.processManager.virtualTime; }; } override public function onCollideObject(_arg1:PlatformObject, _arg2:Point):void{ var _local3:HBPlatformCharacterEntity; var _local4:PlayerPlatformController; var _local5:HealthComponent; if ((_arg1 is HBPlatformCharacterEntity)){ booleanHit = true; velocity.x = 0; velocity.y = 0; solid = false; _local3 = (_arg1 as HBPlatformCharacterEntity); if (((_local3.isPlayer) && (!((_arg1 as HBPlatformEntity).isInvincible)))){ _local4 = (_arg1 as PlayerPlatformController); _local5 = (_local3.owner.lookupComponentByName("Health") as HealthComponent); _local5.damage(1, null); if (((_local5) && (_local5.isDead))){ _local3.solid = false; _local3.isDead = true; if (_local3.isPlayer){ PBE.processManager.schedule(1000, this, retry); }; _local3.deathTime = PBE.processManager.virtualTime; if (_local3.stateMachine.stateMachine.currentStateName != "Explode"){ _local3.gravity.y = 0; if (_local3.stateMachine.stateMachine.getState("Explode") != null){ _local3.stateMachine.stateMachine.setCurrentState("Explode"); } else { PBE.processManager.schedule(10, _local3, _local3.owner.destroy); _local3.owner.eventDispatcher.dispatchEvent(new Event("Die")); if (GameData.sfx_on){ _local3.owner.eventDispatcher.dispatchEvent(new Event("Die_Sound")); }; }; }; } else { if ((_arg1 is HBPlatformEntity)){ if (!(_arg1 as HBPlatformEntity).isInvincible){ _local3.stateMachine.stateMachine.setCurrentState("Hit"); _local3.owner.eventDispatcher.dispatchEvent(new Event("Hit")); if (GameData.sfx_on){ _local3.owner.eventDispatcher.dispatchEvent(new Event("Hit_Sound")); }; }; }; }; }; }; } } }//package com.halfbot.platformer.Entity
Section 157
//HBParticleBase (com.halfbot.platformer.Entity.HBParticleBase) package com.halfbot.platformer.Entity { import com.pblabs.rendering2D.*; import com.pblabs.engine.*; public class HBParticleBase extends HBPlatformEntity { public var rotationdiraction:int;// = -1 public var rotationSpeed:int;// = 10 protected var aliveTime:int;// = 1 protected var timeCreated:int;// = -1 override protected function onAdd():void{ super.onAdd(); var _local1:int = PBUtil.pickWithBias(0, 2); if (_local1 == 0){ rotationdiraction = 1; } else { rotationdiraction = -1; }; rotationSpeed = PBUtil.pickWithBias(2, 20); } override public function processStateSwitches():void{ } override public function setupStatesAndTransitions():void{ super.setupStatesAndTransitions(); } public function shouldDie():Boolean{ return (((aliveTime * 1000) < (PBE.processManager.virtualTime - timeCreated))); } override public function onTick(_arg1:Number):void{ super.onTick(_arg1); if (timeCreated == -1){ timeCreated = PBE.processManager.virtualTime; }; var _local2:BitmapRenderer = (owner.lookupComponentByName("Render") as BitmapRenderer); _local2.rotation = (_local2.rotation + (rotationSpeed * rotationdiraction)); if (onGround){ }; if (shouldDie()){ PBE.processManager.schedule(1000, this, owner.destroy); }; } } }//package com.halfbot.platformer.Entity
Section 158
//HBParticleEmitterBase (com.halfbot.platformer.Entity.HBParticleEmitterBase) package com.halfbot.platformer.Entity { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.utils.*; import com.pblabs.components.basic.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.States.*; import com.halfbot.platformer.Component.*; public class HBParticleEmitterBase extends HBPlatformEntity { public var PositionReference:PropertyReference; public var numParticles:int;// = 4 public var UseOwnerVelocity:Boolean;// = true public var AngleVariance:Number;// = 360 public var Ttl:Number;// = 2 public var RotationReference:PropertyReference; public var VelocityReference:PropertyReference; public var spawning:ObjectType; public var destroyAfterSpawn:Boolean;// = true public var VelocityVariance:Number;// = 0 public var numGiblets:int;// = 4 public var TtlVariance:int;// = 500 public var UseOwnerAngle:Boolean;// = true public var Angle:Number;// = 0 protected var lastSpawnTime:int;// = 0 public var Velocity:Number;// = 16 public function HBParticleEmitterBase(){ PositionReference = new PropertyReference("@Spatial.Position"); RotationReference = new PropertyReference("@Spatial.Rotation"); VelocityReference = new PropertyReference("@Spatial.LinearVelocity"); super(); } override protected function onAdd():void{ super.onAdd(); } public function canSpawn():Boolean{ return (((Ttl * 1000) < (PBE.processManager.virtualTime - lastSpawnTime))); } public function onSpawn():void{ lastSpawnTime = PBE.processManager.virtualTime; var _local1:int; while (_local1 < numParticles) { PBE.processManager.callLater(delaySpawn); _local1++; }; } override public function setupStatesAndTransitions():void{ super.setupStatesAndTransitions(); stateMachine.stateMachine.addState("Explode", new HBPlatformExplodeState()); } public function delaySpawn():void{ var _local1:Array = spawning.typeNames; var _local2:String = _local1[Math.random()]; var _local3:int = (Math.round((Math.random() * ((numGiblets - 1) - 0))) + 0); var _local4:Number = ((Velocity + ((Math.random() * 2) * VelocityVariance)) - VelocityVariance); var _local5:Number = ((Angle + ((Math.random() * 2) * AngleVariance)) - AngleVariance); var _local6:IEntity = PBE.makeEntity(_local1[0], {@Spatial.velocity.y:(Math.sin(((_local5 * Math.PI) / 180)) * _local4), @Spatial.velocity.x:(Math.cos(((_local5 * Math.PI) / 180)) * _local4), @Render.alpha:0, @Spatial.position:new Point(position.x, position.y), @Animation.animations.Idle.startValue:_local3, @Animation.animations.Idle.targetValue:_local3}); } override public function onTick(_arg1:Number):void{ super.onTick(_arg1); if (canSpawn()){ onSpawn(); if (destroyAfterSpawn){ if (stateMachine.stateMachine.currentStateName != "Explode"){ stateMachine.stateMachine.setCurrentState("Explode"); }; }; }; } } }//package com.halfbot.platformer.Entity
Section 159
//HBPlatformCharacterEntity (com.halfbot.platformer.Entity.HBPlatformCharacterEntity) package com.halfbot.platformer.Entity { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.utils.*; import com.pblabs.components.basic.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Triggers.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.Weapons.*; import com.halfbot.platformer.States.*; import com.halfbot.platformer.Component.*; public class HBPlatformCharacterEntity extends HBPlatformEntity { public var spriteIndexIdle:int;// = 15 protected var lastAttackTime:int;// = -1 public var preduckY:Number; public var blinkDelay:int;// = 0 public var airJumpRechargeOnWall:Boolean;// = false public var invincibleTime:int;// = 3 public var airJumpFactor:Number;// = 1 public var shouldProcessTriggers:Boolean;// = false public var spriteIndexJumpDown:int;// = 14 public var pixelsPerStep:Number;// = 15 public var wallJumpFactor:Number;// = 0.8 public var chargeEntityRender:SpriteSheetRenderer;// = null protected var isDying:Boolean;// = false public var airControl:Number;// = 0.5 public var airJumpsAvailable:int;// = 0 public var chargeEntity:HBPlatformEntity;// = null public var jumpSpeed:Number;// = 0 public var wallJumpEnable:Boolean;// = true public var spriteIndexHurt:int;// = 4 public var spriteIndexRunEnd:int;// = 5 public var defferCount:int;// = 0 public var hurtDuration:int;// = 1000 public var spriteIndexRunStart:int;// = 0 public var airJumpHorizSlowdown:Number;// = 0.5 public var blinkDelayCount:int;// = 0 protected var levelCompleteCalled:Boolean;// = false public var wallSlideSlowdown:Number;// = 0.9 public var spriteIndexWallSlideDown:int;// = 0 public var spriteIndexWallSlideUp:int;// = 0 public var attackTimeDelay:Number;// = 1 public var skipCount:int;// = 3 public var invincibleOnHit:Boolean;// = false public var spriteIndexJumpUp:int;// = 13 public var lastChartTime:int;// = 0 public var traked:String; public var currentTime:int;// = 0 public var wallJumpHorizPushoff:Number;// = 5 protected var hitTriggers:Array; protected var isAlreadyCharging:Boolean;// = false public var airJumpCapacity:int;// = 1 protected var hurtTime:int;// = -1 public var lastFacingTime:Number;// = 1 public function HBPlatformCharacterEntity(){ hitTriggers = new Array(); super(); } override public function onCollideObject(_arg1:PlatformObject, _arg2:Point):void{ var _local3:HBPlatformCharacterEntity; var _local4:PlayerPlatformController; var _local5:HealthComponent; super.onCollideObject(_arg1, _arg2); if ((PBE.processManager.virtualTime - lastFacingTime) > 1000){ lastFacingTime = PBE.processManager.virtualTime; onCollidableObject = this.faceing; }; if ((_arg1 is HBPlatformCharacterEntity)){ _local3 = (_arg1 as HBPlatformCharacterEntity); if (((_local3.isPlayer) && (!((_arg1 as HBPlatformEntity).isInvincible)))){ _local4 = (_arg1 as PlayerPlatformController); _local5 = (_local3.owner.lookupComponentByName("Health") as HealthComponent); _local5.damage(1, null); if (((_local5) && (_local5.isDead))){ _local3.solid = false; _local3.isDead = true; if (_local3.isPlayer){ if (isAlreadyCharging){ myMover.actionHeld = 0; isAlreadyCharging = false; }; PBE.processManager.schedule(1000, this, retry); }; _local3.deathTime = PBE.processManager.virtualTime; if (_local3.stateMachine.stateMachine.currentStateName != "Explode"){ _local3.Explode(); _local3.gravity.y = 0; if (_local3.stateMachine.stateMachine.getState("Explode") != null){ _local3.stateMachine.stateMachine.setCurrentState("Explode"); } else { PBE.processManager.schedule(10, _local3, _local3.owner.destroy); _local3.owner.eventDispatcher.dispatchEvent(new Event("Die")); if (GameData.sfx_on){ _local3.owner.eventDispatcher.dispatchEvent(new Event("Die_Sound")); }; }; }; } else { if ((_arg1 is HBPlatformEntity)){ if (!(_arg1 as HBPlatformEntity).isInvincible){ _local3.stateMachine.stateMachine.setCurrentState("Hit"); _local3.owner.eventDispatcher.dispatchEvent(new Event("Hit")); if (GameData.sfx_on){ _local3.owner.eventDispatcher.dispatchEvent(new Event("Hit_Sound")); }; }; }; }; }; }; } public function delayLevelComplete():void{ if (PlayerInventory.partsPickedUp >= PlayerInventory._totalPartsToPickedUp){ ScreenManager.instance.push("levelComplete"); levelCompleteCalled = true; }; } override public function onTick(_arg1:Number):void{ var _local2:int; var _local3:AnimatorComponent; var _local4:HBCharacterWeaponComponent; super.onTick(_arg1); if (shouldProcessTriggers){ if (defferCount <= skipCount){ defferCount++; } else { defferCount = 0; processTriggers(); }; }; if (((onGround) && (!(levelCompleteCalled)))){ }; if (((isDying) && (isPlayer))){ if ((PBE.processManager.virtualTime - deathTime) > 2000){ }; }; if (((((PBE.processManager.virtualTime - lastHitTime) <= (invincibleTime * 1000))) && (invincibleOnHit))){ if (blinkDelayCount > blinkDelay){ isInvincible = true; if (!myRender){ myRender = (owner.lookupComponentByName("Render") as BitmapRenderer); }; if (myRender){ if (myRender.alpha == 1){ myRender.alpha = 0.3; } else { myRender.alpha = 1; }; }; blinkDelayCount = 0; }; blinkDelayCount++; } else { if (invincibleOnHit){ if (!myRender){ myRender = (owner.lookupComponentByName("Render") as BitmapRenderer); }; if (myRender){ myRender.alpha = 1; }; isInvincible = false; }; }; onCollidableObject = 0; if (chargeEntity != null){ chargeEntity.position.x = (this.position.x + this.chargeoffsetX); chargeEntity.position.y = (this.position.y + this.chargeoffsetY); }; if (((((((myMover) && (myMover.actionHeld))) && (chargeEntityRender))) && (!(GameData.currentLevelComplete)))){ if (((((!((chargeEntity.stateMachine.stateMachine.currentStateName == "StartCharge"))) && (!(isAlreadyCharging)))) && (!((stateMachine.stateMachine.currentStateName == "Dance"))))){ chargeEntity.stateMachine.stateMachine.setCurrentState("StartCharge"); if (GameData.sfx_on){ owner.eventDispatcher.dispatchEvent(new Event("PowerUp_Sound")); }; }; chargeEntityRender.alpha = 1; PBE.processManager.schedule(200, this, delayShowBullet); isAlreadyCharging = true; } else { if (chargeEntityRender){ if (((isAlreadyCharging) && (!((chargeEntity.stateMachine.stateMachine.currentStateName == "StartCharge"))))){ _local4 = (owner.lookupComponentByName("Weapon") as HBCharacterWeaponComponent); _local4.fireAlt = true; }; chargeEntityRender.alpha = 0; _local3 = (chargeEntityRender.owner.lookupComponentByName("Animation") as AnimatorComponent); _local3.play("Idle2"); if (((!((myMover == null))) && (isAlreadyCharging))){ if (((!((stateMachine.stateMachine.currentStateName == "ShootUp"))) && (myMover.up))){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("ShootUp"); }; lastAttackTime = PBE.processManager.virtualTime; } else { if (((((((((!((stateMachine.stateMachine.currentStateName == "ShootDown"))) && (myMover.down))) && (!(onGround)))) && (animationIsDone))) || (((((!((stateMachine.stateMachine.currentStateName == "ShootDown"))) && (myMover.down_alt))) && (animationIsDone))))){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("ShootDown"); }; lastAttackTime = PBE.processManager.virtualTime; } else { if (((((((!((stateMachine.stateMachine.currentStateName == "ShootDuck"))) && (myMover.down))) && (onGround))) && (animationIsDone))){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("ShootDuck"); }; lastAttackTime = PBE.processManager.virtualTime; } else { if (animationIsDone){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("Shoot"); }; lastAttackTime = PBE.processManager.virtualTime; }; }; }; }; }; isAlreadyCharging = false; }; }; } override public function onHit():void{ lastHitTime = PBE.processManager.virtualTime; } public function canAttack():Boolean{ return (((attackTimeDelay * 1000) < (PBE.processManager.virtualTime - lastAttackTime))); } public function duck():void{ preduckY = position.y; ducking = true; position.y = (position.y + ((originalSolidSize.y - duckSolidSize.y) / 2)); solidSize.y = duckSolidSize.y; size.y = duckSolidSize.y; } override public function handleTileMapBoundaryCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ var _local4:HealthComponent; mapEdgeX = _arg2; if ((((_arg3 == 1)) && (!(isDying)))){ isDying = true; deathTime = PBE.processManager.virtualTime; _local4 = (owner.lookupComponentByType(HealthComponent) as HealthComponent); if (_local4){ _local4.damage(_local4.health); }; if (stateMachine.stateMachine.currentStateName != "Explode"){ gravity.y = 0; if (stateMachine.stateMachine.getState("Explode") != null){ stateMachine.stateMachine.setCurrentState("Explode"); } else { PBE.processManager.schedule(10, this, owner.destroy); }; if (isPlayer){ ScreenManager.instance.push("retry"); }; }; }; } public function delayShowBullet():void{ chargeEntityRender.alpha = 1; } override protected function onRemove():void{ super.onRemove(); } override public function setupStatesAndTransitions():void{ super.setupStatesAndTransitions(); stateMachine.stateMachine.addState("Jump", new HBPlatformJumpState()); stateMachine.stateMachine.addState("Shoot", new HBPlatformShootState()); stateMachine.stateMachine.addState("ShootUp", new HBPlatformShootUpState()); if (this.isPlayer){ stateMachine.stateMachine.addState("ShootDown", new HBPlatformShootDownState()); } else { stateMachine.stateMachine.addState("ShootDown", new HBPlatformShootDownStateNoVel()); }; stateMachine.stateMachine.addState("ShootDuck", new HBPlatformShootDuckState()); stateMachine.stateMachine.addState("Duck", new HBPlatformDuckState()); stateMachine.stateMachine.addState("MoveDuck", new HBPlatformMoveDuckState()); stateMachine.stateMachine.addState("Dance", new HBPlatformDanceLvlComplete()); } public function processTriggers():void{ var _local1:Array; var _local2:int; var _local6:BaseTriggerObject; if (!myMover){ return; }; var _local3:int = BaseTriggerObject.enterExitTriggers.length; var _local4:Array = new Array(); _local2 = 0; while ((((_local2 < _local3)) && (!(isDying)))) { _local6 = BaseTriggerObject.enterExitTriggers[_local2]; if (((((((!((_local6 == null))) && (_local6.active))) && ((Math.abs((_local6.bounds.x - position.x)) < 80)))) && ((Math.abs((_local6.bounds.y - position.y)) < 80)))){ if (_local6.bounds.intersects(bounds)){ if (hitTriggers[_local6.triggerID] == null){ hitTriggers[_local6.triggerID] = _local6; if (_local6.onEnter != null){ _local4.push(_local6.onEnter); }; }; } else { if (hitTriggers[_local6.triggerID] != null){ hitTriggers[_local6.triggerID] = null; if (_local6.onExit != null){ _local4.push(_local6.onExit); }; }; }; }; _local2++; }; var _local5:int = (myMover.action - myMover.lastAction); if (_local5 > 0){ _local3 = BaseTriggerObject.actionTriggers.length; _local2 = 0; while ((((_local2 < _local3)) && (!(isDying)))) { _local6 = BaseTriggerObject.actionTriggers[_local2]; if (((((((!((_local6 == null))) && (_local6.active))) && ((Math.abs((_local6.bounds.x - position.x)) < 80)))) && ((Math.abs((_local6.bounds.y - position.y)) < 80)))){ if (_local6.bounds.intersects(bounds)){ _local4.push(_local6.onAction); }; }; _local2++; }; }; _local2 = 0; while ((((_local2 < _local4.length)) && (!(isDying)))) { (_local4[_local2] as Function)(this); _local2++; }; } public function showComplete():void{ } public function isInDuckState():Boolean{ return ((((((stateMachine.stateMachine.currentStateName == "Duck")) || ((stateMachine.stateMachine.currentStateName == "ShootDuck")))) || ((stateMachine.stateMachine.currentStateName == "MoveDuck")))); } override public function processStateSwitches():void{ if (!animationIsDone){ return; }; if (((GameData.currentLevelComplete) && (onGround))){ if (stateMachine.stateMachine.currentStateName != "Dance"){ stateMachine.stateMachine.setCurrentState("Dance"); currentTime = PBE.processManager.virtualTime; }; if ((PBE.processManager.virtualTime - currentTime) > 1500){ ScreenManager.instance.push("levelComplete"); PlayerInventory.partsPickedUp = (PlayerInventory.keyPickedUp = (PlayerInventory._totalPartsToPickedUp = 0)); }; return; }; var _local1:int = (myMover.right - myMover.left); if (((!(onGround)) && (animationIsDone))){ if (stateMachine.stateMachine.currentStateName != "Jump"){ stateMachine.stateMachine.setCurrentState("Jump"); }; } else { if (animationIsDone){ if ((((Math.abs(velocity.x) < 0.1)) && ((_local1 == 0)))){ if (myMover.down == 1){ if (stateMachine.stateMachine.currentStateName != "Duck"){ stateMachine.stateMachine.setCurrentState("Duck"); }; } else { if (stateMachine.stateMachine.currentStateName != "Idle"){ stateMachine.stateMachine.setCurrentState("Idle"); }; }; velocity.x = 0; } else { if ((((((myMover.down == 1)) && (onGround))) && (animationIsDone))){ if (stateMachine.stateMachine.currentStateName != "MoveDuck"){ stateMachine.stateMachine.setCurrentState("MoveDuck"); }; } else { if (animationIsDone){ if (stateMachine.stateMachine.currentStateName != "Move"){ stateMachine.stateMachine.setCurrentState("Move"); }; }; }; }; }; }; if (((((((((this.isPlayer) && ((myMover.action == 0)))) && ((myMover.lastAction == 1)))) && (animationIsDone))) && (canAttack()))){ if (((!((stateMachine.stateMachine.currentStateName == "ShootUp"))) && (myMover.up))){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("ShootUp"); }; lastAttackTime = PBE.processManager.virtualTime; } else { if (((((((((!((stateMachine.stateMachine.currentStateName == "ShootDown"))) && (myMover.down))) && (!(onGround)))) && (animationIsDone))) || (((((!((stateMachine.stateMachine.currentStateName == "ShootDown"))) && (myMover.down_alt))) && (animationIsDone))))){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("ShootDown"); }; lastAttackTime = PBE.processManager.virtualTime; } else { if (((((((!((stateMachine.stateMachine.currentStateName == "ShootDuck"))) && (myMover.down))) && (onGround))) && (animationIsDone))){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("ShootDuck"); }; lastAttackTime = PBE.processManager.virtualTime; } else { if (animationIsDone){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("Shoot"); }; lastAttackTime = PBE.processManager.virtualTime; }; }; }; }; } else { if (((((((!(isPlayer)) && (!((myMover.action == myMover.lastAction))))) && (animationIsDone))) && (canAttack()))){ if (((!((stateMachine.stateMachine.currentStateName == "ShootUp"))) && (myMover.up))){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("ShootUp"); }; lastAttackTime = PBE.processManager.virtualTime; } else { if (((((((((!((stateMachine.stateMachine.currentStateName == "ShootDown"))) && (myMover.down))) && (!(onGround)))) && (animationIsDone))) || (((((!((stateMachine.stateMachine.currentStateName == "ShootDown"))) && (myMover.down_alt))) && (animationIsDone))))){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("ShootDown"); }; lastAttackTime = PBE.processManager.virtualTime; } else { if (((((((!((stateMachine.stateMachine.currentStateName == "ShootDuck"))) && (myMover.down))) && (onGround))) && (animationIsDone))){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("ShootDuck"); }; lastAttackTime = PBE.processManager.virtualTime; } else { if (animationIsDone){ if (lastAttackTime != -1){ stateMachine.stateMachine.setCurrentState("Shoot"); }; lastAttackTime = PBE.processManager.virtualTime; }; }; }; }; }; }; if (((((((!((myMover.jump == myMover.lastjump))) && (myMover.jump))) && (onGround))) && (animationIsDone))){ if (stateMachine.stateMachine.currentStateName != "Jump"){ stateMachine.stateMachine.setCurrentState("Jump"); }; }; if (isInDuckState()){ if (!ducking){ PBE.processManager.callLater(duck); }; } else { if (!isInDuckState()){ if (ducking){ position.y = position.y; position.y = (position.y - ((originalSolidSize.y - duckSolidSize.y) / 2)); size.y = originalSolidSize.y; solidSize.y = originalSolidSize.y; }; ducking = false; }; }; } override protected function onAdd():void{ var _local1:IEntity; super.onAdd(); reactsToHit = true; if (isPlayer){ _local1 = PBE.makeEntity("Charge", {@Render.alpha:0, @Spatial.position:new Point((position.x + chargeoffsetX), (position.y + chargeoffsetY))}); chargeEntity = (_local1.lookupComponentByName("Spatial") as HBPlatformEntity); chargeEntityRender = (_local1.lookupComponentByName("Render") as SpriteSheetRenderer); chargeEntityRender.alpha = 0; }; } override public function handleTileCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ if ((_arg1.getTileFlags(_arg2, _arg3) & 4)){ if (isPlayer){ PBE.processManager.schedule(1000, this, retry); }; deathTime = PBE.processManager.virtualTime; if (stateMachine.stateMachine.currentStateName != "Explode"){ Explode(); gravity.y = 0; if (stateMachine.stateMachine.getState("Explode") != null){ stateMachine.stateMachine.setCurrentState("Explode"); } else { PBE.processManager.schedule(10, this, owner.destroy); owner.eventDispatcher.dispatchEvent(new Event("Die")); if (GameData.sfx_on){ owner.eventDispatcher.dispatchEvent(new Event("Die_Sound")); }; }; }; }; } } }//package com.halfbot.platformer.Entity
Section 160
//HBPlatformContainer (com.halfbot.platformer.Entity.HBPlatformContainer) package com.halfbot.platformer.Entity { import com.pblabs.engine.entity.*; import flash.geom.*; import com.hanclinto.platformer.*; import com.pblabs.components.stateMachine.*; import com.halfbot.platformer.States.*; public class HBPlatformContainer extends HBPlatformEntity { public var incrementReference:PropertyReference; override public function handleTileMapBoundaryCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ super.handleTileMapBoundaryCollision(_arg1, _arg2, _arg3); } override public function handleTileCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ super.handleTileCollision(_arg1, _arg2, _arg3); } override public function processStateSwitches():void{ super.processStateSwitches(); } override public function setupStatesAndTransitions():void{ var _local1:int; stateMachine.stateMachine.addState("Move", new HBPlatformMoveState()); stateMachine.stateMachine.addState("Death", new DeathState()); stateMachine.stateMachine.addState("Explode", new HBPlatformExplodeState()); stateMachine.stateMachine.addState("Idle", new HBPlatformIdleState()); stateMachine.stateMachine.addState("Hit", new HBPlatformHitState()); stateMachine.stateMachine.setCurrentState("Idle"); if (incrementReference){ _local1 = owner.getProperty(incrementReference, -1); owner.setProperty(incrementReference, (_local1 + 1)); }; } override public function onTick(_arg1:Number):void{ super.onTick(_arg1); } override public function onCollideObject(_arg1:PlatformObject, _arg2:Point):void{ super.onCollideObject(_arg1, _arg2); } } }//package com.halfbot.platformer.Entity
Section 161
//HBPlatformEntity (com.halfbot.platformer.Entity.HBPlatformEntity) package com.halfbot.platformer.Entity { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import flash.geom.*; import com.hanclinto.platformer.*; import com.pblabs.components.stateMachine.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.States.*; public class HBPlatformEntity extends PlatformObject { public var chargeoffsetX:int;// = 0 public var deathPoint:Point; public var offScreenDistanceX:int;// = 400 public var offScreenDistanceY:int;// = 400 public var lastHitTime:int;// = 0 public var horizAccel:Number;// = 0.5 public var keepHidden:Boolean;// = false public var keepAfterExplode:Boolean;// = false public var duckSolidSize:Point; public var maxDuckHorizSpeed:Number;// = 5 public var ducking:Boolean;// = false public var lastPoint:Point; public var maxVertSpeed:Number;// = 10 public var slowdown:Number;// = 0.5 public var reactsToHit:Boolean;// = false public var isPlayer:Boolean;// = false public var explodeWithParticles:Boolean;// = false public var isDead:Boolean;// = false public var triggerFollow:Boolean;// = false public var mapEdgeX:int;// = 0 public var pointValue:int;// = 0 public var deathSpawnAlt:String;// = null public var spriteFlipX:Boolean;// = false public var spawningEntity:HBSpawnBaseEntity;// = null public var slowdownHoriz:Number;// = 0.95 public var deathEmitter:String; public var deathSpawnPercent:Number;// = 100 public var player:HBPlatformEntity; protected var myRender:BitmapRenderer; public var faceing:int;// = 1 public var lastHitDelay:int;// = 0 public var deathSpawn:String; public var deathTime:int;// = -1 public var isInvincible:Boolean;// = false public var deathSpawnPercentAlt:Number;// = 0 public var maxHorizSpeed:Number;// = 10 public var animationIsDone:Boolean;// = true public var chargeoffsetY:int;// = 0 public var isSleeping:Boolean;// = false public var originalSolidSize:Point; protected var myMover:HBBaseMovementComponent; public var stateMachine:FSMComponent; public var onCollidableObject:int;// = 0 public function HBPlatformEntity(){ duckSolidSize = new Point(32, 32); originalSolidSize = new Point(32, 32); deathPoint = new Point(0, 0); lastPoint = new Point(0, 0); super(); } public function processStateSwitches():void{ if (!animationIsDone){ return; }; if (Math.abs(velocity.x) < 0.1){ if (((!((stateMachine.stateMachine.currentStateName == "Idle"))) && (animationIsDone))){ stateMachine.stateMachine.setCurrentState("Idle"); }; velocity.x = 0; }; } public function get xDir():int{ return (xdir); } override protected function onAdd():void{ super.onAdd(); stateMachine = (owner.lookupComponentByName("StateEngine") as FSMComponent); if (!stateMachine.stateMachine){ stateMachine.stateMachine = new Machine(); stateMachine.stateMachine.propertyBag = this.owner; }; setupStatesAndTransitions(); } override public function onTick(_arg1:Number):void{ var _local2:HBCameraTrackEntity; if (!isPlayer){ if (!player){ player = (PBE.nameManager.lookupComponentByName("AlienHero", "Spatial") as HBPlatformEntity); }; if (((player) && ((((Math.abs((position.x - player.position.x)) > offScreenDistanceX)) || ((Math.abs((position.y - player.position.y)) > offScreenDistanceY)))))){ return; }; }; if (GameData.movement_paused){ return; }; if (!myMover){ myMover = (owner.lookupComponentByName("Mover") as HBBaseMovementComponent); }; if (!myRender){ myRender = (owner.lookupComponentByName("Render") as BitmapRenderer); }; owner.eventDispatcher.addEventListener("CompletelyDoneAnimation", onDoneAnimation); if (((isDead) && (deathPoint))){ position.x = deathPoint.x; position.y = deathPoint.y; } else { if (((((myMover) && ((((myMover.left == 1)) || ((myMover.right == 1)))))) && ((lastPoint.x == 0)))){ lastPoint.x = position.x; lastPoint.y = position.y; }; if (((((myMover) && ((((myMover.up == 1)) || ((myMover.down == 1)))))) && ((lastPoint.y == 0)))){ lastPoint.x = position.x; lastPoint.y = position.y; }; }; if (triggerFollow){ _local2 = (PBE.nameManager.lookupComponentByName("CameraObject", "Spatial") as HBCameraTrackEntity); if (_local2){ } else { (PBE.scene as BitmapDataScene).trackObject = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); }; triggerFollow = false; }; if (myMover){ myMover.onUpdate(); }; processStateSwitches(); if (((((myRender) && ((myRender.alpha == 0)))) && (!(keepHidden)))){ PBE.processManager.schedule(50, this, delayShow); }; } public function delayShow():void{ myRender.alpha = 1; } public function onDoneAnimation(_arg1:Event):void{ animationIsDone = true; } public function delaySpawnObject():void{ var _local2:Number; var _local3:Number; var _local4:IEntity; var _local1:int = PBUtil.pickWithBias(0, 100); if (deathSpawnPercent >= _local1){ _local2 = (PBUtil.pickWithBias(1, 100) / 60); _local3 = (PBUtil.pickWithBias(1, 100) / 30); _local4 = PBE.makeEntity(deathSpawn, {@Render.alpha:0, @Spatial.velocity:new Point(0, _local3), @Spatial.position:new Point(position.x, (position.y - 20))}); }; _local1 = PBUtil.pickWithBias(0, 100); if ((((deathSpawnPercentAlt >= _local1)) && (deathSpawnAlt))){ _local2 = (PBUtil.pickWithBias(1, 100) / 60); _local3 = (PBUtil.pickWithBias(1, 100) / 30); _local4 = PBE.makeEntity(deathSpawnAlt, {@Render.alpha:0, @Spatial.velocity:new Point(0, _local3), @Spatial.position:new Point(position.x, (position.y - 20))}); }; } public function retry():void{ ScreenManager.instance.push("retry"); } public function delaySpawnExplosion():void{ var _local2:IEntity; var _local1:IEntity = PBE.makeEntity(deathEmitter, {@Render.alpha:0, @Spatial.position:new Point(position.x, position.y)}); if (pointValue > 0){ _local2 = PBE.makeEntity("floatingText", {@Spatial.pointValue:pointValue, @Render.alpha:0, @Spatial.position:new Point(position.x, position.y)}); }; } public function setupStatesAndTransitions():void{ stateMachine.stateMachine.addState("Move", new HBPlatformMoveState()); stateMachine.stateMachine.addState("Death", new DeathState()); stateMachine.stateMachine.addState("Idle", new HBPlatformIdleState()); stateMachine.stateMachine.addState("Hit", new HBPlatformHitState()); stateMachine.stateMachine.addState("StartCharge", new HBPlatformChargeState()); stateMachine.stateMachine.setCurrentState("Idle"); } public function onHit():void{ } public function Explode():void{ var _local1:IEntity; var _local2:IEntity; var _local3:IEntity; var _local4:IEntity; var _local5:IEntity; var _local6:IEntity; var _local7:IEntity; var _local8:IEntity; var _local9:HBPlatformEntity; if (explodeWithParticles){ _local9 = (owner.lookupComponentByName("Spatial") as HBPlatformEntity); _local1 = PBE.makeEntity("Drone1_Bullet", {@Render.alpha:0, @Spatial.position:new Point(position.x, position.y), @Spatial.faceing:faceing, @Mover.right:1}); _local2 = PBE.makeEntity("Drone1_Bullet", {@Render.alpha:0, @Spatial.position:new Point(position.x, position.y), @Spatial.faceing:faceing, @Mover.left:1}); _local3 = PBE.makeEntity("Drone1_Bullet", {@Render.alpha:0, @Spatial.position:new Point(position.x, position.y), @Spatial.faceing:faceing, @Mover.up:1}); _local4 = PBE.makeEntity("Drone1_Bullet", {@Render.alpha:0, @Spatial.position:new Point(position.x, position.y), @Spatial.faceing:faceing, @Mover.down:1}); _local5 = PBE.makeEntity("Drone1_Bullet", {@Render.alpha:0, @Spatial.position:new Point(position.x, position.y), @Spatial.faceing:faceing, @Mover.left:1, @Mover.up:1}); _local6 = PBE.makeEntity("Drone1_Bullet", {@Render.alpha:0, @Spatial.position:new Point(position.x, position.y), @Spatial.faceing:faceing, @Mover.right:1, @Mover.up:1}); _local7 = PBE.makeEntity("Drone1_Bullet", {@Render.alpha:0, @Spatial.position:new Point(position.x, position.y), @Spatial.faceing:faceing, @Mover.left:1, @Mover.down:1}); _local8 = PBE.makeEntity("Drone1_Bullet", {@Render.alpha:0, @Spatial.position:new Point(position.x, position.y), @Spatial.faceing:faceing, @Mover.right:1, @Mover.down:1}); }; if (deathEmitter){ PBE.processManager.callLater(delaySpawnExplosion); }; if (deathSpawn){ PBE.processManager.callLater(delaySpawnObject); }; if (spawningEntity){ spawningEntity.isRemovedFromWorld(this); }; } public function get yDir():int{ return (ydir); } override protected function onRemove():void{ super.onRemove(); owner.eventDispatcher.removeEventListener("CompletelyDoneAnimation", onDoneAnimation); } } }//package com.halfbot.platformer.Entity
Section 162
//HBPlatformFloatingText (com.halfbot.platformer.Entity.HBPlatformFloatingText) package com.halfbot.platformer.Entity { import com.pblabs.engine.entity.*; import flash.geom.*; import com.hanclinto.platformer.*; import com.pblabs.animation.*; import com.halfbot.platformer.Component.Triggers.*; import com.halfbot.platformer.States.*; public class HBPlatformFloatingText extends HBPlatformEntity { public var hasUpdated:Boolean;// = false public var hasBeenPickedup:Boolean;// = false public var healthValue:int;// = 0 public var randomTypes:int;// = 0 public var incrementReference:PropertyReference; override public function handleTileCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ super.handleTileCollision(_arg1, _arg2, _arg3); } override public function processStateSwitches():void{ } override public function setupStatesAndTransitions():void{ super.setupStatesAndTransitions(); stateMachine.stateMachine.addState("Bounce", new HBPlatformBounceState()); stateMachine.stateMachine.addState("Pickup", new HBPlatformPickupState2()); stateMachine.stateMachine.setCurrentState("Pickup"); } override protected function onAdd():void{ super.onAdd(); } override public function onTick(_arg1:Number):void{ var _local2:AnimatorComponent; var _local3:HBPlatformEntity; super.onTick(_arg1); if (!hasUpdated){ hasUpdated = true; _local2 = (owner.lookupComponentByName("Animation") as AnimatorComponent); _local3 = (owner.lookupComponentByName("Spatial") as HBPlatformEntity); if (_local3.pointValue != 0){ PlayerInventory.playerScore = (PlayerInventory.playerScore + _local3.pointValue); PlayerInventory.playerTotalScore = (PlayerInventory.playerTotalScore + _local3.pointValue); switch (_local3.pointValue){ case 10: _local2.play("num1"); break; case 50: _local2.play("num2"); break; case 100: _local2.play("num3"); break; case 200: _local2.play("num4"); break; case 300: _local2.play("num5"); break; case 400: _local2.play("num6"); break; case 500: _local2.play("num7"); break; }; }; }; } override public function handleTileMapBoundaryCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ super.handleTileMapBoundaryCollision(_arg1, _arg2, _arg3); } override public function onCollideObject(_arg1:PlatformObject, _arg2:Point):void{ super.onCollideObject(_arg1, _arg2); } } }//package com.halfbot.platformer.Entity
Section 163
//HBPlatformItemPickup (com.halfbot.platformer.Entity.HBPlatformItemPickup) package com.halfbot.platformer.Entity { import com.pblabs.engine.entity.*; import flash.geom.*; import com.hanclinto.platformer.*; import com.pblabs.animation.*; import com.pblabs.engine.*; import com.halfbot.platformer.States.*; public class HBPlatformItemPickup extends HBPlatformEntity { public var hasBeenPickedup:Boolean;// = false public var healthValue:int;// = 0 public var randomTypes:int;// = 0 public var incrementReference:PropertyReference; override public function handleTileCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ super.handleTileCollision(_arg1, _arg2, _arg3); } override public function processStateSwitches():void{ } override public function setupStatesAndTransitions():void{ var _local1:int; super.setupStatesAndTransitions(); stateMachine.stateMachine.addState("Bounce", new HBPlatformBounceState()); stateMachine.stateMachine.addState("Pickup", new HBPlatformPickupState()); stateMachine.stateMachine.setCurrentState("Bounce"); if (incrementReference){ _local1 = owner.getProperty(incrementReference, -1); owner.setProperty(incrementReference, (_local1 + 1)); }; } override public function handleTileMapBoundaryCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ super.handleTileMapBoundaryCollision(_arg1, _arg2, _arg3); } override public function onTick(_arg1:Number):void{ super.onTick(_arg1); } override protected function onAdd():void{ var _local1:int; var _local2:AnimatorComponent; super.onAdd(); if (randomTypes > 0){ _local1 = PBUtil.pickWithBias(0, randomTypes); if (_local1 != 0){ _local2 = (owner.lookupComponentByName("Animation") as AnimatorComponent); _local2.play(("Idle" + _local1)); }; }; } override public function onCollideObject(_arg1:PlatformObject, _arg2:Point):void{ super.onCollideObject(_arg1, _arg2); } } }//package com.halfbot.platformer.Entity
Section 164
//HBPlatformProjectileEntity (com.halfbot.platformer.Entity.HBPlatformProjectileEntity) package com.halfbot.platformer.Entity { import flash.events.*; import flash.geom.*; import com.hanclinto.platformer.*; import com.pblabs.components.basic.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.States.*; public class HBPlatformProjectileEntity extends HBPlatformEntity { public var explodeOnImpact:Boolean;// = true public var booleanHit:Boolean;// = false public var locationBeforeHit:Point; public var ttd:Number;// = 3 public var damageAmount:int;// = 1 public var spawnTime:int;// = 0 public var canDieCalled:Boolean;// = false public var isFullScreenProjectile:Boolean;// = false public var hitDelay:int;// = 0 public var velocityBeforeHit:Point; override protected function onAdd():void{ super.onAdd(); spawnTime = PBE.processManager.virtualTime; } override public function handleTileMapBoundaryCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ if (isFullScreenProjectile){ return; }; if (stateMachine.stateMachine.currentStateName != "Explode"){ stateMachine.stateMachine.setCurrentState("Explode"); }; } public function canDie():Boolean{ return (((ttd * 1000) < (PBE.processManager.virtualTime - spawnTime))); } override public function handleTileCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ if (isFullScreenProjectile){ return; }; if (_arg1.getTileFlags(_arg2, _arg3) > 0){ if (stateMachine.stateMachine.currentStateName != "Explode"){ stateMachine.stateMachine.setCurrentState("Explode"); }; }; } override public function setupStatesAndTransitions():void{ super.setupStatesAndTransitions(); stateMachine.stateMachine.addState("Explode", new HBPlatformExplodeState()); stateMachine.stateMachine.addState("MoveUp", new HBPlatformMoveUpState()); stateMachine.stateMachine.addState("MoveDown", new HBPlatformMoveDownState()); stateMachine.stateMachine.setCurrentState("Move"); } public function restureLocation():void{ solid = true; } override public function onTick(_arg1:Number):void{ super.onTick(_arg1); if (((canDie()) && (!(canDieCalled)))){ canDieCalled = true; if (stateMachine.stateMachine.currentStateName != "Explode"){ stateMachine.stateMachine.setCurrentState("Explode"); }; }; } override public function processStateSwitches():void{ var _local1:int = (myMover.right - myMover.left); if (_local1 != 0){ } else { if (myMover.down){ if (((!((stateMachine.stateMachine.currentStateName == "MoveDown"))) && (!((stateMachine.stateMachine.currentStateName == "Explode"))))){ stateMachine.stateMachine.setCurrentState("MoveDown"); }; } else { if (myMover.up){ if (((!((stateMachine.stateMachine.currentStateName == "MoveUp"))) && (!((stateMachine.stateMachine.currentStateName == "Explode"))))){ stateMachine.stateMachine.setCurrentState("MoveUp"); }; }; }; }; } override public function onCollideObject(_arg1:PlatformObject, _arg2:Point):void{ var _local3:HBPlatformEntity; var _local4:HealthComponent; if (explodeOnImpact){ this.solid = false; this.velocity.x = 0; this.velocity.y = 0; this.isDead = true; }; if (((explodeOnImpact) && ((((myMover.down == 1)) || ((myMover.up == 1)))))){ this.deathPoint.x = this.lastPoint.x; this.deathPoint.y = this.position.y; }; if (((explodeOnImpact) && ((((myMover.left == 1)) || ((myMover.right == 1)))))){ this.deathPoint.x = this.position.x; this.deathPoint.y = this.lastPoint.y; }; if (explodeOnImpact){ this.position.x = this.deathPoint.x; this.position.y = this.deathPoint.y; myMover.down = (myMover.up = (myMover.left = (myMover.right = 0))); }; if ((_arg1 is HBPlatformEntity)){ if (((!((_arg1 as HBPlatformEntity).isInvincible)) && (!((_arg1 as HBPlatformEntity).isDead)))){ _local3 = (_arg1 as HBPlatformEntity); if ((PBE.processManager.virtualTime - _local3.lastHitTime) > _local3.lastHitDelay){ _local4 = (_local3.owner.lookupComponentByName("Health") as HealthComponent); _local4.damage(damageAmount, null); if (((_local4) && (_local4.isDead))){ _local3.solid = false; _local3.deathTime = PBE.processManager.virtualTime; if (_local3.isPlayer){ PBE.processManager.schedule(1000, this, retry); }; if (_local3.stateMachine.stateMachine.currentStateName != "Explode"){ _local3.Explode(); _local3.gravity.y = 0; if (_local3.stateMachine.stateMachine.getState("Explode") != null){ if (_local3.stateMachine.stateMachine.currentStateName != "Explode"){ _local3.stateMachine.stateMachine.setCurrentState("Explode"); }; } else { PBE.processManager.schedule(10, _local3, _local3.owner.destroy); _local3.owner.eventDispatcher.dispatchEvent(new Event("Die")); if (GameData.sfx_on){ _local3.owner.eventDispatcher.dispatchEvent(new Event("Die_Sound")); }; }; }; } else { if ((_arg1 is HBPlatformEntity)){ if (!(_arg1 as HBPlatformEntity).isInvincible){ _local3.stateMachine.stateMachine.setCurrentState("Hit"); _local3.owner.eventDispatcher.dispatchEvent(new Event("Hit")); if (GameData.sfx_on){ _local3.owner.eventDispatcher.dispatchEvent(new Event("Hit_Sound")); }; }; }; }; _local3.lastHitTime = PBE.processManager.virtualTime; _local3.lastHitDelay = hitDelay; }; }; if (((!((stateMachine.stateMachine.currentStateName == "Explode"))) && (explodeOnImpact))){ stateMachine.stateMachine.setCurrentState("Explode"); }; }; } } }//package com.halfbot.platformer.Entity
Section 165
//HBSpawnBaseEntity (com.halfbot.platformer.Entity.HBSpawnBaseEntity) package com.halfbot.platformer.Entity { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.utils.*; import com.pblabs.components.basic.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.States.*; import com.halfbot.platformer.Component.*; public class HBSpawnBaseEntity extends HBPlatformEntity { public var spawning:ObjectType; public var numberSpawned:int;// = 0 protected var maxSpawnCount:int;// = 3 public var relativeDistance:int;// = 100 public var relativeTo:String; public var spawnOffset:Point; protected var lastSpawnTime:int;// = 0 public var keepRelativePosition:Boolean;// = false public var spawnTimeDelay:Number;// = 10 public function HBSpawnBaseEntity(){ spawnOffset = new Point(0, 0); super(); } override protected function onRemove():void{ super.onRemove(); owner.eventDispatcher.removeEventListener("SpawnEnemy", onSpawn); trace("Spawn base entity removed"); } override protected function onAdd():void{ super.onAdd(); owner.eventDispatcher.addEventListener("SpawnEnemy", onSpawn); } public function canSpawn():Boolean{ return (((((((spawnTimeDelay * 1000) < (PBE.processManager.virtualTime - lastSpawnTime))) && ((numberSpawned < maxSpawnCount)))) && (!((stateMachine.stateMachine.currentStateName == "Explode"))))); } public function isRemovedFromWorld(_arg1:HBPlatformEntity):void{ numberSpawned--; } public function onSpawn(_arg1:Event):void{ PBE.processManager.callLater(delaySpawn); lastSpawnTime = PBE.processManager.virtualTime; } override public function setupStatesAndTransitions():void{ stateMachine.stateMachine.addState("Hit", new HBPlatformHitState()); stateMachine.stateMachine.addState("Explode", new HBPlatformExplodeState()); stateMachine.stateMachine.addState("Spawn", new HBPlatformSpawnSpawnState()); stateMachine.stateMachine.addState("Idle", new HBPlatformSpawnIdleState()); stateMachine.stateMachine.setCurrentState("Idle"); } override public function onTick(_arg1:Number):void{ var _local2:HBPlatformCharacterEntity; super.onTick(_arg1); if (canSpawn()){ owner.eventDispatcher.dispatchEvent(new Event("SpawnEnemy")); if (((!((stateMachine.stateMachine.currentStateName == "Spawn"))) && (this.animationIsDone))){ stateMachine.stateMachine.setCurrentState("Spawn"); }; }; if (keepRelativePosition){ _local2 = (PBE.nameManager.lookupComponentByName(relativeTo, "Spatial") as HBPlatformCharacterEntity); if (_local2){ position.x = (_local2.position.x + relativeDistance); }; }; if (((((!((stateMachine.stateMachine.currentStateName == "Idle"))) && (!((stateMachine.stateMachine.currentStateName == "Explode"))))) && (this.animationIsDone))){ stateMachine.stateMachine.setCurrentState("Idle"); }; } public function delaySpawn():void{ var _local1:Array = spawning.typeNames; var _local2:String = _local1[Math.random()]; var _local3:int = (Math.round((Math.random() * ((_local1.length - 1) - 0))) + 0); numberSpawned++; var _local4:IEntity = PBE.makeEntity(_local1[_local3], {@Spatial.position:new Point((position.x + spawnOffset.x), (position.y + spawnOffset.y))}); var _local5:HBPlatformEntity = (_local4.lookupComponentByName("Spatial") as HBPlatformEntity); var _local6:BitmapRenderer = (_local4.lookupComponentByName("Render") as BitmapRenderer); var _local7:HBCharacterBaseAiComponent = (_local4.lookupComponentByName("Mover") as HBCharacterBaseAiComponent); _local7.setState(HBCharacterBaseAiComponent.STATE_SPAWN_WALK); _local6.alpha = 0; if (_local5){ _local5.spawningEntity = this; } else { numberSpawned--; }; } } }//package com.halfbot.platformer.Entity
Section 166
//HBPlatformBounceState (com.halfbot.platformer.States.HBPlatformBounceState) package com.halfbot.platformer.States { import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformBounceState extends BasicState { private var entity:IEntity; private var mySpacial:HBPlatformEntity; protected var lastChangeTime:int;// = 0 private var myMover:HBBaseMovementComponent; private var bounceDirection:int;// = 1 private var spr:SpriteSheetRenderer; public var changeTime:Number;// = 0.5 override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; if (!myMover){ myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); }; if (!mySpacial){ mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); }; if (((!(myMover)) || (!(mySpacial)))){ return; }; if (changeDirection()){ bounceDirection = (bounceDirection * -1); mySpacial.velocity.y = (bounceDirection * 0.5); lastChangeTime = PBE.processManager.virtualTime; }; updateVerticalInertia(); } public function changeDirection():Boolean{ return (((changeTime * 1000) < (PBE.processManager.virtualTime - lastChangeTime))); } override public function enter(_arg1:IMachine):void{ var _local2:IEntity = (_arg1.propertyBag as IEntity); if (!_local2){ throw (new Error("Cannot set idle state to non-entity")); }; var _local3:AnimatorComponent = (_local2.lookupComponentByName("Animation") as AnimatorComponent); _local3.play("Idle"); } public function updateVerticalInertia():void{ var _local1:int = (myMover.down - myMover.up); if (!spr){ spr = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); }; if ((((mySpacial.velocity.y > 0)) && ((_local1 <= 0)))){ mySpacial.velocity.y = Math.max(0, (mySpacial.velocity.y * mySpacial.slowdown)); } else { if ((((mySpacial.velocity.y < 0)) && ((_local1 >= 0)))){ mySpacial.velocity.y = Math.min(0, (mySpacial.velocity.y * mySpacial.slowdown)); }; }; } } }//package com.halfbot.platformer.States
Section 167
//HBPlatformChargeState (com.halfbot.platformer.States.HBPlatformChargeState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformChargeState extends BasicState { private var lastAnimNotIdle:Boolean;// = false private var entity:IEntity; private var mySpacial:HBPlatformEntity; private var anim:AnimatorComponent; private var myMover:HBBaseMovementComponent; private var spr:SpriteSheetRenderer; override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set idle state to non-entity")); }; mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); anim = (entity.lookupComponentByName("Animation") as AnimatorComponent); spr = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); if (mySpacial){ mySpacial.animationIsDone = false; }; lastAnimNotIdle = false; anim.play("StartCharge"); } override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; if (!mySpacial){ mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); }; if (!mySpacial){ return; }; if (!spr){ spr = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); }; if (!anim){ anim = (entity.lookupComponentByName("Animation") as AnimatorComponent); }; if (!anim.animations["StartCharge"].isAnimating){ entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); }; } } }//package com.halfbot.platformer.States
Section 168
//HBPlatformDanceLvlComplete (com.halfbot.platformer.States.HBPlatformDanceLvlComplete) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformDanceLvlComplete extends BasicState { private var entity:IEntity; private var callLevelDone:Boolean;// = false private var mySpacial:HBPlatformEntity; private var anim:AnimatorComponent; private var myMover:HBBaseMovementComponent; private var alreadyCalledLevelDone:Boolean;// = false override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set Hit state to non-entity")); }; anim = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); entity.eventDispatcher.dispatchEvent(new Event("Dance")); if (GameData.sfx_on){ entity.eventDispatcher.dispatchEvent(new Event("Dance_Sound")); }; if (((mySpacial) && (mySpacial.reactsToHit))){ mySpacial.velocity.x = 0; }; anim.play("Dance"); } } }//package com.halfbot.platformer.States
Section 169
//HBPlatformDuckState (com.halfbot.platformer.States.HBPlatformDuckState) package com.halfbot.platformer.States { import com.pblabs.engine.entity.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; public class HBPlatformDuckState extends BasicState { private var entity:IEntity; private var mySpacial:HBPlatformEntity; override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set Explode state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); _local2.play("Duck"); } override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (34 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = 1; }; } } }//package com.halfbot.platformer.States
Section 170
//HBPlatformExplodeState (com.halfbot.platformer.States.HBPlatformExplodeState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.*; public class HBPlatformExplodeState extends BasicState { private var explodeDownCalled:Boolean;// = false private var entity:IEntity; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; private var explodeUpCalled:Boolean;// = false private var explodeCalled:Boolean;// = false override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set Explode state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); mySpacial.velocity.x = (mySpacial.velocity.y = 0); entity.eventDispatcher.dispatchEvent(new Event("Die")); if (GameData.sfx_on){ entity.eventDispatcher.dispatchEvent(new Event("Die_Sound")); }; entity.eventDispatcher.dispatchEvent(new Event("Explode")); if (GameData.sfx_on){ entity.eventDispatcher.dispatchEvent(new Event("Explode_Sound")); }; if (mySpacial){ mySpacial.animationIsDone = false; }; if (((myMover) && ((((myMover.left == 1)) || ((myMover.right == 1)))))){ _local2.play("Explode"); } else { if (((((myMover) && (myMover.up))) && (!((_local2.animations["ExplodeUp"] == null))))){ _local2.play("ExplodeUp"); explodeUpCalled = true; } else { if (((((myMover) && (myMover.down))) && (!((_local2.animations["ExplodeDown"] == null))))){ _local2.play("ExplodeDown"); explodeDownCalled = true; } else { _local2.play("Explode"); }; }; }; if (myMover){ myMover.left = (myMover.right = (myMover.down = (myMover.up = 0))); }; } private function onDestroy():void{ PBE.processManager.schedule(200, entity, mySpacial.owner.destroy); } override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); if (((((((!(explodeUpCalled)) && (!(explodeDownCalled)))) && (_local2.animations["Explode"]))) && (!(_local2.animations["Explode"].isAnimating)))){ if (((((mySpacial) && (!(mySpacial.keepAfterExplode)))) && (!(explodeCalled)))){ PBE.processManager.callLater(onDestroy); explodeCalled = true; }; } else { if (((((explodeDownCalled) && (_local2.animations["ExplodeDown"]))) && (!(_local2.animations["ExplodeDown"].isAnimating)))){ if (((((mySpacial) && (!(mySpacial.keepAfterExplode)))) && (!(explodeCalled)))){ PBE.processManager.callLater(onDestroy); explodeCalled = true; }; } else { if (((((explodeUpCalled) && (_local2.animations["ExplodeUp"]))) && (!(_local2.animations["ExplodeUp"].isAnimating)))){ if (((((mySpacial) && (!(mySpacial.keepAfterExplode)))) && (!(explodeCalled)))){ PBE.processManager.callLater(onDestroy); explodeCalled = true; }; }; }; }; } } }//package com.halfbot.platformer.States
Section 171
//HBPlatformHitFlyingState (com.halfbot.platformer.States.HBPlatformHitFlyingState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.*; public class HBPlatformHitFlyingState extends BasicState { private var entity:IEntity; private var mySpacial:HBPlatformEntity; private var anim:AnimatorComponent; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ var _local2:int; entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; if (myMover){ _local2 = (myMover.right - myMover.left); if ((((mySpacial.velocity.x > 0)) && ((_local2 <= 0)))){ mySpacial.velocity.x = Math.max(0, (mySpacial.velocity.x * mySpacial.slowdown)); } else { if ((((mySpacial.velocity.x < 0)) && ((_local2 >= 0)))){ mySpacial.velocity.x = Math.min(0, (mySpacial.velocity.x * mySpacial.slowdown)); }; }; }; if (!anim){ anim = (entity.lookupComponentByName("Animation") as AnimatorComponent); }; if (!anim.animations["Hit"].isAnimating){ if (((mySpacial) && (mySpacial.reactsToHit))){ PBE.processManager.schedule(200, this, onDoneAnim); } else { entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); }; }; } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set Hit state to non-entity")); }; anim = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); entity.eventDispatcher.dispatchEvent(new Event("Hit")); if (GameData.sfx_on){ entity.eventDispatcher.dispatchEvent(new Event("Hit_Sound")); }; if (mySpacial){ mySpacial.animationIsDone = false; mySpacial.onHit(); }; anim.play("Hit"); } public function onDoneAnim():void{ entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); } } }//package com.halfbot.platformer.States
Section 172
//HBPlatformHitState (com.halfbot.platformer.States.HBPlatformHitState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.*; public class HBPlatformHitState extends BasicState { private var entity:IEntity; private var mySpacial:HBPlatformEntity; private var anim:AnimatorComponent; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ var _local2:int; entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; if (myMover){ _local2 = (myMover.right - myMover.left); if ((((mySpacial.velocity.x > 0)) && ((_local2 <= 0)))){ mySpacial.velocity.x = Math.max(0, (mySpacial.velocity.x * mySpacial.slowdown)); } else { if ((((mySpacial.velocity.x < 0)) && ((_local2 >= 0)))){ mySpacial.velocity.x = Math.min(0, (mySpacial.velocity.x * mySpacial.slowdown)); }; }; }; if (!anim){ anim = (entity.lookupComponentByName("Animation") as AnimatorComponent); }; if (Math.abs(mySpacial.velocity.y) > mySpacial.maxVertSpeed){ mySpacial.velocity.y = (mySpacial.velocity.y * mySpacial.slowdownHoriz); }; if (!anim.animations["Hit"].isAnimating){ if (((mySpacial) && (mySpacial.reactsToHit))){ if (mySpacial.onGround){ PBE.processManager.schedule(200, this, onDoneAnim); }; } else { entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); }; }; } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set Hit state to non-entity")); }; anim = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); entity.eventDispatcher.dispatchEvent(new Event("Hit")); if (GameData.sfx_on){ entity.eventDispatcher.dispatchEvent(new Event("Hit_Sound")); }; if (mySpacial){ mySpacial.animationIsDone = false; mySpacial.onHit(); }; if (((mySpacial) && (mySpacial.reactsToHit))){ mySpacial.velocity.x = (-(mySpacial.faceing) * 5); mySpacial.velocity.y = -5; }; anim.play("Hit"); } public function onDoneAnim():void{ entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); } } }//package com.halfbot.platformer.States
Section 173
//HBPlatformIdleState (com.halfbot.platformer.States.HBPlatformIdleState) package com.halfbot.platformer.States { import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformIdleState extends BasicState { private var lastAnimNotIdle:Boolean;// = false private var entity:IEntity; private var mySpacial:HBPlatformEntity; private var anim:AnimatorComponent; private var myMover:HBBaseMovementComponent; private var spr:SpriteSheetRenderer; public function updateHorizontalInertia():void{ if (!entity){ return; }; var _local1:int = (myMover.right - myMover.left); if (!spr){ spr = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); }; } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set idle state to non-entity")); }; anim = (entity.lookupComponentByName("Animation") as AnimatorComponent); if (((!((myMover == null))) && ((myMover.down_alt == 1)))){ lastAnimNotIdle = true; anim.play("Idle_Down"); } else { if (((!((myMover == null))) && ((myMover.up == 1)))){ lastAnimNotIdle = true; anim.play("Idle_Up"); } else { lastAnimNotIdle = false; anim.play("Idle"); }; }; } override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; if (!myMover){ myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); }; if (!mySpacial){ mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); }; if (((!(myMover)) || (!(mySpacial)))){ return; }; if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (34 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = 2; }; if (!anim){ anim = (entity.lookupComponentByName("Animation") as AnimatorComponent); }; if (((!((myMover == null))) && ((myMover.down_alt == 1)))){ lastAnimNotIdle = true; anim.play("Idle_Down"); } else { if (((!((myMover == null))) && ((myMover.up == 1)))){ lastAnimNotIdle = true; anim.play("Idle_Up"); if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (-1 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = -27; }; } else { if (lastAnimNotIdle){ lastAnimNotIdle = false; anim.play("Idle"); }; }; }; updateHorizontalInertia(); } } }//package com.halfbot.platformer.States
Section 174
//HBPlatformJumpState (com.halfbot.platformer.States.HBPlatformJumpState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import flash.geom.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformJumpState extends BasicState { private var entity:IEntity; private var mySpacial:HBPlatformCharacterEntity; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformCharacterEntity); if (((!(myMover)) || (!(mySpacial)))){ return; }; updateJumpInertia(); updateHorizontalInertia(); var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); if ((((mySpacial.velocity.y < 0)) && (!((myMover.down == 1))))){ _local2.play("JumpUp"); if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (32 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = 0; }; } else { if (((!((myMover.down == 1))) && (!((myMover.up == 1))))){ _local2.play("JumpDown"); if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (32 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = 0; }; } else { if (myMover.up == 1){ _local2.play("ShootUp"); if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (-1 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = -27; }; } else { _local2.play("ShootDown"); if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (13 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = 38; }; }; }; }; if (((mySpacial.onGround) || (((mySpacial.airJumpRechargeOnWall) && (!((mySpacial.onWall == 0))))))){ mySpacial.airJumpsAvailable = mySpacial.airJumpCapacity; }; } public function updateHorizontalInertia():void{ var _local1:SpriteSheetRenderer; var _local2:int = (myMover.right - myMover.left); _local1 = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); mySpacial.velocity.x = (mySpacial.velocity.x + ((_local2 * mySpacial.horizAccel) * mySpacial.airControl)); if (mySpacial.velocity.x > (mySpacial.maxHorizSpeed * mySpacial.airControl)){ mySpacial.velocity.x = (mySpacial.maxHorizSpeed * mySpacial.airControl); }; if (mySpacial.velocity.x < (-(mySpacial.maxHorizSpeed) * mySpacial.airControl)){ mySpacial.velocity.x = (-(mySpacial.maxHorizSpeed) * mySpacial.airControl); }; if (((!((mySpacial.onWall == 0))) && ((mySpacial.velocity.y > 0)))){ mySpacial.velocity.y = (mySpacial.velocity.y * mySpacial.wallSlideSlowdown); }; if (Math.abs(mySpacial.velocity.y) > mySpacial.maxVertSpeed){ mySpacial.velocity.y = (mySpacial.velocity.y * mySpacial.slowdownHoriz); }; if (mySpacial.velocity.x != 0){ _local1.scale = new Point((((((!(mySpacial.spriteFlipX)) && ((mySpacial.velocity.x < 0)))) || (((mySpacial.spriteFlipX) && ((mySpacial.velocity.x >= 0)))))) ? -1 : 1, _local1.scale.y); mySpacial.faceing = _local1.scale.x; }; } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set idle state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); _local2.play("JumpUp"); } public function updateJumpInertia():void{ if (myMover.jump != myMover.lastjump){ if (myMover.jump){ if (mySpacial.onGround){ entity.eventDispatcher.dispatchEvent(new Event("Jump")); if (GameData.sfx_on){ entity.eventDispatcher.dispatchEvent(new Event("Jump_Sound")); }; mySpacial.velocity.y = (mySpacial.velocity.y - mySpacial.jumpSpeed); } else { if ((((mySpacial.airJumpsAvailable > 0)) || ((mySpacial.airJumpCapacity == -1)))){ entity.eventDispatcher.dispatchEvent(new Event("AirJump")); if (GameData.sfx_on){ entity.eventDispatcher.dispatchEvent(new Event("AirJump_Sound")); }; if (mySpacial.velocity.y > 0){ mySpacial.velocity.y = 0; }; mySpacial.velocity.y = (mySpacial.velocity.y - (mySpacial.jumpSpeed * mySpacial.airJumpFactor)); mySpacial.velocity.x = (mySpacial.velocity.x * mySpacial.airJumpHorizSlowdown); mySpacial.airJumpsAvailable--; }; }; } else { if (mySpacial.velocity.y < 0){ mySpacial.velocity.y = (mySpacial.velocity.y * 0.5); }; }; }; } } }//package com.halfbot.platformer.States
Section 175
//HBPlatformMoveDownState (com.halfbot.platformer.States.HBPlatformMoveDownState) package com.halfbot.platformer.States { import com.pblabs.engine.entity.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformMoveDownState extends HBPlatformMoveUpState { private var entity:IEntity; private var myMover:HBBaseMovementComponent; private var mySpacial:HBPlatformEntity; override public function enter(_arg1:IMachine):void{ var _local2:IEntity = (_arg1.propertyBag as IEntity); if (!_local2){ throw (new Error("Cannot set idle state to non-entity")); }; var _local3:AnimatorComponent = (_local2.lookupComponentByName("Animation") as AnimatorComponent); _local3.play("MoveDown"); } } }//package com.halfbot.platformer.States
Section 176
//HBPlatformMoveDuckState (com.halfbot.platformer.States.HBPlatformMoveDuckState) package com.halfbot.platformer.States { import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformMoveDuckState extends HBPlatformMoveState { private var entity:IEntity; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ Logger.print(this, "Entity null"); return; }; myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (34 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = 1; }; if (((!(myMover)) || (!(mySpacial)))){ return; }; updateHorizontalInertia(); } override public function updateHorizontalInertia():void{ var _local1:SpriteSheetRenderer; if (!entity){ Logger.print(this, "Seems to be nill"); return; }; var _local2:int = (myMover.right - myMover.left); _local1 = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); if ((((mySpacial.velocity.x > 0)) && ((_local2 <= 0)))){ mySpacial.velocity.x = Math.max(0, (mySpacial.velocity.x * mySpacial.slowdown)); } else { if ((((mySpacial.velocity.x < 0)) && ((_local2 >= 0)))){ mySpacial.velocity.x = Math.min(0, (mySpacial.velocity.x * mySpacial.slowdown)); }; }; if (_local2 != 0){ mySpacial.velocity.x = (mySpacial.velocity.x + ((_local2 * mySpacial.horizAccel) / 2)); if (mySpacial.velocity.x > mySpacial.maxDuckHorizSpeed){ mySpacial.velocity.x = mySpacial.maxDuckHorizSpeed; }; if (mySpacial.velocity.x < -(mySpacial.maxDuckHorizSpeed)){ mySpacial.velocity.x = -(mySpacial.maxDuckHorizSpeed); }; }; if (mySpacial.velocity.x != 0){ _local1.scale = new Point((((((!(mySpacial.spriteFlipX)) && ((mySpacial.velocity.x < 0)))) || (((mySpacial.spriteFlipX) && ((mySpacial.velocity.x >= 0)))))) ? -1 : 1, _local1.scale.y); mySpacial.faceing = _local1.scale.x; }; } override public function enter(_arg1:IMachine):void{ var _local2:IEntity = (_arg1.propertyBag as IEntity); if (!_local2){ throw (new Error("Cannot set idle state to non-entity")); }; myMover = (_local2.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (_local2.lookupComponentByName("Spatial") as HBPlatformEntity); var _local3:AnimatorComponent = (_local2.lookupComponentByName("Animation") as AnimatorComponent); _local3.play("MoveDuck"); } } }//package com.halfbot.platformer.States
Section 177
//HBPlatformMoveState (com.halfbot.platformer.States.HBPlatformMoveState) package com.halfbot.platformer.States { import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformMoveState extends BasicState { private var entity:IEntity; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; private var spr:SpriteSheetRenderer; override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ Logger.print(this, "Entity null"); return; }; if (!myMover){ myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); }; if (!mySpacial){ mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); }; if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (34 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = 2; }; if (((!(myMover)) || (!(mySpacial)))){ return; }; updateHorizontalInertia(); } public function updateHorizontalInertia():void{ var _local1:int = (myMover.right - myMover.left); var _local2:int = (myMover.down - myMover.up); if (!spr){ spr = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); }; if ((((mySpacial.velocity.x > 0)) && ((_local1 <= 0)))){ mySpacial.velocity.x = Math.max(0, (mySpacial.velocity.x * mySpacial.slowdown)); } else { if ((((mySpacial.velocity.x < 0)) && ((_local1 >= 0)))){ mySpacial.velocity.x = Math.min(0, (mySpacial.velocity.x * mySpacial.slowdown)); }; }; if (_local1 != 0){ mySpacial.velocity.x = (mySpacial.velocity.x + (_local1 * mySpacial.horizAccel)); if (mySpacial.velocity.x > mySpacial.maxHorizSpeed){ mySpacial.velocity.x = mySpacial.maxHorizSpeed; }; if (mySpacial.velocity.x < -(mySpacial.maxHorizSpeed)){ mySpacial.velocity.x = -(mySpacial.maxHorizSpeed); }; }; if (((!((_local2 == 0))) && (!(((mySpacial as HBPlatformProjectileEntity) == null))))){ mySpacial.velocity.y = (mySpacial.velocity.y + (_local2 * mySpacial.horizAccel)); if (mySpacial.velocity.y > mySpacial.maxHorizSpeed){ mySpacial.velocity.y = mySpacial.maxHorizSpeed; }; if (mySpacial.velocity.y < -(mySpacial.maxHorizSpeed)){ mySpacial.velocity.y = -(mySpacial.maxHorizSpeed); }; }; if (!spr){ spr = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); }; if (mySpacial.velocity.x != 0){ spr.scale = new Point((((((!(mySpacial.spriteFlipX)) && ((mySpacial.velocity.x < 0)))) || (((mySpacial.spriteFlipX) && ((mySpacial.velocity.x >= 0)))))) ? -1 : 1, spr.scale.y); mySpacial.faceing = spr.scale.x; }; } override public function enter(_arg1:IMachine):void{ var _local2:IEntity = (_arg1.propertyBag as IEntity); if (!_local2){ throw (new Error("Cannot set idle state to non-entity")); }; if (!mySpacial){ mySpacial = (_local2.lookupComponentByName("Spatial") as HBPlatformEntity); }; if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (31 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = 2; }; var _local3:AnimatorComponent = (_local2.lookupComponentByName("Animation") as AnimatorComponent); _local3.play("Move"); } } }//package com.halfbot.platformer.States
Section 178
//HBPlatformMoveUpState (com.halfbot.platformer.States.HBPlatformMoveUpState) package com.halfbot.platformer.States { import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformMoveUpState extends BasicState { private var entity:IEntity; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ Logger.print(this, "Entity null"); return; }; myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); if (((!(myMover)) || (!(mySpacial)))){ return; }; updateHorizontalInertia(); } public function updateHorizontalInertia():void{ var _local1:SpriteSheetRenderer; var _local2:int = (myMover.down - myMover.up); _local1 = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); if ((((mySpacial.velocity.y > 0)) && ((_local2 <= 0)))){ mySpacial.velocity.y = Math.max(0, (mySpacial.velocity.y * mySpacial.slowdown)); } else { if ((((mySpacial.velocity.y < 0)) && ((_local2 >= 0)))){ mySpacial.velocity.y = Math.min(0, (mySpacial.velocity.y * mySpacial.slowdown)); }; }; if (_local2 != 0){ mySpacial.velocity.y = (mySpacial.velocity.y + (_local2 * mySpacial.horizAccel)); if (mySpacial.velocity.y > mySpacial.maxHorizSpeed){ mySpacial.velocity.y = mySpacial.maxHorizSpeed; }; if (mySpacial.velocity.y < -(mySpacial.maxHorizSpeed)){ mySpacial.velocity.y = -(mySpacial.maxHorizSpeed); }; }; } override public function enter(_arg1:IMachine):void{ var _local2:IEntity = (_arg1.propertyBag as IEntity); if (!_local2){ throw (new Error("Cannot set idle state to non-entity")); }; var _local3:AnimatorComponent = (_local2.lookupComponentByName("Animation") as AnimatorComponent); _local3.play("MoveUp"); } } }//package com.halfbot.platformer.States
Section 179
//HBPlatformPickupState (com.halfbot.platformer.States.HBPlatformPickupState) package com.halfbot.platformer.States { import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.*; import flash.geom.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformPickupState extends BasicState { private var myRender:BitmapRenderer; private var entity:IEntity; private var mySpacial:HBPlatformItemPickup; protected var lastChangeTime:int;// = 0 private var myMover:HBBaseMovementComponent; private var bounceDirection:int;// = -1 private var spr:SpriteSheetRenderer; public var changeTime:Number;// = 0.5 override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; if (!myMover){ myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); }; if (myRender){ myRender.alpha = (myRender.alpha - 0.05); myRender.scale = new Point((myRender.scale.x + 0.025), (myRender.scale.y + 0.025)); }; if (((!(myMover)) || (!(mySpacial)))){ return; }; updateVerticalInertia(); } public function changeDirection():Boolean{ return (((changeTime * 1000) < (PBE.processManager.virtualTime - lastChangeTime))); } override public function enter(_arg1:IMachine):void{ var _local2:IEntity = (_arg1.propertyBag as IEntity); if (!_local2){ throw (new Error("Cannot set idle state to non-entity")); }; mySpacial = (_local2.lookupComponentByName("Spatial") as HBPlatformItemPickup); myRender = (_local2.lookupComponentByName("Render") as BitmapRenderer); myRender.blendMode = BlendMode.INVERT; if (mySpacial){ mySpacial.velocity.y = (bounceDirection * 4); }; mySpacial.gravity.y = 0; mySpacial.solid = false; mySpacial.hasBeenPickedup = true; } public function updateVerticalInertia():void{ var _local1:int = (myMover.down - myMover.up); if (!spr){ spr = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); }; if ((((mySpacial.velocity.y > 0)) && ((_local1 <= 0)))){ mySpacial.velocity.y = Math.max(0, (mySpacial.velocity.y * mySpacial.slowdown)); } else { if ((((mySpacial.velocity.y < 0)) && ((_local1 >= 0)))){ mySpacial.velocity.y = Math.min(0, (mySpacial.velocity.y * mySpacial.slowdown)); }; }; } } }//package com.halfbot.platformer.States
Section 180
//HBPlatformPickupState2 (com.halfbot.platformer.States.HBPlatformPickupState2) package com.halfbot.platformer.States { import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformPickupState2 extends BasicState { private var myRender:SpriteSheetRenderer; private var entity:IEntity; private var mySpacial:HBPlatformEntity; protected var lastChangeTime:int;// = 0 private var myMover:HBBaseMovementComponent; private var bounceDirection:int;// = -1 private var spr:SpriteSheetRenderer; public var changeTime:Number;// = 8.5 override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; if (!myMover){ myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); }; if (!mySpacial){ mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); mySpacial.velocity.y = (bounceDirection * 4); lastChangeTime = PBE.processManager.virtualTime; }; if (!myRender){ myRender = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); } else { myRender.alpha = (myRender.alpha - 0.05); }; if (((!(myMover)) || (!(mySpacial)))){ return; }; if (changeDirection()){ entity.destroy(); }; updateVerticalInertia(); } public function changeDirection():Boolean{ return (((changeTime * 1000) < (PBE.processManager.virtualTime - lastChangeTime))); } override public function enter(_arg1:IMachine):void{ var _local2:IEntity = (_arg1.propertyBag as IEntity); if (!_local2){ throw (new Error("Cannot set idle state to non-entity")); }; var _local3:AnimatorComponent = (_local2.lookupComponentByName("Animation") as AnimatorComponent); _local3.play("Idle"); } public function updateVerticalInertia():void{ var _local1:int = (myMover.down - myMover.up); if (!spr){ spr = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); }; if ((((mySpacial.velocity.y > 0)) && ((_local1 <= 0)))){ mySpacial.velocity.y = Math.max(0, (mySpacial.velocity.y * mySpacial.slowdown)); } else { if ((((mySpacial.velocity.y < 0)) && ((_local1 >= 0)))){ mySpacial.velocity.y = Math.min(0, (mySpacial.velocity.y * mySpacial.slowdown)); }; }; } } }//package com.halfbot.platformer.States
Section 181
//HBPlatformPulseState (com.halfbot.platformer.States.HBPlatformPulseState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.*; public class HBPlatformPulseState extends BasicState { private var entity:IEntity; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; private var explodeCalled:Boolean;// = false override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); if (((_local2.animations["Pulse"]) && (!(_local2.animations["Pulse"].isAnimating)))){ if (((mySpacial) && (!(explodeCalled)))){ PBE.processManager.callLater(onDestroy); explodeCalled = true; }; }; } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set Explode state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); mySpacial.velocity.x = (mySpacial.velocity.y = 0); if (myMover){ myMover.left = (myMover.right = (myMover.down = (myMover.up = 0))); }; if (mySpacial){ mySpacial.animationIsDone = false; }; _local2.play("Pulse"); trace("Set to pulse state"); } private function onDestroy():void{ mySpacial.Explode(); if (GameData.sfx_on){ mySpacial.owner.eventDispatcher.dispatchEvent(new Event("Die_Sound")); }; if (GameData.sfx_on){ mySpacial.owner.eventDispatcher.dispatchEvent(new Event("Explode_Sound")); }; PBE.processManager.schedule(10, entity, mySpacial.owner.destroy); } } }//package com.halfbot.platformer.States
Section 182
//HBPlatformShootDownState (com.halfbot.platformer.States.HBPlatformShootDownState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.Weapons.*; import com.halfbot.platformer.Component.*; public class HBPlatformShootDownState extends HBPlatformShootState { private var entity:IEntity; private var myWeapon:HBCharacterWeaponComponent; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); if (!_local2.animations["ShootDown"].isAnimating){ entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); }; updateHorizontalInertia(); } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set idle state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); myWeapon = (entity.lookupComponentByName("Weapon") as HBCharacterWeaponComponent); entity.eventDispatcher.dispatchEvent(new Event("ShootDown")); if (GameData.sfx_on){ if (myWeapon.fireAlt){ entity.eventDispatcher.dispatchEvent(new Event("Shoot_Sound_Alt")); } else { entity.eventDispatcher.dispatchEvent(new Event("Shoot_Sound")); }; }; if (Math.abs(mySpacial.velocity.y) > mySpacial.maxVertSpeed){ mySpacial.velocity.y = (mySpacial.velocity.y * mySpacial.slowdownHoriz); }; mySpacial.animationIsDone = false; mySpacial.velocity.y = (mySpacial.velocity.y - 4); _local2.play("ShootDown"); } } }//package com.halfbot.platformer.States
Section 183
//HBPlatformShootDownStateNoVel (com.halfbot.platformer.States.HBPlatformShootDownStateNoVel) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.Weapons.*; import com.halfbot.platformer.Component.*; public class HBPlatformShootDownStateNoVel extends HBPlatformShootState { private var entity:IEntity; private var myWeapon:HBCharacterWeaponComponent; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); if (!_local2.animations["ShootDown"].isAnimating){ entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); }; updateHorizontalInertia(); } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set idle state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); myWeapon = (entity.lookupComponentByName("Weapon") as HBCharacterWeaponComponent); entity.eventDispatcher.dispatchEvent(new Event("ShootDown")); if (GameData.sfx_on){ if (myWeapon.fireAlt){ entity.eventDispatcher.dispatchEvent(new Event("Shoot_Sound_Alt")); } else { entity.eventDispatcher.dispatchEvent(new Event("Shoot_Sound")); }; }; mySpacial.animationIsDone = false; _local2.play("ShootDown"); } } }//package com.halfbot.platformer.States
Section 184
//HBPlatformShootDuckState (com.halfbot.platformer.States.HBPlatformShootDuckState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.Weapons.*; import com.halfbot.platformer.Component.*; public class HBPlatformShootDuckState extends HBPlatformShootState { private var entity:IEntity; private var myWeapon:HBCharacterWeaponComponent; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; if (((mySpacial) && ((mySpacial as HBPlatformEntity).isPlayer))){ (mySpacial as HBPlatformEntity).chargeoffsetX = (35 * (mySpacial as HBPlatformEntity).faceing); (mySpacial as HBPlatformEntity).chargeoffsetY = 0; }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); if (!_local2.animations["ShootDuck"].isAnimating){ entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); }; } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set idle state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); myWeapon = (entity.lookupComponentByName("Weapon") as HBCharacterWeaponComponent); entity.eventDispatcher.dispatchEvent(new Event("ShootDuck")); if (GameData.sfx_on){ if (myWeapon.fireAlt){ entity.eventDispatcher.dispatchEvent(new Event("Shoot_Sound_Alt")); } else { entity.eventDispatcher.dispatchEvent(new Event("Shoot_Sound")); }; }; mySpacial.animationIsDone = false; _local2.play("ShootDuck"); } } }//package com.halfbot.platformer.States
Section 185
//HBPlatformShootState (com.halfbot.platformer.States.HBPlatformShootState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.Weapons.*; import com.halfbot.platformer.Component.*; public class HBPlatformShootState extends BasicState { private var entity:IEntity; private var myWeapon:HBCharacterWeaponComponent; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); if (((!(entity)) || (!(mySpacial)))){ return; }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); if (((((!(_local2.animations["Shoot"].isAnimating)) && (mySpacial.onGround))) || (((((!(_local2.animations["Shoot"].isAnimating)) && (!(mySpacial.onGround)))) && (!(_local2.hasOwnProperty("ShootJump"))))))){ entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); }; if (((((_local2.hasOwnProperty("ShootJump")) && (!(_local2.animations["ShootJump"].isAnimating)))) && (!(mySpacial.onGround)))){ entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); }; updateHorizontalInertia(); } public function updateHorizontalInertia():void{ if (!entity){ return; }; var _local1:SpriteSheetRenderer = (entity.lookupComponentByName("Render") as SpriteSheetRenderer); _local1.scale = new Point((((((!(mySpacial.spriteFlipX)) && ((mySpacial.faceing < 0)))) || (((mySpacial.spriteFlipX) && ((mySpacial.faceing >= 0)))))) ? -1 : 1, _local1.scale.y); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); if (((mySpacial) && (mySpacial.onGround))){ mySpacial.velocity.x = 0; }; var _local2:int = (myMover.right - myMover.left); if ((((mySpacial.velocity.x > 0)) && ((_local2 <= 0)))){ mySpacial.velocity.x = Math.max(0, (mySpacial.velocity.x * mySpacial.slowdown)); } else { if ((((mySpacial.velocity.x < 0)) && ((_local2 >= 0)))){ mySpacial.velocity.x = Math.min(0, (mySpacial.velocity.x * mySpacial.slowdown)); }; }; } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set idle state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); myWeapon = (entity.lookupComponentByName("Weapon") as HBCharacterWeaponComponent); entity.eventDispatcher.dispatchEvent(new Event("Shoot")); if (GameData.sfx_on){ if (myWeapon.fireAlt){ entity.eventDispatcher.dispatchEvent(new Event("Shoot_Sound_Alt")); } else { entity.eventDispatcher.dispatchEvent(new Event("Shoot_Sound")); }; }; mySpacial.animationIsDone = false; if (Math.abs(mySpacial.velocity.y) > mySpacial.maxVertSpeed){ mySpacial.velocity.y = (mySpacial.velocity.y * mySpacial.slowdownHoriz); }; if (((mySpacial.onGround) || (!(_local2.hasOwnProperty("ShootJump"))))){ _local2.play("Shoot"); } else { _local2.play("ShootJump"); }; } } }//package com.halfbot.platformer.States
Section 186
//HBPlatformShootUpState (com.halfbot.platformer.States.HBPlatformShootUpState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.system.Data.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.Weapons.*; import com.halfbot.platformer.Component.*; public class HBPlatformShootUpState extends HBPlatformShootState { private var entity:IEntity; private var myWeapon:HBCharacterWeaponComponent; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; if (mySpacial){ mySpacial.velocity.x = 0; }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); if (!_local2.animations["ShootUp"].isAnimating){ entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); }; updateHorizontalInertia(); } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set idle state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); myWeapon = (entity.lookupComponentByName("Weapon") as HBCharacterWeaponComponent); entity.eventDispatcher.dispatchEvent(new Event("ShootUp")); if (GameData.sfx_on){ if (myWeapon.fireAlt){ entity.eventDispatcher.dispatchEvent(new Event("Shoot_Sound_Alt")); } else { entity.eventDispatcher.dispatchEvent(new Event("Shoot_Sound")); }; }; mySpacial.animationIsDone = false; _local2.play("ShootUp"); } } }//package com.halfbot.platformer.States
Section 187
//HBPlatformSpawnIdleState (com.halfbot.platformer.States.HBPlatformSpawnIdleState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.halfbot.platformer.Component.Movers.*; public class HBPlatformSpawnIdleState extends BasicState { private var entity:IEntity; private var myMover:HBBaseMovementComponent; private var mySpacial:HBPlatformEntity; override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set Explode state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); entity.eventDispatcher.dispatchEvent(new Event("Idle")); _local2.play("Idle"); } override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; } } }//package com.halfbot.platformer.States
Section 188
//HBPlatformSpawnSpawnState (com.halfbot.platformer.States.HBPlatformSpawnSpawnState) package com.halfbot.platformer.States { import flash.events.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.Component.*; public class HBPlatformSpawnSpawnState extends BasicState { private var entity:IEntity; private var mySpacial:HBPlatformEntity; private var myMover:HBBaseMovementComponent; override public function tick(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ return; }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); if (!_local2.animations["Spawn"].isAnimating){ entity.eventDispatcher.dispatchEvent(new Event("CompletelyDoneAnimation")); }; } override public function enter(_arg1:IMachine):void{ entity = (_arg1.propertyBag as IEntity); if (!entity){ throw (new Error("Cannot set Explode state to non-entity")); }; var _local2:AnimatorComponent = (entity.lookupComponentByName("Animation") as AnimatorComponent); myMover = (entity.lookupComponentByName("Mover") as HBBaseMovementComponent); mySpacial = (entity.lookupComponentByName("Spatial") as HBPlatformEntity); mySpacial.velocity.x = (mySpacial.velocity.y = 0); entity.eventDispatcher.dispatchEvent(new Event("Spawn")); if (mySpacial){ mySpacial.animationIsDone = false; }; _local2.play("Spawn"); } private function onDestroy():void{ PBE.processManager.schedule(200, entity, mySpacial.owner.destroy); } } }//package com.halfbot.platformer.States
Section 189
//BulletPlatformController (com.halfbot.platformer.BulletPlatformController) package com.halfbot.platformer { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.rendering2D.*; import flash.geom.*; import com.hanclinto.platformer.*; import com.pblabs.components.basic.*; import com.pblabs.engine.*; public class BulletPlatformController extends PlatformObject { public var spriteIndexIdle:int;// = 0 public var direction:Number;// = 1 public var horizAccel:Number;// = 0.5 protected var _down:Number;// = 0 protected var _inputMap:InputMap; public var pixelsPerStep:Number;// = 15 public var spriteIndexJumpDown:int;// = 14 protected var isDying:Boolean;// = false protected var _right:Number;// = 0 protected var airJumpsAvailable:int;// = 0 public var spriteIndexWallSlideUp:int;// = 0 public var spriteIndexHurt:int;// = 4 public var spriteIndexRunEnd:int;// = 5 public var airControl:Number;// = 0.5 public var spriteIndexWallSlideDown:int;// = 0 public var spriteIndexRunStart:int;// = 0 public var spriteFlipX:Boolean;// = false protected var _up:Number;// = 0 protected var _action:Number;// = 0 public var spriteIndexJumpUp:int;// = 13 protected var deathTime:int;// = -1 protected var _left:Number;// = 0 protected var hitTriggers:Array; public var maxHorizSpeed:Number;// = 10 protected var hurtTime:int;// = -1 public function BulletPlatformController(){ _inputMap = new InputMap(); hitTriggers = new Array(); super(); } override public function onTick(_arg1:Number):void{ var _local2:Array; var _local3:SpriteSheetRenderer; var _local4:int; _local3 = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); if (isDying){ if (_local3 != null){ _local3.spriteIndex = spriteIndexHurt; _local3.scale = new Point(_local3.scale.x, -1); }; return; }; var _local5:int = _up; var _local6:int = _action; _left = (PBE.isKeyDown(InputKey.LEFT)) ? 1 : 0; _right = (PBE.isKeyDown(InputKey.RIGHT)) ? 1 : 0; _up = (PBE.isKeyDown(InputKey.SPACE)) ? 1 : 0; _down = (PBE.isKeyDown(InputKey.DOWN)) ? 1 : 0; _action = (PBE.isKeyDown(InputKey.UP)) ? 1 : 0; var _local7:int = direction; if (_local7 != 0){ if (onGround){ velocity.x = (velocity.x + (_local7 * horizAccel)); if (velocity.x > maxHorizSpeed){ velocity.x = maxHorizSpeed; }; if (velocity.x < -(maxHorizSpeed)){ velocity.x = -(maxHorizSpeed); }; } else { velocity.x = (velocity.x + ((_local7 * horizAccel) * airControl)); if (velocity.x > (maxHorizSpeed * airControl)){ velocity.x = (maxHorizSpeed * airControl); }; if (velocity.x < (-(maxHorizSpeed) * airControl)){ velocity.x = (-(maxHorizSpeed) * airControl); }; }; }; if (_local3 != null){ if (velocity.x != 0){ _local3.scale = new Point((((((!(spriteFlipX)) && ((velocity.x < 0)))) || (((spriteFlipX) && ((velocity.x >= 0)))))) ? -1 : 1, _local3.scale.y); }; if (this.manager.paused){ _local3.spriteIndex = spriteIndexIdle; }; if (_local3 != null){ _local3.spriteIndex = spriteIndexIdle; }; }; } protected function onBoppedEnemy(_arg1:Event):void{ owner.eventDispatcher.dispatchEvent(new Event("Hit")); if (velocity.y > 0){ velocity.y = 0; }; } override protected function onRemove():void{ super.onRemove(); owner.eventDispatcher.removeEventListener(HealthComponent.DIED, onDied); owner.eventDispatcher.removeEventListener(HealthComponent.DAMAGED, onDamaged); owner.eventDispatcher.removeEventListener("HitEnemy", onBoppedEnemy); } protected function get isHurt():Boolean{ return (false); } override protected function onAdd():void{ super.onAdd(); owner.eventDispatcher.addEventListener(HealthComponent.DIED, onDied); owner.eventDispatcher.addEventListener(HealthComponent.DAMAGED, onDamaged); owner.eventDispatcher.addEventListener("HitEnemy", onBoppedEnemy); } override public function handleTileMapBoundaryCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ var _local4:HealthComponent = (owner.lookupComponentByType(HealthComponent) as HealthComponent); if (_local4){ _local4.damage(_local4.health); }; PBE.processManager.schedule(100, this, this.owner.destroy); } override public function handleTileCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ var _local4:HealthComponent; if (_arg1.getTileFlags(_arg2, _arg3) > 0){ _local4 = (owner.lookupComponentByType(HealthComponent) as HealthComponent); if (_local4){ _local4.damage(_local4.health); }; PBE.processManager.schedule(1000, this, this.owner.destroy); }; } protected function onDied(_arg1:HealthEvent):void{ deathTime = PBE.processManager.virtualTime; isDying = true; solid = false; velocity.x = 0; } protected function onDamaged(_arg1:HealthEvent):void{ hurtTime = PBE.processManager.virtualTime; } } }//package com.halfbot.platformer
Section 190
//PlayerShootPlatformController (com.halfbot.platformer.PlayerShootPlatformController) package com.halfbot.platformer { import flash.events.*; import com.pblabs.engine.core.*; import flash.geom.*; import com.hanclinto.platformer.*; import com.pblabs.engine.*; public class PlayerShootPlatformController extends PlayerPlatformController { protected var _shoot:Number;// = 0 protected var uniqueId:Number;// = 1 protected var _shootEvent:String;// = "HeroShot Gun" protected var direction:Number;// = 1 override public function onTick(_arg1:Number):void{ super.onTick(_arg1); _shoot = (PBE.isKeyDown(InputKey.X)) ? 1 : 0; if ((((_shoot == 1)) && (isFacingRight()))){ PBE.processManager.callLater(onShootRight); } else { if ((((_shoot == 1)) && (!(isFacingRight())))){ PBE.processManager.callLater(onShootLeft); }; }; if (velocity.x != 0){ direction = (((((!(spriteFlipX)) && ((velocity.x < 0)))) || (((spriteFlipX) && ((velocity.x >= 0)))))) ? -1 : 1; }; } public function onShootLeft():void{ owner.eventDispatcher.dispatchEvent(new Event(_shootEvent)); PBE.makeEntity("bullet_1", {@Spatial.position:new Point(position.x, position.y), @Spatial.direction:-1}); } public function isFacingRight():Boolean{ return ((direction == 1)); } public function onShootRight():void{ owner.eventDispatcher.dispatchEvent(new Event(_shootEvent)); PBE.makeEntity("bullet_1", {@Spatial.position:new Point(position.x, position.y), @Spatial.direction:1}); } } }//package com.halfbot.platformer
Section 191
//GameData (com.halfbot.system.Data.GameData) package com.halfbot.system.Data { import com.hanclinto.platformer.*; import flash.media.*; import flash.net.*; public class GameData { public static var maxLevel:int = 1; public static var sharedObject:SharedObject; public static var currentLevel:int = 1; public static var firstSave:Boolean = false; public static var SCREEN_WIDTH:Number = 550; public static var sfx_on:Boolean = true; public static var SCREEN_HEIGHT:Number = 400; public static var currentLevelComplete:Boolean = false; public static var gameInstance:GameScreen; public static var musicController:SoundChannel; public static var paused:Boolean = false; public static var music_on:Boolean = true; public static var movement_paused:Boolean = false; public static function stop():void{ if (musicController){ musicController.stop(); }; } public static function saveData():void{ try { sharedObject.data.currentLevel = currentLevel; sharedObject.data.maxLevel = maxLevel; sharedObject.data.music_on = music_on; sharedObject.data.sfx_on = sfx_on; sharedObject.data.firstSave = firstSave; sharedObject.flush(); } catch(shardObjectError:Error) { trace("Failed to save data"); }; } public static function toggle_sfx_on():void{ sfx_on = !(sfx_on); saveData(); } public static function loadData():void{ try { currentLevel = sharedObject.data.currentLevel; maxLevel = sharedObject.data.maxLevel; music_on = sharedObject.data.music_on; sfx_on = sharedObject.data.sfx_on; firstSave = false; } catch(shardObjectError:Error) { trace("Failed to load data"); }; } public static function toggle_music_on():void{ music_on = !(music_on); if (music_on){ play(); } else { stop(); }; saveData(); } public static function initializeSaveData():void{ sharedObject = SharedObject.getLocal("idcip_saves"); firstSave = ((sharedObject.data.firstSave)==null) ? true : false; if (firstSave){ sharedObject.data.currentLevel = 1; sharedObject.data.maxLevel = 1; sharedObject.data.music_on = true; sharedObject.data.sfx_on = true; sharedObject.data.firstSave = false; sharedObject.flush(); trace("No Save Exists"); } else { loadData(); trace("Save Exists and loaded"); }; } public static function play():void{ var _local1:Class = GameData_theme2; var _local2:Sound = (new (_local1) as Sound); GameData.musicController = _local2.play(0, int.MAX_VALUE); var _local3:SoundTransform = new SoundTransform(); _local3.volume = 0.4; GameData.musicController.soundTransform = _local3; } } }//package com.halfbot.system.Data
Section 192
//GameData_theme2 (com.halfbot.system.Data.GameData_theme2) package com.halfbot.system.Data { import mx.core.*; public class GameData_theme2 extends SoundAsset { } }//package com.halfbot.system.Data
Section 193
//RepeatingRenderComponentAutoScroll (com.halfbot.system.Scroller.RepeatingRenderComponentAutoScroll) package com.halfbot.system.Scroller { import flash.display.*; import flash.geom.*; import com.hanclinto.platformer.*; import com.pblabs.engine.*; public class RepeatingRenderComponentAutoScroll extends RepeatingRenderComponent { public var addXnumber:Number;// = 0 public var autoScrollFactor:Number;// = 0.01 public function RepeatingRenderComponentAutoScroll():void{ updatePriority = -1; } override public function updateTransform(_arg1:Boolean=false):void{ if (!displayObject){ return; }; if (_arg1){ updateProperties(); }; addXnumber = (addXnumber + autoScrollFactor); var _local2:Number = _scale.x; var _local3:Number = _scale.y; _transformMatrix.identity(); _transformMatrix.scale(_local2, _local3); _transformMatrix.translate(((-(_registrationPoint.x) + addXnumber) * _local2), (-(_registrationPoint.y) * _local3)); _transformMatrix.rotate((PBUtil.getRadiansFromDegrees(_rotation) + _rotationOffset)); _transformMatrix.translate((_position.x + _positionOffset.x), (_position.y + _positionOffset.y)); displayObject.transform.matrix = _transformMatrix; displayObject.alpha = _alpha; displayObject.blendMode = _blendMode; displayObject.visible = (alpha > 0); _transformDirty = false; } override public function onFrame(_arg1:Number):void{ if (((!(spriteSheet)) || (!(spriteSheet.isLoaded)))){ return; }; if (!displayObject){ displayObject = new Sprite(); }; updateProperties(); if (_transformDirty){ updateTransform(); }; var _local2:Sprite = (displayObject as Sprite); var _local3:Matrix = new Matrix(); _local3.translate((scene.sceneViewBounds.left * (1 - scrollFactor.x)), (scene.sceneViewBounds.top * (1 - scrollFactor.y))); _local2.graphics.clear(); _local2.graphics.beginBitmapFill(spriteSheet.getFrame(0), _local3); _local2.graphics.drawRect((scene.sceneViewBounds.left - addXnumber), scene.sceneViewBounds.top, scene.sceneViewBounds.width, scene.sceneViewBounds.height); _local2.graphics.endFill(); } } }//package com.halfbot.system.Scroller
Section 194
//HBButton (com.halfbot.system.Ui.HBButton) package com.halfbot.system.Ui { import flash.events.*; import flash.display.*; import flash.text.*; public class HBButton extends Sprite { public var callback:Function;// = null public var textLabel:HBLabel; public var showTextLabel:Boolean;// = false public var image_normal:Bitmap;// = null private var alreadyAdded:Boolean;// = false public var image_label:Bitmap;// = null public var altImageActive:Boolean;// = false public var image_click:Bitmap;// = null public var parameter_id:int;// = -999 private var button:Sprite; public var label:String; public var image_normal_alt:Bitmap;// = null public var showdebug:Boolean;// = false public var image_over:Bitmap;// = null private var _labelStyle:TextFormat; public var showImageLabel:Boolean;// = false public function HBButton(){ button = new Sprite(); label = new String(); textLabel = new HBLabel(); _labelStyle = new TextFormat("Hud Font", 20, 0xFFFFFF); super(); this.visible = true; drawButton(); button.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); button.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); button.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } private function mouseOverHandler(_arg1:MouseEvent):void{ if (image_over){ image_over.visible = true; }; } public function toggleActive():void{ if (image_normal_alt){ image_normal.visible = !(image_normal.visible); image_normal_alt.visible = !(image_normal_alt.visible); }; } public function refresh():void{ drawButton(); cacheAsBitmap = true; } private function drawButton():void{ if (!image_normal){ button.graphics.clear(); button.graphics.beginFill(0xFF00FF); button.graphics.drawRoundRect(0, 0, 80, 25, 10, 10); button.graphics.endFill(); } else { image_normal.visible = true; addChild(image_normal); button.graphics.clear(); button.graphics.beginFill(0xFF00FF); button.graphics.drawRoundRect(0, 0, image_normal.width, image_normal.height, 10, 10); button.graphics.endFill(); button.alpha = 0.7; if (!showdebug){ button.alpha = 0; }; if (image_normal_alt){ image_normal_alt.visible = false; addChild(image_normal_alt); }; if (image_over){ image_over.alpha = 0.8; image_over.visible = false; addChild(image_over); }; }; if (showImageLabel){ image_label.visible = true; image_label.x = ((this.width / 2) - (image_label.width / 2)); image_label.y = ((this.height / 2) - (image_label.height / 2)); addChild(image_label); } else { if (showTextLabel){ textLabel.caption = label; textLabel.fontName = "Hud Font"; textLabel.fontSize = 16; textLabel.fontColor = 14862502; textLabel.fontAlign = TextFormatAlign.CENTER; textLabel.refresh(); addChild(textLabel); }; }; addChild(button); } private function mouseOutHandler(_arg1:MouseEvent):void{ if (image_over){ image_over.visible = false; }; } private function mouseDownHandler(_arg1:MouseEvent):void{ toggleActive(); if (callback != null){ if (parameter_id == -999){ callback(); } else { callback((MouseEvent as Event)); }; }; } public function disable():void{ if (image_normal_alt){ image_normal.visible = false; image_normal_alt.visible = true; }; } } }//package com.halfbot.system.Ui
Section 195
//HBLabel (com.halfbot.system.Ui.HBLabel) package com.halfbot.system.Ui { import com.pblabs.rendering2D.ui.*; public class HBLabel extends PBLabel { public var fontName:String;// = "Hud Font" public var fontEmbed:Boolean;// = true override public function refresh():void{ super.refresh(); _label.antiAliasType = "none"; _label.embedFonts = fontEmbed; _labelStyle.font = fontName; } } }//package com.halfbot.system.Ui
Section 196
//HB (com.halfbot.system.HB) package com.halfbot.system { public class HB { public static var COMPANY_URL_OUTBOUND:String = ""; public static var SponsorsLogo:Class = HB_SponsorsLogo; public static var SPONSOR_URL:String = "http://www.gamepirate.com"; public static var SCREEN_WIDTH:Number = 550; public static var IS_VIRAL:Boolean = true; public static var SPONSORED:Boolean = true; public static var SCREEN_HEIGHT:Number = 400; public static var GAMEPIRATES:Boolean = true; public static var LIBRARY_MINOR_VERSION:Number = 0; public static var COMPANY_URL:String = "http://www.halfbot.com"; public static var LIBRARY_MAJOR_VERSION:Number = 1; public static var DEBUG:Boolean = false; public static var SponsorsLogo2:Class = HB_SponsorsLogo2; public static var GAME_NAME:String = "IDCIP"; } }//package com.halfbot.system
Section 197
//HB_SponsorsLogo (com.halfbot.system.HB_SponsorsLogo) package com.halfbot.system { import mx.core.*; public class HB_SponsorsLogo extends BitmapAsset { } }//package com.halfbot.system
Section 198
//HB_SponsorsLogo2 (com.halfbot.system.HB_SponsorsLogo2) package com.halfbot.system { import mx.core.*; public class HB_SponsorsLogo2 extends BitmapAsset { } }//package com.halfbot.system
Section 199
//ActivateTrigger (com.hanclinto.cutscene.ActivateTrigger) package com.hanclinto.cutscene { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.utils.*; public class ActivateTrigger extends SceneAction { public var targetTriggerName:String;// = "" public var active:Boolean;// = true public var targetEntityName:String;// = "*" override public function activate():void{ var _local1:BaseTriggerObject; var _local3:Array; var _local4:IEntity; var _local6:int; var _local2:Array = new Array(); targetEntityName = targetEntityName.replace("*", this.owner.name); if (targetEntityName == "."){ _local3 = [this.owner]; } else { _local3 = GroupManagerComponent.getGroupByName(("group_" + targetEntityName)).entityList; }; var _local5:int; while (_local5 < _local3.length) { _local4 = (_local3[_local5] as IEntity); if (_local4 == null){ } else { if (targetTriggerName != ""){ _local2.push((_local4.lookupComponentByName(targetTriggerName) as BaseTriggerObject)); } else { _local2 = _local4.lookupComponentsByType(BaseTriggerObject); }; if (_local2 != null){ _local6 = 0; while (_local6 < _local2.length) { _local1 = (_local2[_local6] as BaseTriggerObject); if (_local1 != null){ _local1.active = active; }; _local6++; }; }; }; _local5++; }; } override public function get isFinished():Boolean{ return (true); } } }//package com.hanclinto.cutscene
Section 200
//Cutscene (com.hanclinto.cutscene.Cutscene) package com.hanclinto.cutscene { import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import com.pblabs.engine.components.*; public class Cutscene { private var currentActionInx:int;// = -1 private var currentAction:SceneAction; public var owner:IEntity; public var actions:Array; public function Cutscene(){ actions = new Array(); super(); } public function activate():void{ currentActionInx = -1; } public function onTick(_arg1:Number):void{ if (currentAction == null){ currentActionInx++; if (currentActionInx >= actions.length){ return; }; currentAction = actions[currentActionInx]; if (currentAction == null){ Logger.error(this, "onTick", (("Action number " + currentActionInx.toString()) + " is an invalid cutscene entry")); return; }; currentAction.owner = this.owner; currentAction.activate(); }; currentAction.onTick(_arg1); if (currentAction.isFinished){ currentAction = null; }; } public function get isFinished():Boolean{ return ((currentActionInx >= actions.length)); } } }//package com.hanclinto.cutscene
Section 201
//CutsceneManager (com.hanclinto.cutscene.CutsceneManager) package com.hanclinto.cutscene { import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import com.pblabs.engine.*; public class CutsceneManager extends TickedComponent { private var currentCutscene:Cutscene; private var cutsceneStack:Array; public static var instance:CutsceneManager; public function CutsceneManager(){ cutsceneStack = new Array(); super(); CutsceneManager.instance = this; } public function loadCutscene(_arg1:Cutscene):void{ cutsceneStack.push(_arg1); } private function getNextCutscene():void{ if (currentCutscene == null){ if (cutsceneStack.length == 0){ if ((PBE.spatialManager is PlatformSpatialManager)){ (PBE.spatialManager as PlatformSpatialManager).paused = false; }; return; }; currentCutscene = cutsceneStack.pop(); if (currentCutscene == null){ return; }; currentCutscene.activate(); }; } override public function onTick(_arg1:Number):void{ do { if (((!((currentCutscene == null))) && (currentCutscene.isFinished))){ currentCutscene = null; }; getNextCutscene(); if (currentCutscene == null){ return; }; currentCutscene.onTick(_arg1); } while (currentCutscene.isFinished); } } }//package com.hanclinto.cutscene
Section 202
//Delay (com.hanclinto.cutscene.Delay) package com.hanclinto.cutscene { import flash.utils.*; public class Delay extends SceneAction { public var time:Number;// = 1 private var startTime:int; override public function activate():void{ startTime = getTimer(); } override public function get isFinished():Boolean{ return (((startTime + (time * 1000)) <= getTimer())); } override public function onTick(_arg1:Number):void{ } } }//package com.hanclinto.cutscene
Section 203
//Dialog (com.hanclinto.cutscene.Dialog) package com.hanclinto.cutscene { import com.pblabs.engine.core.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.hanclinto.platformer.*; import flash.text.*; import com.pblabs.engine.*; public class Dialog extends SceneAction { public var nonModal:Boolean;// = false private var _keyAdvance:Boolean;// = false private var keyAdvance:Boolean;// = false public var text:String;// = "" private var startTime:int; private var _isFinished:Boolean;// = true private static const margin:Number = 8; private static const dialogBoxHeight:Number = 0.333333333333333; private static var dialogBox:DisplayObjectContainer; private static var dialogTextField:TextField; private static var dialogTextFormat:TextFormat; private static var dialogBg:Bitmap; static var clearNonModal:Boolean = false; private function buildDialogGui():void{ dialogBox = new Sprite(); var _local1:IUITarget = PBE.scene.sceneView; var _local2:BitmapData = new BitmapData((_local1.width - (margin * 2)), ((_local1.height * dialogBoxHeight) - margin), true, 3221225472); dialogBg = new Bitmap(_local2); dialogTextFormat = new TextFormat("Helvetica", 17, 4291611852); dialogTextField = new TextField(); dialogTextField.defaultTextFormat = dialogTextFormat; dialogTextField.multiline = true; dialogTextField.width = (dialogBg.width - (margin * 2)); dialogTextField.height = (dialogBg.height - (margin * 2)); dialogBox.addChild(dialogBg); dialogBox.addChild(dialogTextField); dialogTextField.x = margin; dialogTextField.y = margin; dialogBox.visible = false; PBE.mainStage.addChild(dialogBox); dialogBox.x = margin; dialogBox.y = (PBE.scene.sceneView.height * (1 - dialogBoxHeight)); } private function showGui():void{ dialogBox.visible = true; PBE.mainStage.setChildIndex(dialogBox, (PBE.mainStage.numChildren - 1)); if (!nonModal){ if ((PBE.spatialManager is PlatformSpatialManager)){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; }; } override public function activate():void{ if (!dialogBox){ buildDialogGui(); }; startTime = PBE.processManager.virtualTime; _isFinished = false; dialogTextField.text = text; if (nonModal){ keyAdvance = ((((PBE.isKeyDown(InputKey.SPACE)) || (PBE.isKeyDown(InputKey.UP)))) || (PBE.isKeyDown(InputKey.MOUSE_BUTTON))); _keyAdvance = keyAdvance; clearNonModal = (text == ""); _isFinished = true; }; showGui(); } override public function get isFinished():Boolean{ return (_isFinished); } private function hideGui():void{ dialogBox.visible = false; } override public function onTick(_arg1:Number):void{ keyAdvance = ((((PBE.isKeyDown(InputKey.SPACE)) || (PBE.isKeyDown(InputKey.UP)))) || (PBE.isKeyDown(InputKey.MOUSE_BUTTON))); if (((!(_keyAdvance)) && (keyAdvance))){ _isFinished = true; hideGui(); }; if (((nonModal) && (clearNonModal))){ hideGui(); }; _keyAdvance = keyAdvance; } } }//package com.hanclinto.cutscene
Section 204
//LoadLevel (com.hanclinto.cutscene.LoadLevel) package com.hanclinto.cutscene { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import flash.utils.*; import com.pblabs.engine.*; public class LoadLevel extends SceneAction { public var level:String;// = "" override public function activate():void{ var _local1:int; var _local4:Number; var _local5:IEntity; _local1 = PBE.levelManager.getlevelIndexByName(level); if (level == ""){ _local1 = -1; } else { if (_local1 == -1){ _local4 = Number(level); if (isNaN(_local4)){ Logger.error(this, "activate", (("Could not load level '" + level) + "'. The specified level must be either a (case-sensitive) level name, or a valid level index.")); return; }; _local1 = int(_local4); }; }; if (_local1 == -1){ (PBE.levelManager.currentLevel + 1); }; Dialog.clearNonModal = true; var _local2:Array = GroupManagerComponent.getGroupByName("group_dynamic_entities").entityList; trace((("Deleting " + _local2.length.toString()) + " entities")); var _local3:int; while (_local3 < _local2.length) { _local5 = (_local2[_local3] as IEntity); _local5.destroy(); _local3++; }; PBE.levelManager.unloadCurrentLevel(); PBE.levelManager.loadLevel(_local1); if (PBE.screenManager.hasScreen("interLevel")){ PBE.screenManager.push("interLevel"); }; } override public function get isFinished():Boolean{ return (!((PBE.screenManager.getCurrentScreen() == PBE.screenManager.get("interLevel")))); } } }//package com.hanclinto.cutscene
Section 205
//PlaySound (com.hanclinto.cutscene.PlaySound) package com.hanclinto.cutscene { import com.pblabs.engine.resource.*; public class PlaySound extends SceneAction { public var theSound:MP3Resource; override public function activate():void{ if (((theSound) && (theSound.soundObject))){ theSound.soundObject.play(); }; } } }//package com.hanclinto.cutscene
Section 206
//RestartLevel (com.hanclinto.cutscene.RestartLevel) package com.hanclinto.cutscene { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import flash.geom.*; import com.pblabs.engine.components.*; import flash.utils.*; public class RestartLevel extends SceneAction { override public function activate():void{ var _local4:IEntity; var _local1:int = LevelManager.instance.currentLevel; var _local2:Array = GroupManagerComponent.getGroupByName("group_dynamic_entities").entityList; trace((("Deleting " + _local2.length.toString()) + " entities")); var _local3:int; while (_local3 < _local2.length) { _local4 = (_local2[_local3] as IEntity); _local4.destroy(); _local3++; }; LevelManager.instance.unloadCurrentLevel(); LevelManager.instance.loadLevel(_local1); } override public function get isFinished():Boolean{ return (true); } } }//package com.hanclinto.cutscene
Section 207
//SceneAction (com.hanclinto.cutscene.SceneAction) package com.hanclinto.cutscene { import com.pblabs.engine.entity.*; public class SceneAction { public var owner:IEntity; public function activate():void{ } public function onTick(_arg1:Number):void{ } public function get isFinished():Boolean{ return (true); } } }//package com.hanclinto.cutscene
Section 208
//SetTile (com.hanclinto.cutscene.SetTile) package com.hanclinto.cutscene { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.utils.*; import com.pblabs.engine.*; public class SetTile extends SceneAction { public var toggleTileFlags:int;// = -1 public var targetEntityName:String;// = "" public var tileType:int;// = -1 public var mapEntityName:String;// = "Background" private var fMap:TileMap; public var targetPosition:Point;// = null private var map:TileMap; public var tileFlags:int;// = -1 public var tileTypeOffset:int;// = 0 public var toggleTileType:int;// = -1 public var mapTileMapName:String;// = "map_bg" public var mapFlagMapName:String;// = "map_bg" override public function get isFinished():Boolean{ return (true); } protected function _setTile(_arg1:int, _arg2:int):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:int; if (map != null){ _local3 = tileType; _local4 = map.getTileType(_arg1, _arg2); if (_local4 == _local3){ _local3 = toggleTileType; }; if (_local3 != -1){ map.setTileType(_arg1, _arg2, _local3); } else { if (tileTypeOffset != 0){ _local3 = (_local4 + tileTypeOffset); map.setTileType(_arg1, _arg2, _local3); }; }; }; if (fMap != null){ _local5 = tileFlags; _local6 = map.getTileFlags(_arg1, _arg2); if (_local5 == _local6){ _local5 = toggleTileFlags; }; if (_local5 != -1){ fMap.setTileFlags(_arg1, _arg2, _local5); }; }; } override public function activate():void{ var _local1:SimpleSpatialComponent; var _local2:IEntity; var _local3:Point; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:Rectangle; var _local12:Array; var _local13:int; var _local14:int; var _local15:int; map = (PBE.nameManager.lookupComponentByName(mapEntityName, mapTileMapName) as TileMap); fMap = (PBE.nameManager.lookupComponentByName(mapEntityName, mapFlagMapName) as TileMap); if (map != null){ _local3 = map.tileSize; } else { if (fMap != null){ _local3 = fMap.tileSize; } else { return; }; }; if (targetPosition != null){ _local4 = targetPosition.x; _local5 = targetPosition.y; _setTile(_local4, _local5); }; targetEntityName = targetEntityName.replace("*", this.owner.name); if (targetEntityName == "."){ _local1 = (this.owner.lookupComponentByType(SimpleSpatialComponent) as SimpleSpatialComponent); if (_local1 != null){ _local11 = new Rectangle((_local1.position.x - (_local1.size.x * 0.5)), (_local1.position.y - (_local1.size.y * 0.5)), _local1.size.x, _local1.size.y); _local7 = Math.round(((1 * _local11.x) / map.tileSize.x)); _local9 = Math.round((_local7 + ((1 * _local11.width) / map.tileSize.x))); _local8 = Math.round(((1 * _local11.y) / map.tileSize.y)); _local10 = Math.round((_local8 + ((1 * _local11.height) / map.tileSize.y))); _local4 = _local7; while (_local4 < _local9) { _local5 = _local8; while (_local5 < _local10) { _setTile(_local4, _local5); _local5++; }; _local4++; }; }; } else { if (targetEntityName != ""){ _local12 = GroupManagerComponent.getGroupByName(("group_" + targetEntityName)).entityList; _local13 = 0; while (_local13 < _local12.length) { _local2 = (_local12[_local13] as IEntity); if (_local2 == null){ } else { _local1 = (_local2.lookupComponentByType(SimpleSpatialComponent) as SimpleSpatialComponent); if (_local1 == null){ } else { _local11 = new Rectangle((_local1.position.x - (_local1.size.x * 0.5)), (_local1.position.y - (_local1.size.y * 0.5)), _local1.size.x, _local1.size.y); _local7 = Math.round(((1 * _local11.x) / map.tileSize.x)); _local9 = Math.round((_local7 + ((1 * _local11.width) / map.tileSize.x))); _local8 = Math.round(((1 * _local11.y) / map.tileSize.y)); _local10 = Math.round((_local8 + ((1 * _local11.height) / map.tileSize.y))); _local14 = map.getTileType(_local7, _local8); _local15 = fMap.getTileFlags(_local7, _local8); _local4 = _local7; while (_local4 < _local9) { _local5 = _local8; while (_local5 < _local10) { _setTile(_local4, _local5); _local5++; }; _local4++; }; }; }; _local13++; }; }; }; } } }//package com.hanclinto.cutscene
Section 209
//ShowScreen (com.hanclinto.cutscene.ShowScreen) package com.hanclinto.cutscene { import com.pblabs.screens.*; import com.pblabs.engine.debug.*; public class ShowScreen extends SceneAction { public var screen:String; override public function activate():void{ if (ScreenManager.instance.hasScreen(screen)){ ScreenManager.instance.push(screen); } else { Logger.error(this, "activate", (("No such screen '" + screen) + "'")); }; } override public function get isFinished():Boolean{ return (!((ScreenManager.instance.getCurrentScreen() == ScreenManager.instance.get(screen)))); } } }//package com.hanclinto.cutscene
Section 210
//Trace (com.hanclinto.cutscene.Trace) package com.hanclinto.cutscene { import com.pblabs.engine.debug.*; public class Trace extends SceneAction { public var text:String; override public function activate():void{ Logger.print(this, text); } } }//package com.hanclinto.cutscene
Section 211
//AdvancedPlayerController (com.hanclinto.platformer.AdvancedPlayerController) package com.hanclinto.platformer { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import com.pblabs.components.basic.*; import com.pblabs.engine.*; public class AdvancedPlayerController extends PlayerPlatformController { protected var activePowerup:int;// = 0 protected var _lastJump:int;// = 0 public var musicTracks:OrderedArray; protected var spideyActive:Boolean;// = false protected var origGravity:Point; protected var _jump:int;// = 0 protected var origMaxHorizSpeed:Number; public var flyingEnabled:Boolean;// = false public var spideyEnabled:Boolean;// = false protected var origJumpSpeed:Number; protected var origPositionOffset:Point; public var currentMusicTrack:int;// = 0 public function AdvancedPlayerController(){ origGravity = new Point(); origPositionOffset = new Point(); super(); } private function powerupFourActivate(_arg1:int):void{ if (_arg1 == 1){ togglePowerup(4); }; } override protected function onAdd():void{ var _local1:SpriteSheetRenderer; super.onAdd(); origGravity = new Point(gravity.x, gravity.y); origJumpSpeed = this.jumpSpeed; origMaxHorizSpeed = this.maxHorizSpeed; _local1 = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); if (_local1 != null){ origPositionOffset = _local1.positionOffset.clone(); }; _inputMap.mapKeyToHandler(InputKey.THREE, powerupOneActivate); _inputMap.mapKeyToHandler(InputKey.TWO, powerupTwoActivate); _inputMap.mapKeyToHandler(InputKey.ONE, powerupThreeActivate); _inputMap.mapKeyToHandler(InputKey.FOUR, powerupFourActivate); _inputMap.mapKeyToHandler(InputKey.FIVE, powerupFiveActivate); _inputMap.mapKeyToHandler(InputKey.SIX, powerupSixActivate); } private function powerupFiveActivate(_arg1:int):void{ if (_arg1 == 1){ togglePowerup(5); }; } override public function onTick(_arg1:Number):void{ var _local2:Array; var _local3:SpriteSheetRenderer; var _local4:int; var _local13:int; var _local14:Array; var _local15:IEntity; var _local16:int; var _local17:BaseTriggerObject; _local3 = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); spideyEnabled = false; maxHorizSpeed = origMaxHorizSpeed; jumpSpeed = origJumpSpeed; PBE.processManager.timeScale = 1; gravity.x = origGravity.x; gravity.y = origGravity.y; flyingEnabled = false; switch (activePowerup){ case 1: spideyEnabled = true; break; case 2: maxHorizSpeed = (origMaxHorizSpeed * 2); break; case 3: jumpSpeed = (origJumpSpeed * 1.5); break; case 4: PBE.processManager.timeScale = 0.5; break; case 5: flyingEnabled = true; gravity.x = 0; gravity.y = 0; break; case 6: break; }; var _local5:Boolean = spideyActive; spideyActive = ((spideyEnabled) && (!((onWall == 0)))); if (spideyActive){ this.gravity.x = (origGravity.y * onWall); this.gravity.y = 0; } else { if (!flyingEnabled){ this.gravity.x = origGravity.x; this.gravity.y = origGravity.y; }; }; if (isDying){ if ((PBE.processManager.virtualTime - deathTime) > 2000){ _local13 = LevelManager.instance.currentLevel; _local14 = GroupManagerComponent.getGroupByName("group_dynamic_entities").entityList; trace((("Deleting " + _local14.length.toString()) + " entities")); _local4 = 0; while (_local4 < _local14.length) { _local15 = (_local14[_local4] as IEntity); _local15.destroy(); _local4++; }; LevelManager.instance.unloadCurrentLevel(); LevelManager.instance.loadLevel(_local13); }; if (_local3 != null){ _local3.spriteIndex = spriteIndexHurt; _local3.scale = new Point(_local3.scale.x, -1); }; return; }; var _local6:int = _jump; var _local7:int = _action; _left = (PBE.isKeyDown(InputKey.LEFT)) ? 1 : 0; _right = (PBE.isKeyDown(InputKey.RIGHT)) ? 1 : 0; _up = (PBE.isKeyDown(InputKey.UP)) ? 1 : 0; _down = (PBE.isKeyDown(InputKey.DOWN)) ? 1 : 0; _jump = (PBE.isKeyDown(InputKey.SPACE)) ? 1 : 0; _action = (PBE.isKeyDown(InputKey.UP)) ? 1 : 0; if (_jump != _local6){ if (_jump){ if (onGround){ owner.eventDispatcher.dispatchEvent(new Event("Jump")); velocity.y = (velocity.y - jumpSpeed); } else { if (onWall != 0){ if (((wallJumpEnable) || (spideyActive))){ owner.eventDispatcher.dispatchEvent(new Event("WallJump")); if (velocity.y > 0){ velocity.y = 0; }; velocity.y = (velocity.y - (jumpSpeed * wallJumpFactor)); velocity.x = ((onWall * wallJumpHorizPushoff) * -1); }; } else { if ((((airJumpsAvailable > 0)) || ((airJumpCapacity == -1)))){ owner.eventDispatcher.dispatchEvent(new Event("AirJump")); if (velocity.y > 0){ velocity.y = 0; }; velocity.y = (velocity.y - (jumpSpeed * airJumpFactor)); velocity.x = (velocity.x * airJumpHorizSlowdown); airJumpsAvailable--; }; }; }; } else { if (!spideyActive){ if (velocity.y < 0){ velocity.y = (velocity.y * 0.5); }; }; }; }; if (((onGround) || (((airJumpRechargeOnWall) && (!((onWall == 0))))))){ airJumpsAvailable = airJumpCapacity; }; var _local8:int = (_right - _left); var _local9:int = (_down - _up); if (onGround){ if ((((velocity.x > 0)) && ((_local8 <= 0)))){ velocity.x = Math.max(0, (velocity.x * slowdown)); } else { if ((((velocity.x < 0)) && ((_local8 >= 0)))){ velocity.x = Math.min(0, (velocity.x * slowdown)); }; }; }; if (spideyActive){ if ((((velocity.y > 0)) && (((onWall * _local8) >= 0)))){ velocity.y = Math.max(0, (velocity.y * slowdown)); } else { if ((((velocity.y < 0)) && (((onWall * _local8) <= 0)))){ velocity.y = Math.min(0, (velocity.y * slowdown)); }; }; }; if (_local8 != 0){ if (spideyActive){ velocity.y = (velocity.y - ((onWall * _local8) * horizAccel)); if (velocity.y > maxHorizSpeed){ velocity.y = maxHorizSpeed; }; if (velocity.y < -(maxHorizSpeed)){ velocity.y = -(maxHorizSpeed); }; }; if (onGround){ velocity.x = (velocity.x + (_local8 * horizAccel)); if (velocity.x > maxHorizSpeed){ velocity.x = maxHorizSpeed; }; if (velocity.x < -(maxHorizSpeed)){ velocity.x = -(maxHorizSpeed); }; } else { if (!spideyActive){ velocity.x = (velocity.x + ((_local8 * horizAccel) * airControl)); if (velocity.x > (maxHorizSpeed * airControl)){ velocity.x = (maxHorizSpeed * airControl); }; if (velocity.x < (-(maxHorizSpeed) * airControl)){ velocity.x = (-(maxHorizSpeed) * airControl); }; }; }; }; if (((!((_local9 == 0))) && (flyingEnabled))){ velocity.y = (velocity.y + ((_local9 * horizAccel) * airControl)); if (velocity.y > (maxHorizSpeed * airControl)){ velocity.y = (maxHorizSpeed * airControl); }; if (velocity.y < (-(maxHorizSpeed) * airControl)){ velocity.y = (-(maxHorizSpeed) * airControl); }; }; if (((((!((onWall == 0))) && ((velocity.y > 0)))) && (!(spideyActive)))){ velocity.y = (velocity.y * wallSlideSlowdown); }; if (velocity.x != 0){ _local3.scale = new Point((((((!(spriteFlipX)) && ((velocity.x < 0)))) || (((spriteFlipX) && ((velocity.x >= 0)))))) ? -1 : 1, _local3.scale.y); }; if (((spideyActive) && (!((velocity.y == 0))))){ _local3.scale = new Point((((((!(spriteFlipX)) && ((velocity.y < 0)))) || (((spriteFlipX) && ((velocity.y >= 0)))))) ? (onWall * 1) : (onWall * -1), _local3.scale.y); }; if (((spideyActive) && (!(_local5)))){ _local3.rotation = (-90 * onWall); _local3.positionOffset = new Point((((onWall * (bounds.width - bounds.height)) / 2) + (origPositionOffset.y * onWall)), ((-((bounds.width - bounds.height)) / 2) + (origPositionOffset.x * onWall))); } else { if (((!(spideyActive)) && (_local5))){ _local3.rotation = 0; _local3.positionOffset = origPositionOffset; }; }; if (this.manager.paused){ _local3.spriteIndex = spriteIndexIdle; }; if (_local3 != null){ if (((!(onGround)) && (!(spideyActive)))){ if (velocity.y < 0){ if (onWall != 0){ _local3.spriteIndex = spriteIndexWallSlideUp; } else { _local3.spriteIndex = spriteIndexJumpUp; }; } else { if (onWall != 0){ _local3.spriteIndex = spriteIndexWallSlideDown; } else { _local3.spriteIndex = spriteIndexJumpDown; }; }; } else { if (((((!(spideyActive)) && ((Math.abs(velocity.x) < 0.1)))) || (((spideyActive) && ((Math.abs(velocity.y) < 0.1)))))){ _local3.spriteIndex = spriteIndexIdle; } else { _local16 = Math.floor((position.x / pixelsPerStep)); if (spideyActive){ _local16 = Math.floor((position.y / pixelsPerStep)); }; _local3.spriteIndex = ((_local16 % ((spriteIndexRunEnd - spriteIndexRunStart) + 1)) + spriteIndexRunStart); if (((((!(spideyActive)) && ((velocity.x < 0)))) || (((spideyActive) && ((velocity.y < 0)))))){ _local3.spriteIndex = (spriteIndexRunStart + (spriteIndexRunEnd - _local3.spriteIndex)); }; }; }; }; var _local10:int = BaseTriggerObject.enterExitTriggers.length; var _local11:Array = new Array(); _local4 = 0; while ((((_local4 < _local10)) && (!(isDying)))) { _local17 = BaseTriggerObject.enterExitTriggers[_local4]; if (((!((_local17 == null))) && (_local17.active))){ if (_local17.bounds.intersects(bounds)){ if (hitTriggers[_local17.triggerID] == null){ hitTriggers[_local17.triggerID] = _local17; if (_local17.onEnter != null){ _local11.push(_local17.onEnter); }; }; } else { if (hitTriggers[_local17.triggerID] != null){ hitTriggers[_local17.triggerID] = null; if (_local17.onExit != null){ _local11.push(_local17.onExit); }; }; }; }; _local4++; }; var _local12:int = (_action - _local7); if (_local12 > 0){ _local10 = BaseTriggerObject.actionTriggers.length; _local4 = 0; while ((((_local4 < _local10)) && (!(isDying)))) { _local17 = BaseTriggerObject.actionTriggers[_local4]; if (((!((_local17 == null))) && (_local17.active))){ if (_local17.bounds.intersects(bounds)){ _local11.push(_local17.onAction); }; }; _local4++; }; }; _local4 = 0; while ((((_local4 < _local11.length)) && (!(isDying)))) { (_local11[_local4] as Function)(this); _local4++; }; } override protected function onRemove():void{ _inputMap.destroy(); super.onRemove(); } private function powerupTwoActivate(_arg1:int):void{ if (_arg1 == 1){ togglePowerup(2); }; } private function togglePowerup(_arg1:int):void{ if (activePowerup == _arg1){ activePowerup = 0; } else { activePowerup = _arg1; }; var _local2 = ""; } private function powerupThreeActivate(_arg1:int):void{ if (_arg1 == 1){ togglePowerup(3); }; } private function powerupOneActivate(_arg1:int):void{ if (_arg1 == 1){ togglePowerup(1); }; } private function powerupSixActivate(_arg1:int):void{ if (_arg1 == 1){ togglePowerup(6); }; } } }//package com.hanclinto.platformer
Section 212
//AnimatedTileMapRenderer (com.hanclinto.platformer.AnimatedTileMapRenderer) package com.hanclinto.platformer { import com.pblabs.engine.core.*; import flash.display.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.rendering2D.spritesheet.*; import com.pblabs.engine.*; public class AnimatedTileMapRenderer extends TileMapRenderer { protected var allAnimatedTiles:Array; public var tileAnimations:Array; public function AnimatedTileMapRenderer(){ tileAnimations = new Array(); allAnimatedTiles = new Array(); super(); } private function cacheAnimations():void{ var _local1:TileAnimation; var _local2:int; allAnimatedTiles = []; for each (_local1 in tileAnimations) { for each (_local2 in _local1.tiles) { if (_local2 != 0){ if (allAnimatedTiles[_local2]){ PBE.log(this, (("Warning: Tile index " + _local2.toString()) + " is contained in more than one animation. This might result in unexpected animation behavior.")); } else { allAnimatedTiles[_local2] = _local1; }; }; }; _local1.cacheAnimation(); }; } override protected function onAdd():void{ cacheAnimations(); super.onAdd(); } override protected function getTileType(_arg1:int, _arg2:int):int{ var _local3:int = map.getTileType(_arg1, _arg2); if (!allAnimatedTiles[_local3]){ return (_local3); }; return (allAnimatedTiles[_local3].getFrameForTile(_local3)); } } }//package com.hanclinto.platformer
Section 213
//BaseTriggerObject (com.hanclinto.platformer.BaseTriggerObject) package com.hanclinto.platformer { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import flash.geom.*; public class BaseTriggerObject extends EntityComponent { private var onActionPtr:Function; public var active:Boolean;// = true public var sizeReference:PropertyReference; private var onExitPtr:Function; public var triggerID:int;// = 0 public var positionReference:PropertyReference; private var onEnterPtr:Function; public var collisionMask:ObjectType; public static var actionTriggers:Array = new Array(); public static var enterExitTriggers:Array = new Array(); public static var numTriggers:int = 0; public static var triggers:Array = new Array(); public function BaseTriggerObject(){ triggerID = numTriggers; numTriggers = (numTriggers + 1); } override protected function onAdd():void{ super.onAdd(); triggers.push(this); } protected function _onEnter(_arg1:PlatformObject):void{ Logger.print(this, "OnEnter"); } protected function _onExit(_arg1:PlatformObject):void{ Logger.print(this, "OnExit"); } public function get bounds():Rectangle{ if (owner == null){ return (new Rectangle()); }; var _local1:Point = owner.getProperty(positionReference); var _local2:Point = owner.getProperty(sizeReference); if (((!(_local1)) || (!(_local2)))){ return (new Rectangle()); }; return (new Rectangle((_local1.x - (_local2.x / 2)), (_local1.y - (_local2.y / 2)), _local2.x, _local2.y)); } override protected function onRemove():void{ super.onRemove(); var _local1:int = triggers.indexOf(this); if (_local1 >= 0){ triggers.splice(_local1, 1); }; } protected function _onAction(_arg1:PlatformObject):void{ Logger.print(this, "OnAction"); } public function get onExit():Function{ return (onExitPtr); } public function set onAction(_arg1:Function):void{ var _local2:int; onActionPtr = _arg1; if (onActionPtr != null){ actionTriggers.push(this); } else { _local2 = actionTriggers.indexOf(this); if (_local2 >= 0){ actionTriggers.splice(_local2, 1); }; }; } public function set onEnter(_arg1:Function):void{ onEnterPtr = _arg1; var _local2:int = enterExitTriggers.indexOf(this); if (onEnterPtr != null){ if (_local2 < 0){ enterExitTriggers.push(this); }; } else { _local2 = enterExitTriggers.indexOf(this); if (_local2 >= 0){ enterExitTriggers.splice(_local2, 1); }; }; } public function get onAction():Function{ return (onActionPtr); } public function get onEnter():Function{ return (onEnterPtr); } public function set onExit(_arg1:Function):void{ onExitPtr = _arg1; var _local2:int = enterExitTriggers.indexOf(this); if (onExitPtr != null){ if (_local2 < 0){ enterExitTriggers.push(this); }; } else { _local2 = enterExitTriggers.indexOf(this); if (_local2 >= 0){ enterExitTriggers.splice(_local2, 1); }; }; } public static function resetTriggers():void{ enterExitTriggers = new Array(); actionTriggers = new Array(); } } }//package com.hanclinto.platformer
Section 214
//CutsceneTrigger (com.hanclinto.platformer.CutsceneTrigger) package com.hanclinto.platformer { import com.hanclinto.cutscene.*; public class CutsceneTrigger extends BaseTriggerObject { private var _sceneOnAction:Cutscene; private var _sceneOnExit:Cutscene; private var _sceneOnEnter:Cutscene; public var oneShotOnAction:Boolean;// = false public var oneShotOnEnter:Boolean;// = false public var oneShotOnExit:Boolean;// = false protected function activateSceneOnEnter(_arg1:PlatformObject):void{ if (oneShotOnEnter){ onEnter = null; }; var _local2:CutsceneManager = CutsceneManager.instance; _sceneOnEnter.owner = this.owner; _local2.loadCutscene(_sceneOnEnter); } public function set sceneOnExit(_arg1:Cutscene):void{ _sceneOnExit = _arg1; onExit = activateSceneOnExit; } public function set sceneOnAction(_arg1:Cutscene):void{ _sceneOnAction = _arg1; onAction = activateSceneOnAction; } protected function activateSceneOnAction(_arg1:PlatformObject):void{ if (oneShotOnAction){ onAction = null; }; var _local2:CutsceneManager = CutsceneManager.instance; _sceneOnAction.owner = this.owner; _local2.loadCutscene(_sceneOnAction); } protected function activateSceneOnExit(_arg1:PlatformObject):void{ if (oneShotOnExit){ onExit = null; }; var _local2:CutsceneManager = CutsceneManager.instance; _sceneOnExit.owner = this.owner; _local2.loadCutscene(_sceneOnExit); } public function set sceneOnEnter(_arg1:Cutscene):void{ _sceneOnEnter = _arg1; onEnter = activateSceneOnEnter; } } }//package com.hanclinto.platformer
Section 215
//DialogTrigger (com.hanclinto.platformer.DialogTrigger) package com.hanclinto.platformer { import com.pblabs.engine.core.*; import com.pblabs.engine.debug.*; import com.hanclinto.cutscene.*; public class DialogTrigger extends BaseTriggerObject { private var _sceneOnAction:Cutscene; private var _sceneOnExit:Cutscene; public var dialogs:Array; private var _sceneOnEnter:Cutscene; private var currentDialogIndex:int;// = -1 public function DialogTrigger(){ dialogs = new Array(); super(); onEnter = _onEnter; onExit = _onExit; onAction = _onAction; } private function loadDialog(_arg1:int):void{ var _local2:SceneAction; if ((((_arg1 < dialogs.length)) && ((_arg1 >= 0)))){ _local2 = (dialogs[_arg1] as Dialog); currentDialogIndex = _arg1; }; if ((_local2 as Dialog) == null){ _local2 = new Dialog(); currentDialogIndex = -1; }; (_local2 as Dialog).nonModal = true; var _local3:Cutscene = new Cutscene(); _local3.actions.push(_local2); var _local4:CutsceneManager = CutsceneManager.instance; _local3.owner = this.owner; _local4.loadCutscene(_local3); } override protected function _onEnter(_arg1:PlatformObject):void{ loadDialog(0); } override protected function _onAction(_arg1:PlatformObject):void{ loadDialog((currentDialogIndex + 1)); } override protected function _onExit(_arg1:PlatformObject):void{ loadDialog(-1); } } }//package com.hanclinto.platformer
Section 216
//EnemyFlyerController (com.hanclinto.platformer.EnemyFlyerController) package com.hanclinto.platformer { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.*; public class EnemyFlyerController extends PlatformObject { public var spriteIndexDyingStart:int;// = 4 public var animationSpeed:int;// = 100 public var spriteIndexFlyingStart:int;// = 0 public var isDead:Boolean;// = false public var spriteIndexDyingEnd:int;// = 7 public var spriteIndexFlyingEnd:int;// = 3 public static var hints:Array = []; override public function onCollideObject(_arg1:PlatformObject, _arg2:Point):void{ var _local3:PlayerPlatformController; if ((_arg1 is PlayerPlatformController)){ if (_arg2.y < 0){ _arg1.owner.eventDispatcher.dispatchEvent(new Event("BoppedEnemy")); solid = false; isDead = true; gravity.y = 1; PBE.processManager.schedule(1000, this, this.owner.destroy); } else { _local3 = (_arg1 as PlayerPlatformController); _arg1.owner.setProperty(new PropertyReference("@Health.health"), 0); }; }; } override public function onTick(_arg1:Number):void{ var _local4:EnemyFlyerHint; var _local2:SpriteSheetRenderer = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); if (!_local2){ throw (new Error("Could not locate SpriteSheetRenderer named Render")); }; _local2.spriteIndex = ((PBE.processManager.virtualTime / animationSpeed) % 4); if (isDead){ if (_local2){ _local2.spriteIndex = ((Math.floor((PBE.processManager.virtualTime / animationSpeed)) % ((spriteIndexDyingEnd - spriteIndexDyingStart) + 1)) + spriteIndexDyingStart); }; solid = false; return; }; _local2.scale = new Point(((velocity.x)<0) ? -1 : 1, _local2.scale.y); _local2.spriteIndex = ((Math.floor((PBE.processManager.virtualTime / animationSpeed)) % ((spriteIndexFlyingEnd - spriteIndexFlyingStart) + 1)) + spriteIndexFlyingStart); var _local3:int; while (_local3 < hints.length) { _local4 = (hints[_local3] as EnemyFlyerHint); if (_local4 != null){ if (_local4.bounds.containsPoint(position)){ velocity.x = _local4.direction.x; velocity.y = _local4.direction.y; break; }; }; _local3++; }; this._atRest = false; } } }//package com.hanclinto.platformer
Section 217
//EnemyFlyerHint (com.hanclinto.platformer.EnemyFlyerHint) package com.hanclinto.platformer { import com.pblabs.engine.entity.*; import flash.geom.*; public class EnemyFlyerHint extends EntityComponent { public var size:Point; public var position:Point; private var _bounds:Rectangle; public var direction:Point; override protected function onRemove():void{ var _local1:int = EnemyFlyerController.hints.indexOf(this); EnemyFlyerController.hints.splice(_local1, 1); } override protected function onAdd():void{ EnemyFlyerController.hints.push(this); } public function get bounds():Rectangle{ if (!_bounds){ _bounds = new Rectangle((position.x - (size.x * 0.5)), (position.y - (size.y * 0.5)), size.x, size.y); }; return (_bounds); } } }//package com.hanclinto.platformer
Section 218
//EnemyWalkerController (com.hanclinto.platformer.EnemyWalkerController) package com.hanclinto.platformer { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.*; public class EnemyWalkerController extends PlatformObject { public var spriteIndexIdle:int;// = 15 public var spriteIndexRunStart:int;// = 0 private var isDead:Boolean;// = false public var spriteIndexDead:int;// = 1 private var facing:int;// = 1 public var spriteIndexJumpDown:int;// = 14 public var spriteIndexJumpUp:int;// = 13 public var pixelsPerStep:Number;// = 15 public var spriteIndexRunEnd:int;// = 5 public function EnemyWalkerController(){ velocityMax.x = 3; } override public function onTick(_arg1:Number):void{ var _local2:SpriteSheetRenderer; var _local3:Array; var _local4:int; _local2 = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); if (isDead){ if (_local2){ _local2.spriteIndex = spriteIndexDead; }; velocity.x = 0; velocity.y = 0; solid = false; gravity.x = 0; gravity.y = 0; return; }; if (onGround){ if (onCliff != 0){ facing = -(onCliff); }; if (onWall != 0){ facing = -(onWall); }; }; velocity.x = (velocityMax.x * facing); super.onTick(_arg1); if (xdir != 0){ _local3 = owner.lookupComponentsByType(SpriteSheetRenderer); _local4 = 0; while (_local4 < _local3.length) { (_local3[_local4] as SpriteSheetRenderer).scale = new Point(((xdir)<0) ? -1 : 1, (_local3[_local4] as SpriteSheetRenderer).scale.y); _local4++; }; }; if (_local2 != null){ if (!onGround){ if (ydir < 0){ _local2.spriteIndex = spriteIndexJumpUp; } else { _local2.spriteIndex = spriteIndexJumpDown; }; } else { if (Math.abs(velocity.x) < 0.1){ _local2.spriteIndex = spriteIndexIdle; } else { _local2.spriteIndex = ((Math.floor((position.x / pixelsPerStep)) % ((spriteIndexRunEnd - spriteIndexRunStart) + 1)) + spriteIndexRunStart); if (xdir < 0){ _local2.spriteIndex = (spriteIndexRunStart + (spriteIndexRunEnd - _local2.spriteIndex)); }; }; }; }; } override public function onCollideObject(_arg1:PlatformObject, _arg2:Point):void{ var _local3:PlayerPlatformController; if ((_arg1 is PlayerPlatformController)){ if ((((_arg2.y < 0)) || (((_arg1.bounds.bottom - this.bounds.top) < (this.bounds.height * 0.5))))){ _arg1.owner.eventDispatcher.dispatchEvent(new Event("BoppedEnemy")); solid = false; isDead = true; PBE.processManager.schedule(1000, this, this.owner.destroy); } else { _local3 = (_arg1 as PlayerPlatformController); _arg1.owner.setProperty(new PropertyReference("@Health.health"), 0); }; } else { if (_arg2.x < 0){ facing = 1; } else { facing = -1; }; }; } } }//package com.hanclinto.platformer
Section 219
//FlagMap (com.hanclinto.platformer.FlagMap) package com.hanclinto.platformer { public final class FlagMap { private var _flags:Array; private var _height:int; private var _width:int; private static const TYPE_MASK:int = 4095; private static const FLAGS_MASK:int = 268431360; private static const TYPE_OFFSET:int = 12; public function FlagMap(_arg1:int, _arg2:int){ _width = _arg1; _height = _arg2; _flags = new Array((width * height)); } public function getTileFlags(_arg1:int, _arg2:int):int{ return (((_flags[(_arg1 + (_width * _arg2))] & FLAGS_MASK) >> TYPE_OFFSET)); } public function get width():int{ return (_width); } public function get height():int{ return (_height); } public function setTileType(_arg1:int, _arg2:int, _arg3:int):void{ _flags[(_arg1 + (_width * _arg2))] = ((_flags[(_arg1 + (_width * _arg2))] & ~(TYPE_MASK)) | (_arg3 & TYPE_MASK)); } public function setTileFlags(_arg1:int, _arg2:int, _arg3:int):void{ _flags[(_arg1 + (_width * _arg2))] = ((_flags[(_arg1 + (_width * _arg2))] & ~(FLAGS_MASK)) | ((_arg3 << TYPE_OFFSET) & FLAGS_MASK)); } public function getTileType(_arg1:int, _arg2:int):int{ return ((_flags[(_arg1 + (_width * _arg2))] & TYPE_MASK)); } } }//package com.hanclinto.platformer
Section 220
//GemTrigger (com.hanclinto.platformer.GemTrigger) package com.hanclinto.platformer { public class GemTrigger extends BaseTriggerObject { public static var gemsPickedUp:int = 0; public function GemTrigger(){ super(); onEnter = function ():void{ owner.destroy(); gemsPickedUp++; }; } } }//package com.hanclinto.platformer
Section 221
//PlatformObject (com.hanclinto.platformer.PlatformObject) package com.hanclinto.platformer { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import flash.utils.*; public class PlatformObject extends EntityComponent implements ISpatialObject2D { public var size:Point; var isPushed:int;// = 0 protected var _onCliff:int;// = 0 protected var xdir:int; public var position_of_collision:Point; public var position:Point; public var clampMapBottom:Boolean;// = true public var velocityMax:Point; public var clampMapLeft:Boolean;// = true public var solidSize:Point; protected var wasOnGround:Boolean;// = false public var gravity:Point; public var bumped:Boolean;// = false public var bounceMinimum:Number;// = 2 protected var _onWall:int;// = 0 protected var _objectMask:ObjectType; protected var ydir:int; public var pushStrength:int;// = 0 public var fixed:Boolean;// = false public var collidesWithObjectMask:ObjectType; private var dest:Rectangle; protected var _onGround:Boolean;// = false public var oneWay:Boolean;// = false public var solid:Boolean;// = true public var manager:PlatformSpatialManager;// = null protected var _platformObject:PlatformObject;// = null public var neverObstructed:Boolean;// = false protected var _atRest:Boolean;// = false private var _bounds:Rectangle; private var _topLeft:Point; public var velocity:Point; var contactList:Dictionary; public var pushResistance:int;// = 100 public var clampMapTop:Boolean;// = false private var destX:Rectangle; public var clampMapRight:Boolean;// = true public var bounceFactor:Number;// = 0 public function PlatformObject(){ collidesWithObjectMask = new ObjectType(); position = new Point(); position_of_collision = new Point(); size = new Point(32, 32); solidSize = new Point(32, 32); velocity = new Point(0, 0); gravity = new Point(0, -0.5); velocityMax = new Point(25, 25); contactList = new Dictionary(); dest = new Rectangle(); _bounds = new Rectangle(); _topLeft = new Point(); _objectMask = new ObjectType(); super(); } public function onTick(_arg1:Number):void{ } public function get onCliff():int{ return (_onCliff); } override protected function onAdd():void{ if (!manager){ return; }; manager.addSpatialObject(this); } override protected function onRemove():void{ manager.removeSpatialObject(this); } public function get onGround():Boolean{ return (_onGround); } public function get onWall():int{ return (_onWall); } public function handleTileMapBoundaryCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ } public function pointOccupied(_arg1:Point, _arg2:ObjectType, _arg3:IScene2D):Boolean{ return (worldExtents.containsPoint(_arg1)); } function vertTileMapCollision(_arg1:TileMap, _arg2:int):Boolean{ var _local8:int; var _local3:int = ((dest.top + 0.1) / _arg1.tileSize.x); var _local4:int = ((dest.bottom - 0.1) / _arg1.tileSize.y); var _local5:Boolean; var _local6:int = _local4; if ((_local4 * _arg1.tileSize.y) == (dest.bottom - velocity.y)){ _local5 = true; _local4--; }; var _local7:int = _local4; while (_local7 >= _local3) { if (_arg1.contains(_arg2, _local7)){ handleTileCollision(_arg1, _arg2, _local7); if (((_arg1.contains((_arg2 - xdir), _local7)) && ((_arg1.getTileFlags((_arg2 - xdir), _local7) & collidesWithObjectMask.bits)))){ } else { _local8 = _arg1.getTileFlags(_arg2, _local7); if ((_local8 & collidesWithObjectMask.bits)){ if (_local7 == _local4){ _onWall = xdir; }; return (true); }; }; }; _local7--; }; if (((((_local5) && (_arg1.contains(_arg2, (_local4 + 1))))) && ((_arg1.getTileFlags(_arg2, (_local4 + 1)) == 0)))){ _onCliff = xdir; }; return (false); } public function castRay(_arg1:Point, _arg2:Point, _arg3:ObjectType, _arg4:RayHitInfo):Boolean{ return (false); } public function onCollideObject(_arg1:PlatformObject, _arg2:Point):void{ } public function get platformObject():PlatformObject{ return (_platformObject); } public function set objectMask(_arg1:ObjectType):void{ _objectMask = _arg1; } public function get worldExtents():Rectangle{ return (bounds); } public function get atRest():Boolean{ return (_atRest); } public function get bounds():Rectangle{ _bounds.x = (position.x - (solidSize.x * 0.5)); _bounds.y = (position.y - (solidSize.y * 0.5)); _bounds.width = solidSize.x; _bounds.height = solidSize.y; return (_bounds); } public function collideEnd():void{ if (platformObject){ velocity.y = (velocity.y - platformObject.velocity.y); velocity.x = (velocity.x - platformObject.velocity.x); }; if (((!(atRest)) && (!(fixed)))){ position = new Point((dest.x + (solidSize.x / 2)), (dest.y + (solidSize.y / 2))); if (((wasOnGround) && (!(onGround)))){ }; if (((!(wasOnGround)) && (onGround))){ owner.eventDispatcher.dispatchEvent(new Event("Land")); }; }; if ((((((((((velocity.x == 0)) && ((velocity.y == 0)))) && (!(bumped)))) && (onGround))) && ((platformObject == null)))){ _atRest = true; } else { _atRest = false; }; if (bumped){ bumped = false; }; } function collideVsObject(_arg1:PlatformObject):void{ var _local11:Point; if (((((!(solid)) || (!(_arg1.solid)))) || (!((_arg1.objectMask.bits & collidesWithObjectMask.bits))))){ return; }; var _local2:Rectangle = _arg1.bounds; if (!_local2.intersects(dest)){ return; }; position_of_collision.x = position.x; position_of_collision.y = position.y; var _local3:Number = (velocity.x - _arg1.velocity.x); var _local4:Number = (velocity.y - _arg1.velocity.y); var _local5:int = ((_local3 > 0)) ? 1 : ((_local3 < 0)) ? -1 : 0; var _local6:int = ((_local4 > 0)) ? 1 : ((_local4 < 0)) ? -1 : 0; var _local7:Point = new Point(((dest.left + dest.right) * 0.5), ((dest.top + dest.bottom) * 0.5)); var _local8:Point = new Point(((_local2.left + _local2.right) * 0.5), ((_local2.top + _local2.bottom) * 0.5)); var _local9:Rectangle = _local2.intersection(dest); var _local10:Number = 0; if (((_arg1.oneWay) && ((_local4 <= 0)))){ return; }; if (((_arg1.oneWay) && (((bounds.bottom - _local2.top) > (_local4 * 2))))){ return; }; if (neverObstructed){ contactList[_arg1] = new Point(0, 0); _arg1.contactList[this] = new Point(0, 0); return; }; if ((((_local9.width < _local9.height)) && (!(_arg1.oneWay)))){ _local10 = dest.x; if (_local7.x < _local8.x){ dest.x = (_local2.left - solidSize.x); } else { dest.x = _local2.right; }; _local10 = (_local10 - dest.x); _local11 = contactList[_arg1]; if (_local11 == null){ _local11 = new Point(0, 0); }; _local11.x = (_local11.x + _local10); contactList[_arg1] = _local11; _arg1.contactList[this] = new Point(-(_local11.x), -(_local11.y)); if (!(_arg1.collidesWithObjectMask.bits & this.objectMask.bits)){ velocity.x = _arg1.velocity.x; } else { velocity.x = (velocity.x * -(bounceFactor)); }; _arg1.bumped = true; } else { _local10 = dest.y; if (_local7.y < _local8.y){ dest.y = (_local2.top - solidSize.y); _platformObject = _arg1; _onGround = true; } else { dest.y = _local2.bottom; }; _local10 = (_local10 - dest.y); _local11 = contactList[_arg1]; if (_local11 == null){ _local11 = new Point(0, 0); }; _local11.y = (_local11.y + _local10); contactList[_arg1] = _local11; _arg1.contactList[this] = new Point(-(_local11.x), -(_local11.y)); if (!(_arg1.collidesWithObjectMask.bits & this.objectMask.bits)){ velocity.y = _arg1.velocity.y; } else { velocity.y = (velocity.y * -(bounceFactor)); }; _arg1.bumped = true; }; } public function collideStart():void{ if (((((((!((velocity.x == 0))) || (!((velocity.y == 0))))) || (!(solid)))) || (_platformObject))){ _atRest = false; }; if (platformObject){ velocity.y = (velocity.y + _platformObject.velocity.y); velocity.x = (velocity.x + _platformObject.velocity.x); }; _platformObject = null; if (((!(atRest)) && (!(fixed)))){ wasOnGround = onGround; _onGround = false; _onWall = 0; _onCliff = 0; velocity.y = (velocity.y + gravity.y); velocity.x = (velocity.x + gravity.x); velocity.x = Math.min(Math.max(velocity.x, (0 - velocityMax.x)), velocityMax.x); velocity.y = Math.min(Math.max(velocity.y, (0 - velocityMax.y)), velocityMax.y); dest = new Rectangle((topLeft.x + velocity.x), (topLeft.y + velocity.y), solidSize.x, solidSize.y); destX = null; xdir = ((velocity.x > 0)) ? 1 : ((velocity.x < 0)) ? -1 : 0; ydir = ((velocity.y > 0)) ? 1 : ((velocity.y < 0)) ? -1 : 0; }; } public function get objectMask():ObjectType{ return (_objectMask); } function collideVsTilemap(_arg1:TileMap):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; if (!solid){ return; }; var _local8:Number = 0; var _local9:Rectangle = _arg1.worldExtents; if (((this.clampMapLeft) && ((dest.x < _local9.x)))){ dest.x = _local9.x; velocity.x = 0; handleTileMapBoundaryCollision(_arg1, -1, 0); }; if (((this.clampMapRight) && ((dest.x > ((_local9.x + _local9.width) - solidSize.x))))){ dest.x = ((_local9.x + _local9.width) - solidSize.x); velocity.x = 0; handleTileMapBoundaryCollision(_arg1, 1, 0); }; if (((this.clampMapTop) && ((dest.y < _local9.y)))){ dest.y = _local9.y; velocity.y = 0; handleTileMapBoundaryCollision(_arg1, 0, -1); }; if (((this.clampMapBottom) && ((dest.y > ((_local9.y + _local9.height) - solidSize.y))))){ dest.y = ((_local9.y + _local9.height) - solidSize.y); velocity.y = 0; handleTileMapBoundaryCollision(_arg1, 0, 1); }; if (xdir != 0){ _local2 = ((xdir)>0) ? (bounds.right / _arg1.tileSize.x) : (bounds.left / _arg1.tileSize.x); _local4 = ((xdir)>0) ? (dest.right / _arg1.tileSize.x) : (dest.left / _arg1.tileSize.x); if ((((xdir > 0)) && (((bounds.right % _arg1.tileSize.x) == 0)))){ _local2--; }; if (_local2 != _local4){ if (vertTileMapCollision(_arg1, _local4)){ if (xdir > 0){ dest.x = ((_local4 * _arg1.tileSize.x) - solidSize.x); } else { dest.x = (_local2 * _arg1.tileSize.x); }; velocity.x = (velocity.x * -(bounceFactor)); }; }; }; if (ydir != 0){ _local3 = ((ydir)>0) ? (bounds.bottom / _arg1.tileSize.y) : (bounds.top / _arg1.tileSize.y); _local5 = ((ydir)>0) ? (dest.bottom / _arg1.tileSize.y) : (dest.top / _arg1.tileSize.y); if ((((ydir > 0)) && (((bounds.bottom % _arg1.tileSize.y) == 0)))){ _local3--; }; if (_local3 != _local5){ if (horizTileMapCollision(_arg1, _local5)){ if (ydir > 0){ _onGround = true; dest.y = ((_local5 * _arg1.tileSize.y) - solidSize.y); } else { dest.y = (_local3 * _arg1.tileSize.y); }; velocity.y = ((Math.abs(velocity.y) <= bounceMinimum)) ? 0 : ((velocity.y + gravity.y) * -(bounceFactor)); }; }; }; if (!onGround){ _onCliff = 0; }; } public function handleTileCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ } function horizTileMapCollision(_arg1:TileMap, _arg2:int):Boolean{ var _local3:int = (dest.left / _arg1.tileSize.x); var _local4:int = (dest.right / _arg1.tileSize.y); if (velocity.x == 0){ if ((_local4 * _arg1.tileSize.x) == dest.right){ _local4--; }; }; var _local5:int = _local3; while (_local5 <= _local4) { if (_arg1.contains(_local5, _arg2)){ handleTileCollision(_arg1, _local5, _arg2); if (((_arg1.contains(_local5, (_arg2 - ydir))) && ((_arg1.getTileFlags(_local5, (_arg2 - ydir)) & collidesWithObjectMask.bits)))){ } else { if ((_arg1.getTileFlags(_local5, _arg2) & collidesWithObjectMask.bits)){ return (true); }; if ((((velocity.y >= 0)) && ((_arg1.getTileFlags(_local5, _arg2) > 0)))){ return (true); }; }; }; _local5++; }; return (false); } public function get topLeft():Point{ _topLeft.x = (position.x - (solidSize.x * 0.5)); _topLeft.y = (position.y - (solidSize.y * 0.5)); return (_topLeft); } } }//package com.hanclinto.platformer
Section 222
//PlatformSpatialManager (com.hanclinto.platformer.PlatformSpatialManager) package com.hanclinto.platformer { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import flash.utils.*; import com.pblabs.engine.*; public class PlatformSpatialManager extends BasicSpatialManager2D implements ITickedObject { private var defferCount:int;// = 0 public var paused:Boolean;// = false public static var skipCount:int = 1; override protected function onRemove():void{ PBE.processManager.removeTickedObject(this); super.onRemove(); } override protected function onAdd():void{ PBE.processManager.addTickedObject(this); super.onAdd(); } public function onTick(_arg1:Number):void{ var _local2:int; var _local3:int; var _local4:PlatformObject; var _local5:PlatformObject; var _local6:Rectangle; var _local7:TileMap; var _local8:int; var _local9:int; var _local10:Object; if (paused){ return; }; _local3 = 0; while (_local3 < this._objectList.length) { _local4 = (_objectList[_local3] as PlatformObject); if (_local4 != null){ _local4.collideStart(); if (((!(_local4.atRest)) && (!(_local4.fixed)))){ _local2 = 0; while (_local2 < this._objectList.length) { _local7 = (_objectList[_local2] as TileMap); if (_local7 != null){ if ((_local7.objectMask.bits & _local4.collidesWithObjectMask.bits)){ _local4.collideVsTilemap(_local7); }; }; _local2++; }; _local2 = 0; while (_local2 < this._objectList.length) { _local5 = (_objectList[_local2] as PlatformObject); if (((((((!((_local5 == null))) && (!((_local5 == _local4))))) && ((Math.abs((_local5.position.x - _local4.position.x)) < 50)))) && ((Math.abs((_local5.position.y - _local4.position.y)) < 50)))){ if ((_local5.objectMask.bits & _local4.collidesWithObjectMask.bits)){ _local4.collideVsObject(_local5); }; }; _local2++; }; }; _local4.collideEnd(); _local4.onTick(_arg1); }; _local3++; }; _local3 = 0; while (_local3 < this._objectList.length) { _local4 = (_objectList[_local3] as PlatformObject); if (_local4 != null){ for (_local10 in _local4.contactList) { _local5 = (_local10 as PlatformObject); if (_local5 != null){ _local4.onCollideObject((_local10 as PlatformObject), (_local4.contactList[_local10] as Point)); }; }; _local4.contactList = new Dictionary(); }; _local3++; }; } } }//package com.hanclinto.platformer
Section 223
//PlayerPlatformController (com.hanclinto.platformer.PlayerPlatformController) package com.hanclinto.platformer { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import com.pblabs.components.basic.*; import com.pblabs.engine.*; public class PlayerPlatformController extends PlatformObject { public var spriteIndexIdle:int;// = 15 public var airJumpFactor:Number;// = 1 public var airJumpRechargeOnWall:Boolean;// = false public var horizAccel:Number;// = 0.5 protected var _inputMap:InputMap; public var wallJumpFactor:Number;// = 0.8 protected var _down:Number;// = 0 public var pixelsPerStep:Number;// = 15 public var spriteIndexJumpDown:int;// = 14 public var slowdown:Number;// = 0.5 protected var _right:Number;// = 0 protected var airJumpsAvailable:int;// = 0 protected var isDying:Boolean;// = false public var airControl:Number;// = 0.5 public var spriteIndexWallSlideUp:int;// = 0 public var jumpSpeed:Number;// = 0 public var wallJumpEnable:Boolean;// = true public var spriteIndexWallSlideDown:int;// = 0 public var spriteIndexRunEnd:int;// = 5 public var hurtDuration:int;// = 1000 public var spriteIndexRunStart:int;// = 0 public var spriteFlipX:Boolean;// = false public var airJumpHorizSlowdown:Number;// = 0.5 protected var _up:Number;// = 0 public var wallSlideSlowdown:Number;// = 0.9 public var spriteIndexHurt:int;// = 4 protected var _action:Number;// = 0 public var spriteIndexJumpUp:int;// = 13 protected var deathTime:int;// = -1 protected var _left:Number;// = 0 protected var hitTriggers:Array; public var maxHorizSpeed:Number;// = 10 public var wallJumpHorizPushoff:Number;// = 5 public var airJumpCapacity:int;// = 1 protected var hurtTime:int;// = -1 public function PlayerPlatformController(){ _inputMap = new InputMap(); hitTriggers = new Array(); super(); } protected function onDied(_arg1:HealthEvent):void{ deathTime = PBE.processManager.virtualTime; (PBE.scene as BitmapDataScene).trackObject = null; isDying = true; solid = false; velocity.y = (-(jumpSpeed) * 0.5); velocity.x = 0; } override public function onTick(_arg1:Number):void{ var _local2:Array; var _local3:SpriteSheetRenderer; var _local4:int; var _local11:int; var _local12:Array; var _local13:IEntity; var _local14:int; var _local15:BaseTriggerObject; _local3 = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); if (isDying){ if ((PBE.processManager.virtualTime - deathTime) > 2000){ _local11 = LevelManager.instance.currentLevel; _local12 = GroupManagerComponent.getGroupByName("group_dynamic_entities").entityList; trace((("Deleting " + _local12.length.toString()) + " entities")); _local4 = 0; while (_local4 < _local12.length) { _local13 = (_local12[_local4] as IEntity); _local13.destroy(); _local4++; }; LevelManager.instance.unloadCurrentLevel(); LevelManager.instance.loadLevel(_local11); }; if (_local3 != null){ _local3.spriteIndex = spriteIndexHurt; _local3.scale = new Point(_local3.scale.x, -1); }; return; }; var _local5:int = _up; var _local6:int = _action; _left = (PBE.isKeyDown(InputKey.LEFT)) ? 1 : 0; _right = (PBE.isKeyDown(InputKey.RIGHT)) ? 1 : 0; _up = (PBE.isKeyDown(InputKey.SPACE)) ? 1 : 0; _down = (PBE.isKeyDown(InputKey.DOWN)) ? 1 : 0; _action = (PBE.isKeyDown(InputKey.UP)) ? 1 : 0; if (_up != _local5){ if (_up){ if (onGround){ owner.eventDispatcher.dispatchEvent(new Event("Jump")); velocity.y = (velocity.y - jumpSpeed); } else { if (onWall != 0){ if (wallJumpEnable){ owner.eventDispatcher.dispatchEvent(new Event("WallJump")); if (velocity.y > 0){ velocity.y = 0; }; velocity.y = (velocity.y - (jumpSpeed * wallJumpFactor)); velocity.x = ((onWall * wallJumpHorizPushoff) * -1); }; } else { if ((((airJumpsAvailable > 0)) || ((airJumpCapacity == -1)))){ owner.eventDispatcher.dispatchEvent(new Event("AirJump")); if (velocity.y > 0){ velocity.y = 0; }; velocity.y = (velocity.y - (jumpSpeed * airJumpFactor)); velocity.x = (velocity.x * airJumpHorizSlowdown); airJumpsAvailable--; }; }; }; } else { if (velocity.y < 0){ velocity.y = (velocity.y * 0.5); }; }; }; if (((onGround) || (((airJumpRechargeOnWall) && (!((onWall == 0))))))){ airJumpsAvailable = airJumpCapacity; }; var _local7:int = (_right - _left); if (onGround){ if ((((velocity.x > 0)) && ((_local7 <= 0)))){ velocity.x = Math.max(0, (velocity.x * slowdown)); } else { if ((((velocity.x < 0)) && ((_local7 >= 0)))){ velocity.x = Math.min(0, (velocity.x * slowdown)); }; }; }; if (_local7 != 0){ if (onGround){ velocity.x = (velocity.x + (_local7 * horizAccel)); if (velocity.x > maxHorizSpeed){ velocity.x = maxHorizSpeed; }; if (velocity.x < -(maxHorizSpeed)){ velocity.x = -(maxHorizSpeed); }; } else { velocity.x = (velocity.x + ((_local7 * horizAccel) * airControl)); if (velocity.x > (maxHorizSpeed * airControl)){ velocity.x = (maxHorizSpeed * airControl); }; if (velocity.x < (-(maxHorizSpeed) * airControl)){ velocity.x = (-(maxHorizSpeed) * airControl); }; }; }; if (((!((onWall == 0))) && ((velocity.y > 0)))){ velocity.y = (velocity.y * wallSlideSlowdown); }; if (velocity.x != 0){ _local3.scale = new Point((((((!(spriteFlipX)) && ((velocity.x < 0)))) || (((spriteFlipX) && ((velocity.x >= 0)))))) ? -1 : 1, _local3.scale.y); }; if (this.manager.paused){ _local3.spriteIndex = spriteIndexIdle; }; if (_local3 != null){ if (!onGround){ if (velocity.y < 0){ if (onWall != 0){ _local3.spriteIndex = spriteIndexWallSlideUp; } else { _local3.spriteIndex = spriteIndexJumpUp; }; } else { if (onWall != 0){ _local3.spriteIndex = spriteIndexWallSlideDown; } else { _local3.spriteIndex = spriteIndexJumpDown; }; }; } else { if (Math.abs(velocity.x) < 0.1){ _local3.spriteIndex = spriteIndexIdle; } else { _local14 = Math.floor((position.x / pixelsPerStep)); _local3.spriteIndex = ((_local14 % ((spriteIndexRunEnd - spriteIndexRunStart) + 1)) + spriteIndexRunStart); if (velocity.x < 0){ _local3.spriteIndex = (spriteIndexRunStart + (spriteIndexRunEnd - _local3.spriteIndex)); }; }; }; }; var _local8:int = BaseTriggerObject.enterExitTriggers.length; var _local9:Array = new Array(); _local4 = 0; while ((((_local4 < _local8)) && (!(isDying)))) { _local15 = BaseTriggerObject.enterExitTriggers[_local4]; if (((!((_local15 == null))) && (_local15.active))){ if (_local15.bounds.intersects(bounds)){ if (hitTriggers[_local15.triggerID] == null){ hitTriggers[_local15.triggerID] = _local15; if (_local15.onEnter != null){ _local9.push(_local15.onEnter); }; }; } else { if (hitTriggers[_local15.triggerID] != null){ hitTriggers[_local15.triggerID] = null; if (_local15.onExit != null){ _local9.push(_local15.onExit); }; }; }; }; _local4++; }; var _local10:int = (_action - _local6); if (_local10 > 0){ _local8 = BaseTriggerObject.actionTriggers.length; _local4 = 0; while ((((_local4 < _local8)) && (!(isDying)))) { _local15 = BaseTriggerObject.actionTriggers[_local4]; if (((!((_local15 == null))) && (_local15.active))){ if (_local15.bounds.intersects(bounds)){ _local9.push(_local15.onAction); }; }; _local4++; }; }; _local4 = 0; while ((((_local4 < _local9.length)) && (!(isDying)))) { (_local9[_local4] as Function)(this); _local4++; }; } protected function onBoppedEnemy(_arg1:Event):void{ owner.eventDispatcher.dispatchEvent(new Event("Jump")); if (velocity.y > 0){ velocity.y = 0; }; velocity.y = (velocity.y - (jumpSpeed * airJumpFactor)); } override protected function onRemove():void{ super.onRemove(); owner.eventDispatcher.removeEventListener(HealthComponent.DIED, onDied); owner.eventDispatcher.removeEventListener(HealthComponent.DAMAGED, onDamaged); owner.eventDispatcher.removeEventListener("BoppedEnemy", onBoppedEnemy); } protected function get isHurt():Boolean{ return (((!((hurtTime == -1))) && (((PBE.processManager.virtualTime - hurtTime) < hurtDuration)))); } override public function handleTileMapBoundaryCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ var _local4:HealthComponent; if (_arg3 == 1){ _local4 = (owner.lookupComponentByType(HealthComponent) as HealthComponent); if (_local4){ _local4.damage(_local4.health); }; }; } override public function handleTileCollision(_arg1:TileMap, _arg2:int, _arg3:int):void{ var _local4:HealthComponent; if ((_arg1.getTileFlags(_arg2, _arg3) & 4)){ _local4 = (owner.lookupComponentByType(HealthComponent) as HealthComponent); if (_local4){ _local4.damage(_local4.health); }; }; } override protected function onAdd():void{ super.onAdd(); owner.eventDispatcher.addEventListener(HealthComponent.DIED, onDied); owner.eventDispatcher.addEventListener(HealthComponent.DAMAGED, onDamaged); owner.eventDispatcher.addEventListener("BoppedEnemy", onBoppedEnemy); (PBE.scene as BitmapDataScene).trackObject = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); } protected function onDamaged(_arg1:HealthEvent):void{ hurtTime = PBE.processManager.virtualTime; } } }//package com.hanclinto.platformer
Section 224
//RepeatingRenderComponent (com.hanclinto.platformer.RepeatingRenderComponent) package com.hanclinto.platformer { import flash.display.*; import com.pblabs.rendering2D.*; import flash.geom.*; import com.pblabs.rendering2D.spritesheet.*; public class RepeatingRenderComponent extends DisplayObjectRenderer { public var spriteSheet:SpriteContainerComponent; public var scrollFactor:Point; public function RepeatingRenderComponent(){ scrollFactor = new Point(1, 1); super(); updatePriority = -1; } override public function updateTransform(_arg1:Boolean=false):void{ if (!displayObject){ return; }; if (_arg1){ updateProperties(); }; displayObject.alpha = _alpha; displayObject.blendMode = _blendMode; displayObject.visible = (alpha > 0); _transformDirty = false; } override public function onFrame(_arg1:Number):void{ if (((!(spriteSheet)) || (!(spriteSheet.isLoaded)))){ return; }; if (!displayObject){ displayObject = new Sprite(); }; updateProperties(); if (_transformDirty){ updateTransform(); }; var _local2:Sprite = (displayObject as Sprite); var _local3:Matrix = new Matrix(); _local3.translate((scene.sceneViewBounds.left * (1 - scrollFactor.x)), (scene.sceneViewBounds.top * (1 - scrollFactor.y))); _local2.graphics.clear(); _local2.graphics.beginBitmapFill(spriteSheet.getFrame(0), _local3); _local2.graphics.drawRect(scene.sceneViewBounds.left, scene.sceneViewBounds.top, scene.sceneViewBounds.width, scene.sceneViewBounds.height); _local2.graphics.endFill(); } } }//package com.hanclinto.platformer
Section 225
//SnaggerPlatformController (com.hanclinto.platformer.SnaggerPlatformController) package com.hanclinto.platformer { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.*; public class SnaggerPlatformController extends PlatformObject { public var spriteIndexJumpEnd:int;// = 2 public var spriteIndexIdle:int;// = 0 public var animationSpeed:int;// = 100 public var spriteIndexJumpStart:int;// = 1 public var jumpSpeed:Number;// = 8 private var facing:int;// = 1 public var sensitivity:int;// = 50 override public function onCollideObject(_arg1:PlatformObject, _arg2:Point):void{ if ((_arg1 is PlayerPlatformController)){ _arg1.owner.setProperty(new PropertyReference("@Health.health"), 0); }; } override public function onTick(_arg1:Number):void{ var _local3:SpriteSheetRenderer; var _local4:Array; var _local5:int; var _local2:PlayerPlatformController = (PBE.nameManager.lookupComponentByType("hero", PlayerPlatformController) as PlayerPlatformController); facing = 0; if (onGround){ if (_local2 != null){ if (Math.abs((_local2.position.x - position.x)) < sensitivity){ velocity.y = (velocity.y - jumpSpeed); }; facing = ((_local2.position.x)>position.x) ? 1 : ((_local2.position.x)<position.x) ? -1 : 0; }; }; _local3 = (owner.lookupComponentByName("Render") as SpriteSheetRenderer); if (onGround){ _local3.spriteIndex = spriteIndexIdle; } else { _local3.spriteIndex = ((Math.floor((PBE.processManager.virtualTime / animationSpeed)) % ((spriteIndexJumpEnd - spriteIndexJumpStart) + 1)) + spriteIndexJumpStart); }; if (facing != 0){ _local4 = owner.lookupComponentsByType(SpriteSheetRenderer); _local5 = 0; while (_local5 < _local4.length) { _local3 = (_local4[_local5] as SpriteSheetRenderer); _local5++; }; }; } } }//package com.hanclinto.platformer
Section 226
//TileAnimation (com.hanclinto.platformer.TileAnimation) package com.hanclinto.platformer { import com.pblabs.engine.*; public class TileAnimation { public var tiles:Array; public var frameDelay:int; private var tileIndices:Array; private var frameDelayInverse:Number; public function TileAnimation(){ tiles = new Array(); tileIndices = new Array(); super(); } public function getFrameForTile(_arg1:int):int{ var _local2:int = ((tileIndices[_arg1] + (PBE.processManager.virtualTime * frameDelayInverse)) % tiles.length); return (tiles[_local2]); } public function cacheAnimation():void{ frameDelayInverse = (1 / frameDelay); tileIndices = []; var _local1:int; while (_local1 < tiles.length) { if (tileIndices[tiles[_local1]]){ PBE.log(this, (("Warning: Tile index " + tiles[_local1].toString()) + " is contained more than once in animation. This might result in unexpected animation behavior.")); } else { tileIndices[tiles[_local1]] = _local1; }; _local1++; }; } } }//package com.hanclinto.platformer
Section 227
//TileMap (com.hanclinto.platformer.TileMap) package com.hanclinto.platformer { import com.pblabs.engine.core.*; import com.pblabs.rendering2D.*; import flash.geom.*; public class TileMap extends SimpleSpatialComponent { public var width:int;// = 10 public var height:int;// = 10 public var tileSize:Point; private var flagMap:FlagMap; public var collisionActive:Boolean;// = false public function TileMap(){ tileSize = new Point(32, 32); super(); registerForTicks = false; } override protected function onAdd():void{ if (!flagMap){ setMapSize(width, height); }; super.onAdd(); } public function getTileFlags(_arg1:int, _arg2:int):int{ return (flagMap.getTileFlags(_arg1, _arg2)); } override public function get worldExtents():Rectangle{ return (new Rectangle(0, 0, (width * tileSize.x), (height * tileSize.y))); } public function getTileType(_arg1:int, _arg2:int):int{ return (flagMap.getTileType(_arg1, _arg2)); } public function getTileBounds(_arg1:Point, _arg2:Number=0):Rectangle{ return (new Rectangle((Math.floor(_arg1.x) - _arg2), (Math.floor(_arg1.y) - _arg2), (1 + (2 * _arg2)), (1 + (2 * _arg2)))); } public function setTileType(_arg1:int, _arg2:int, _arg3:int):void{ flagMap.setTileType(_arg1, _arg2, _arg3); } private function rayVsBox(_arg1:Point, _arg2:Point, _arg3:Rectangle, _arg4:RayHitInfo):Boolean{ var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local5:Number = (_arg3.x + (_arg3.width * 0.5)); var _local6:Number = (_arg3.y + (_arg3.height * 0.5)); var _local7:Number = (_arg3.width * 0.5); var _local8:Number = (_arg3.height * 0.5); var _local9:Number = _arg1.x; var _local10:Number = _arg1.y; var _local11:Number = (_arg2.x - _arg1.x); var _local12:Number = (_arg2.y - _arg1.y); if (_local11 > 0){ _local13 = (_local5 - _local7); } else { _local13 = (_local5 + _local7); }; if (_local12 > 0){ _local14 = (_local6 - _local8); } else { _local14 = (_local6 + _local8); }; if (_local11 == 0){ if (_local12 == 0){ throw (new Error("Can't raycast with 0,0!")); }; _local15 = ((_local14 - _local10) / _local12); } else { if (_local12 == 0){ _local15 = ((_local13 - _local9) / _local11); } else { _local20 = ((_local13 - _local9) / _local11); _local21 = ((_local14 - _local10) / _local12); if (_local20 < _local21){ _local16 = (_local5 - _local7); _local18 = (_local5 + _local7); _local19 = _local14; _local17 = _local19; _local15 = _local21; } else { _local17 = (_local6 - _local8); _local19 = (_local6 + _local8); _local18 = _local13; _local16 = _local18; _local15 = _local20; }; }; }; if ((((0 < _local15)) && ((_local15 < 1)))){ _arg4.time = _local15; _arg4.position = new Point((_local9 + (_local15 * _local11)), (_local10 + (_local15 * _local12))); return (true); }; return (false); } override public function castRay(_arg1:Point, _arg2:Point, _arg3:ObjectType, _arg4:RayHitInfo):Boolean{ var _local14:Number; var _local15:Number; var _local5:int = _arg3.bits; var _local6:int = Math.floor(_arg1.x); var _local7:int = Math.floor(_arg1.y); if (!_arg4){ _arg4 = new RayHitInfo(); }; _arg4.position = _arg1; var _local8:Point = _arg2.subtract(_arg1).clone(); if (_local8.length < 0.01){ _arg4.time = 1; return (false); }; _local8.normalize(1); var _local9:Point = new Point(); var _local10:Point = new Point(); var _local11:Point = new Point(); if (_local8.x < 0){ _local9.x = -1; _local10.x = ((_local6 - _arg1.x) / _local8.x); _local11.x = (1 / -(_local8.x)); } else { if (0 < _local8.x){ _local9.x = 1; _local10.x = (((_local6 + 1) - _arg1.x) / _local8.x); _local11.x = (1 / _local8.x); } else { _local9.x = 0; _local10.x = Number.MAX_VALUE; _local11.x = 0; }; }; if (_local8.y < 0){ _local9.y = -1; _local10.y = ((_local7 - _arg1.y) / _local8.y); _local11.y = (1 / -(_local8.y)); } else { if (0 < _local8.y){ _local9.y = 1; _local10.y = (((_local7 + 1) - _arg1.y) / _local8.y); _local11.y = (1 / _local8.y); } else { _local9.y = 0; _local10.y = Number.MAX_VALUE; _local11.y = 0; }; }; var _local12:Point = new Point(_local6, _local7); if ((flagMap.getTileFlags(_local6, _local7) & _local5)){ if (getTileBounds(new Point(_local6, _local7)).containsPoint(_arg1)){ _arg4.time = 0; _arg4.position = _arg1; return (true); }; if (rayVsBox(_arg1, _arg2, getTileBounds(new Point(_local6, _local7)), _arg4)){ return (true); }; }; var _local13:Point = new Point(); while ((((((((_local12.x >= 0)) && ((_local12.y >= 0)))) && ((_local12.x <= (width + 1))))) && ((_local12.y <= (height + 1))))) { if (_local10.x < _local10.y){ _local13.x = (_local12.x + _local9.x); _local13.y = _local12.y; _local14 = (_arg1.x + (_local10.x * _local8.x)); _local15 = (_arg1.y + (_local10.x * _local8.y)); if ((((flagMap.getTileFlags(_local13.x, _local13.y) & _local5)) && (rayVsBox(_arg1, _arg2, getTileBounds(_local13), _arg4)))){ return (true); }; _local10.x = (_local10.x + _local11.x); _local6 = (_local6 + _local9.x); } else { _local13.x = _local12.x; _local13.y = (_local12.y + _local9.y); _local14 = (_arg1.x + (_local10.y * _local8.x)); _local15 = (_arg1.y + (_local10.y * _local8.y)); if ((((flagMap.getTileFlags(_local13.x, _local13.y) & _local5)) && (rayVsBox(_arg1, _arg2, getTileBounds(_local13), _arg4)))){ return (true); }; _local10.y = (_local10.y + _local11.y); _local7 = (_local7 + _local9.y); }; _local12.x = _local13.x; _local12.y = _local13.y; }; _arg4.time = 1; return (false); } public function setTileFlags(_arg1:int, _arg2:int, _arg3:int):void{ flagMap.setTileFlags(_arg1, _arg2, _arg3); } public function setMapSize(_arg1:int, _arg2:int):void{ width = _arg1; height = _arg2; size = new Point((width * tileSize.x), (height * tileSize.y)); if (((((!(flagMap)) || (!((flagMap.width == width))))) || (!((flagMap.height == height))))){ flagMap = new FlagMap(width, height); }; } public function contains(_arg1:int, _arg2:int):Boolean{ return ((((((((_arg1 >= 0)) && ((_arg2 >= 0)))) && ((_arg1 < width)))) && ((_arg2 < height)))); } } }//package com.hanclinto.platformer
Section 228
//TileMapRenderer (com.hanclinto.platformer.TileMapRenderer) package com.hanclinto.platformer { import com.pblabs.engine.core.*; import flash.display.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.rendering2D.spritesheet.*; public class TileMapRenderer extends BitmapRenderer { public var tileSheets:OrderedArray; public var clampCameraToSelf:Boolean;// = true private var frameCache:BitmapData; public var wrap:Boolean;// = false public var skipTileZero:Boolean;// = true protected var _tileBitmaps:Array; protected var _borkBitmap:BitmapData; public var map:TileMap; public var parallax:Point; public function TileMapRenderer(){ parallax = new Point(0, 0); tileSheets = new OrderedArray(); _tileBitmaps = new Array(); _borkBitmap = new BitmapData(32, 32, true, 2013200639); super(); updatePriority = -1; } override public function drawPixels(_arg1:Matrix, _arg2:BitmapData):void{ var _local12:int; var _local13:int; var _local14:int; var _local15:int; var _local16:Point; var _local3:Point = new Point(); var _local4:Point = scene.sceneViewBounds.topLeft; var _local5:Point = new Point((_local4.x * parallax.x), (_local4.y * parallax.y)); var _local6:int = (((_local4.x + _local5.x) / map.tileSize.x) - 1); var _local7:int = (((_local4.y + _local5.y) / map.tileSize.y) - 1); var _local8:int = ((((_local4.x + scene.sceneView.width) + _local5.x) / map.tileSize.x) + 3); var _local9:int = ((((_local4.y + scene.sceneView.height) + _local5.y) / map.tileSize.y) + 3); if (!wrap){ _local6 = Math.max(0, _local6); _local7 = Math.max(0, _local7); _local8 = Math.min(map.width, _local8); _local9 = Math.min(map.height, _local9); }; var _local10:Rectangle = new Rectangle(0, 0, map.tileSize.x, map.tileSize.y); var _local11:int = _local6; while (_local11 < _local8) { _local12 = _local7; while (_local12 < _local9) { _local13 = _local11; _local14 = _local12; if (wrap){ _local13 = (_local13 % (map.width - 1)); _local14 = (_local14 % (map.height - 1)); if (_local13 < 0){ _local13 = (_local13 + map.width); }; if (_local14 < 0){ _local14 = (_local14 + map.height); }; }; _local15 = getTileType(_local13, _local14); if (((skipTileZero) && ((_local15 == 0)))){ } else { _local3.x = (_local11 * map.tileSize.x); _local3.y = (_local12 * map.tileSize.y); _local16 = _arg1.transformPoint(_local3); _local3.x = ((_local16.x + -(_local5.x)) + -(_position.x)); _local3.y = ((_local16.y + -(_local5.y)) + -(_position.y)); if (_local15 <= _tileBitmaps.length){ if ((((_local15 < 0)) || ((_tileBitmaps[(_local15 - 1)] == null)))){ Logger.warn(this, "drawPixels", ("Tried to display tile of type " + _local15.toString())); } else { _arg2.copyPixels(_tileBitmaps[(_local15 - 1)], _local10, _local3, null, null, true); }; } else { _arg2.copyPixels(_borkBitmap, _local10, _local3, null, null, true); }; }; _local12++; }; _local11++; }; } protected function getTileType(_arg1:int, _arg2:int):int{ return (map.getTileType(_arg1, _arg2)); } override public function onFrame(_arg1:Number):void{ var _local10:SpriteContainerComponent; var _local11:int; var _local12:int; var _local13:int; var _local14:int; var _local15:int; var _local16:Point; if (!scene){ return; }; if (clampCameraToSelf){ scene.trackLimitRectangle = map.worldExtents; }; if (_tileBitmaps.length == 0){ for each (_local10 in tileSheets) { if (!_local10.isLoaded){ return; }; }; for each (_local10 in tileSheets) { _local11 = 0; while (_local11 < _local10.frameCount) { _tileBitmaps.push(_local10.getFrame(_local11)); _local11++; }; }; }; var _local2:Point = new Point(); var _local3:Point = scene.sceneViewBounds.topLeft; super.onFrame(_arg1); position = _local3.clone(); updateTransform(); if ((((scene is BitmapDataScene)) && (this.isPixelPathActive(displayObject.transform.matrix)))){ return; }; if (((((!(frameCache)) || (!((frameCache.width == scene.sceneViewBounds.width))))) || (!((frameCache.height == scene.sceneViewBounds.height))))){ frameCache = new BitmapData(scene.sceneViewBounds.width, scene.sceneViewBounds.height, true, 0); }; bitmapData = frameCache; var _local4:int = ((_local3.x / map.tileSize.x) - 1); var _local5:int = ((_local3.y / map.tileSize.y) - 1); var _local6:int = (((_local3.x + scene.sceneView.width) / map.tileSize.x) + 3); var _local7:int = (((_local3.y + scene.sceneView.height) / map.tileSize.y) + 3); if (!wrap){ _local4 = Math.max(0, _local4); _local5 = Math.max(0, _local5); _local6 = Math.min(map.width, _local6); _local7 = Math.min(map.height, _local7); }; var _local8:Rectangle = new Rectangle(0, 0, map.tileSize.x, map.tileSize.y); frameCache.lock(); frameCache.fillRect(frameCache.rect, 0); var _local9:int = _local4; while (_local9 < _local6) { _local12 = _local5; while (_local12 < _local7) { _local13 = _local9; _local14 = _local12; if (wrap){ _local13 = (_local13 % map.width); _local14 = (_local14 % map.height); if (_local13 < 0){ _local13 = (_local13 + map.width); }; if (_local14 < 0){ _local14 = (_local14 + map.height); }; }; _local15 = getTileType(_local13, _local14); if (((skipTileZero) && ((_local15 == 0)))){ } else { _local2.x = (_local13 * map.tileSize.x); _local2.y = (_local14 * map.tileSize.y); _local16 = scene.transformWorldToScene(_local2); _local2.x = (_local16.x - _position.x); _local2.y = (_local16.y - _position.y); if (_local15 <= _tileBitmaps.length){ if ((((_local15 < 0)) || ((_tileBitmaps[(_local15 - 1)] == null)))){ Logger.warn(this, "OnDraw", ("Tried to display tile of type " + _local15.toString())); } else { frameCache.copyPixels(_tileBitmaps[(_local15 - 1)], _local8, _local2); }; } else { frameCache.copyPixels(_borkBitmap, _local8, _local2); }; }; _local12++; }; _local9++; }; frameCache.unlock(); } } }//package com.hanclinto.platformer
Section 229
//TmxMapLoader (com.hanclinto.platformer.TmxMapLoader) package com.hanclinto.platformer { import com.pblabs.engine.resource.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import flash.geom.*; import flash.utils.*; import com.probertson.utils.*; import com.pblabs.engine.*; import com.dynamicflash.util.*; public class TmxMapLoader extends EntityComponent { private var _tileMapCollision:String;// = "" public var levelData:XMLResource; public var levelLayerName:String; public var map:TileMap; override protected function onAdd():void{ setTimeout(_checkData, 1); } public function get tileMapCollision():String{ return (_tileMapCollision); } public function set tileMapCollision(_arg1:String):void{ _tileMapCollision = _arg1.split(/[\n\r]/).join("").replace(/[^.^X@]/, ""); } private function _checkData():void{ var _local5:ByteArray; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local11:XML; var _local12:int; var _local13:String; var _local14:int; var _local15:Point; var _local16:int; var _local17:XML; var _local18:int; var _local19:int; var _local20:String; var _local21:String; var _local22:XML; var _local23:IEntity; var _local24:XML; var _local25:XML; var _local26:String; var _local27:String; var _local28:Array; var _local29:IEntityComponent; var _local30:Object; var _local31:int; if (((((!(levelData)) || (!(levelData.isLoaded)))) || ((levelLayerName == "")))){ setTimeout(_checkData, 10); return; }; var _local1:XML = levelData.XMLData; var _local2:int = _local1.@width; var _local3:int = _local1.@height; var _local4 = ""; var _local10:Point = new Point(); _local10.x = _local1.@tilewidth; _local10.y = _local1.@tileheight; for each (_local11 in _local1.*) { if ((((_local11.name() == "layer")) && ((_local11.@name == levelLayerName)))){ _local6 = _local11.@width; _local7 = _local11.@height; map.setMapSize(_local6, _local7); map.tileSize = _local10; if (_local11.data.@encoding == "base64"){ _local5 = Base64.decodeToByteArray(_local11.data.toString()); } else { Logger.error(this, "_checkData", "No support for non-base64 encoded levels"); }; if (_local11.data.@compression == "gzip"){ _local5 = uncompress(_local5); }; _local9 = 0; while (_local9 < _local7) { _local8 = 0; while (_local8 < _local6) { _local12 = 0; _local12 = (_local12 | (_local5.readByte() & 0xFF)); _local12 = (_local12 | ((_local5.readByte() & 0xFF) << 8)); _local12 = (_local12 | ((_local5.readByte() & 0xFF) << 16)); _local12 = (_local12 | ((_local5.readByte() & 0xFF) << 24)); if (_local12 < 0){ PBE.log(this, "Got a tile < 0!"); _local12 = (0x1000 - _local12); }; map.setTileType(_local8, _local9, _local12); if (_local12 <= 0){ } else { if ((_local12 - 1) >= tileMapCollision.length){ PBE.log(this, (((((("Tile at (" + _local8.toString()) + ", ") + _local9.toString()) + ") is type ") + _local12.toString()) + ", which is outside of the bounds of the tile map collsion data provided.")); } else { _local13 = tileMapCollision.charAt((_local12 - 1)); _local14 = 0; if (_local13 == "X"){ _local14 = 1; }; if (_local13 == "^"){ _local14 = 2; }; if (_local13 == "@"){ _local14 = 4; }; if (_local14 > 0){ map.setTileFlags(_local8, _local9, _local14); }; }; }; _local8++; }; _local9++; }; return; } else { if (_local11.name() == "objectgroup"){ if (_local11.@name == levelLayerName){ _local15 = new Point(0, 0); _local15.y = (_local11.@y * _local10.y); _local15.x = (_local11.@x * _local10.x); _local16 = 0; for each (_local17 in _local11.*) { if (_local17.name() != "object"){ Logger.print(this, (((("Unexpected tag '" + _local17.name()) + "', type='") + _local17.@type) + "' in Sprites objectgroup.")); } else { _local8 = _local17.@x; _local9 = _local17.@y; _local18 = _local17.@width; _local19 = _local17.@height; _local8 = (_local8 + ((_local18 / 2) + _local15.x)); _local9 = (_local9 + ((_local19 / 2) + _local15.y)); _local20 = _local17.@name.toString(); _local21 = _local17.@type.toString(); if (_local21 == ""){ _local21 = _local20; }; if (PBE.nameManager.lookup(_local20)){ ++_local16; _local20 = (_local20 + _local16); }; _local22 = new XML((((((((("<entity name=\"" + ??esc_xattr ) + "\" template=\"") + ??esc_xattr ) + "\">\r\n ") + (((("<component name=\"Spatial\">\r\n " + (((("<position>\r\n " + (("<x>" + ??esc_xelem ) + "</x>")) + "\r\n ") + (("<y>" + ??esc_xelem ) + "</y>")) + "\r\n </position>")) + "\r\n ") + (((("<size>\r\n " + (("<x>" + ??esc_xelem ) + "</x>")) + "\r\n ") + (("<y>" + ??esc_xelem ) + "</y>")) + "\r\n </size>")) + "\r\n \r\n </component>")) + "\r\n ") + (("<component name=\"Group\" type=\"com.pblabs.engine.components.GroupMemberComponent\">\r\n " + (("<groupName>" + ??esc_xelem ) + "</groupName>")) + "\r\n </component>")) + "\r\n <component name=\"DynamicGroup\" type=\"com.pblabs.engine.components.GroupMemberComponent\">\r\n <groupName>group_dynamic_entities</groupName>\r\n </component>\r\n </entity>")); _local23 = PBE.templateManager.instantiateEntityFromXML(_local22); for each (_local24 in _local17.*) { if (_local24.name() == "properties"){ for each (_local25 in _local24.*) { if (_local25.name() == "property"){ _local26 = _local25.@name; _local27 = _local25.@value; _local28 = _local26.split(/\./); if (_local28.length < 2){ PBE.log(this, ((("Not a full path in custom tmx property: " + _local26) + " = ") + _local27)); break; }; _local29 = _local23.lookupComponentByName(_local28[0]); if (_local29 == null){ PBE.log(this, ((((("Unable to locate component named '" + _local28[0].toString()) + "' in custom tmx property: ") + _local26) + " = ") + _local27)); break; }; _local30 = _local29; _local31 = 1; while (_local31 < (_local28.length - 1)) { _local30 = _local30[_local28[_local31]]; if (_local30 == null){ PBE.log(this, (("Unable to locate component property named '" + _local28[_local31].toString()) + "'")); break; }; _local31++; }; if ((((_local30 == null)) || ((_local30[_local28[(_local28.length - 1)]] == null)))){ PBE.log(this, ((("Unable to parse component path in custom tmx property: " + _local26) + " = ") + _local27)); break; }; _local30[_local28[(_local28.length - 1)]] = _local27; _local29.reset(); }; }; }; }; }; }; return; }; }; }; }; Logger.error(this, "_CheckData", ((("Could not find layer of name " + levelLayerName) + " in loaded level file ") + levelData.filename)); } private function uncompress(_arg1:ByteArray):ByteArray{ return (new GZIPBytesEncoder().uncompressToByteArray(_arg1)); } } }//package com.hanclinto.platformer
Section 230
//AnimationEvent (com.pblabs.animation.AnimationEvent) package com.pblabs.animation { import flash.events.*; public class AnimationEvent extends Event { public var animation:Animator;// = null public static const ANIMATION_STARTED_EVENT:String = "ANIMATION_STARTED_EVENT"; public static const ANIMATION_REPEATED_EVENT:String = "ANIMATION_REPEATED_EVENT"; public static const ANIMATION_FINISHED_EVENT:String = "ANIMATION_FINISHED_EVENT"; public static const ANIMATION_STOPPED_EVENT:String = "ANIMATION_STOPPED_EVENT"; public static const ANIMATION_RESUMED_EVENT:String = "ANIMATION_RESUMED_EVENT"; public function AnimationEvent(_arg1:String, _arg2:Animator, _arg3:Boolean=true, _arg4:Boolean=false){ super(_arg1, _arg3, _arg4); } } }//package com.pblabs.animation
Section 231
//Animator (com.pblabs.animation.Animator) package com.pblabs.animation { import flash.events.*; public class Animator extends EventDispatcher { private var _type:AnimatorType; private var _start; private var _elapsedTime:Number;// = 0 private var _previousType:AnimatorType; private var _duration:Number; private var _repeatCount:int;// = 0 private var _totalRepeatCount:int;// = 0 private var _current; private var _target; public function Animator(){ _previousType = AnimatorType.NO_ANIMATION; _type = AnimatorType.NO_ANIMATION; super(); } public function set targetValue(_arg1):void{ _target = _arg1; } protected function interpolate(_arg1, _arg2, _arg3:Number){ var _local4:Number = Number(_arg1); var _local5:Number = Number(_arg2); if ((_local5 - _local4) < 0){ return ((_local4 - ((_local4 - _local5) * _arg3))); }; if (_arg3 > 1){ _arg3 = 1; }; return ((_local4 + ((_local5 - _local4) * _arg3))); } public function get targetValue(){ return (_target); } public function get elapsed():Number{ return (_elapsedTime); } public function stop():void{ if (!isAnimating){ return; }; _previousType = _type; _type = AnimatorType.NO_ANIMATION; dispatchEvent(new AnimationEvent(AnimationEvent.ANIMATION_STOPPED_EVENT, this)); } public function play():void{ if (isAnimating){ return; }; _type = _previousType; _previousType = AnimatorType.NO_ANIMATION; if (_elapsedTime == 0){ dispatchEvent(new AnimationEvent(AnimationEvent.ANIMATION_STARTED_EVENT, this)); } else { dispatchEvent(new AnimationEvent(AnimationEvent.ANIMATION_RESUMED_EVENT, this)); }; } public function reset():void{ if (isAnimating){ stop(); }; _current = _start; _elapsedTime = 0; _repeatCount = _totalRepeatCount; } public function get totalRepeatCount():int{ return (_totalRepeatCount); } public function finish():void{ if (!isAnimating){ return; }; if ((((_type == AnimatorType.PING_PONG_ANIMATION)) && ((_repeatCount & 1)))){ _current = _start; } else { _current = _target; }; _previousType = _type; _type = AnimatorType.NO_ANIMATION; dispatchEvent(new AnimationEvent(AnimationEvent.ANIMATION_FINISHED_EVENT, this)); } public function get duration():Number{ return (_duration); } public function set startValue(_arg1):void{ _start = _arg1; } public function animate(_arg1:Number):void{ if (_type == AnimatorType.NO_ANIMATION){ return; }; _elapsedTime = (_elapsedTime + _arg1); if (_elapsedTime > _duration){ if ((((_type == AnimatorType.PLAY_ANIMATION_ONCE)) || ((_repeatCount == 0)))){ finish(); return; }; if (_type == AnimatorType.PING_PONG_ANIMATION){ reverse(); }; _elapsedTime = Math.abs((_duration - _elapsedTime)); if (_repeatCount > 0){ _repeatCount--; }; dispatchEvent(new AnimationEvent(AnimationEvent.ANIMATION_REPEATED_EVENT, this)); }; _current = interpolate(_start, _target, (_elapsedTime / _duration)); } public function reverse():void{ var _local1:* = _target; _target = _start; _start = _local1; } public function get animationType():AnimatorType{ if (isAnimating){ return (_type); }; return (_previousType); } public function set repeatCount(_arg1:int):void{ if (isAnimating){ _repeatCount = _arg1; } else { _totalRepeatCount = _arg1; }; } public function start(_arg1, _arg2, _arg3:Number, _arg4:AnimatorType, _arg5:int=0):void{ if (isAnimating){ stop(); }; _start = _arg1; _target = _arg2; _duration = _arg3; _previousType = _arg4; _totalRepeatCount = _arg5; reset(); play(); } public function get isAnimating():Boolean{ return (!((_type == AnimatorType.NO_ANIMATION))); } public function get startValue(){ return (_start); } public function set duration(_arg1:Number):void{ _duration = _arg1; } public function get currentValue(){ return (_current); } public function get repeatCount():int{ if (isAnimating){ return (_repeatCount); }; return (_totalRepeatCount); } public function set animationType(_arg1:AnimatorType):void{ if (isAnimating){ _type = _arg1; } else { _previousType = _arg1; }; } } }//package com.pblabs.animation
Section 232
//AnimatorComponent (com.pblabs.animation.AnimatorComponent) package com.pblabs.animation { import com.pblabs.engine.entity.*; import com.pblabs.engine.components.*; import flash.utils.*; public class AnimatorComponent extends AnimatedComponent { public var defaultAnimation:String;// = "Idle" private var _currentAnimation:Animator;// = null public var reference:PropertyReference;// = null public var animations:Dictionary;// = null public var autoPlay:Boolean;// = true override public function onFrame(_arg1:Number):void{ if (_currentAnimation){ _currentAnimation.animate(_arg1); owner.setProperty(reference, _currentAnimation.currentValue); }; } override protected function onReset():void{ if (((!(autoPlay)) || (_currentAnimation))){ return; }; play(defaultAnimation); } public function play(_arg1:String, _arg2=null):void{ if (((_currentAnimation) && (_currentAnimation.isAnimating))){ _currentAnimation.stop(); }; _currentAnimation = animations[_arg1]; if (!_currentAnimation){ return; }; if (_arg2){ _currentAnimation.startValue = _arg2; }; _currentAnimation.reset(); _currentAnimation.play(); } } }//package com.pblabs.animation
Section 233
//AnimatorType (com.pblabs.animation.AnimatorType) package com.pblabs.animation { import flash.utils.*; import com.pblabs.engine.serialization.*; public class AnimatorType extends Enumerable { public static const NO_ANIMATION:AnimatorType = new (AnimatorType); ; public static const PLAY_ANIMATION_ONCE:AnimatorType = new (AnimatorType); ; public static const LOOP_ANIMATION:AnimatorType = new (AnimatorType); ; public static const PING_PONG_ANIMATION:AnimatorType = new (AnimatorType); ; private static var _typeMap:Dictionary = null; override public function get typeMap():Dictionary{ if (!_typeMap){ _typeMap = new Dictionary(); _typeMap["NO_ANIMATION"] = NO_ANIMATION; _typeMap["PLAY_ANIMATION_ONCE"] = PLAY_ANIMATION_ONCE; _typeMap["LOOP_ANIMATION"] = LOOP_ANIMATION; _typeMap["PING_PONG_ANIMATION"] = PING_PONG_ANIMATION; }; return (_typeMap); } override public function get defaultType():Enumerable{ return (NO_ANIMATION); } } }//package com.pblabs.animation
Section 234
//EventSoundTrigger (com.pblabs.components.basic.EventSoundTrigger) package com.pblabs.components.basic { import flash.events.*; import com.pblabs.engine.resource.*; import com.pblabs.engine.entity.*; import com.pblabs.engine.*; public class EventSoundTrigger extends EntityComponent { public var startSound:MP3Resource;// = null private var _didSchedule:Boolean;// = false public var events:Array; private var _firedStartSound:Boolean;// = false public function EventSoundTrigger(){ events = new Array(); super(); } override protected function onAdd():void{ var _local2:String; var _local1:IEventDispatcher = owner.eventDispatcher; for (_local2 in events) { _local1.addEventListener(_local2, soundEventHandler); }; if (((!(_firedStartSound)) && (startSound))){ startSound.soundObject.play(); _firedStartSound = true; }; if (!_didSchedule){ PBE.processManager.schedule(100, this, onReset); _didSchedule = true; }; } override protected function onRemove():void{ var _local2:String; var _local1:IEventDispatcher = owner.eventDispatcher; for (_local2 in events) { _local1.removeEventListener(_local2, soundEventHandler); }; } override protected function onReset():void{ if (!owner){ return; }; onRemove(); onAdd(); } private function soundEventHandler(_arg1:Event):void{ var _local2:MP3Resource = events[_arg1.type]; _local2.soundObject.play(); } } }//package com.pblabs.components.basic
Section 235
//HealthComponent (com.pblabs.components.basic.HealthComponent) package com.pblabs.components.basic { import com.pblabs.engine.entity.*; import com.pblabs.engine.*; public class HealthComponent extends EntityComponent { public var destroyOnDeath:Boolean;// = true public var maxHealth:Number;// = 100 public var damageMagnitude:Number;// = 1 public var damageModifier:Array; private var _lastDamageOriginator:IEntity;// = null private var _timeOfLastDamage:Number;// = 0 public var lastDamageTimeFade:Number;// = 200 private var _health:Number;// = 100 public static var DIED:String = "HealthDead"; public static var DAMAGED:String = "HealthDamaged"; public static var RESURRECTED:String = "HealthResurrected"; public static var HEALED:String = "HealthHealed"; public function HealthComponent(){ damageModifier = new Array(); super(); } public function get lastDamageFade():Number{ var _local1:Number = (1 - (timeSinceLastDamage / lastDamageTimeFade)); _local1 = (_local1 * damageMagnitude); return (PBUtil.clamp(_local1)); } override protected function onAdd():void{ _health = maxHealth; _timeOfLastDamage = -1000; } public function get health():Number{ return (_health); } public function get amountOfDamage():Number{ return ((maxHealth - _health)); } public function damage(_arg1:Number, _arg2:String=null, _arg3:IEntity=null):void{ _lastDamageOriginator = _arg3; if (((_arg2) && (damageModifier.hasOwnProperty(_arg2)))){ _arg1 = (_arg1 * damageModifier[_arg2]); }; damageMagnitude = Math.min(1, ((_arg1 / _health) * 4)); _timeOfLastDamage = PBE.processManager.virtualTime; health = (health - _arg1); _lastDamageOriginator = null; } public function get timeSinceLastDamage():Number{ return ((PBE.processManager.virtualTime - _timeOfLastDamage)); } public function get isDead():Boolean{ return ((_health <= 0)); } public function set health(_arg1:Number):void{ var _local2:HealthEvent; if (_arg1 < 0){ _arg1 = 0; }; if (_arg1 > maxHealth){ _arg1 = maxHealth; }; if (_arg1 < _health){ _local2 = new HealthEvent(DAMAGED, (_arg1 - _health), _arg1, _lastDamageOriginator); owner.eventDispatcher.dispatchEvent(_local2); }; if ((((_health > 0)) && ((_arg1 == 0)))){ _local2 = new HealthEvent(DIED, (_arg1 - _health), _arg1, _lastDamageOriginator); owner.eventDispatcher.dispatchEvent(_local2); }; if ((((_health == 0)) && ((_arg1 > 0)))){ _local2 = new HealthEvent(RESURRECTED, (_arg1 - _health), _arg1, _lastDamageOriginator); owner.eventDispatcher.dispatchEvent(_local2); }; if ((((_health > 0)) && ((_arg1 > _health)))){ _local2 = new HealthEvent(HEALED, (_arg1 - _health), _arg1, _lastDamageOriginator); if (((owner) && (owner.eventDispatcher))){ owner.eventDispatcher.dispatchEvent(_local2); }; }; _health = _arg1; if (((destroyOnDeath) && ((_health <= 0)))){ owner.destroy(); }; } } }//package com.pblabs.components.basic
Section 236
//HealthEvent (com.pblabs.components.basic.HealthEvent) package com.pblabs.components.basic { import flash.events.*; import com.pblabs.engine.entity.*; public class HealthEvent extends Event { public var amount:Number; public var delta:Number; public var originatingEntity:IEntity; public function HealthEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:IEntity, _arg5:Boolean=false, _arg6:Boolean=false){ delta = _arg2; amount = _arg3; originatingEntity = _arg4; super(_arg1, _arg5, _arg6); } public function isDead():Boolean{ return ((amount == 0)); } } }//package com.pblabs.components.basic
Section 237
//BasicState (com.pblabs.components.stateMachine.BasicState) package com.pblabs.components.stateMachine { import flash.events.*; import com.pblabs.engine.core.*; public class BasicState implements IState { public var enterEvent:String;// = null public var transitions:OrderedArray; public function BasicState(){ transitions = new OrderedArray(); super(); } public function tick(_arg1:IMachine):void{ var _local2:ITransition; for each (_local2 in transitions) { if (((_local2.evaluate(_arg1)) && (_arg1.setCurrentState(_local2.getTargetState())))){ return; }; }; } public function addTransition(_arg1:ITransition):void{ transitions[transitions.length] = _arg1; } public function enter(_arg1:IMachine):void{ if (!enterEvent){ return; }; var _local2:Event = new Event(enterEvent); _arg1.propertyBag.eventDispatcher.dispatchEvent(_local2); } public function exit(_arg1:IMachine):void{ } } }//package com.pblabs.components.stateMachine
Section 238
//DeathState (com.pblabs.components.stateMachine.DeathState) package com.pblabs.components.stateMachine { import com.pblabs.engine.entity.*; public class DeathState extends BasicState { override public function enter(_arg1:IMachine):void{ var _local2:IEntity = (_arg1.propertyBag as IEntity); if (!_local2){ throw (new Error("Cannot call Destroy on a non-entity!")); }; _local2.destroy(); } } }//package com.pblabs.components.stateMachine
Section 239
//FSMComponent (com.pblabs.components.stateMachine.FSMComponent) package com.pblabs.components.stateMachine { import com.pblabs.engine.components.*; public class FSMComponent extends TickedComponent { public var stateMachine:Machine; public var paused:Boolean;// = false override protected function onAdd():void{ super.onAdd(); if (stateMachine){ stateMachine.propertyBag = owner; }; } override protected function onRemove():void{ super.onRemove(); if (stateMachine){ stateMachine.propertyBag = null; }; } override public function onTick(_arg1:Number):void{ if (paused){ return; }; if (stateMachine){ stateMachine.tick(); }; } } }//package com.pblabs.components.stateMachine
Section 240
//IMachine (com.pblabs.components.stateMachine.IMachine) package com.pblabs.components.stateMachine { import com.pblabs.engine.entity.*; public interface IMachine { function addState(_arg1:String, _arg2:IState):void; function get propertyBag():IPropertyBag; function get currentStateName():String; function getPreviousState():IState; function set propertyBag(_arg1:IPropertyBag):void; function getStateName(_arg1:IState):String; function setCurrentState(_arg1:String):Boolean; function getState(_arg1:String):IState; function tick():void; function getCurrentState():IState; } }//package com.pblabs.components.stateMachine
Section 241
//IState (com.pblabs.components.stateMachine.IState) package com.pblabs.components.stateMachine { public interface IState { function enter(_arg1:IMachine):void; function tick(_arg1:IMachine):void; function exit(_arg1:IMachine):void; } }//package com.pblabs.components.stateMachine
Section 242
//ITransition (com.pblabs.components.stateMachine.ITransition) package com.pblabs.components.stateMachine { public interface ITransition { function evaluate(_arg1:IMachine):Boolean; function getTargetState():String; } }//package com.pblabs.components.stateMachine
Section 243
//Machine (com.pblabs.components.stateMachine.Machine) package com.pblabs.components.stateMachine { import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import flash.utils.*; import com.pblabs.engine.*; public class Machine implements IMachine { public var states:Dictionary; public var defaultState:String;// = null private var _setNewState:Boolean;// = false private var _previousState:IState;// = null private var _enteredStateTime:Number;// = 0 private var _propertyBag:IPropertyBag;// = null private var _currentState:IState;// = null public function Machine(){ states = new Dictionary(); super(); } public function get currentStateName():String{ return (getStateName(getCurrentState())); } public function set currentStateName(_arg1:String):void{ if (!setCurrentState(_arg1)){ Logger.warn(this, "set currentStateName", (("Could not transition to state '" + _arg1) + "'")); }; } public function get enteredStateTime():Number{ return (_enteredStateTime); } public function getStateName(_arg1:IState):String{ var _local2:String; for (_local2 in states) { if (states[_local2] == _arg1){ return (_local2); }; }; return (null); } public function getCurrentState():IState{ if (!_currentState){ setCurrentState(defaultState); }; return (_currentState); } public function get currentState():IState{ return (getCurrentState()); } public function setCurrentState(_arg1:String):Boolean{ var _local4:TransitionEvent; var _local2:IState = getState(_arg1); if (!_local2){ return (false); }; var _local3:IState = _currentState; _setNewState = true; _previousState = _currentState; _currentState = _local2; if (_local3){ _local3.exit(this); }; _local2.enter(this); _enteredStateTime = PBE.processManager.virtualTime; if (_propertyBag){ _local4 = new TransitionEvent(TransitionEvent.TRANSITION); _local4.oldState = _local3; _local4.oldStateName = getStateName(_local3); _local4.newState = _local2; _local4.newStateName = getStateName(_local2); _propertyBag.eventDispatcher.dispatchEvent(_local4); }; return (true); } public function tick():void{ _setNewState = false; if (!_currentState){ setCurrentState(defaultState); }; if (_currentState){ _currentState.tick(this); }; if ((((_setNewState == false)) && (_currentState))){ _previousState = _currentState; }; } public function getState(_arg1:String):IState{ return ((states[_arg1] as IState)); } public function getPreviousState():IState{ return (_previousState); } public function set propertyBag(_arg1:IPropertyBag):void{ _propertyBag = _arg1; } public function addState(_arg1:String, _arg2:IState):void{ states[_arg1] = _arg2; } public function get propertyBag():IPropertyBag{ return (_propertyBag); } } }//package com.pblabs.components.stateMachine
Section 244
//TransitionEvent (com.pblabs.components.stateMachine.TransitionEvent) package com.pblabs.components.stateMachine { import flash.events.*; public class TransitionEvent extends Event { public var newState:IState; public var oldStateName:String; public var oldState:IState; public var newStateName:String; public static const TRANSITION:String = "fsmStateTransition"; public function TransitionEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } } }//package com.pblabs.components.stateMachine
Section 245
//AnimatedComponent (com.pblabs.engine.components.AnimatedComponent) package com.pblabs.engine.components { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.engine.*; public class AnimatedComponent extends EntityComponent implements IAnimatedObject { private var _registerForUpdates:Boolean;// = true private var _isRegisteredForUpdates:Boolean;// = false public var updatePriority:Number;// = 0 override protected function onAdd():void{ registerForUpdates = registerForUpdates; } public function get registerForUpdates():Boolean{ return (_registerForUpdates); } public function set registerForUpdates(_arg1:Boolean):void{ _registerForUpdates = _arg1; if (((_registerForUpdates) && (!(_isRegisteredForUpdates)))){ _isRegisteredForUpdates = true; PBE.processManager.addAnimatedObject(this, updatePriority); } else { if (((!(_registerForUpdates)) && (_isRegisteredForUpdates))){ _isRegisteredForUpdates = false; PBE.processManager.removeAnimatedObject(this); }; }; } override protected function onRemove():void{ registerForUpdates = false; } public function onFrame(_arg1:Number):void{ } } }//package com.pblabs.engine.components
Section 246
//GroupManagerComponent (com.pblabs.engine.components.GroupManagerComponent) package com.pblabs.engine.components { import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import com.pblabs.engine.*; public class GroupManagerComponent extends EntityComponent { private var _members:Array; public static var autoCreateNamedGroups:Boolean = true; public function GroupManagerComponent(){ _members = new Array(); super(); } public function get entityList():Array{ var _local2:GroupMemberComponent; var _local1:Array = new Array(); for each (_local2 in _members) { _local1.push(_local2.owner); }; return (_local1); } public function addMember(_arg1:GroupMemberComponent):void{ _members.push(_arg1); } public function removeMember(_arg1:GroupMemberComponent):void{ var _local2:int = _members.indexOf(_arg1); if (_local2 == -1){ throw (new Error("Removing a member which does not exist in this group.")); }; _members.splice(_local2, 1); } public static function getGroupByName(_arg1:String):GroupManagerComponent{ var _local4:IEntity; var _local2:String = _arg1; var _local3:GroupManagerComponent = (PBE.lookupComponentByType(_local2, GroupManagerComponent) as GroupManagerComponent); if (_local3 == null){ if (!autoCreateNamedGroups){ Logger.warn(GroupManagerComponent, "GetGroupByName", (("Tried to reference non-existent group '" + _local2) + "'")); } else { _local4 = allocateEntity(); _local4.initialize(_local2); _local3 = new (GroupManagerComponent); _local4.addComponent(_local3, _arg1); }; }; return (_local3); } } }//package com.pblabs.engine.components
Section 247
//GroupMemberComponent (com.pblabs.engine.components.GroupMemberComponent) package com.pblabs.engine.components { import com.pblabs.engine.entity.*; public class GroupMemberComponent extends EntityComponent { private var _currentManager:GroupManagerComponent;// = null private var _groupName:String;// = null override protected function onReset():void{ onRemove(); onAdd(); } override protected function onAdd():void{ var _local1:GroupManagerComponent = groupManager; if (((!(_currentManager)) && (_local1))){ _currentManager = _local1; _currentManager.addMember(this); }; } public function set groupName(_arg1:String):void{ onRemove(); _groupName = _arg1; onAdd(); } override protected function onRemove():void{ if (_currentManager){ _currentManager.removeMember(this); _currentManager = null; }; } public function get groupName():String{ return (_groupName); } public function get groupManager():GroupManagerComponent{ return (GroupManagerComponent.getGroupByName(_groupName)); } } }//package com.pblabs.engine.components
Section 248
//TickedComponent (com.pblabs.engine.components.TickedComponent) package com.pblabs.engine.components { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.engine.*; public class TickedComponent extends EntityComponent implements ITickedObject { private var _registerForUpdates:Boolean;// = true private var _isRegisteredForUpdates:Boolean;// = false public var updatePriority:Number;// = 0 public function set registerForTicks(_arg1:Boolean):void{ _registerForUpdates = _arg1; if (((_registerForUpdates) && (!(_isRegisteredForUpdates)))){ _isRegisteredForUpdates = true; PBE.processManager.addTickedObject(this, updatePriority); } else { if (((!(_registerForUpdates)) && (_isRegisteredForUpdates))){ _isRegisteredForUpdates = false; PBE.processManager.removeTickedObject(this); }; }; } override protected function onAdd():void{ registerForTicks = registerForTicks; } override protected function onRemove():void{ registerForTicks = false; } public function onTick(_arg1:Number):void{ } public function get registerForTicks():Boolean{ return (_registerForUpdates); } } }//package com.pblabs.engine.components
Section 249
//IAnimatedObject (com.pblabs.engine.core.IAnimatedObject) package com.pblabs.engine.core { public interface IAnimatedObject { function onFrame(_arg1:Number):void; } }//package com.pblabs.engine.core
Section 250
//InputKey (com.pblabs.engine.core.InputKey) package com.pblabs.engine.core { import flash.utils.*; import com.pblabs.engine.serialization.*; public class InputKey extends Enumerable { private var _keyCode:int;// = 0 public static const LEFT:InputKey = new InputKey(37); ; public static const MULTIPLY:InputKey = new InputKey(106); ; public static const TWO:InputKey = new InputKey(50); ; public static const MOUSE_BUTTON:InputKey = new InputKey(253); ; public static const A:InputKey = new InputKey(65); ; public static const B:InputKey = new InputKey(66); ; public static const C:InputKey = new InputKey(67); ; public static const D:InputKey = new InputKey(68); ; public static const E:InputKey = new InputKey(69); ; public static const ONE:InputKey = new InputKey(49); ; public static const G:InputKey = new InputKey(71); ; public static const H:InputKey = new InputKey(72); ; public static const I:InputKey = new InputKey(73); ; public static const J:InputKey = new InputKey(74); ; public static const PAGE_UP:InputKey = new InputKey(33); ; public static const M:InputKey = new InputKey(77); ; public static const N:InputKey = new InputKey(78); ; public static const O:InputKey = new InputKey(79); ; public static const P:InputKey = new InputKey(80); ; public static const Q:InputKey = new InputKey(81); ; public static const PAGE_DOWN:InputKey = new InputKey(34); ; public static const S:InputKey = new InputKey(83); ; public static const T:InputKey = new InputKey(84); ; public static const F:InputKey = new InputKey(70); ; public static const W:InputKey = new InputKey(87); ; public static const R:InputKey = new InputKey(82); ; public static const K:InputKey = new InputKey(75); ; public static const L:InputKey = new InputKey(76); ; public static const U:InputKey = new InputKey(85); ; public static const V:InputKey = new InputKey(86); ; public static const Y:InputKey = new InputKey(89); ; public static const Z:InputKey = new InputKey(90); ; public static const SHIFT:InputKey = new InputKey(16); ; public static const QUOTE:InputKey = new InputKey(222); ; public static const NUM_LOCK:InputKey = new InputKey(144); ; public static const BACKSPACE:InputKey = new InputKey(8); ; public static const X:InputKey = new InputKey(88); ; public static const MINUS:InputKey = new InputKey(189); ; public static const EIGHT:InputKey = new InputKey(56); ; public static const LEFT_BRACKET:InputKey = new InputKey(219); ; public static const DIVIDE:InputKey = new InputKey(111); ; public static const ESCAPE:InputKey = new InputKey(27); ; public static const ADD:InputKey = new InputKey(107); ; public static const UP:InputKey = new InputKey(38); ; public static const DOWN:InputKey = new InputKey(40); ; public static const ZERO:InputKey = new InputKey(48); ; public static const F3:InputKey = new InputKey(114); ; public static const F7:InputKey = new InputKey(118); ; public static const FIVE:InputKey = new InputKey(53); ; public static const F9:InputKey = new InputKey(120); ; public static const F4:InputKey = new InputKey(115); ; public static const F5:InputKey = new InputKey(116); ; public static const F6:InputKey = new InputKey(117); ; public static const ENTER:InputKey = new InputKey(13); ; public static const INSERT:InputKey = new InputKey(45); ; public static const F1:InputKey = new InputKey(112); ; public static const END:InputKey = new InputKey(35); ; public static const COMMA:InputKey = new InputKey(188); ; public static const NINE:InputKey = new InputKey(57); ; public static const SIX:InputKey = new InputKey(54); ; public static const F2:InputKey = new InputKey(113); ; public static const F8:InputKey = new InputKey(119); ; public static const BACKSLASH:InputKey = new InputKey(191); ; public static const HOME:InputKey = new InputKey(36); ; public static const MOUSE_HOVER:InputKey = new InputKey(0x0101); ; public static const SPACE:InputKey = new InputKey(32); ; public static const F12:InputKey = new InputKey(123); ; public static const F11:InputKey = new InputKey(122); ; public static const MOUSE_WHEEL:InputKey = new InputKey(0x0100); ; public static const NUMENTER:InputKey = new InputKey(108); ; public static const SUBTRACT:InputKey = new InputKey(109); ; public static const MOUSE_Y:InputKey = new InputKey(0xFF); ; public static const MOUSE_X:InputKey = new InputKey(254); ; public static const FOUR:InputKey = new InputKey(52); ; public static const COMMAND:InputKey = new InputKey(15); ; public static const DECIMAL:InputKey = new InputKey(110); ; public static const TILDE:InputKey = new InputKey(192); ; public static const CONTROL:InputKey = new InputKey(17); ; public static const COLON:InputKey = new InputKey(186); ; public static const RIGHT_BRACKET:InputKey = new InputKey(221); ; public static const SCROLL_LOCK:InputKey = new InputKey(145); ; public static const SLASH:InputKey = new InputKey(220); ; public static const TAB:InputKey = new InputKey(9); ; public static const THREE:InputKey = new InputKey(51); ; public static const ALT:InputKey = new InputKey(18); ; public static const NUM0:InputKey = new InputKey(96); ; public static const NUM1:InputKey = new InputKey(97); ; public static const NUM2:InputKey = new InputKey(98); ; public static const NUM3:InputKey = new InputKey(99); ; public static const NUM4:InputKey = new InputKey(100); ; public static const NUM5:InputKey = new InputKey(101); ; public static const NUM6:InputKey = new InputKey(102); ; public static const NUM7:InputKey = new InputKey(103); ; public static const NUM9:InputKey = new InputKey(105); ; public static const NUM8:InputKey = new InputKey(104); ; public static const PLUS:InputKey = new InputKey(187); ; public static const DELETE:InputKey = new InputKey(46); ; public static const PERIOD:InputKey = new InputKey(190); ; public static const CAPS_LOCK:InputKey = new InputKey(20); ; public static const PAUSE:InputKey = new InputKey(19); ; public static const INVALID:InputKey = new InputKey(0); ; public static const SEVEN:InputKey = new InputKey(55); ; public static const RIGHT:InputKey = new InputKey(39); ; private static var _typeMap:Dictionary = null; public function InputKey(_arg1:int=0){ _keyCode = _arg1; } override public function get typeMap():Dictionary{ return (staticTypeMap); } public function get keyCode():int{ return (_keyCode); } override public function get defaultType():Enumerable{ return (INVALID); } public static function stringToKey(_arg1:String):InputKey{ return (staticTypeMap[_arg1.toUpperCase()]); } public static function stringToCode(_arg1:String):int{ if (!staticTypeMap[_arg1.toUpperCase()]){ return (0); }; return (staticTypeMap[_arg1.toUpperCase()].keyCode); } public static function get staticTypeMap():Dictionary{ if (!_typeMap){ _typeMap = new Dictionary(); _typeMap["BACKSPACE"] = BACKSPACE; _typeMap["TAB"] = TAB; _typeMap["ENTER"] = ENTER; _typeMap["RETURN"] = ENTER; _typeMap["SHIFT"] = SHIFT; _typeMap["COMMAND"] = COMMAND; _typeMap["CONTROL"] = CONTROL; _typeMap["ALT"] = ALT; _typeMap["OPTION"] = ALT; _typeMap["ALTERNATE"] = ALT; _typeMap["PAUSE"] = PAUSE; _typeMap["CAPS_LOCK"] = CAPS_LOCK; _typeMap["ESCAPE"] = ESCAPE; _typeMap["SPACE"] = SPACE; _typeMap["SPACE_BAR"] = SPACE; _typeMap["PAGE_UP"] = PAGE_UP; _typeMap["PAGE_DOWN"] = PAGE_DOWN; _typeMap["END"] = END; _typeMap["HOME"] = HOME; _typeMap["LEFT"] = LEFT; _typeMap["UP"] = UP; _typeMap["RIGHT"] = RIGHT; _typeMap["DOWN"] = DOWN; _typeMap["LEFT_ARROW"] = LEFT; _typeMap["UP_ARROW"] = UP; _typeMap["RIGHT_ARROW"] = RIGHT; _typeMap["DOWN_ARROW"] = DOWN; _typeMap["INSERT"] = INSERT; _typeMap["DELETE"] = DELETE; _typeMap["ZERO"] = ZERO; _typeMap["ONE"] = ONE; _typeMap["TWO"] = TWO; _typeMap["THREE"] = THREE; _typeMap["FOUR"] = FOUR; _typeMap["FIVE"] = FIVE; _typeMap["SIX"] = SIX; _typeMap["SEVEN"] = SEVEN; _typeMap["EIGHT"] = EIGHT; _typeMap["NINE"] = NINE; _typeMap["0"] = ZERO; _typeMap["1"] = ONE; _typeMap["2"] = TWO; _typeMap["3"] = THREE; _typeMap["4"] = FOUR; _typeMap["5"] = FIVE; _typeMap["6"] = SIX; _typeMap["7"] = SEVEN; _typeMap["8"] = EIGHT; _typeMap["9"] = NINE; _typeMap["NUMBER_0"] = ZERO; _typeMap["NUMBER_1"] = ONE; _typeMap["NUMBER_2"] = TWO; _typeMap["NUMBER_3"] = THREE; _typeMap["NUMBER_4"] = FOUR; _typeMap["NUMBER_5"] = FIVE; _typeMap["NUMBER_6"] = SIX; _typeMap["NUMBER_7"] = SEVEN; _typeMap["NUMBER_8"] = EIGHT; _typeMap["NUMBER_9"] = NINE; _typeMap["A"] = A; _typeMap["B"] = B; _typeMap["C"] = C; _typeMap["D"] = D; _typeMap["E"] = E; _typeMap["F"] = F; _typeMap["G"] = G; _typeMap["H"] = H; _typeMap["I"] = I; _typeMap["J"] = J; _typeMap["K"] = K; _typeMap["L"] = L; _typeMap["M"] = M; _typeMap["N"] = N; _typeMap["O"] = O; _typeMap["P"] = P; _typeMap["Q"] = Q; _typeMap["R"] = R; _typeMap["S"] = S; _typeMap["T"] = T; _typeMap["U"] = U; _typeMap["V"] = V; _typeMap["W"] = W; _typeMap["X"] = X; _typeMap["Y"] = Y; _typeMap["Z"] = Z; _typeMap["NUM0"] = NUM0; _typeMap["NUM1"] = NUM1; _typeMap["NUM2"] = NUM2; _typeMap["NUM3"] = NUM3; _typeMap["NUM4"] = NUM4; _typeMap["NUM5"] = NUM5; _typeMap["NUM6"] = NUM6; _typeMap["NUM7"] = NUM7; _typeMap["NUM8"] = NUM8; _typeMap["NUM9"] = NUM9; _typeMap["NUMPAD_0"] = NUM0; _typeMap["NUMPAD_1"] = NUM1; _typeMap["NUMPAD_2"] = NUM2; _typeMap["NUMPAD_3"] = NUM3; _typeMap["NUMPAD_4"] = NUM4; _typeMap["NUMPAD_5"] = NUM5; _typeMap["NUMPAD_6"] = NUM6; _typeMap["NUMPAD_7"] = NUM7; _typeMap["NUMPAD_8"] = NUM8; _typeMap["NUMPAD_9"] = NUM9; _typeMap["MULTIPLY"] = MULTIPLY; _typeMap["ASTERISK"] = MULTIPLY; _typeMap["NUMMULTIPLY"] = MULTIPLY; _typeMap["NUMPAD_MULTIPLY"] = MULTIPLY; _typeMap["ADD"] = ADD; _typeMap["NUMADD"] = ADD; _typeMap["NUMPAD_ADD"] = ADD; _typeMap["SUBTRACT"] = SUBTRACT; _typeMap["NUMSUBTRACT"] = SUBTRACT; _typeMap["NUMPAD_SUBTRACT"] = SUBTRACT; _typeMap["DECIMAL"] = DECIMAL; _typeMap["NUMDECIMAL"] = DECIMAL; _typeMap["NUMPAD_DECIMAL"] = DECIMAL; _typeMap["DIVIDE"] = DIVIDE; _typeMap["NUMDIVIDE"] = DIVIDE; _typeMap["NUMPAD_DIVIDE"] = DIVIDE; _typeMap["NUMENTER"] = NUMENTER; _typeMap["NUMPAD_ENTER"] = NUMENTER; _typeMap["F1"] = F1; _typeMap["F2"] = F2; _typeMap["F3"] = F3; _typeMap["F4"] = F4; _typeMap["F5"] = F5; _typeMap["F6"] = F6; _typeMap["F7"] = F7; _typeMap["F8"] = F8; _typeMap["F9"] = F9; _typeMap["F11"] = F11; _typeMap["F12"] = F12; _typeMap["NUM_LOCK"] = NUM_LOCK; _typeMap["SCROLL_LOCK"] = SCROLL_LOCK; _typeMap["COLON"] = COLON; _typeMap["SEMICOLON"] = COLON; _typeMap["PLUS"] = PLUS; _typeMap["EQUAL"] = PLUS; _typeMap["COMMA"] = COMMA; _typeMap["LESS_THAN"] = COMMA; _typeMap["MINUS"] = MINUS; _typeMap["UNDERSCORE"] = MINUS; _typeMap["PERIOD"] = PERIOD; _typeMap["GREATER_THAN"] = PERIOD; _typeMap["BACKSLASH"] = BACKSLASH; _typeMap["QUESTION_MARK"] = BACKSLASH; _typeMap["TILDE"] = TILDE; _typeMap["BACK_QUOTE"] = TILDE; _typeMap["LEFT_BRACKET"] = LEFT_BRACKET; _typeMap["LEFT_BRACE"] = LEFT_BRACKET; _typeMap["SLASH"] = SLASH; _typeMap["FORWARD_SLASH"] = SLASH; _typeMap["PIPE"] = SLASH; _typeMap["RIGHT_BRACKET"] = RIGHT_BRACKET; _typeMap["RIGHT_BRACE"] = RIGHT_BRACKET; _typeMap["QUOTE"] = QUOTE; _typeMap["MOUSE_BUTTON"] = MOUSE_BUTTON; _typeMap["MOUSE_X"] = MOUSE_X; _typeMap["MOUSE_Y"] = MOUSE_Y; _typeMap["MOUSE_WHEEL"] = MOUSE_WHEEL; _typeMap["MOUSE_HOVER"] = MOUSE_HOVER; }; return (_typeMap); } public static function codeToString(_arg1:int):String{ var _local3:String; var _local2:Dictionary = staticTypeMap; for (_local3 in _local2) { if (staticTypeMap[_local3.toUpperCase()].keyCode == _arg1){ return (_local3.toUpperCase()); }; }; return (null); } } }//package com.pblabs.engine.core
Section 251
//InputManager (com.pblabs.engine.core.InputManager) package com.pblabs.engine.core { import flash.events.*; import com.pblabs.engine.*; public class InputManager extends EventDispatcher implements ITickedObject { private var _keyState:Array; private var _justPressed:Array; private var _keyStateOld:Array; private var _justReleased:Array; public function InputManager(){ _keyState = new Array(); _keyStateOld = new Array(); _justPressed = new Array(); _justReleased = new Array(); super(); PBE.mainStage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); PBE.mainStage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); PBE.mainStage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); PBE.mainStage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); PBE.mainStage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); PBE.mainStage.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel); PBE.mainStage.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); PBE.mainStage.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); PBE.processManager.addTickedObject(this, Number.MAX_VALUE); } private function onMouseUp(_arg1:MouseEvent):void{ dispatchEvent(_arg1); } private function onKeyDown(_arg1:KeyboardEvent):void{ if (_keyState[_arg1.keyCode]){ return; }; _keyState[_arg1.keyCode] = true; dispatchEvent(_arg1); } public function keyJustReleased(_arg1:int):Boolean{ return (_justReleased[_arg1]); } public function simulateMouseWheel():void{ dispatchEvent(new MouseEvent(MouseEvent.MOUSE_WHEEL)); } private function onMouseDown(_arg1:MouseEvent):void{ dispatchEvent(_arg1); } public function simulateMouseMove():void{ dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, (Math.random() * 100), (Math.random() * 100))); } public function simulateMouseOver():void{ dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OVER)); } public function simulateKeyUp(_arg1:int):void{ dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_UP, true, false, 0, _arg1)); _keyState[_arg1] = false; } public function isKeyDown(_arg1:int):Boolean{ return (_keyState[_arg1]); } public function simulateKeyDown(_arg1:int):void{ dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, _arg1)); _keyState[_arg1] = true; } public function isAnyKeyDown():Boolean{ var _local1:Boolean; for each (_local1 in _keyState) { if (_local1){ return (true); }; }; return (false); } public function simulateMouseDown():void{ dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN)); } private function onMouseOut(_arg1:MouseEvent):void{ dispatchEvent(_arg1); } public function onTick(_arg1:Number):void{ var _local2:int; _local2 = 0; while (_local2 < _keyState.length) { if (((_keyState[_local2]) && (!(_keyStateOld[_local2])))){ _justPressed[_local2] = true; } else { _justPressed[_local2] = false; }; if (((!(_keyState[_local2])) && (_keyStateOld[_local2]))){ _justReleased[_local2] = true; } else { _justReleased[_local2] = false; }; _keyStateOld[_local2] = _keyState[_local2]; _local2++; }; } public function simulateMouseOut():void{ dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OUT)); } public function simulateMouseUp():void{ dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP)); } private function onMouseWheel(_arg1:MouseEvent):void{ dispatchEvent(_arg1); } private function onMouseMove(_arg1:MouseEvent):void{ dispatchEvent(_arg1); } private function onMouseOver(_arg1:MouseEvent):void{ dispatchEvent(_arg1); } private function onKeyUp(_arg1:KeyboardEvent):void{ _keyState[_arg1.keyCode] = false; dispatchEvent(_arg1); } public function keyJustPressed(_arg1:int):Boolean{ return (_justPressed[_arg1]); } } }//package com.pblabs.engine.core
Section 252
//InputMap (com.pblabs.engine.core.InputMap) package com.pblabs.engine.core { import flash.events.*; import com.pblabs.engine.debug.*; import flash.utils.*; import com.pblabs.engine.serialization.*; import com.pblabs.engine.*; public class InputMap implements ISerializable { private var _suppressDeltaNextTime:Boolean;// = false private var _registeredForKeyEvents:Boolean;// = false private var _lastMouseX:Number;// = -INF private var _lastMouseY:Number;// = -INF private var _bindings:Dictionary; private var _keymap:Dictionary; public function InputMap(){ _keymap = new Dictionary(); _bindings = new Dictionary(); super(); } private function onMouseUp(_arg1:MouseEvent):void{ onInputEvent(InputKey.MOUSE_BUTTON.keyCode, 0); } private function onKeyDown(_arg1:KeyboardEvent):void{ onInputEvent(_arg1.keyCode, 1); } public function deserialize(_arg1:XML){ var _local2:XML; for each (_local2 in _arg1.children()) { mapKeyToAction(InputKey.stringToKey(_local2.toString()), _local2.name()); }; return (this); } private function onMouseDown(_arg1:MouseEvent):void{ onInputEvent(InputKey.MOUSE_BUTTON.keyCode, 1); } public function destroy():void{ PBE.inputManager.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); PBE.inputManager.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); PBE.inputManager.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); PBE.inputManager.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); PBE.inputManager.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); PBE.inputManager.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp); } public function mapKeyToAction(_arg1:InputKey, _arg2:String):void{ if (!_arg1){ throw (new Error("Got a null key in mapKeyToAction; you probably have a typo in a key name.")); }; if (_keymap[_arg1.keyCode] == null){ if (_arg1 == InputKey.MOUSE_BUTTON){ PBE.inputManager.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); PBE.inputManager.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); } else { if ((((_arg1 == InputKey.MOUSE_X)) && (!(_keymap[InputKey.MOUSE_Y])))){ PBE.inputManager.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); } else { if ((((_arg1 == InputKey.MOUSE_Y)) && (!(_keymap[InputKey.MOUSE_X])))){ PBE.inputManager.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); } else { if (_arg1 == InputKey.MOUSE_WHEEL){ PBE.inputManager.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel); } else { if (_arg1 == InputKey.MOUSE_HOVER){ PBE.inputManager.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); PBE.inputManager.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); } else { if (!_registeredForKeyEvents){ PBE.inputManager.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); PBE.inputManager.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); _registeredForKeyEvents = true; }; }; }; }; }; }; }; _keymap[_arg1.keyCode] = _arg2; } public function serialize(_arg1:XML):void{ var _local2:String; for (_local2 in _keymap) { _arg1.appendChild(new XML((((((("<" + _keymap[_local2]) + ">") + InputKey.codeToString(parseInt(_local2))) + "</") + _keymap[_local2]) + ">"))); }; } public function mapKeyToHandler(_arg1:InputKey, _arg2:Function):void{ var _local3:String = InputKey.codeToString(_arg1.keyCode); mapKeyToAction(_arg1, _local3); mapActionToHandler(_local3, _arg2); } private function onMouseOut(_arg1:MouseEvent):void{ onInputEvent(InputKey.MOUSE_HOVER.keyCode, 0); } private function onMouseWheel(_arg1:MouseEvent):void{ onInputEvent(InputKey.MOUSE_WHEEL.keyCode, _arg1.delta); } private function onInputEvent(_arg1:int, _arg2:Number):void{ var _local3:String = _keymap[_arg1]; if (_local3 == null){ return; }; var _local4:Function = _bindings[_local3]; if (_local4 == null){ Logger.print(this, (("Got an action for '" + _local3) + "' but no registered callback; ignoring.")); return; }; _local4(_arg2); } private function onMouseMove(_arg1:MouseEvent):void{ if (_lastMouseX == Number.NEGATIVE_INFINITY){ _lastMouseX = PBE.mainStage.mouseX; _lastMouseY = PBE.mainStage.mouseY; _suppressDeltaNextTime = true; return; }; if (((!((_arg1.stageX == _lastMouseX))) || (_suppressDeltaNextTime))){ onInputEvent(InputKey.MOUSE_X.keyCode, (_suppressDeltaNextTime) ? 0 : (PBE.mainStage.mouseX - _lastMouseX)); }; if (((!((_arg1.stageY == _lastMouseY))) || (_suppressDeltaNextTime))){ onInputEvent(InputKey.MOUSE_Y.keyCode, (_suppressDeltaNextTime) ? 0 : (PBE.mainStage.mouseY - _lastMouseY)); }; _lastMouseX = _arg1.stageX; _lastMouseY = _arg1.stageY; _suppressDeltaNextTime = false; } private function onMouseOver(_arg1:MouseEvent):void{ onInputEvent(InputKey.MOUSE_HOVER.keyCode, 1); } private function onKeyUp(_arg1:KeyboardEvent):void{ onInputEvent(_arg1.keyCode, 0); } public function mapActionToHandler(_arg1:String, _arg2:Function):void{ _bindings[_arg1] = _arg2; } } }//package com.pblabs.engine.core
Section 253
//IPBObject (com.pblabs.engine.core.IPBObject) package com.pblabs.engine.core { public interface IPBObject { function get alias():String; function get owningGroup():PBGroup; function set owningGroup(_arg1:PBGroup):void; function initialize(_arg1:String=null, _arg2:String=null):void; function destroy():void; function get name():String; } }//package com.pblabs.engine.core
Section 254
//IPrioritizable (com.pblabs.engine.core.IPrioritizable) package com.pblabs.engine.core { public interface IPrioritizable { function set priority(_arg1:int):void; function get priority():int; } }//package com.pblabs.engine.core
Section 255
//IQueuedObject (com.pblabs.engine.core.IQueuedObject) package com.pblabs.engine.core { public interface IQueuedObject extends IPrioritizable { function get nextThinkCallback():Function; function get nextThinkTime():Number; } }//package com.pblabs.engine.core
Section 256
//ITickedObject (com.pblabs.engine.core.ITickedObject) package com.pblabs.engine.core { public interface ITickedObject { function onTick(_arg1:Number):void; } }//package com.pblabs.engine.core
Section 257
//LevelEvent (com.pblabs.engine.core.LevelEvent) package com.pblabs.engine.core { import flash.events.*; public class LevelEvent extends Event { public var level:int;// = -1 public static const LEVEL_UNLOADED_EVENT:String = "levelUnloaded"; public static const LEVEL_LOADED_EVENT:String = "levelLoaded"; public static const READY_EVENT:String = "ready"; public function LevelEvent(_arg1:String, _arg2:int, _arg3:Boolean=false, _arg4:Boolean=false){ this.level = _arg2; super(_arg1, _arg3, _arg4); } } }//package com.pblabs.engine.core
Section 258
//LevelManager (com.pblabs.engine.core.LevelManager) package com.pblabs.engine.core { import flash.events.*; import com.pblabs.engine.resource.*; import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import flash.utils.*; import com.pblabs.engine.serialization.*; import com.pblabs.engine.*; public class LevelManager extends EventDispatcher implements ISerializable { private var _loadedEntities:Array; private var _pendingFiles:int;// = 0 private var _loadedGroups:Dictionary; private var _levelDescriptions:Array; private var _unloadFileCallback:Function;// = null private var _isLevelLoaded:Boolean;// = false private var _initialLevel:int;// = -1 private var _loadGroupCallback:Function;// = null private var _loadedFiles:Array; private var _loadFileCallback:Function;// = null private var _isReady:Boolean;// = false private var _groupsToLoad:Array; private var _currentLevel:int;// = 0 private var _unloadGroupCallback:Function;// = null private static var _instance:LevelManager = null; public function LevelManager(){ _levelDescriptions = new Array(); _loadedFiles = new Array(); _loadedGroups = new Dictionary(); _loadedEntities = new Array(); super(); } private function unload(_arg1:Array, _arg2:Array):void{ var _local3:IEntity; var _local4:String; var _local5:String; var _local6:IEntity; for each (_local3 in _loadedEntities) { _local3.eventDispatcher.removeEventListener("EntityDestroyed", onEntityDestroyed); _local3.destroy(); }; _loadedEntities.splice(0, _loadedEntities.length); for each (_local4 in _arg2) { if (_unloadGroupCallback != null){ _unloadGroupCallback(_local4); } else { for each (_local6 in _loadedGroups[_local4]) { if (_local6){ _local6.destroy(); }; }; _loadedGroups[_local4] = null; delete _loadedGroups[_local4]; }; }; for each (_local5 in _arg1) { if (_unloadFileCallback != null){ _unloadFileCallback(_local5); } else { PBE.templateManager.unloadFile(_local5); _loadedFiles[_local5] = null; delete _loadedFiles[_local5]; }; }; } public function get currentLevel():int{ if (_isLevelLoaded){ return (_currentLevel); }; return (-1); } public function addGroupReference(_arg1:int, _arg2:String):void{ if (((_isLevelLoaded) && ((_currentLevel == _arg1)))){ Logger.error(this, "AddGroupReference", "Cannot add level information to a level that is loaded."); return; }; var _local3:LevelDescription = getLevelDescription(_arg1); _local3.groups.push(_arg2); } public function loadNextLevel():void{ loadLevel((_currentLevel + 1)); } public function addFileReference(_arg1:int, _arg2:String):void{ if (((_isLevelLoaded) && ((_currentLevel == _arg1)))){ Logger.error(this, "AddFileReference", "Cannot add level information to a level that is loaded."); return; }; var _local3:LevelDescription = getLevelDescription(_arg1); _local3.files.push(_arg2); } public function setLoadGroupCallbacks(_arg1:Function, _arg2:Function):void{ _loadGroupCallback = _arg1; _unloadGroupCallback = _arg2; } private function getLoadLists(_arg1:Array, _arg2:Array, _arg3:Array, _arg4:Array):void{ var _local5:String; var _local6:String; if (_arg2){ for each (_local5 in _arg2) { if (((_arg1) && (!((_arg1.indexOf(_local5) == -1))))){ } else { _arg3.push(_local5); }; }; }; if (_arg1){ for each (_local6 in _arg1) { if (((_arg2) && (!((_arg2.indexOf(_local6) == -1))))){ } else { _arg4.push(_local6); }; }; }; } public function removeFileReference(_arg1:int, _arg2:String):void{ var _local4:LevelDescription; if (!hasLevelData(_arg1)){ Logger.error(this, "RemoveFileReference", (("No level data exists for level " + _arg1) + ".")); return; }; var _local3:int = _local4.files.indexOf(_arg2); if (_local3 == -1){ Logger.error(this, "RemoveFileReference", (((("The file " + _arg2) + " was not found in the level ") + _arg1) + ".")); return; }; _local4 = getLevelDescription(_arg1); _local4.files.splice(_local3, 1); } private function onFileLoadFailed(_arg1:Event):void{ Logger.error(this, "LoadLevel", (("One of the files for level " + _currentLevel) + " failed to load.")); finishLoad(); } private function onLevelDescriptionsLoaded(_arg1:XMLResource):void{ Serializer.instance.deserialize(this, _arg1.XMLData); Logger.print(this, (("Loaded " + _levelDescriptions.length) + " level descriptions.")); } public function getlevelIndexByName(_arg1:String):int{ var _local2:LevelDescription; for each (_local2 in _levelDescriptions) { if (_local2.name == _arg1){ return (_local2.index); }; }; return (-1); } public function getlevelFiles(_arg1:int):Array{ return (_levelDescriptions[_arg1].Files); } public function setLoadFileCallbacks(_arg1:Function, _arg2:Function):void{ _loadFileCallback = _arg1; _unloadFileCallback = _arg2; } private function onEntityDestroyed(_arg1:Event):void{ } private function finishLoad():void{ var _local1:String; var _local2:Array; var _local3:IEntity; _pendingFiles--; if (_pendingFiles > 0){ return; }; for each (_local1 in _groupsToLoad) { if (_loadGroupCallback != null){ _loadGroupCallback(_local1); } else { _local2 = PBE.templateManager.instantiateGroup(_local1); if (!_local2){ Logger.error(this, "LoadLevel", (("Failed to instantiate the group " + _local1) + ".")); } else { _loadedGroups[_local1] = new Array(); for each (_local3 in _local2) { _loadedGroups[_local1].push(_local3); }; }; }; }; _groupsToLoad = null; dispatchEvent(new LevelEvent(LevelEvent.LEVEL_LOADED_EVENT, _currentLevel)); } public function removeGroupReference(_arg1:int, _arg2:String):void{ var _local4:LevelDescription; if (!hasLevelData(_arg1)){ Logger.error(this, "RemoveGroupReference", (("No level data exists for level " + _arg1) + ".")); return; }; var _local3:int = _local4.groups.indexOf(_arg2); if (_local3 == -1){ Logger.error(this, "RemoveFileReference", (((("The group " + _arg2) + " was not found in the level ") + _arg1) + ".")); return; }; _local4 = getLevelDescription(_arg1); _local4.groups.splice(_local3, 1); } public function unloadCurrentLevel():void{ if (!_isLevelLoaded){ Logger.error(this, "UnloadCurrentLevel", "No level is loaded."); return; }; var _local1:Array = new Array(); getLoadLists(_levelDescriptions[_currentLevel].files, null, null, _local1); var _local2:Array = new Array(); getLoadLists(_levelDescriptions[_currentLevel].groups, null, null, _local2); unload(_local1, _local2); dispatchEvent(new LevelEvent(LevelEvent.LEVEL_UNLOADED_EVENT, _currentLevel)); _currentLevel = -1; _isLevelLoaded = false; } public function loadLevel(_arg1:int, _arg2:Boolean=false):void{ var _local7:String; if (!_isReady){ Logger.warn(this, "loadLevel", "Warning: trying to loadLevel() without having first called start()! This probably won't work."); }; if (!hasLevelData(_arg1)){ Logger.error(this, "loadLevel", (("Level data for level " + _arg1) + " does not exist.")); return; }; var _local3:Array = new Array(); var _local4:Array = new Array(); var _local5:Boolean = ((_isLevelLoaded) && (!((_currentLevel == 0)))); getLoadLists((_local5) ? _levelDescriptions[_currentLevel].files : null, _levelDescriptions[_arg1].files, _local3, _local4); _groupsToLoad = new Array(); var _local6:Array = new Array(); getLoadLists((_local5) ? _levelDescriptions[_currentLevel].groups : null, _levelDescriptions[_arg1].groups, _groupsToLoad, _local6); unload(_local4, _local6); dispatchEvent(new LevelEvent(LevelEvent.LEVEL_UNLOADED_EVENT, _currentLevel)); _currentLevel = _arg1; _isLevelLoaded = true; _pendingFiles = 1; for each (_local7 in _local3) { _pendingFiles++; if (_loadFileCallback != null){ _loadFileCallback(_local7, finishLoad); } else { PBE.templateManager.loadFile(_local7); }; }; finishLoad(); } public function clear():void{ unloadCurrentLevel(); _currentLevel = 0; _levelDescriptions = new Array(); _isReady = false; } private function getLevelDescription(_arg1:int):LevelDescription{ var _local2:LevelDescription = _levelDescriptions[_arg1]; if (!_local2){ _local2 = new LevelDescription(); _local2.index = _arg1; _levelDescriptions[_arg1] = _local2; }; return (_local2); } private function hasLevelData(_arg1:int):Boolean{ return (_levelDescriptions[_arg1]); } private function onLevelDescriptionsLoadFailed(_arg1:XMLResource):void{ if (_arg1){ Logger.error(this, "Load", (("Failed to load level descriptions file " + _arg1.filename) + "!")); } else { Logger.error(this, "Load", "Failed to load level descriptions file!"); }; } public function removeLevel(_arg1:int):void{ if (!hasLevelData(_arg1)){ Logger.error(this, "RemoveLevel", (("No level data exists for level " + _arg1) + ".")); return; }; _levelDescriptions[_arg1] = null; delete _levelDescriptions[_arg1]; } public function getlevelGroups(_arg1:int):Array{ return (_levelDescriptions[_arg1].Groups); } public function load(_arg1:String, _arg2:int=-1):void{ if (_isReady){ Logger.error(this, "Load", "The LevelManager has already been started."); return; }; _initialLevel = _arg2; PBE.resourceManager.load(_arg1, XMLResource, onLevelDescriptionsLoaded, onLevelDescriptionsLoadFailed); } public function serialize(_arg1:XML):void{ var _local2:LevelDescription; var _local3:XML; var _local4:String; var _local5:String; for each (_local2 in _levelDescriptions) { _local3 = <level/> ; _local3.@index = _local2.index; _local3.@name = _local2.name; for each (_local4 in _local2.files) { _local3.appendChild(new XML((("<file name=\"" + ??esc_xattr ) + "\"/>"))); }; for each (_local5 in _local2.groups) { _local3.appendChild(new XML((("<group name=\"" + ??esc_xattr ) + "\"/>"))); }; }; } public function start(_arg1:int=-1):void{ if (_isReady){ Logger.error(this, "Start", "The LevelManager has already been started."); return; }; PBE.templateManager.addEventListener(TemplateManager.LOADED_EVENT, onFileLoaded); PBE.templateManager.addEventListener(TemplateManager.FAILED_EVENT, onFileLoadFailed); _isReady = true; dispatchEvent(new LevelEvent(LevelEvent.READY_EVENT, -1)); if (_arg1 != -1){ loadLevel(_arg1); }; } public function get levelCount():int{ var _local2:LevelDescription; var _local1:int; for each (_local2 in _levelDescriptions) { _local1++; }; return (_local1); } public function loadEntity(_arg1:String):IEntity{ if (!_isReady){ Logger.error(this, "loadEntity", "Cannot load entities. The LevelManager has not been started."); return (null); }; if (!_isLevelLoaded){ Logger.error(this, "loadEntity", "Cannot load entities. No level is loaded."); return (null); }; var _local2:IEntity = PBE.templateManager.instantiateEntity(_arg1); if (!_local2){ Logger.error(this, "loadEntity", (("Failed to instantiate an entity with name " + _arg1) + ".")); return (null); }; _local2.eventDispatcher.addEventListener("EntityDestroyed", onEntityDestroyed); _loadedEntities.push(_local2); return (_local2); } private function onFileLoaded(_arg1:Event):void{ finishLoad(); } public function deserialize(_arg1:XML){ var _local2:XML; var _local3:int; var _local4:LevelDescription; var _local5:XML; for each (_local2 in _arg1.*) { _local3 = _local2.@index; _local4 = new LevelDescription(); _local4.index = _local3; _local4.name = _local2.@name; _levelDescriptions[_local3] = _local4; for each (_local5 in _local2.*) { if (_local5.name() == "file"){ addFileReference(_local3, _local5.@filename); } else { if (_local5.name() == "group"){ addGroupReference(_local3, _local5.@name); } else { Logger.error(this, "Load", (("Encountered unknown tag " + _local5.name()) + " in level description.")); }; }; }; }; start(_initialLevel); } public static function get instance():LevelManager{ if (!_instance){ _instance = new (LevelManager); }; return (_instance); } } }//package com.pblabs.engine.core class LevelDescription { public var index:int;// = 0 public var groups:Array; public var files:Array; public var name:String;// = "" private function LevelDescription(){ files = new Array(); groups = new Array(); super(); } }
Section 259
//NameManager (com.pblabs.engine.core.NameManager) package com.pblabs.engine.core { import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import flash.utils.*; public class NameManager { private var _objects:Dictionary; public function NameManager(){ _objects = new Dictionary(); super(); } public function lookupComponentsByType(_arg1:String, _arg2:Class):Array{ var _local3:IEntity = lookup(_arg1); if (!_local3){ return (null); }; return (_local3.lookupComponentsByType(_arg2)); } public function validateName(_arg1:String):String{ if (!_objects[_arg1]){ return (_arg1); }; var _local2 = 1; var _local3:String = (_arg1 + _local2); while (_objects[_local3]) { var _temp1 = _local2; _local2 = (_local2 + 1); _local3 = (_arg1 + _temp1); }; return (_local3); } public function lookupComponentByType(_arg1:String, _arg2:Class):IEntityComponent{ var _local3:IEntity = lookup(_arg1); if (!_local3){ return (null); }; return (_local3.lookupComponentByType(_arg2)); } public function lookupComponentByName(_arg1:String, _arg2:String):IEntityComponent{ var _local3:IEntity = lookup(_arg1); if (!_local3){ return (null); }; return (_local3.lookupComponentByName(_arg2)); } public function add(_arg1:IPBObject):void{ var _local2:Boolean = ((!((_arg1.name == null))) && (!((_arg1.name == "")))); var _local3:Boolean = ((!((_arg1.alias == null))) && (!((_arg1.alias == "")))); if (((_local2) && (_objects[_arg1.name]))){ Logger.warn(this, "add", (("A PBObject with the name " + _arg1.name) + " already exists. Future lookups by this name will return the newest object. Did you mean to make an entity a template?")); }; if (TemplateManager.VERBOSE_LOGGING){ Logger.print(this, (((("Registering PBObject '" + _arg1.name) + "', alias '") + _arg1.alias) + "'")); }; if (_local2){ _objects[_arg1.name] = _arg1; }; if (_local3){ _objects[_arg1.alias] = _arg1; }; } public function lookup(_arg1:String){ return (_objects[_arg1]); } public function remove(_arg1:IPBObject):void{ if (((((!((_arg1.alias == null))) && (!((_arg1.alias == ""))))) && ((_objects[_arg1.alias] == _arg1)))){ _objects[_arg1.alias] = null; delete _objects[_arg1.alias]; }; if (((((!((_arg1.name == null))) && (!((_arg1.name == ""))))) && ((_objects[_arg1.name] == _arg1)))){ _objects[_arg1.name] = null; delete _objects[_arg1.name]; }; } public function get objectList():Dictionary{ return (_objects); } } }//package com.pblabs.engine.core
Section 260
//ObjectType (com.pblabs.engine.core.ObjectType) package com.pblabs.engine.core { import com.pblabs.engine.serialization.*; import com.pblabs.engine.*; public class ObjectType implements ISerializable { private var _bits:int;// = 0 private static var _wildcard:ObjectType; public function ObjectType(... _args){ if (_args.length == 1){ if ((_args[0] is Array)){ typeNames = _args[0]; } else { typeName = _args[0]; }; } else { if (_args.length > 1){ typeNames = _args; }; }; } public function serialize(_arg1:XML):void{ var _local3:String; var _local2:Array = typeNames; if (_local2.length == 1){ _arg1.appendChild(_local2[0]); return; }; for each (_local3 in _local2) { _arg1.appendChild(new XML((("<type>" + ??esc_xelem ) + "</type>"))); }; } public function add(_arg1:String):void{ _bits = (_bits | PBE.objectTypeManager.getType(_arg1)); } public function remove(_arg1:String):void{ _bits = (_bits & (wildcard.bits - PBE.objectTypeManager.getType(_arg1))); } public function get typeName():String{ var _local1:int; while (_local1 < PBE.objectTypeManager.typeCount) { if ((_bits & (1 << _local1))){ return (PBE.objectTypeManager.getTypeName((1 << _local1))); }; _local1++; }; return (""); } public function get bits():int{ return (_bits); } public function set typeName(_arg1:String):void{ _bits = PBE.objectTypeManager.getType(_arg1); } public function get typeNames():Array{ var _local1:Array = new Array(); var _local2:int; while (_local2 < PBE.objectTypeManager.typeCount) { if ((_bits & (1 << _local2))){ _local1.push(PBE.objectTypeManager.getTypeName((1 << _local2))); }; _local2++; }; return (_local1); } public function and(_arg1:ObjectType):Boolean{ if ((_arg1.bits & bits) != 0){ return (true); }; return (false); } public function set typeNames(_arg1:Array):void{ var _local2:String; _bits = 0; for each (_local2 in _arg1) { _bits = (_bits | PBE.objectTypeManager.getType(_local2)); }; } public function deserialize(_arg1:XML){ var _local2:XML; if (_arg1.hasSimpleContent()){ typeName = _arg1.toString(); return (this); }; _bits = 0; for each (_local2 in _arg1.*) { _bits = (_bits | PBE.objectTypeManager.getType(_local2.toString())); }; return (this); } public static function get wildcard():ObjectType{ if (!_wildcard){ _wildcard = new (ObjectType); }; _wildcard._bits = 4294967295; return (_wildcard); } } }//package com.pblabs.engine.core
Section 261
//ObjectTypeManager (com.pblabs.engine.core.ObjectTypeManager) package com.pblabs.engine.core { import com.pblabs.engine.debug.*; import flash.utils.*; public class ObjectTypeManager { private var _bitList:Array; private var _typeCount:uint;// = 0 private var _typeList:Dictionary; public function ObjectTypeManager(){ _typeList = new Dictionary(); _bitList = new Array(); super(); } public function registerFlag(_arg1:int, _arg2:String):void{ if (getTypeName(_arg1) != null){ throw (new Error("Bit already in use!")); }; if (_typeList[_arg2]){ throw (new Error("Name already assigned to another bit!")); }; if (_arg1 >= _typeCount){ _typeCount = (_arg1 + 1); }; _typeList[_arg2] = _arg1; _bitList[_arg1] = _arg2; } public function getType(_arg1:String):uint{ if (!_typeList.hasOwnProperty(_arg1)){ if (_typeCount == 64){ Logger.warn(this, "GetObjectType", "Only 64 unique object types can be created."); return (0); }; _typeList[_arg1] = _typeCount; _bitList[(1 << _typeCount)] = _arg1; _typeCount++; }; return ((1 << _typeList[_arg1])); } public function doesTypeMatch(_arg1:ObjectType, _arg2:String):Boolean{ var _local3:* = _typeList[_arg2]; return (((!((_local3 == null))) && ((_arg1.bits == (1 << _local3))))); } public function doesTypeOverlap(_arg1:ObjectType, _arg2:String):Boolean{ var _local3:* = _typeList[_arg2]; return (((!((_local3 == null))) && (!(((_arg1.bits & (1 << _local3)) == 0))))); } public function get typeCount():uint{ return (_typeCount); } public function doTypesMatch(_arg1:ObjectType, _arg2:ObjectType):Boolean{ return ((_arg1.bits == _arg2.bits)); } public function doTypesOverlap(_arg1:ObjectType, _arg2:ObjectType):Boolean{ if (((!(_arg1)) || (!(_arg2)))){ return (false); }; return (!(((_arg1.bits & _arg2.bits) == 0))); } public function getTypeName(_arg1:uint):String{ return (_bitList[_arg1]); } } }//package com.pblabs.engine.core
Section 262
//OrderedArray (com.pblabs.engine.core.OrderedArray) package com.pblabs.engine.core { import flash.utils.*; public dynamic class OrderedArray extends Proxy { private var memberValueHash:Object; private var memberIndexHash:Object; private var memberNameArray:Array; public function OrderedArray(){ memberValueHash = {}; memberIndexHash = {}; memberNameArray = []; super(); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{ var _local2:int; var _local3:uint; if ((_arg1 in memberValueHash)){ _local2 = memberIndexHash[_arg1]; memberNameArray.splice(_local2, 1); _local3 = memberNameArray.length; while (_local2 < _local3) { var _local4 = memberIndexHash; var _local5 = memberNameArray[_local2]; var _local6 = (_local4[_local5] - 1); _local4[_local5] = _local6; _local2++; }; delete memberValueHash[_arg1]; delete memberIndexHash[_arg1]; return (true); }; return (false); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getDescendants(_arg1){ return (null); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ return (memberValueHash[_arg1]); } public function get length():uint{ return (memberNameArray.length); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{ return ((_arg1 in memberValueHash)); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function isAttribute(_arg1):Boolean{ return (false); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function callProperty(_arg1, ... _args){ if ((memberValueHash[_arg1] is Function)){ return (memberValueHash[_arg1].apply(null, _args)); }; return (null); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextValue(_arg1:int){ return (memberValueHash[memberNameArray[(_arg1 - 1)]]); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:uint; if ((_arg1 in memberValueHash) == false){ _local3 = memberNameArray.length; memberIndexHash[_arg1] = _local3; memberNameArray[_local3] = _arg1; }; memberValueHash[_arg1] = _arg2; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{ return (((_arg1)<memberNameArray.length) ? (_arg1 + 1) : 0); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{ return (memberNameArray[(_arg1 - 1)]); } } }//package com.pblabs.engine.core
Section 263
//PBGroup (com.pblabs.engine.core.PBGroup) package com.pblabs.engine.core { public class PBGroup extends PBObject { protected var items:Array; public function PBGroup(){ items = []; super(); } function removeFromGroup(_arg1:IPBObject):Boolean{ var _local2:int = items.indexOf(_arg1); if (_local2 == -1){ return (false); }; items.splice(_local2, 1); return (true); } function addToGroup(_arg1:IPBObject):Boolean{ items.push(_arg1); return (true); } public function get length():int{ return (items.length); } public function getItem(_arg1:int):IPBObject{ if ((((_arg1 < 0)) || ((_arg1 >= items.length)))){ return (null); }; return (items[_arg1]); } override public function destroy():void{ clear(); super.destroy(); } public function clear():void{ while (items.length) { (items.pop() as PBObject).destroy(); }; } } }//package com.pblabs.engine.core
Section 264
//PBObject (com.pblabs.engine.core.PBObject) package com.pblabs.engine.core { import com.pblabs.engine.*; public class PBObject implements IPBObject { protected var _owningGroup:PBGroup; protected var _name:String; protected var _sets:Array; protected var _alias:String; public function destroy():void{ PBE.nameManager.remove(this); while (((_sets) && (_sets.length))) { if (_sets[(_sets.length - 1)].remove(this) == false){ _sets.pop(); }; }; if (_owningGroup){ _owningGroup.removeFromGroup(this); _owningGroup = null; }; } public function get owningGroup():PBGroup{ return (_owningGroup); } public function set owningGroup(_arg1:PBGroup):void{ if (!_arg1){ throw (new Error("Must always be in a group - cannot set owningGroup to null!")); }; if (_owningGroup){ _owningGroup.removeFromGroup(this); }; _owningGroup = _arg1; _owningGroup.addToGroup(this); } function noteInSet(_arg1:PBSet):void{ if (!_sets){ _sets = []; }; if (_sets.indexOf(_arg1) != -1){ return; }; _sets.push(_arg1); } function noteOutOfSet(_arg1:PBSet):void{ var _local2:int = _sets.indexOf(_arg1); if (_local2 == -1){ throw (new Error("Removed object from set that it isn't in.")); }; _sets.splice(_local2, 1); } public function get alias():String{ return (_alias); } public function get name():String{ return (_name); } public function initialize(_arg1:String=null, _arg2:String=null):void{ _name = _arg1; _alias = _arg2; PBE.nameManager.add(this); if ((((owningGroup == null)) && (!((PBE.currentGroup == this))))){ owningGroup = PBE.currentGroup; }; } } }//package com.pblabs.engine.core
Section 265
//PBSet (com.pblabs.engine.core.PBSet) package com.pblabs.engine.core { import com.pblabs.engine.debug.*; public class PBSet extends PBObject { protected var items:Array; public function PBSet(){ items = []; super(); } public function add(_arg1:PBObject):Boolean{ if (_arg1 == this){ return (false); }; if (items == null){ throw (new Error("Accessing destroy()'ed set.")); }; if (contains(_arg1)){ return (false); }; _arg1.noteInSet(this); items.push(_arg1); return (true); } public function remove(_arg1:PBObject):Boolean{ if (_arg1 == this){ return (false); }; if (items == null){ Logger.warn(this, "remove", "Removed item from dead PBSet."); _arg1.noteOutOfSet(this); return (true); }; var _local2:int = items.indexOf(_arg1); if (_local2 == -1){ return (false); }; _arg1.noteOutOfSet(this); items.splice(_local2, 1); return (true); } public function get length():int{ return ((items) ? items.length : 0); } public function getItem(_arg1:int):PBObject{ if (items == null){ return (null); }; if ((((_arg1 < 0)) || ((_arg1 >= items.length)))){ return (null); }; return (items[_arg1]); } override public function destroy():void{ if (items == null){ throw (new Error("Accessing destroy()'ed set.")); }; super.destroy(); while (items.length) { remove((items.pop() as PBObject)); }; items = null; } public function clear():void{ while (items.length) { (items.pop() as PBObject).destroy(); }; } public function contains(_arg1:PBObject):Boolean{ if (items == null){ throw (new Error("Accessing destroy()'ed set.")); }; return (!((items.indexOf(_arg1) == -1))); } } }//package com.pblabs.engine.core
Section 266
//ProcessManager (com.pblabs.engine.core.ProcessManager) package com.pblabs.engine.core { import flash.events.*; import com.pblabs.engine.debug.*; import flash.utils.*; import com.pblabs.engine.serialization.*; import com.pblabs.engine.*; public class ProcessManager { protected var duringAdvance:Boolean;// = false protected var lastTime:int;// = -1 protected var started:Boolean;// = false protected var _timeScale:Number;// = 1 protected var elapsed:Number;// = 0 protected var needPurgeEmpty:Boolean;// = false protected var tickedObjects:Array; protected var _virtualTime:int;// = 0 protected var _platformTime:int;// = 0 protected var deferredMethodQueue:Array; protected var _interpolationFactor:Number;// = 0 protected var animatedObjects:Array; protected var thinkHeap:SimplePriorityQueue; public static const TICK_RATE_MS:Number = (TICK_RATE * 1000); public static const MAX_TICKS_PER_FRAME:int = 1; public static const TICK_RATE:Number = (1 / Number(TICKS_PER_SECOND)); public static const TICKS_PER_SECOND:int = 40; public static var disableSlowWarning:Boolean = true; public function ProcessManager(){ animatedObjects = new Array(); deferredMethodQueue = []; thinkHeap = new SimplePriorityQueue(0x0400); tickedObjects = new Array(); super(); } public function get virtualTime():Number{ return (_virtualTime); } public function testAdvance(_arg1:Number):void{ advance((_arg1 * _timeScale), true); } public function stop():void{ if (!started){ Logger.warn(this, "stop", "The ProcessManager isn't started."); return; }; started = false; PBE.mainStage.removeEventListener(Event.ENTER_FRAME, onFrame); } public function get interpolationFactor():Number{ return (_interpolationFactor); } public function schedule(_arg1:Number, _arg2:Object, _arg3:Function, ... _args):void{ if (!started){ start(); }; var _local5:ScheduleObject = new ScheduleObject(); _local5.dueTime = (_virtualTime + _arg1); _local5.thisObject = _arg2; _local5.callback = _arg3; _local5.arguments = _args; thinkHeap.enqueue(_local5); } private function advance(_arg1:Number, _arg2:Boolean=false):void{ var _local6:int; var _local7:ProcessObject; var _local8:ProcessObject; var _local9:int; _platformTime = getTimer(); var _local3:Number = _virtualTime; elapsed = (elapsed + _arg1); var _local4:int; while ((((elapsed >= TICK_RATE_MS)) && (((_arg2) || ((_local4 < MAX_TICKS_PER_FRAME)))))) { _interpolationFactor = 0; processScheduledObjects(); Profiler.enter("Tick"); duringAdvance = true; _local6 = 0; while (_local6 < tickedObjects.length) { _local7 = (tickedObjects[_local6] as ProcessObject); if (!_local7){ } else { Profiler.enter(_local7.profilerKey); (_local7.listener as ITickedObject).onTick(TICK_RATE); Profiler.exit(_local7.profilerKey); }; _local6++; }; duringAdvance = false; Profiler.exit("Tick"); _virtualTime = (_virtualTime + TICK_RATE_MS); elapsed = (elapsed - TICK_RATE_MS); _local4++; }; if ((((((_local4 >= MAX_TICKS_PER_FRAME)) && (!(_arg2)))) && (!(disableSlowWarning)))){ Logger.warn(this, "advance", (("Exceeded maximum number of ticks for frame (" + elapsed.toFixed()) + "ms dropped) .")); elapsed = 0; }; Profiler.enter("frame"); duringAdvance = true; _interpolationFactor = (elapsed / TICK_RATE_MS); var _local5:int; while (_local5 < animatedObjects.length) { _local8 = (animatedObjects[_local5] as ProcessObject); if (!_local8){ } else { Profiler.enter(_local8.profilerKey); (_local8.listener as IAnimatedObject).onFrame((_arg1 / 1000)); Profiler.exit(_local8.profilerKey); }; _local5++; }; duringAdvance = false; Profiler.exit("frame"); if (needPurgeEmpty){ needPurgeEmpty = false; Profiler.enter("purgeEmpty"); _local6 = 0; while (_local6 < animatedObjects.length) { if (animatedObjects[_local6]){ } else { animatedObjects.splice(_local6, 1); _local6--; }; _local6++; }; _local9 = 0; while (_local9 < tickedObjects.length) { if (tickedObjects[_local9]){ } else { tickedObjects.splice(_local9, 1); _local9--; }; _local9++; }; Profiler.exit("purgeEmpty"); }; Profiler.ensureAtRoot(); } public function get isTicking():Boolean{ return (started); } public function addTickedObject(_arg1:ITickedObject, _arg2:Number=0):void{ addObject(_arg1, _arg2, tickedObjects); } public function queueObject(_arg1:IQueuedObject):void{ if (_arg1.nextThinkTime < _virtualTime){ throw (new Error("Tried to queue something into the past, but no flux capacitor is present!")); }; Profiler.enter("queueObject"); if ((((_arg1.nextThinkTime >= _virtualTime)) && (thinkHeap.contains(_arg1)))){ thinkHeap.remove(_arg1); }; thinkHeap.enqueue(_arg1); Profiler.exit("queueObject"); } private function processScheduledObjects():void{ var _local3:int; var _local4:DeferredMethod; var _local5:IPrioritizable; var _local6:IQueuedObject; var _local7:ScheduleObject; var _local8:String; var _local2:Array = deferredMethodQueue; if (_local2.length){ Profiler.enter("callLater"); deferredMethodQueue = []; _local3 = 0; while (_local3 < _local2.length) { _local4 = (_local2[_local3] as DeferredMethod); _local4.method.apply(null, _local4.args); _local3++; }; _local2.length = 0; Profiler.exit("callLater"); }; if (thinkHeap.size){ Profiler.enter("Queue"); while (((thinkHeap.front) && ((thinkHeap.front.priority >= -(_virtualTime))))) { _local5 = thinkHeap.dequeue(); _local6 = (_local5 as IQueuedObject); _local7 = (_local5 as ScheduleObject); _local8 = TypeUtility.getObjectClassName(_local5); Profiler.enter(_local8); if (_local6){ if (_local6.nextThinkCallback != null){ _local6.nextThinkCallback(); }; } else { if (((_local7) && (!((_local7.callback == null))))){ _local7.callback.apply(_local7.thisObject, _local7.arguments); } else { throw (new Error("Unknown type found in thinkHeap.")); }; }; Profiler.exit(_local8); }; Profiler.exit("Queue"); }; } public function set TimeScale(_arg1:Number):void{ timeScale = _arg1; } private function get listenerCount():int{ return ((tickedObjects.length + animatedObjects.length)); } private function addObject(_arg1, _arg2:Number, _arg3:Array):void{ if (duringAdvance){ PBE.callLater(addObject, [_arg1, _arg2, _arg3]); return; }; if (!started){ start(); }; var _local4 = -1; var _local5:int; while (_local5 < _arg3.length) { if (!_arg3[_local5]){ } else { if (_arg3[_local5].listener == _arg1){ Logger.warn(_arg1, "AddProcessObject", "This object has already been added to the process manager."); return; }; if (_arg3[_local5].priority < _arg2){ _local4 = _local5; break; }; }; _local5++; }; var _local6:ProcessObject = new ProcessObject(); _local6.listener = _arg1; _local6.priority = _arg2; _local6.profilerKey = TypeUtility.getObjectClassName(_arg1); if ((((_local4 < 0)) || ((_local4 >= _arg3.length)))){ _arg3.push(_local6); } else { _arg3.splice(_local4, 0, _local6); }; } public function addAnimatedObject(_arg1:IAnimatedObject, _arg2:Number=0):void{ addObject(_arg1, _arg2, animatedObjects); } public function callLater(_arg1:Function, _arg2:Array=null):void{ var _local3:DeferredMethod = new DeferredMethod(); _local3.method = _arg1; _local3.args = _arg2; deferredMethodQueue.push(_local3); } private function onFrame(_arg1:Event):void{ Profiler.ensureAtRoot(); var _local2:Number = getTimer(); if (lastTime < 0){ lastTime = _local2; return; }; var _local3:Number = (Number((_local2 - lastTime)) * _timeScale); advance(_local3); lastTime = _local2; } public function get TimeScale():Number{ return (timeScale); } public function get platformTime():Number{ return (_platformTime); } public function start():void{ if (started){ Logger.warn(this, "start", "The ProcessManager is already started."); return; }; lastTime = -1; elapsed = 0; PBE.mainStage.addEventListener(Event.ENTER_FRAME, onFrame); started = true; } private function removeObject(_arg1, _arg2:Array):void{ if ((((listenerCount == 1)) && ((thinkHeap.size == 0)))){ stop(); }; var _local3:int; while (_local3 < _arg2.length) { if (!_arg2[_local3]){ } else { if (_arg2[_local3].listener == _arg1){ if (duringAdvance){ _arg2[_local3] = null; needPurgeEmpty = true; } else { _arg2.splice(_local3, 1); }; return; }; }; _local3++; }; Logger.warn(_arg1, "RemoveProcessObject", "This object has not been added to the process manager."); } public function removeAnimatedObject(_arg1:IAnimatedObject):void{ removeObject(_arg1, animatedObjects); } public function seek(_arg1:Number):void{ _virtualTime = (_virtualTime + _arg1); } public function set timeScale(_arg1:Number):void{ _timeScale = _arg1; } public function get timeScale():Number{ return (_timeScale); } public function removeTickedObject(_arg1:ITickedObject):void{ removeObject(_arg1, tickedObjects); } } }//package com.pblabs.engine.core final class ProcessObject { public var priority:Number;// = 0 public var profilerKey:String;// = null public var listener;// = null private function ProcessObject(){ } } final class DeferredMethod { public var method:Function;// = null public var args:Array;// = null private function DeferredMethod(){ } }
Section 267
//ScheduleObject (com.pblabs.engine.core.ScheduleObject) package com.pblabs.engine.core { import com.pblabs.engine.core.*; final class ScheduleObject implements IPrioritizable { public var dueTime:Number;// = 0 public var callback:Function;// = null public var arguments:Array;// = null public var thisObject:Object;// = null public function get priority():int{ return (-(dueTime)); } public function set priority(_arg1:int):void{ throw (new Error("Unimplemented.")); } } }//package com.pblabs.engine.core
Section 268
//SchemaGenerator (com.pblabs.engine.core.SchemaGenerator) package com.pblabs.engine.core { import flash.events.*; import com.pblabs.engine.debug.*; import flash.utils.*; import flash.net.*; import com.pblabs.engine.*; public class SchemaGenerator { private var _failed:Boolean;// = false private var _connection:LocalConnection; private var _classes:Dictionary; private static var _instance:SchemaGenerator = null; public function SchemaGenerator(){ _classes = new Dictionary(); super(); addClassName("flash.geom.Point"); addClassName("flash.geom.Rectangle"); addClassName("Array"); addClassName("flash.utils.Dictionary"); addClassName("int"); addClassName("uint"); addClassName("Number"); addClassName("Boolean"); addClassName("String"); } public function addClassName(_arg1:String):void{ addClass(_arg1, (getDefinitionByName(_arg1) as Class)); } public function generateSchema():void{ var classObject:Class; var description:XML; if (PBE.IS_SHIPPING_BUILD){ return; }; _connection = new LocalConnection(); _connection.addEventListener(StatusEvent.STATUS, onConnectionStatus); _connection.send("_SchemaConnection", "OnSchemaReceived", "START", ""); _failed = false; var dependentClasses:Dictionary = new Dictionary(); for each (classObject in _classes) { description = describeType(classObject); try { Logger.print(this, ("Sending schema data for " + description.@name)); _connection.send("_SchemaConnection", "OnSchemaReceived", "TYPE", description.toString()); } catch(error:Error) { _connection.send("_SchemaConnection", "OnSchemaReceived", "ERROR", (("Schema data for " + description.@name) + " is too big!")); Logger.error(this, "GenerateSchema", (("Schema data for " + description.@name) + " is too big!")); }; }; _connection.send("_SchemaConnection", "OnSchemaReceived", "END", ""); } public function addClass(_arg1:String, _arg2:Class):void{ _classes[_arg1.replace("::", ".")] = _arg2; } private function onConnectionStatus(_arg1:StatusEvent):void{ if (_failed){ return; }; switch (_arg1.level){ case "error": _failed = true; break; }; if (_failed){ Logger.error(this, "GenerateSchema", "Schema generation failed!"); }; } public static function get instance():SchemaGenerator{ if (!_instance){ _instance = new (SchemaGenerator); }; return (_instance); } } }//package com.pblabs.engine.core
Section 269
//SimplePriorityQueue (com.pblabs.engine.core.SimplePriorityQueue) package com.pblabs.engine.core { import flash.utils.*; public class SimplePriorityQueue { private var _size:int; private var _heap:Array; private var _posLookup:Dictionary; private var _count:int; public function SimplePriorityQueue(_arg1:int){ _heap = new Array((_size = (_arg1 + 1))); _posLookup = new Dictionary(true); _count = 0; } public function get size():int{ return (_count); } public function isEmpty():Boolean{ return ((_count == 0)); } public function remove(_arg1:IPrioritizable):Boolean{ var _local2:int; var _local3:*; if (_count >= 1){ _local2 = _posLookup[_arg1]; _local3 = _heap[_local2]; delete _posLookup[_local3]; _heap[_local2] = _heap[_count]; walkDown(_local2); delete _heap[_count]; delete _posLookup[_count]; _count--; return (true); }; return (false); } public function get maxSize():int{ return (_size); } public function enqueue(_arg1:IPrioritizable):Boolean{ if ((_count + 1) < _size){ _count++; _heap[_count] = _arg1; _posLookup[_arg1] = _count; walkUp(_count); return (true); }; return (false); } public function get front():IPrioritizable{ return (_heap[1]); } public function toString():String{ return ((("[SimplePriorityQueue, size=" + _size) + "]")); } public function clear():void{ _heap = new Array(_size); _posLookup = new Dictionary(true); _count = 0; } public function toArray():Array{ return (_heap.slice(1, (_count + 1))); } public function reprioritize(_arg1:IPrioritizable, _arg2:int):Boolean{ if (!_posLookup[_arg1]){ return (false); }; var _local3:int = _arg1.priority; _arg1.priority = _arg2; var _local4:int = _posLookup[_arg1]; if ((_arg2 > _local3)){ walkUp(_local4); } else { walkDown(_local4); }; return (true); } public function dump():String{ if (_count == 0){ return ("SimplePriorityQueue (empty)"); }; var _local1 = "SimplePriorityQueue\n{\n"; var _local2:int = (_count + 1); var _local3 = 1; while (_local3 < _local2) { _local1 = (_local1 + (("\t" + _heap[_local3]) + "\n")); _local3++; }; _local1 = (_local1 + "\n}"); return (_local1); } public function dequeue():IPrioritizable{ var _local1:*; if (_count >= 1){ _local1 = _heap[1]; delete _posLookup[_local1]; _heap[1] = _heap[_count]; walkDown(1); delete _heap[_count]; _count--; return (_local1); }; return (null); } private function walkDown(_arg1:int):void{ var _local3:IPrioritizable; var _local2 = (_arg1 << 1); var _local4:IPrioritizable = _heap[_arg1]; var _local5:int = _local4.priority; while (_local2 < _count) { if (_local2 < (_count - 1)){ if ((_heap[_local2].priority - _heap[int((_local2 + 1))].priority) < 0){ _local2++; }; }; _local3 = _heap[_local2]; if ((_local5 - _local3.priority) < 0){ _heap[_arg1] = _local3; _posLookup[_local3] = _arg1; _posLookup[_local4] = _local2; _arg1 = _local2; _local2 = (_local2 << 1); } else { break; }; }; _heap[_arg1] = _local4; _posLookup[_local4] = _arg1; } private function walkUp(_arg1:int):void{ var _local3:IPrioritizable; var _local2 = (_arg1 >> 1); var _local4:IPrioritizable = _heap[_arg1]; var _local5:int = _local4.priority; while (_local2 > 0) { _local3 = _heap[_local2]; if ((_local5 - _local3.priority) > 0){ _heap[_arg1] = _local3; _posLookup[_local3] = _arg1; _arg1 = _local2; _local2 = (_local2 >> 1); } else { break; }; }; _heap[_arg1] = _local4; _posLookup[_local4] = _arg1; } public function contains(_arg1):Boolean{ var _local2 = 1; while (_local2 <= _count) { if (_heap[_local2] === _arg1){ return (true); }; _local2++; }; return (false); } } }//package com.pblabs.engine.core
Section 270
//sprintf (com.pblabs.engine.core.sprintf) package com.pblabs.engine.core { public function sprintf(_arg1:String, ... _args):String{ var _local6:String; var _local7:*; var _local8:String; var _local9:Boolean; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; var _local13:Boolean; var _local14:Boolean; var _local15:Boolean; var _local16:String; var _local17:String; var _local18:Boolean; var _local19:Boolean; var _local3 = ""; var _local4:int = _arg1.length; var _local5:int; while (_local5 < _local4) { _local6 = _arg1.charAt(_local5); if (_local6 == "%"){ _local9 = false; _local10 = false; _local11 = false; _local12 = false; _local13 = false; _local14 = false; _local15 = false; _local16 = ""; _local17 = ""; ++_local5; _local6 = _arg1.charAt(_local5); while (((((((((((((((((((((!((_local6 == "d"))) && (!((_local6 == "i"))))) && (!((_local6 == "o"))))) && (!((_local6 == "u"))))) && (!((_local6 == "x"))))) && (!((_local6 == "X"))))) && (!((_local6 == "f"))))) && (!((_local6 == "F"))))) && (!((_local6 == "c"))))) && (!((_local6 == "s"))))) && (!((_local6 == "%"))))) { if (!_local10){ if (((!(_local11)) && ((_local6 == "#")))){ _local11 = true; } else { if (((!(_local12)) && ((_local6 == "0")))){ _local12 = true; } else { if (((!(_local13)) && ((_local6 == "-")))){ _local13 = true; } else { if (((!(_local14)) && ((_local6 == " ")))){ _local14 = true; } else { if (((!(_local15)) && ((_local6 == "+")))){ _local15 = true; } else { _local10 = true; }; }; }; }; }; }; if (((!(_local9)) && ((_local6 == ".")))){ _local10 = true; _local9 = true; ++_local5; _local6 = _arg1.charAt(_local5); } else { if (_local10){ if (!_local9){ _local16 = (_local16 + _local6); } else { _local17 = (_local17 + _local6); }; }; ++_local5; _local6 = _arg1.charAt(_local5); }; }; switch (_local6){ case "d": case "i": _local7 = _args.shift(); _local8 = String(Math.abs(int(_local7))); if (_local17 != ""){ _local8 = leftPad(_local8, int(_local17), "0"); }; if (int(_local7) < 0){ _local8 = ("-" + _local8); } else { if (((_local15) && ((int(_local7) >= 0)))){ _local8 = ("+" + _local8); }; }; if (_local16 != ""){ if (_local13){ _local8 = rightPad(_local8, int(_local16)); } else { if (((_local12) && ((_local17 == "")))){ _local8 = leftPad(_local8, int(_local16), "0"); } else { _local8 = leftPad(_local8, int(_local16)); }; }; }; _local3 = (_local3 + _local8); break; case "o": _local7 = _args.shift(); _local8 = uint(_local7).toString(8); if (((_local11) && (!((_local8 == "0"))))){ _local8 = ("0" + _local8); }; if (_local17 != ""){ _local8 = leftPad(_local8, int(_local17), "0"); }; if (_local16 != ""){ if (_local13){ _local8 = rightPad(_local8, int(_local16)); } else { if (((_local12) && ((_local17 == "")))){ _local8 = leftPad(_local8, int(_local16), "0"); } else { _local8 = leftPad(_local8, int(_local16)); }; }; }; _local3 = (_local3 + _local8); break; case "u": _local7 = _args.shift(); _local8 = uint(_local7).toString(10); if (_local17 != ""){ _local8 = leftPad(_local8, int(_local17), "0"); }; if (_local16 != ""){ if (_local13){ _local8 = rightPad(_local8, int(_local16)); } else { if (((_local12) && ((_local17 == "")))){ _local8 = leftPad(_local8, int(_local16), "0"); } else { _local8 = leftPad(_local8, int(_local16)); }; }; }; _local3 = (_local3 + _local8); break; case "X": _local18 = true; case "x": _local7 = _args.shift(); _local8 = uint(_local7).toString(16); if (_local17 != ""){ _local8 = leftPad(_local8, int(_local17), "0"); }; _local19 = ((_local11) && (!((uint(_local7) == 0)))); if (((((((!((_local16 == ""))) && (!(_local13)))) && (_local12))) && ((_local17 == "")))){ _local8 = leftPad(_local8, (_local19) ? (int(_local16) - 2) : int(_local16), "0"); }; if (_local19){ _local8 = ("0x" + _local8); }; if (_local16 != ""){ if (_local13){ _local8 = rightPad(_local8, int(_local16)); } else { _local8 = leftPad(_local8, int(_local16)); }; }; if (_local18){ _local8 = _local8.toUpperCase(); }; _local3 = (_local3 + _local8); break; case "f": case "F": _local7 = _args.shift(); _local8 = Math.abs(Number(_local7)).toFixed(((_local17)!="") ? int(_local17) : 6); if (int(_local7) < 0){ _local8 = ("-" + _local8); } else { if (((_local15) && ((int(_local7) >= 0)))){ _local8 = ("+" + _local8); }; }; if (((_local11) && ((_local8.indexOf(".") == -1)))){ _local8 = (_local8 + "."); }; if (_local16 != ""){ if (_local13){ _local8 = rightPad(_local8, int(_local16)); } else { if (((_local12) && ((_local17 == "")))){ _local8 = leftPad(_local8, int(_local16), "0"); } else { _local8 = leftPad(_local8, int(_local16)); }; }; }; _local3 = (_local3 + _local8); break; case "c": _local7 = _args.shift(); _local8 = String.fromCharCode(int(_local7)); if (_local16 != ""){ if (_local13){ _local8 = rightPad(_local8, int(_local16)); } else { _local8 = leftPad(_local8, int(_local16)); }; }; _local3 = (_local3 + _local8); break; case "s": _local7 = _args.shift(); _local8 = String(_local7); if (_local17 != ""){ _local8 = _local8.substring(0, int(_local17)); }; if (_local16 != ""){ if (_local13){ _local8 = rightPad(_local8, int(_local16)); } else { _local8 = leftPad(_local8, int(_local16)); }; }; _local3 = (_local3 + _local8); break; case "%": _local3 = (_local3 + "%"); }; } else { _local3 = (_local3 + _local6); }; _local5++; }; return (_local3); } }//package com.pblabs.engine.core private const leftPad:Function = function (_arg1:String, _arg2:int, _arg3:String=" "):String{ var _local4:String; if (_arg1.length < _arg2){ _local4 = ""; while ((_local4.length + _arg1.length) < _arg2) { _local4 = (_local4 + _arg3); }; return ((_local4 + _arg1)); }; return (_arg1); }; private const rightPad:Function = function (_arg1:String, _arg2:int, _arg3:String=" "):String{ while (_arg1.length < _arg2) { _arg1 = (_arg1 + _arg3); }; return (_arg1); };
Section 271
//TemplateEvent (com.pblabs.engine.core.TemplateEvent) package com.pblabs.engine.core { import flash.events.*; public class TemplateEvent extends Event { public var name:String; public static const GROUP_LOADED:String = "groupLoaded"; public function TemplateEvent(_arg1:String, _arg2:String, _arg3:Boolean=false, _arg4:Boolean=false){ this.name = _arg2; super(_arg1, _arg3, _arg4); } } }//package com.pblabs.engine.core
Section 272
//TemplateManager (com.pblabs.engine.core.TemplateManager) package com.pblabs.engine.core { import flash.events.*; import com.pblabs.engine.resource.*; import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import flash.utils.*; import com.pblabs.engine.serialization.*; import com.pblabs.engine.*; public class TemplateManager extends EventDispatcher { private var _inGroup:Boolean;// = false private var _entityType:Class;// = null private var _things:Dictionary; public static const LOADED_EVENT:String = "LOADED_EVENT"; public static const FAILED_EVENT:String = "FAILED_EVENT"; public static var VERBOSE_LOGGING:Boolean = false; public function TemplateManager(){ _things = new Dictionary(); super(); } public function registerGroupCallback(_arg1:String, _arg2:Function):void{ if (_arg2 == null){ throw (new Error("Must pass a callback function!")); }; if (_things[_arg1]){ throw (new Error((("Already have a thing registered under '" + _arg1) + "'!"))); }; var _local3:ThingReference = new ThingReference(); _local3.groupCallback = _arg2; _things[_arg1] = _local3; } public function loadFile(_arg1:String):void{ PBE.resourceManager.load(_arg1, XMLResource, onLoaded, onFailed); } private function onLoaded(_arg1:XMLResource):void{ var _local4:XML; var _local2:int = _arg1.XMLData.attribute("version"); var _local3:int; for each (_local4 in _arg1.XMLData.*) { _local3++; addXML(_local4, _arg1.filename, _local2); }; Logger.print(this, ((("Loaded " + _local3) + " from ") + _arg1.filename)); dispatchEvent(new Event(LOADED_EVENT)); } public function unregisterGroupCallback(_arg1:String):void{ if (!_things[_arg1]){ throw (new Error((("No such thing '" + _arg1) + "'!"))); }; if (!_things[_arg1].groupCallback){ throw (new Error((("Thing '" + _arg1) + "' is not a group callback!"))); }; _things[_arg1] = null; delete _things[_arg1]; } public function hasEntityCallback(_arg1:String):Boolean{ return (_things[_arg1]); } public function registerEntityCallback(_arg1:String, _arg2:Function):void{ if (_arg2 == null){ throw (new Error("Must pass a callback function!")); }; if (_things[_arg1]){ throw (new Error((("Already have a thing registered under '" + _arg1) + "'!"))); }; var _local3:ThingReference = new ThingReference(); _local3.entityCallback = _arg2; _things[_arg1] = _local3; } private function doGetXML(_arg1:String, _arg2:String, _arg3:String):ThingReference{ var _local5:String; var _local4:ThingReference = _things[_arg1]; if (!_local4){ return (null); }; if (((!((_local4.entityCallback == null))) || (!((_local4.groupCallback == null))))){ return (null); }; if (_arg2){ _local5 = _local4.xmlData.name(); if (((!((_local5 == _arg2))) && (!((_local5 == _arg3))))){ return (null); }; }; return (_local4); } public function instantiateEntityFromXML(_arg1:XML):IEntity{ var name:String; var alias:String; var entity:IEntity; var xml = _arg1; Profiler.enter("instantiateEntityFromXML"); try { name = xml.attribute("name"); if (xml.name() == "template"){ name = ""; }; alias = xml.attribute("alias"); if (alias == ""){ alias = null; }; if (!_entityType){ entity = allocateEntity(); } else { entity = new _entityType(); }; entity.initialize(name, alias); entity.deferring = true; if (!doInstantiateTemplate(entity, xml.attribute("template"), new Dictionary())){ entity.destroy(); Profiler.exit("instantiateEntityFromXML"); return (null); }; Serializer.instance.deserialize(entity, xml); Serializer.instance.clearCurrentEntity(); entity.deferring = false; if (!_inGroup){ Serializer.instance.reportMissingReferences(); }; Profiler.exit("instantiateEntityFromXML"); } catch(e:Error) { Logger.error(this, "instantiateEntity", ((((("Failed instantiating '" + name) + "' due to: ") + e.toString()) + "\n") + e.getStackTrace())); entity = null; Profiler.exit("instantiateEntityFromXML"); }; return (entity); } public function getXML(_arg1:String, _arg2:String=null, _arg3:String=null):XML{ var _local4:ThingReference = doGetXML(_arg1, _arg2, _arg3); return ((_local4) ? _local4.xmlData : null); } public function unloadFile(_arg1:String):void{ removeXML(_arg1); PBE.resourceManager.unload(_arg1, XMLResource); } public function unregisterEntityCallback(_arg1:String):void{ if (!_things[_arg1]){ Logger.warn(this, "unregisterEntityCallback", (("No such template '" + _arg1) + "'!")); return; }; if (!_things[_arg1].entityCallback){ throw (new Error((("Thing '" + _arg1) + "' is not an entity callback!"))); }; _things[_arg1] = null; delete _things[_arg1]; } private function doInstantiateGroup(_arg1:String, _arg2:Array, _arg3:Dictionary):Boolean{ var objectXML:XML; var childName:String; var name = _arg1; var group = _arg2; var tree = _arg3; var xml:XML = getXML(name, "group"); if (!xml){ throw (new Error((("Could not find group '" + name) + "'"))); }; for each (objectXML in xml.*) { childName = objectXML.attribute("name"); if (objectXML.name() == "groupReference"){ if (tree[childName]){ throw (new Error((("Cyclical group detected. " + childName) + " has already been instantiated."))); }; tree[childName] = true; try { if (!doInstantiateGroup(childName, group, tree)){ return (false); }; } catch(err) { Logger.warn(this, "instantiateGroup", ((((("Failed to instantiate group '" + childName) + "' from groupReference in '") + name) + "' due to: ") + err)); return (false); }; } else { if (objectXML.name() == "objectReference"){ _inGroup = true; group.push(instantiateEntity(childName)); _inGroup = false; } else { Logger.warn(this, "instantiateGroup", (("Encountered unknown tag " + objectXML.name()) + " in group.")); }; }; }; Serializer.instance.reportMissingReferences(); return (true); } public function instantiateEntity(_arg1:String):IEntity{ var xml:XML; var entity:IEntity; var instantiated:IEntity; var name = _arg1; Profiler.enter("instantiateEntity"); try { if (_things[name]){ if (_things[name].groupCallback){ throw (new Error((("Thing '" + name) + "' is a group callback!"))); }; if (_things[name].entityCallback){ instantiated = _things[name].entityCallback(); Profiler.exit("instantiateEntity"); return (instantiated); }; }; xml = getXML(name, "template", "entity"); if (!xml){ Logger.error(this, "instantiateEntity", (("Unable to find a template or entity with the name " + name) + ".")); Profiler.exit("instantiateEntity"); return (null); }; entity = instantiateEntityFromXML(xml); Profiler.exit("instantiateEntity"); } catch(e:Error) { Logger.error(this, "instantiateEntity", ((((("Failed instantiating '" + name) + "' due to: ") + e.toString()) + "\n") + e.getStackTrace())); entity = null; Profiler.exit("instantiateEntity"); }; return (entity); } public function removeXML(_arg1:String):void{ var _local3:String; var _local4:int; var _local5:ThingReference; var _local2:Array = new Array(); for (_local3 in _things) { _local5 = _things[_local3]; if (_local5.identifier == _arg1){ _local2[_local2.length] = _local3; }; }; _local4 = 0; while (_local4 < _local2.length) { _things[_local2[_local4]] = null; delete _things[_local2[_local4]]; _local4++; }; } public function instantiateGroup(_arg1:String):Array{ var group:Array; var entity:IEntity; var name = _arg1; if (_things[name]){ if (_things[name].entityCallback){ throw (new Error((("Thing '" + name) + "' is an entity callback!"))); }; if (_things[name].groupCallback){ return (_things[name].groupCallback()); }; }; try { group = new Array(); if (!doInstantiateGroup(name, group, new Dictionary())){ for each (entity in group) { entity.destroy(); }; return (null); }; if (hasEventListener(TemplateEvent.GROUP_LOADED)){ dispatchEvent(new TemplateEvent(TemplateEvent.GROUP_LOADED, name)); }; return (group); } catch(e:Error) { Logger.error(this, "instantiateGroup", ((("Failed to instantiate group '" + name) + "' due to: ") + e.toString())); return (null); }; throw (new Error("Somehow skipped both branches of group instantiation try/catch block!")); } public function addXML(_arg1:XML, _arg2:String, _arg3:int):void{ var _local4:String = _arg1.attribute("name"); if (_local4.length == 0){ Logger.warn(this, "AddXML", "XML object description added without a 'name' attribute."); return; }; if (_things[_local4]){ Logger.warn(this, "AddXML", (("An XML object description with name " + _local4) + " has already been added.")); return; }; var _local5:ThingReference = new ThingReference(); _local5.xmlData = _arg1; _local5.identifier = _arg2; _local5.version = _arg3; _things[_local4] = _local5; } private function doInstantiateTemplate(_arg1:IEntity, _arg2:String, _arg3:Dictionary):Boolean{ if ((((_arg2 == null)) || ((_arg2.length == 0)))){ return (true); }; if (_arg3[_arg2]){ Logger.warn(this, "instantiateTemplate", (("Cyclical template detected. " + _arg2) + " has already been instantiated.")); return (false); }; var _local4:XML = getXML(_arg2, "template"); if (!_local4){ Logger.warn(this, "instantiate", (("Unable to find the template " + _arg2) + ".")); return (false); }; _arg3[_arg2] = true; if (!doInstantiateTemplate(_arg1, _local4.attribute("template"), _arg3)){ return (false); }; _arg1.deserialize(_local4, false); return (true); } public function set entityType(_arg1:Class):void{ _entityType = _arg1; } private function onFailed(_arg1:XMLResource):void{ dispatchEvent(new Event(FAILED_EVENT)); } } }//package com.pblabs.engine.core class ThingReference { public var xmlData:XML;// = null public var groupCallback:Function;// = null public var version:int;// = 0 public var identifier:String;// = "" public var entityCallback:Function;// = null private function ThingReference(){ } }
Section 273
//Console (com.pblabs.engine.debug.Console) package com.pblabs.engine.debug { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.engine.serialization.*; import com.pblabs.engine.*; public class Console { protected static var _stats:Stats; protected static var commandListOrdered:Boolean = false; protected static var commands:Object = {}; protected static var commandList:Array = []; public static var verbosity:int = 0; protected static function generateIndent(_arg1:int):String{ var _local2 = ""; var _local3:int; while (_local3 < _arg1) { _local2 = (_local2 + " "); _local3++; }; return (_local2); } public static function processLine(_arg1:String):void{ var args:Array; var line = _arg1; ensureCommandsOrdered(); args = line.split(" "); if (args.length == 0){ return; }; var potentialCommand:ConsoleCommand = commands[args[0].toString().toLowerCase()]; if (!potentialCommand){ Logger.warn(Console, "processLine", (("No such command '" + args[0].toString()) + "'!")); return; }; try { potentialCommand.callback.apply(null, args.slice(1)); } catch(e:Error) { Logger.error(Console, args[0], ((("Error: " + e.toString()) + " - ") + e.getStackTrace())); }; } protected static function _listPBObjects(_arg1:IPBObject, _arg2:int):int{ var _local9:Array; var _local10:IEntityComponent; if (!_arg1){ return (0); }; var _local3 = ((" (" + TypeUtility.getObjectClassName(_arg1)) + ")"); if (((_arg1.name) || (_arg1.alias))){ Logger.print(Console, (((Console.generateIndent(_arg2) + _arg1.name) + _local3) + ((_arg1.alias)!=null) ? (" alias = " + _arg1.alias) : "")); } else { Logger.print(Console, ((Console.generateIndent(_arg2) + "[anonymous]") + _local3)); }; var _local4:PBSet = (_arg1 as PBSet); var _local5:PBGroup = (_arg1 as PBGroup); var _local6:IEntity = (_arg1 as IEntity); var _local7 = 1; var _local8:int; if (_local4){ _local8 = 0; while (_local8 < _local4.length) { _local7 = (_local7 + _listPBObjects(_local4.getItem(_local8), (_arg2 + 1))); _local8++; }; } else { if (_local5){ _local8 = 0; while (_local8 < _local5.length) { _local7 = (_local7 + _listPBObjects(_local5.getItem(_local8), (_arg2 + 1))); _local8++; }; } else { if (_local6){ _local9 = _local6.lookupComponentsByType(IEntityComponent); _local8 = 0; while (_local8 < _local9.length) { _local10 = (_local9[_local8] as IEntityComponent); _local3 = ((" (" + TypeUtility.getObjectClassName(_local10)) + ")"); Logger.print(Console, ((Console.generateIndent((_arg2 + 1)) + _local10.name) + _local3)); _local8++; }; }; }; }; return (_local7); } protected static function ensureCommandsOrdered():void{ if (commandListOrdered == true){ return; }; if (commands.help == null){ init(); }; commandListOrdered = true; commandList.sort(function (_arg1:ConsoleCommand, _arg2:ConsoleCommand):int{ if (_arg1.name > _arg2.name){ return (1); }; return (-1); }); } public static function registerCommand(_arg1:String, _arg2:Function, _arg3:String=null):void{ if (_arg2 == null){ Logger.error(Console, "registerCommand", (("Command '" + _arg1) + "' has no callback!")); }; if (((!(_arg1)) || ((_arg1.length == 0)))){ Logger.error(Console, "registerCommand", "Command has no name!"); }; if (_arg1.indexOf(" ") != -1){ Logger.error(Console, "registerCommand", (("Command '" + _arg1) + "' has a space in it, it will not work.")); }; var _local4:ConsoleCommand = new ConsoleCommand(); _local4.name = _arg1; _local4.callback = _arg2; _local4.docs = _arg3; if (commands[_arg1.toLowerCase()]){ Logger.warn(Console, "registerCommand", (("Replacing existing command '" + _arg1) + "'.")); }; commands[_arg1.toLowerCase()] = _local4; commandList.push(_local4); commandListOrdered = false; } public static function getCommandList():Array{ ensureCommandsOrdered(); return (commandList); } protected static function _listDisplayObjects(_arg1:DisplayObject, _arg2:int):int{ if (!_arg1){ return (0); }; Logger.print(Console, (((((((Console.generateIndent(_arg2) + _arg1.name) + " (") + _arg1.x) + ",") + _arg1.y) + ") visible=") + _arg1.visible)); var _local3:DisplayObjectContainer = (_arg1 as DisplayObjectContainer); if (!_local3){ return (1); }; var _local4 = 1; var _local5:int; while (_local5 < _local3.numChildren) { _local4 = (_local4 + _listDisplayObjects(_local3.getChildAt(_local5), (_arg2 + 1))); _local5++; }; return (_local4); } public static function init():void{ registerCommand("help", function (_arg1:String=null):void{ var _local3:ConsoleCommand; ensureCommandsOrdered(); Logger.print(Console, "Keyboard shortcuts: "); Logger.print(Console, "[SHIFT]-TAB - Cycle through autocompleted commands."); Logger.print(Console, "PGUP/PGDN - Page log view up/down a page."); Logger.print(Console, ""); Logger.print(Console, "Commands:"); var _local2:int; while (_local2 < commandList.length) { _local3 = (commandList[_local2] as ConsoleCommand); if (((((_arg1) && ((_arg1.length > 0)))) && (!((_local3.name.substr(0, _arg1.length) == _arg1))))){ } else { Logger.print(Console, (((" " + _local3.name) + " - ") + (_local3.docs) ? _local3.docs : "")); }; _local2++; }; }, "[prefix] - List known commands, optionally filtering by prefix."); registerCommand("version", function ():void{ Logger.print(Console, PBE.versionDetails.toString()); }, "Echo PushButton Engine version information."); registerCommand("fps", function ():void{ if (!_stats){ _stats = new Stats(); PBE.mainStage.addChild(_stats); Logger.print(Console, "Enabled FPS display."); } else { PBE.mainStage.removeChild(_stats); _stats = null; }; }, "Toggle an FPS/Memory usage indicator."); registerCommand("verbose", function (_arg1:int):void{ Console.verbosity = _arg1; Logger.print(Console, ("Verbosity set to " + _arg1)); }, "Set verbosity level of console output."); registerCommand("listDisplayObjects", function ():void{ var _local1:int = Console._listDisplayObjects(PBE.mainStage, 0); Logger.print(Console, ((" " + _local1) + " total display objects.")); }, "Outputs the display list."); registerCommand("tree", function ():void{ var _local1:int = Console._listPBObjects(PBE.rootGroup, 0); Logger.print(Console, ((" " + _local1) + " total PBObjects.")); }, "List all the PBObjects in the game."); } } }//package com.pblabs.engine.debug final class ConsoleCommand { public var name:String; public var callback:Function; public var docs:String; private function ConsoleCommand(){ } }
Section 274
//ILogAppender (com.pblabs.engine.debug.ILogAppender) package com.pblabs.engine.debug { public interface ILogAppender { function addLogMessage(_arg1:String, _arg2:String, _arg3:String):void; } }//package com.pblabs.engine.debug
Section 275
//LogColor (com.pblabs.engine.debug.LogColor) package com.pblabs.engine.debug { public class LogColor { public static const WARN:String = "#FF6600"; public static const MESSAGE:String = "#000000"; public static const ERROR:String = "#FF0000"; public static const DEBUG:String = "#DDDDDD"; public static const INFO:String = "#222222"; public static const CMD:String = "#00DD00"; public static function getColor(_arg1:String):String{ switch (_arg1){ case LogEntry.DEBUG: return (DEBUG); case LogEntry.INFO: return (INFO); case LogEntry.WARNING: return (WARN); case LogEntry.ERROR: return (ERROR); case LogEntry.MESSAGE: return (MESSAGE); case "CMD": return (CMD); default: return (MESSAGE); }; } } }//package com.pblabs.engine.debug
Section 276
//LogEntry (com.pblabs.engine.debug.LogEntry) package com.pblabs.engine.debug { public class LogEntry { public var method:String;// = "" public var depth:int;// = 0 public var message:String;// = "" public var reporter:Class;// = null public var type:String;// = null public static const DEBUG:String = "DEBUG"; public static const MESSAGE:String = "MESSAGE"; public static const ERROR:String = "ERROR"; public static const WARNING:String = "WARNING"; public static const INFO:String = "INFO"; public function get formattedMessage():String{ var _local1 = ""; var _local2:int; while (_local2 < depth) { _local1 = (_local1 + " "); _local2++; }; var _local3 = ""; if (_local3){ _local3 = (_local3 + ": "); }; var _local4 = ""; if (((!((_local4 == null))) && (!((_local4 == ""))))){ _local4 = (_local4 + " - "); }; return ((((_local1 + _local3) + _local4) + message)); } } }//package com.pblabs.engine.debug
Section 277
//Logger (com.pblabs.engine.debug.Logger) package com.pblabs.engine.debug { import com.pblabs.engine.serialization.*; import com.pblabs.engine.*; public class Logger { public var enabled:Boolean; protected var owner:Class; protected static var started:Boolean = false; protected static var pendingEntries:Array = []; protected static var disabled:Boolean = false; protected static var listeners:Array = []; public function Logger(_arg1:Class, _arg2:Boolean=true){ owner = _arg1; enabled = _arg2; } public function print(_arg1:String):void{ if (enabled){ Logger.print(owner, _arg1); }; } public function error(_arg1:String, _arg2:String):void{ if (enabled){ Logger.error(owner, _arg1, _arg2); }; } public function warn(_arg1:String, _arg2:String):void{ if (enabled){ Logger.warn(owner, _arg1, _arg2); }; } public function info(_arg1:String, _arg2:String):void{ if (enabled){ Logger.info(owner, _arg1, _arg2); }; } public static function printFooter(_arg1, _arg2:String):void{ print(_arg1, _arg2); } protected static function processEntry(_arg1:LogEntry):void{ if (disabled){ return; }; if (!started){ pendingEntries.push(_arg1); return; }; var _local2:int; while (_local2 < listeners.length) { (listeners[_local2] as ILogAppender).addLogMessage(_arg1.type, TypeUtility.getObjectClassName(_arg1.reporter), _arg1.message); _local2++; }; } public static function printCustom(_arg1, _arg2:String, _arg3:String, _arg4:String):void{ if (disabled){ return; }; var _local5:LogEntry = new LogEntry(); _local5.reporter = TypeUtility.getClass(_arg1); _local5.method = _arg2; _local5.message = ((_arg2 + " - ") + _arg3); _local5.type = _arg4; processEntry(_local5); } public static function warn(_arg1, _arg2:String, _arg3:String):void{ if (disabled){ return; }; var _local4:LogEntry = new LogEntry(); _local4.reporter = TypeUtility.getClass(_arg1); _local4.method = _arg2; _local4.message = ((_arg2 + " - ") + _arg3); _local4.type = LogEntry.WARNING; processEntry(_local4); } public static function disable():void{ pendingEntries = null; started = false; listeners = null; disabled = true; } public static function print(_arg1, _arg2:String):void{ if (disabled){ return; }; var _local3:LogEntry = new LogEntry(); _local3.reporter = TypeUtility.getClass(_arg1); _local3.message = _arg2; _local3.type = LogEntry.MESSAGE; processEntry(_local3); } public static function info(_arg1, _arg2:String, _arg3:String):void{ if (disabled){ return; }; var _local4:LogEntry = new LogEntry(); _local4.reporter = TypeUtility.getClass(_arg1); _local4.method = _arg2; _local4.message = ((_arg2 + " - ") + _arg3); _local4.type = LogEntry.INFO; processEntry(_local4); } public static function error(_arg1, _arg2:String, _arg3:String):void{ if (disabled){ return; }; var _local4:LogEntry = new LogEntry(); _local4.reporter = TypeUtility.getClass(_arg1); _local4.method = _arg2; _local4.message = ((_arg2 + " - ") + _arg3); _local4.type = LogEntry.ERROR; processEntry(_local4); } public static function debug(_arg1, _arg2:String, _arg3:String):void{ if (disabled){ return; }; var _local4:LogEntry = new LogEntry(); _local4.reporter = TypeUtility.getClass(_arg1); _local4.method = _arg2; _local4.message = ((_arg2 + " - ") + _arg3); _local4.type = LogEntry.DEBUG; processEntry(_local4); } public static function getCallStack():String{ var e:Error; try { e = new Error(); return (e.getStackTrace()); } catch(e:Error) { }; return ("[no callstack available]"); } public static function registerListener(_arg1:ILogAppender):void{ listeners.push(_arg1); } public static function printHeader(_arg1, _arg2:String):void{ print(_arg1, _arg2); } public static function startup():void{ registerListener(new TraceAppender()); if (!PBE.IS_SHIPPING_BUILD){ registerListener(new UIAppender()); }; started = true; var _local1:int; while (_local1 < pendingEntries.length) { processEntry(pendingEntries[_local1]); _local1++; }; pendingEntries.length = 0; pendingEntries = null; } } }//package com.pblabs.engine.debug
Section 278
//LogViewer (com.pblabs.engine.debug.LogViewer) package com.pblabs.engine.debug { import flash.events.*; import com.pblabs.engine.core.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import flash.geom.*; import flash.text.*; import com.pblabs.engine.*; import flash.ui.*; public class LogViewer extends Sprite implements ILogAppender { protected var _truncating:Boolean;// = false protected var tabCompletionPrefix:String;// = "" protected var _height:uint;// = 150 protected var _width:uint;// = 500 protected var _input:TextField; protected var tabCompletionCurrentEnd:int;// = 0 protected var tabCompletionCurrentStart:int;// = 0 protected var tabCompletionCurrentOffset:int;// = 0 protected var _consoleHistory:Array; protected var _scrollBar:PBScrollBar; protected var _output:TextField; protected var _messageQueue:Array; protected var _maxLength:uint;// = 200000 protected var _historyIndex:uint;// = 0 public function LogViewer():void{ _messageQueue = []; _consoleHistory = []; super(); layout(); addListeners(); name = "Console"; Console.registerCommand("clear", onClearCommand, "Clears the console history."); } protected function onInputKeyDown(_arg1:KeyboardEvent):void{ var list:Array; var isFirst:Boolean; var oldfr:*; var i:int; var potentialMatch:String; var event = _arg1; if (((!((event.keyCode == Keyboard.TAB))) && (!((event.keyCode == Keyboard.SHIFT))))){ tabCompletionPrefix = _input.text; tabCompletionCurrentStart = -1; tabCompletionCurrentOffset = 0; }; if (event.keyCode == Keyboard.ENTER){ if (_input.text.length <= 0){ addLogMessage("CMD", ">", _input.text); return; }; processCommand(); } else { if (event.keyCode == Keyboard.UP){ if (_historyIndex > 0){ setHistory(_consoleHistory[--_historyIndex]); } else { if (_consoleHistory.length > 0){ setHistory(_consoleHistory[0]); }; }; event.preventDefault(); } else { if (event.keyCode == Keyboard.DOWN){ if (_historyIndex < (_consoleHistory.length - 1)){ setHistory(_consoleHistory[++_historyIndex]); } else { if (_historyIndex == (_consoleHistory.length - 1)){ _input.text = ""; }; }; event.preventDefault(); } else { if (event.keyCode == Keyboard.PAGE_UP){ _output.scrollV = (_output.scrollV - Math.floor((_output.height / _output.getLineMetrics(0).height))); } else { if (event.keyCode == Keyboard.PAGE_DOWN){ _output.scrollV = (_output.scrollV + Math.floor((_output.height / _output.getLineMetrics(0).height))); } else { if (event.keyCode == Keyboard.TAB){ list = Console.getCommandList(); isFirst = false; if (tabCompletionCurrentStart == -1){ tabCompletionPrefix = _input.text.toLowerCase(); tabCompletionCurrentStart = int.MAX_VALUE; tabCompletionCurrentEnd = -1; i = 0; while (i < list.length) { if (list[i].name.substr(0, tabCompletionPrefix.length).toLowerCase() == tabCompletionPrefix){ if (i < tabCompletionCurrentStart){ tabCompletionCurrentStart = i; }; if (i > tabCompletionCurrentEnd){ tabCompletionCurrentEnd = i; }; isFirst = true; }; i = (i + 1); }; tabCompletionCurrentOffset = tabCompletionCurrentStart; }; if (tabCompletionCurrentEnd != -1){ if (!isFirst){ if (event.shiftKey){ tabCompletionCurrentOffset--; } else { tabCompletionCurrentOffset++; }; if (tabCompletionCurrentOffset < tabCompletionCurrentStart){ tabCompletionCurrentOffset = tabCompletionCurrentEnd; } else { if (tabCompletionCurrentOffset > tabCompletionCurrentEnd){ tabCompletionCurrentOffset = tabCompletionCurrentStart; }; }; }; potentialMatch = list[tabCompletionCurrentOffset].name; _input.text = potentialMatch; _input.setSelection((potentialMatch.length + 1), (potentialMatch.length + 1)); }; oldfr = stage.stageFocusRect; stage.stageFocusRect = false; PBE.callLater(function ():void{ stage.focus = _input; stage.stageFocusRect = oldfr; }); } else { if (event.keyCode == InputKey.TILDE.keyCode){ parent.removeChild(this); deactivate(); }; }; }; }; }; }; }; event.stopImmediatePropagation(); } protected function onClearCommand():void{ _output.htmlText = ""; } public function set maxLength(_arg1:uint):void{ _maxLength = _arg1; truncateOutput(); } protected function setHistory(_arg1:String):void{ var old = _arg1; _input.text = old; PBE.callLater(function ():void{ _input.setSelection(_input.length, _input.length); }); } protected function addListeners():void{ _input.addEventListener(KeyboardEvent.KEY_DOWN, onInputKeyDown, false, 1, true); } public function deactivate():void{ removeListeners(); PBE.mainStage.focus = null; } protected function removeListeners():void{ _input.removeEventListener(KeyboardEvent.KEY_DOWN, onInputKeyDown); } protected function processCommand():void{ addLogMessage("CMD", ">", _input.text); Console.processLine(_input.text); _consoleHistory.push(_input.text); _historyIndex = _consoleHistory.length; _input.text = ""; } protected function createOutputField():TextField{ _output = new TextField(); _output.type = TextFieldType.DYNAMIC; _output.multiline = true; _output.wordWrap = true; _output.condenseWhite = false; var _local1:TextFormat = _output.getTextFormat(); _local1.font = "_typewriter"; _local1.size = 11; _local1.color = 0; _output.setTextFormat(_local1); _output.defaultTextFormat = _local1; _output.htmlText = ""; _output.embedFonts = false; _output.name = "ConsoleOutput"; return (_output); } protected function layout():void{ if (!_output){ createOutputField(); }; if (!_input){ createInputField(); }; if (!_scrollBar){ createScrollBar(); }; resize(); _scrollBar.tf = _output; addChild(_output); addChild(_input); addChild(_scrollBar); graphics.clear(); graphics.beginFill(0x666666, 0.95); graphics.drawRoundRect(0, 0, _width, _height, 5); graphics.endFill(); graphics.beginFill(0xFFFFFF, 1); graphics.drawRoundRect(4, 4, (_width - 8), (_height - 30), 5); graphics.endFill(); } protected function createInputField():TextField{ _input = new TextField(); _input.type = TextFieldType.INPUT; _input.border = true; _input.borderColor = 0xFFFFFF; _input.multiline = false; _input.wordWrap = false; _input.condenseWhite = false; _input.background = true; _input.backgroundColor = 0xFFFFFF; var _local1:TextFormat = _input.getTextFormat(); _local1.font = "_typewriter"; _local1.size = 11; _local1.color = 0; _input.setTextFormat(_local1); _input.defaultTextFormat = _local1; _input.restrict = "^`"; _input.name = "ConsoleInput"; return (_input); } protected function truncateOutput():void{ if (_output.text.length > maxLength){ _output.text = _output.text.slice(-(maxLength)); if (!_truncating){ _truncating = true; Logger.warn(this, "truncateOutput", ((((("You have exceeded " + _maxLength) + " characters in LogViewerAS. ") + "It will now only show the latest ") + _maxLength) + " characters of the log.")); }; }; } protected function createScrollBar():PBScrollBar{ _scrollBar = new PBScrollBar(); return (_scrollBar); } public function activate():void{ layout(); _input.text = ""; addListeners(); PBE.mainStage.focus = _input; } public function get maxLength():uint{ return (_maxLength); } protected function resize():void{ _output.x = 5; _output.y = 0; _input.x = 5; if (stage){ _width = (stage.stageWidth - 1); _height = ((stage.stageHeight / 3) * 2); }; _scrollBar.extents = new Rectangle(0, 0, 8, (_height - 32)); _scrollBar.x = ((_width - _scrollBar.extents.width) - 5); _scrollBar.y = 5; _output.height = (_height - 30); _output.width = (_width - (_scrollBar.width + 1)); _input.height = 18; _input.width = (_width - 10); _input.y = (_output.height + 7); } public function addLogMessage(_arg1:String, _arg2:String, _arg3:String):void{ var _local6:int; var _local7:String; var _local4:String = LogColor.getColor(_arg1); if (Console.verbosity < 2){ _local6 = _arg2.lastIndexOf("::"); if (_local6 != -1){ _arg2 = _arg2.substr((_local6 + 2)); }; }; var _local5:String = (((((Console.verbosity)>0) ? (_arg1 + ": ") : "" + _arg2) + " - ") + _arg3); if (_output){ Profiler.enter("LogViewer.addLogMessage"); _local7 = (((((("<p><font size=\"" + _input.getTextFormat().size) + "\" color=\"") + _local4) + "\"><b>") + PBUtil.escapeHTMLText(_local5)) + "</b></font></p>"); _output.htmlText = (_output.htmlText + _local7); truncateOutput(); _output.scrollV = _output.maxScrollV; _scrollBar.progress = 1; Profiler.exit("LogViewer.addLogMessage"); }; } } }//package com.pblabs.engine.debug
Section 279
//Profiler (com.pblabs.engine.debug.Profiler) package com.pblabs.engine.debug { import com.pblabs.engine.core.*; import flash.utils.*; import com.pblabs.engine.*; public class Profiler { public static var enabled:Boolean = false; private static var _wantReport:Boolean = false; private static var _wantWipe:Boolean = false; private static var _reallyEnabled:Boolean = true; private static var _currentNode:ProfileInfo; public static var nameFieldWidth:int = 50; private static var _rootNode:ProfileInfo; public static var indentAmount:int = 3; private static var _stackDepth:int = 0; public static function wipe():void{ if (_stackDepth){ _wantWipe = true; return; }; doWipe(); } private static function report_R(_arg1:ProfileInfo, _arg2:int):void{ var _local6:ProfileInfo; var _local3:Number = _arg1.totalTime; var _local4:Boolean; var _local5:Number = 0; for each (_local6 in _arg1.children) { _local4 = true; _local3 = (_local3 - _local6.totalTime); _local5 = (_local5 + _local6.totalTime); }; if (_arg1.name == "Root"){ _arg1.totalTime = _local5; }; var _local7:Number = -1; if (_arg1.parent){ _local7 = ((Number(_arg1.totalTime) / Number(_rootNode.totalTime)) * 100); }; var _local8:Number = -1; if (_arg1.parent){ _local8 = ((_local3 / Number(_rootNode.totalTime)) * 100); }; var _local9:String; if (_arg2 == 0){ _local9 = "+Root"; } else { _local9 = sprintf((((("%-" + (_arg2 * indentAmount)) + "s%-") + (nameFieldWidth - (_arg2 * indentAmount))) + "s%-8s%-8s%-8s%-8s%-8s%-8s"), "", ((_local4) ? "+" : "-" + _arg1.name), _arg1.activations, _local7.toFixed(2), _local8.toFixed(2), (Number(_arg1.totalTime) / Number(_arg1.activations)).toFixed(1), _arg1.minTime, _arg1.maxTime); }; Logger.print(Profiler, _local9); var _local10:Array = new Array(); for each (_local6 in _arg1.children) { _local10.push(_local6); }; _local10.sortOn("totalTime", (Array.NUMERIC | Array.DESCENDING)); for each (_local6 in _local10) { report_R(_local6, (_arg2 + 1)); }; } public static function ensureAtRoot():void{ if (_stackDepth){ throw (new Error("Not at root!")); }; } public static function enter(_arg1:String):void{ if (!_currentNode){ _rootNode = new ProfileInfo("Root"); _currentNode = _rootNode; }; if (_stackDepth == 0){ if (PBE.isKeyDown(InputKey.P)){ if (!enabled){ _wantWipe = true; enabled = true; }; } else { if (enabled){ _wantReport = true; enabled = false; }; }; _reallyEnabled = enabled; if (_wantWipe){ doWipe(); }; if (_wantReport){ doReport(); }; }; _stackDepth++; if (!_reallyEnabled){ return; }; var _local2:ProfileInfo = _currentNode.children[_arg1]; if (!_local2){ _local2 = new ProfileInfo(_arg1, _currentNode); _currentNode.children[_arg1] = _local2; }; _currentNode = _local2; _currentNode.startTime = getTimer(); } private static function doReport():void{ _wantReport = false; var _local1:String = sprintf((("%-" + nameFieldWidth) + "s%-8s%-8s%-8s%-8s%-8s%-8s"), "name", "Calls", "Total%", "NonSub%", "AvgMs", "MinMs", "MaxMs"); Logger.print(Profiler, _local1); report_R(_rootNode, 0); } public static function exit(_arg1:String):void{ _stackDepth--; if (!_reallyEnabled){ return; }; if (_arg1 != _currentNode.name){ throw (new Error((((("Mismatched Profiler.enter/Profiler.exit calls, got '" + _currentNode.name) + "' but was expecting '") + _arg1) + "'"))); }; var _local2:int = (getTimer() - _currentNode.startTime); _currentNode.activations++; _currentNode.totalTime = (_currentNode.totalTime + _local2); if (_local2 > _currentNode.maxTime){ _currentNode.maxTime = _local2; }; if (_local2 < _currentNode.minTime){ _currentNode.minTime = _local2; }; _currentNode = _currentNode.parent; } private static function doWipe(_arg1:ProfileInfo=null):void{ var _local2:ProfileInfo; _wantWipe = false; if (!_arg1){ doWipe(_rootNode); return; }; _arg1.wipe(); for each (_local2 in _arg1.children) { doWipe(_local2); }; } public static function report():void{ if (_stackDepth){ _wantReport = true; return; }; doReport(); } } }//package com.pblabs.engine.debug final class ProfileInfo { public var minTime:int;// = 2147483647 public var parent:ProfileInfo; public var name:String; public var startTime:int; public var totalTime:int; public var maxTime:int;// = -2147483648 public var activations:int; public var children:Object; private function ProfileInfo(_arg1:String, _arg2:ProfileInfo=null){ children = {}; super(); name = _arg1; parent = _arg2; } final public function wipe():void{ startTime = (totalTime = (activations = 0)); maxTime = int.MIN_VALUE; minTime = int.MAX_VALUE; } }
Section 280
//Stats (com.pblabs.engine.debug.Stats) package com.pblabs.engine.debug { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import flash.system.*; import flash.text.*; public class Stats extends Sprite { private var timer:int; private var graph:BitmapData; private var mem:Number;// = 0 private var memText:TextField; private var ver:Sprite; private var ms:int; private var fps:int; private var rectangle:Rectangle; private var verText:TextField; private var fpsText:TextField; private var format:TextFormat; private var msPrev:int;// = 0 private var msText:TextField; public function Stats(){ addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } private function onMouseOver(_arg1:MouseEvent):void{ ver.visible = true; } private function update(_arg1:Event):void{ var _local2:int; var _local3:Number; var _local4:int; timer = getTimer(); fps++; if ((timer - 250) > msPrev){ msPrev = timer; mem = Number((System.totalMemory * 9.54E-7).toFixed(3)); if (stage){ _local2 = Math.min(50, ((50 / stage.frameRate) * fps)); }; _local3 = (Math.min(50, Math.sqrt(Math.sqrt((mem * 5000)))) - 2); graph.scroll(1, 0); graph.fillRect(rectangle, 51); if ((timer - ms) > 100){ _local4 = 0; while (_local4 < graph.height) { graph.setPixel32(0, (graph.height - _local4), 0xFF0000); _local4++; }; }; graph.setPixel32(0, (graph.height - _local2), 0xFFFF00); graph.setPixel32(0, (graph.height - ((timer - ms) >> 1)), 0xFF00); graph.setPixel32(0, (graph.height - _local3), 0xFFFF); if (stage){ fpsText.text = ((("FPS: " + (fps * 4)) + " / ") + stage.frameRate); }; memText.text = ("MEM: " + mem); fps = 0; }; msText.text = ("MS: " + (timer - ms)); ms = timer; } private function onMouseOut(_arg1:MouseEvent):void{ ver.visible = false; } private function onAddedToStage(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); graphics.beginFill(51); graphics.drawRect(0, 0, 65, 40); graphics.endFill(); ver = new Sprite(); ver.graphics.beginFill(51); ver.graphics.drawRect(0, 0, 65, 30); ver.graphics.endFill(); ver.y = 90; ver.visible = false; addChild(ver); verText = new TextField(); fpsText = new TextField(); msText = new TextField(); memText = new TextField(); format = new TextFormat("_sans", 9); verText.defaultTextFormat = (fpsText.defaultTextFormat = (msText.defaultTextFormat = (memText.defaultTextFormat = format))); verText.width = (fpsText.width = (msText.width = (memText.width = 65))); verText.selectable = (fpsText.selectable = (msText.selectable = (memText.selectable = false))); verText.textColor = 0xFFFFFF; verText.text = ((Capabilities.version.split(" ")[0] + "\n") + Capabilities.version.split(" ")[1]); ver.addChild(verText); fpsText.textColor = 0xFFFF00; fpsText.text = "FPS: "; addChild(fpsText); msText.y = 10; msText.textColor = 0xFF00; msText.text = "MS: "; addChild(msText); memText.y = 20; memText.textColor = 0xFFFF; memText.text = "MEM: "; addChild(memText); graph = new BitmapData(65, 50, false, 51); var _local2:Bitmap = new Bitmap(graph); _local2.y = 40; addChild(_local2); rectangle = new Rectangle(0, 0, 1, graph.height); addEventListener(MouseEvent.CLICK, onClick); addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); addEventListener(Event.ENTER_FRAME, update); } private function onClick(_arg1:MouseEvent):void{ if (this.mouseY > (this.height * 0.35)){ stage.frameRate--; } else { stage.frameRate++; }; fpsText.text = ((("FPS: " + fps) + " / ") + stage.frameRate); } } }//package com.pblabs.engine.debug
Section 281
//TraceAppender (com.pblabs.engine.debug.TraceAppender) package com.pblabs.engine.debug { public class TraceAppender implements ILogAppender { public function addLogMessage(_arg1:String, _arg2:String, _arg3:String):void{ trace(((((_arg1 + ": ") + _arg2) + " - ") + _arg3)); } } }//package com.pblabs.engine.debug
Section 282
//UIAppender (com.pblabs.engine.debug.UIAppender) package com.pblabs.engine.debug { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.engine.*; public class UIAppender implements ILogAppender { protected var _logViewer:LogViewer; protected static var _hotKey:uint; public function UIAppender(){ PBE.inputManager.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); _hotKey = InputKey.TILDE.keyCode; _logViewer = new LogViewer(); } private function onKeyDown(_arg1:KeyboardEvent):void{ if (_arg1.keyCode != _hotKey){ return; }; if (_logViewer){ if (_logViewer.parent){ _logViewer.parent.removeChild(_logViewer); _logViewer.deactivate(); } else { PBE.mainStage.addChild(_logViewer); _logViewer.activate(); }; }; } public function addLogMessage(_arg1:String, _arg2:String, _arg3:String):void{ if (_logViewer){ _logViewer.addLogMessage(_arg1, _arg2, _arg3); }; } public static function set hotKey(_arg1:uint):void{ Logger.print(UIAppender, ("Setting hotKey to: " + _arg1)); _hotKey = _arg1; } } }//package com.pblabs.engine.debug
Section 283
//allocateEntity (com.pblabs.engine.entity.allocateEntity) package com.pblabs.engine.entity { public function allocateEntity():IEntity{ return (new Entity()); } }//package com.pblabs.engine.entity
Section 284
//Entity (com.pblabs.engine.entity.Entity) package com.pblabs.engine.entity { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import flash.utils.*; import com.pblabs.engine.serialization.*; import com.pblabs.engine.*; class Entity extends PBObject implements IEntity { protected var _deferredComponents:Array; protected var _eventDispatcher:EventDispatcher; private var _deferring:Boolean;// = true protected var _components:Dictionary; protected var _tempPropertyInfo:PropertyInfo; function Entity(){ _components = new Dictionary(); _tempPropertyInfo = new PropertyInfo(); _deferredComponents = new Array(); _eventDispatcher = new EventDispatcher(); super(); } public function lookupComponentsByType(_arg1:Class):Array{ var _local3:IEntityComponent; var _local2:Array = new Array(); for each (_local3 in _components) { if ((_local3 is _arg1)){ _local2.push(_local3); }; }; return (_local2); } public function lookupComponentByName(_arg1:String):IEntityComponent{ return (_components[_arg1]); } public function deserialize(_arg1:XML, _arg2:Boolean=true):void{ var _local4:XML; var _local5:String; var _local6:String; var _local7:String; var _local8:IEntityComponent; var _local9:Array; var _local10:String; var _local11:PBSet; Serializer.instance.setCurrentEntity(this); var _local3:Boolean = deferring; deferring = true; for each (_local4 in _arg1.*) { if (_local4.name().toString().toLowerCase() != "component"){ Logger.error(this, "deserialize", (((("Found unexpected tag '" + _local4.name().toString()) + "', only <component/> is valid, ignoring tag. Error in entity '") + name) + "'.")); } else { _local6 = _local4.attribute("name"); _local7 = _local4.attribute("type"); _local8 = null; if (_local7.length > 0){ _local8 = (TypeUtility.instantiate(_local7) as IEntityComponent); if (!_local8){ Logger.error(this, "deserialize", (((((("Unable to instantiate component " + _local6) + " of type ") + _local7) + " on entity '") + name) + "'.")); continue; }; if (!addComponent(_local8, _local6)){ continue; }; } else { _local8 = lookupComponentByName(_local6); if (!_local8){ Logger.error(this, "deserialize", (((("No type specified for the component " + _local6) + " and the component doesn't exist on a parent template for entity '") + name) + "'.")); continue; }; }; Serializer.instance.deserialize(_local8, _local4); }; }; _local5 = _arg1.attribute("sets"); if (_local5){ _local9 = _local5.split(","); if (_local9){ while ((_local10 = _local9.pop())) { _local11 = (PBE.lookup(_local10) as PBSet); if (!_local11){ _local11 = new PBSet(); _local11.initialize(_local10); Logger.warn(this, "deserialize", (("Auto-creating set '" + _local10) + "'.")); }; _local11.add((this as PBObject)); }; }; }; deferring = _local3; } private function doAddComponent(_arg1:IEntityComponent, _arg2:String):Boolean{ if (_arg2 == ""){ Logger.warn(this, "AddComponent", "A component name was not specified. This might cause problems later."); }; if (_arg1.owner){ Logger.error(this, "AddComponent", (((("The component " + _arg2) + " already has an owner. (") + name) + ")")); return (false); }; if (_components[_arg2]){ Logger.error(this, "AddComponent", (((("A component with name " + _arg2) + " already exists on this entity (") + name) + ").")); return (false); }; _arg1.owner = this; _components[_arg2] = _arg1; return (true); } override public function destroy():void{ var _local1:IEntityComponent; var _local2:String; if (_eventDispatcher.hasEventListener("EntityDestroyed")){ _eventDispatcher.dispatchEvent(new Event("EntityDestroyed")); }; for each (_local1 in _components) { if (_local1.isRegistered){ _local1.unregister(); }; }; for (_local2 in _components) { delete _components[_local2]; }; super.destroy(); } public function set deferring(_arg1:Boolean):void{ var _local2:Boolean; var _local3:PendingComponent; if ((((_deferring == true)) && ((_arg1 == false)))){ _local2 = (_deferredComponents.length > 0); while (_deferredComponents.length) { _local3 = (_deferredComponents.shift() as PendingComponent); _local3.item.register(this, _local3.name); }; _deferring = false; if (_local2){ doResetComponents(); }; }; _deferring = _arg1; } private function doRemoveComponent(_arg1:IEntityComponent):Boolean{ if (_arg1.owner != this){ Logger.error(this, "AddComponent", (((("The component " + _arg1.name) + " is not owned by this entity. (") + name) + ")")); return (false); }; if (!_components[_arg1.name]){ Logger.error(this, "AddComponent", (((("The component " + _arg1.name) + " was not found on this entity. (") + name) + ")")); return (false); }; delete _components[_arg1.name]; return (true); } override public function initialize(_arg1:String=null, _arg2:String=null):void{ super.initialize(_arg1, _arg2); deferring = false; } public function getProperty(_arg1:PropertyReference, _arg2=null){ var _local3:PropertyInfo = findProperty(_arg1, false, _tempPropertyInfo); var _local4:* = null; if (_local3){ _local4 = _local3.getValue(); } else { _local4 = _arg2; }; _tempPropertyInfo.clear(); return (_local4); } public function setProperty(_arg1:PropertyReference, _arg2):void{ var _local3:PropertyInfo = findProperty(_arg1, true, _tempPropertyInfo); if (_local3){ _local3.setValue(_arg2); }; _tempPropertyInfo.clear(); } public function get eventDispatcher():IEventDispatcher{ return (_eventDispatcher); } public function addComponent(_arg1:IEntityComponent, _arg2:String):Boolean{ var _local3:PendingComponent; if (!doAddComponent(_arg1, _arg2)){ return (false); }; if (deferring){ _local3 = new PendingComponent(); _local3.item = _arg1; _local3.name = _arg2; _deferredComponents.push(_local3); return (true); }; _arg1.register(this, _arg2); doResetComponents(); return (true); } public function serialize(_arg1:XML):void{ var _local2:IEntityComponent; var _local3:XML; for each (_local2 in _components) { _local3 = new XML((((("<component type=\"" + ??esc_xattr ) + "\" name=\"") + ??esc_xattr ) + "\"/>")); Serializer.instance.serialize(_local2, _local3); _arg1.appendChild(_local3); }; } public function get deferring():Boolean{ return (_deferring); } private function findProperty(_arg1:PropertyReference, _arg2:Boolean=false, _arg3:PropertyInfo=null, _arg4:Boolean=false):PropertyInfo{ var parentElem:*; var cl:Array; var cachedWalk:*; var i:int; var cachedPi:PropertyInfo; var comLookup:IEntityComponent; var nextElem:*; var cTag:*; var oldParentElem:*; var gotEmpty:Boolean; var pi:PropertyInfo; var reference = _arg1; var willSet = _arg2; var providedPi = _arg3; var suppressErrors = _arg4; if (((((!(reference)) || ((reference.property == null)))) || ((reference.property == "")))){ return (null); }; Profiler.enter("Entity.findProperty"); if (!providedPi){ providedPi = new PropertyInfo(); }; if (((reference.cachedLookup) && ((reference.cachedLookup.length > 0)))){ cl = reference.cachedLookup; cachedWalk = lookupComponentByName(cl[0]); if (!cachedWalk){ if (!suppressErrors){ Logger.warn(this, "findProperty", ((((("Could not resolve component named '" + cl[0]) + "' for property '") + reference.property) + "' with cached reference. ") + Logger.getCallStack())); }; Profiler.exit("Entity.findProperty"); return (null); }; i = 1; while (i < (cl.length - 1)) { cachedWalk = cachedWalk[cl[i]]; if (cachedWalk == null){ if (!suppressErrors){ Logger.warn(this, "findProperty", ((((("Could not resolve property '" + cl[i]) + "' for property reference '") + reference.property) + "' with cached reference") + Logger.getCallStack())); }; Profiler.exit("Entity.findProperty"); return (null); }; i = (i + 1); }; cachedPi = providedPi; cachedPi.propertyParent = cachedWalk; cachedPi.propertyName = ((cl.length)>1) ? cl[(cl.length - 1)] : null; Profiler.exit("Entity.findProperty"); return (cachedPi); }; var propertyName:String = reference.property; var path:Array = propertyName.split("."); var isTemplateXML:Boolean; var itemName:String = path[0]; var curIdx = 1; var startChar:String = itemName.charAt(0); var curLookup:String = itemName.slice(1); if (startChar == "@"){ parentElem = lookupComponentByName(curLookup); if (!parentElem){ Logger.warn(this, "findProperty", (((("Could not resolve component named '" + curLookup) + "' for property '") + reference.property) + "'")); Profiler.exit("Entity.findProperty"); return (null); }; path[0] = curLookup; reference.cachedLookup = path; } else { if (startChar == "#"){ parentElem = PBE.nameManager.lookup(curLookup); if (!parentElem){ Logger.warn(this, "findProperty", (((("Could not resolve named object named '" + curLookup) + "' for property '") + reference.property) + "'")); Profiler.exit("Entity.findProperty"); return (null); }; curIdx = (curIdx + 1); curLookup = path[1]; comLookup = (parentElem as IEntity).lookupComponentByName(curLookup); if (!comLookup){ Logger.warn(this, "findProperty", (((((("Could not find component '" + curLookup) + "' on named entity '") + (parentElem as IEntity).name) + "' for property '") + reference.property) + "'")); Profiler.exit("Entity.findProperty"); return (null); }; parentElem = comLookup; } else { if (startChar == "!"){ parentElem = PBE.templateManager.getXML(curLookup, "template", "entity"); if (!parentElem){ Logger.warn(this, "findProperty", (((("Could not find XML named '" + curLookup) + "' for property '") + reference.property) + "'")); Profiler.exit("Entity.findProperty"); return (null); }; curIdx = (curIdx + 1); nextElem = null; for each (cTag in parentElem.*) { if (cTag.@name == path[1]){ nextElem = cTag; break; }; }; if (((!(nextElem)) && (willSet))){ (parentElem as XML).appendChild(new XML((("<component name=\"" + ??esc_xattr ) + "\"/>"))); for each (cTag in parentElem.*) { if (cTag.@name == path[1]){ nextElem = cTag; break; }; }; }; if (!nextElem){ Logger.warn(this, "findProperty", (((((("Could not find component '" + path[1]) + "' in XML template '") + path[0].slice(1)) + "' for property '") + reference.property) + "'")); Profiler.exit("Entity.findProperty"); return (null); }; parentElem = nextElem; isTemplateXML = true; } else { Logger.warn(this, "findProperty", (((("Got a property path that doesn't start with !, #, or @. Started with '" + startChar) + "' for property '") + reference.property) + "'")); Profiler.exit("Entity.findProperty"); return (null); }; }; }; if (curIdx < path.length){ curIdx = (curIdx + 1); curLookup = (path[curIdx] as String); } else { curLookup = null; }; while ((((curIdx < path.length)) && (parentElem))) { oldParentElem = parentElem; try { if ((((parentElem is XML)) || ((parentElem is XMLList)))){ parentElem = parentElem.child(curLookup); } else { parentElem = parentElem[curLookup]; }; } catch(e:Error) { parentElem = null; }; gotEmpty = false; if (parentElem == undefined){ gotEmpty = true; }; if (parentElem == null){ gotEmpty = true; }; if ((((parentElem is XMLList)) && ((parentElem.length() == 0)))){ gotEmpty = true; }; if (((((((willSet) && (isTemplateXML))) && (gotEmpty))) && (oldParentElem))){ oldParentElem.appendChild(new XML((("<" + curLookup) + "/>"))); parentElem = oldParentElem.child(curLookup); gotEmpty = false; }; if (gotEmpty){ Logger.warn(this, "findProperty", (((("Could not resolve property '" + curLookup) + "' for property reference '") + reference.property) + "'")); Profiler.exit("Entity.findProperty"); return (null); }; curIdx = (curIdx + 1); curLookup = (path[curIdx] as String); }; if (parentElem){ pi = providedPi; pi.propertyParent = parentElem; pi.propertyName = curLookup; Profiler.exit("Entity.findProperty"); return (pi); }; Profiler.exit("Entity.findProperty"); return (null); } public function doesPropertyExist(_arg1:PropertyReference):Boolean{ return (!((findProperty(_arg1, false, _tempPropertyInfo, true) == null))); } public function removeComponent(_arg1:IEntityComponent):void{ var _local2:int; if (!doRemoveComponent(_arg1)){ return; }; if (_arg1.isRegistered == false){ _local2 = 0; while (_local2 < _deferredComponents.length) { if ((_deferredComponents[_local2] as PendingComponent).item != _arg1){ } else { _deferredComponents.splice(_local2, 1); break; }; _local2++; }; return; }; _arg1.unregister(); doResetComponents(); } private function doResetComponents():void{ var _local2:IEntityComponent; var _local1:Boolean = _deferring; deferring = true; for each (_local2 in _components) { if (!_local2.isRegistered){ } else { _local2.reset(); }; }; deferring = false; } public function lookupComponentByType(_arg1:Class):IEntityComponent{ var _local2:IEntityComponent; for each (_local2 in _components) { if ((_local2 is _arg1)){ return (_local2); }; }; return (null); } } }//package com.pblabs.engine.entity import com.pblabs.engine.entity.*; final class PendingComponent { public var name:String; public var item:IEntityComponent; private function PendingComponent(){ } }
Section 285
//EntityComponent (com.pblabs.engine.entity.EntityComponent) package com.pblabs.engine.entity { public class EntityComponent implements IEntityComponent { private var _owner:IEntity;// = null private var _name:String;// = null private var _isRegistered:Boolean;// = false protected function onAdd():void{ } protected function onRemove():void{ } public function register(_arg1:IEntity, _arg2:String):void{ if (isRegistered){ throw (new Error("Trying to register an already-registered component!")); }; _name = _arg2; _owner = _arg1; onAdd(); _isRegistered = true; } public function set owner(_arg1:IEntity):void{ _owner = _arg1; } public function reset():void{ onReset(); } protected function onReset():void{ } public function get name():String{ return (_name); } public function unregister():void{ if (!isRegistered){ throw (new Error("Trying to unregister an unregistered component!")); }; _isRegistered = false; onRemove(); _owner = null; _name = null; } public function get owner():IEntity{ return (_owner); } public function get isRegistered():Boolean{ return (_isRegistered); } } }//package com.pblabs.engine.entity
Section 286
//IEntity (com.pblabs.engine.entity.IEntity) package com.pblabs.engine.entity { import com.pblabs.engine.core.*; public interface IEntity extends IPropertyBag, IPBObject { function serialize(_arg1:XML):void; function lookupComponentsByType(_arg1:Class):Array; function get deferring():Boolean; function set deferring(_arg1:Boolean):void; function lookupComponentByName(_arg1:String):IEntityComponent; function removeComponent(_arg1:IEntityComponent):void; function lookupComponentByType(_arg1:Class):IEntityComponent; function addComponent(_arg1:IEntityComponent, _arg2:String):Boolean; function deserialize(_arg1:XML, _arg2:Boolean=true):void; } }//package com.pblabs.engine.entity
Section 287
//IEntityComponent (com.pblabs.engine.entity.IEntityComponent) package com.pblabs.engine.entity { public interface IEntityComponent { function get owner():IEntity; function get isRegistered():Boolean; function set owner(_arg1:IEntity):void; function register(_arg1:IEntity, _arg2:String):void; function get name():String; function unregister():void; function reset():void; } }//package com.pblabs.engine.entity
Section 288
//IPropertyBag (com.pblabs.engine.entity.IPropertyBag) package com.pblabs.engine.entity { import flash.events.*; public interface IPropertyBag { function doesPropertyExist(_arg1:PropertyReference):Boolean; function get eventDispatcher():IEventDispatcher; function getProperty(_arg1:PropertyReference, _arg2=null); function setProperty(_arg1:PropertyReference, _arg2):void; } }//package com.pblabs.engine.entity
Section 289
//PropertyInfo (com.pblabs.engine.entity.PropertyInfo) package com.pblabs.engine.entity { import com.pblabs.engine.entity.*; final class PropertyInfo { public var propertyName:String;// = null public var propertyParent:Object;// = null final public function getValue(){ try { if (propertyName){ return (propertyParent[propertyName]); } else { return (propertyParent); }; } catch(e:Error) { return (null); }; } final public function clear():void{ propertyParent = null; propertyName = null; } final public function setValue(_arg1):void{ propertyParent[propertyName] = _arg1; } } }//package com.pblabs.engine.entity
Section 290
//PropertyReference (com.pblabs.engine.entity.PropertyReference) package com.pblabs.engine.entity { import com.pblabs.engine.debug.*; import com.pblabs.engine.serialization.*; public class PropertyReference implements ISerializable { private var _property:String;// = null public var cachedLookup:Array; public function PropertyReference(_arg1:String=null){ _property = _arg1; } public function serialize(_arg1:XML):void{ _arg1.appendChild(new XML(_property)); } public function get property():String{ return (_property); } public function set property(_arg1:String):void{ if (_property != _arg1){ cachedLookup = null; }; _property = _arg1; } public function toString():String{ return (_property); } public function deserialize(_arg1:XML){ if (_property){ Logger.warn(this, "deserialize", (((("Overwriting property; was '" + _property) + "', new value is '") + _arg1.toString()) + "'")); }; _property = _arg1.toString(); return (this); } } }//package com.pblabs.engine.entity
Section 291
//BulkLoaderResourceProvider (com.pblabs.engine.resource.provider.BulkLoaderResourceProvider) package com.pblabs.engine.resource.provider { import flash.events.*; import com.pblabs.engine.resource.*; import flash.display.*; import br.com.stimuli.loading.*; import br.com.stimuli.loading.loadingtypes.*; public class BulkLoaderResourceProvider extends ResourceProviderBase { private var bulkResources:Array; private var _phase:int;// = 1 private var onProvideResources:Function;// = null private var onProgress:Function;// = null private var onLoaded:Function;// = null protected var loader:BulkLoader;// = null public function BulkLoaderResourceProvider(_arg1:String, _arg2:int=12, _arg3:Boolean=true){ bulkResources = new Array(); super(_arg3); loader = new BulkLoader(_arg1, _arg2); } override public function getResource(_arg1:String, _arg2:Class, _arg3:Boolean=false):Resource{ var _local5:Resource; var _local4:String = (_arg1.toLowerCase() + _arg2); if (((!((resources[_local4] == null))) && (!(_arg3)))){ return (resources[_local4]); }; if (loader.get(_local4) != null){ loader.remove(_local4); }; loader.add(_arg1, {id:_local4, type:((_arg2 == MP3Resource)) ? "sound" : "binary"}); if (!loader.isRunning){ loader.start(); }; loader.get(_local4).addEventListener(Event.COMPLETE, resourceLoaded); loader.get(_local4).addEventListener(BulkLoader.ERROR, resourceError); if (resources[_local4] == null){ _local5 = new (_arg2); _local5.filename = _arg1; resources[_local4] = _local5; } else { _local5 = resources[_local4]; }; return (_local5); } public function load(_arg1:Function=null, _arg2:Function=null, _arg3:Function=null):void{ this.onLoaded = _arg1; this.onProgress = _arg2; this.onProvideResources = _arg3; _phase = 1; if (!loader.hasEventListener(BulkProgressEvent.COMPLETE)){ loader.addEventListener(BulkProgressEvent.COMPLETE, resourcesLoaded); }; if (!loader.hasEventListener(BulkProgressEvent.PROGRESS)){ loader.addEventListener(BulkProgressEvent.PROGRESS, resourcesProgress); }; loadResources(); } private function saveResources():void{ var _local2:String; var _local3:Resource; var _local4:*; var _local1:int; while (_local1 < bulkResources.length) { if (((((!((bulkResources[_local1].url == ""))) && (!((bulkResources[_local1].url == null))))) && (!((bulkResources[_local1].type == null))))){ _local2 = (bulkResources[_local1].url.toLowerCase() + bulkResources[_local1].type); if (loader.getContent(_local2) != null){ _local3 = new bulkResources[_local1].type(); _local4 = loader.getContent(_local2, true); _local3.filename = bulkResources[_local1].url; if ((_local4 is Bitmap)){ _local3.initialize((_local4 as Bitmap).bitmapData); _local4 = null; } else { _local3.initialize(_local4); }; resources[_local2] = _local3; }; }; _local1++; }; } private function resourcesLoaded(_arg1:BulkProgressEvent):void{ saveResources(); if (onLoaded != null){ onLoaded(phase); }; _phase++; loadResources(); } private function resourcesProgress(_arg1:BulkProgressEvent):void{ if (onProgress != null){ onProgress(phase, Math.round((_arg1.percentLoaded * 100))); }; } private function resourceLoaded(_arg1:Event):void{ var _local2:*; if (resources[(_arg1.currentTarget as LoadingItem).id] != null){ _local2 = loader.getContent((_arg1.currentTarget as LoadingItem).id, true); if ((_local2 is Bitmap)){ (resources[(_arg1.currentTarget as LoadingItem).id] as Resource).initialize((_local2 as Bitmap).bitmapData); _local2 = null; } else { (resources[(_arg1.currentTarget as LoadingItem).id] as Resource).initialize(_local2); }; }; } private function resourceError(_arg1:ErrorEvent):void{ if (resources[(_arg1.currentTarget as LoadingItem).id] != null){ (resources[(_arg1.currentTarget as LoadingItem).id] as Resource).fail(_arg1.text); }; } public function get phase():int{ return (_phase); } protected function provideResources():Array{ return (new Array()); } private function loadResources():void{ var _local1:int; var _local2:String; if (onProvideResources != null){ bulkResources = onProvideResources(phase); } else { bulkResources = provideResources(); }; if (((bulkResources) && ((bulkResources.length > 0)))){ _local1 = 0; while (_local1 < bulkResources.length) { _local2 = (bulkResources[_local1].url.toLowerCase() + bulkResources[_local1].type); if (((((!((bulkResources[_local1].url == ""))) && (!((bulkResources[_local1].url == null))))) && (bulkResources[_local1].type))){ loader.add(bulkResources[_local1].url, {id:_local2}); }; _local1++; }; if (!loader.isRunning){ loader.start(); }; }; } } }//package com.pblabs.engine.resource.provider
Section 292
//EmbeddedResourceProvider (com.pblabs.engine.resource.provider.EmbeddedResourceProvider) package com.pblabs.engine.resource.provider { import com.pblabs.engine.resource.*; import com.pblabs.engine.debug.*; public class EmbeddedResourceProvider extends ResourceProviderBase { private static var _instance:EmbeddedResourceProvider = null; public function registerResource(_arg1:String, _arg2:Class, _arg3):void{ var resource:Resource; var filename = _arg1; var resourceType = _arg2; var data = _arg3; var resourceIdentifier:String = (filename.toLowerCase() + resourceType); if (resources[resourceIdentifier]){ Logger.warn(this, "registerEmbeddedResource", (("A resource from file " + filename) + " has already been embedded.")); return; }; try { resource = new (resourceType); resource.filename = filename; resource.initialize(data); resources[resourceIdentifier] = resource; } catch(e:Error) { Logger.error(this, "registerEmbeddedResources", ((("Could not instantiate resource " + filename) + " due to error:\n") + e.toString())); return; }; } public static function get instance():EmbeddedResourceProvider{ if (!_instance){ _instance = new (EmbeddedResourceProvider); }; return (_instance); } } }//package com.pblabs.engine.resource.provider
Section 293
//FallbackResourceProvider (com.pblabs.engine.resource.provider.FallbackResourceProvider) package com.pblabs.engine.resource.provider { public class FallbackResourceProvider extends BulkLoaderResourceProvider { private static var _instance:FallbackResourceProvider = null; public function FallbackResourceProvider(){ super("PBEFallbackProvider", 12, false); } override public function isResourceKnown(_arg1:String, _arg2:Class):Boolean{ return (true); } public static function get instance():FallbackResourceProvider{ if (!_instance){ _instance = new (FallbackResourceProvider); }; return (_instance); } } }//package com.pblabs.engine.resource.provider
Section 294
//IResourceProvider (com.pblabs.engine.resource.provider.IResourceProvider) package com.pblabs.engine.resource.provider { import com.pblabs.engine.resource.*; public interface IResourceProvider { function isResourceKnown(_arg1:String, _arg2:Class):Boolean; function getResource(_arg1:String, _arg2:Class, _arg3:Boolean=false):Resource; } }//package com.pblabs.engine.resource.provider
Section 295
//ResourceProviderBase (com.pblabs.engine.resource.provider.ResourceProviderBase) package com.pblabs.engine.resource.provider { import com.pblabs.engine.resource.*; import flash.utils.*; import com.pblabs.engine.*; public class ResourceProviderBase implements IResourceProvider { protected var resources:Dictionary; public function ResourceProviderBase(_arg1:Boolean=true){ if (!PBE.resourceManager){ throw (new Error("Cannot instantiate a ResourceBundle until you have called PBE.startup(this);. Move the call to new YourResourceBundle(); to occur AFTER the call to PBE.startup().")); }; if (_arg1){ PBE.resourceManager.registerResourceProvider(this); }; resources = new Dictionary(); } public function getResource(_arg1:String, _arg2:Class, _arg3:Boolean=false):Resource{ var _local4:String = (_arg1.toLowerCase() + _arg2); return (resources[_local4]); } public function isResourceKnown(_arg1:String, _arg2:Class):Boolean{ var _local3:String = (_arg1.toLowerCase() + _arg2); return (!((resources[_local3] == null))); } protected function addResource(_arg1:String, _arg2:Class, _arg3:Resource):void{ var _local4:String = (_arg1.toLowerCase() + _arg2); resources[_local4] = _arg3; } } }//package com.pblabs.engine.resource.provider
Section 296
//DataResource (com.pblabs.engine.resource.DataResource) package com.pblabs.engine.resource { import flash.utils.*; public class DataResource extends Resource { private var _data:ByteArray;// = null override public function initialize(_arg1):void{ if (!(_arg1 is ByteArray)){ throw (new Error("DataResource can only handle ByteArrays.")); }; _data = _arg1; onLoadComplete(); } override protected function onContentReady(_arg1):Boolean{ return (!((_data == null))); } public function get data():ByteArray{ return (_data); } } }//package com.pblabs.engine.resource
Section 297
//ImageResource (com.pblabs.engine.resource.ImageResource) package com.pblabs.engine.resource { import flash.display.*; import flash.geom.*; import com.pblabs.engine.*; public class ImageResource extends Resource { protected var _bitmapData:BitmapData;// = null override public function initialize(_arg1):void{ var _local2:DisplayObject; var _local3:DisplayObject; var _local4:Rectangle; var _local5:Matrix; var _local6:BitmapData; if ((_arg1 is Bitmap)){ onContentReady(_arg1.bitmapData); onLoadComplete(); return; }; if ((_arg1 is BitmapData)){ onContentReady((_arg1 as BitmapData)); onLoadComplete(); return; }; if ((_arg1 is DisplayObject)){ _local2 = (_arg1 as DisplayObject); if (_local2.parent){ _local3 = _local2.parent; } else { _local3 = PBE.mainStage; }; _local4 = _local2.getBounds(_local3); _local5 = new Matrix(); _local5.translate((_local4.x * -1), (_local4.y * -1)); _local6 = new BitmapData(_local4.width, _local4.height, true, 0); _local6.draw(_local2, _local5); onContentReady(_local6); onLoadComplete(); return; }; super.initialize(_arg1); } override protected function onContentReady(_arg1):Boolean{ if ((_arg1 is BitmapData)){ _bitmapData = (_arg1 as BitmapData); } else { if ((_arg1 is Bitmap)){ _bitmapData = (_arg1 as Bitmap).bitmapData; _arg1 = null; }; }; return (!((_bitmapData == null))); } public function get bitmapData():BitmapData{ return (_bitmapData); } public function get image():Bitmap{ if (_bitmapData != null){ return (new Bitmap(_bitmapData)); }; return (null); } } }//package com.pblabs.engine.resource
Section 298
//MP3Resource (com.pblabs.engine.resource.MP3Resource) package com.pblabs.engine.resource { import flash.media.*; public class MP3Resource extends SoundResource { protected var _soundObject:Sound;// = null override public function initialize(_arg1):void{ _soundObject = _arg1; onLoadComplete(); } override protected function onContentReady(_arg1):Boolean{ return (!((soundObject == null))); } override public function get soundObject():Sound{ return (_soundObject); } } }//package com.pblabs.engine.resource
Section 299
//Resource (com.pblabs.engine.resource.Resource) package com.pblabs.engine.resource { import flash.events.*; import flash.display.*; import com.pblabs.engine.debug.*; import flash.utils.*; import flash.net.*; public class Resource extends EventDispatcher { private var _didFail:Boolean;// = false private var _urlLoader:URLLoader; private var _referenceCount:int;// = 0 protected var _filename:String;// = null private var _isLoaded:Boolean;// = false private var _loader:Loader; protected function get resourceLoader():Loader{ return (_loader); } protected function onFailed(_arg1:String):void{ _isLoaded = true; _didFail = true; Logger.error(this, "Load", ((("Resource " + _filename) + " failed to load with error: ") + _arg1)); dispatchEvent(new ResourceEvent(ResourceEvent.FAILED_EVENT, this)); _urlLoader = null; _loader = null; } public function get referenceCount():int{ return (_referenceCount); } public function get filename():String{ return (_filename); } private function onDownloadError(_arg1:IOErrorEvent):void{ onFailed(_arg1.text); } public function set filename(_arg1:String):void{ if (_filename != null){ Logger.warn(this, "set filename", "Can't change the filename of a resource once it has been set."); return; }; _filename = _arg1; } public function get isLoaded():Boolean{ return (_isLoaded); } public function initialize(_arg1):void{ if (!(_arg1 is ByteArray)){ throw (new Error("Default Resource can only process ByteArrays!")); }; var _local2:Loader = new Loader(); _local2.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete); _local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onDownloadError); _local2.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onDownloadSecurityError); _local2.loadBytes(_arg1); _loader = _local2; } public function incrementReferenceCount():void{ _referenceCount++; } public function fail(_arg1:String):void{ onFailed(_arg1); } private function onDownloadComplete(_arg1:Event):void{ var _local2:ByteArray = ((_arg1.target as URLLoader).data as ByteArray); initialize(_local2); } private function onDownloadSecurityError(_arg1:SecurityErrorEvent):void{ onFailed(_arg1.text); } public function load(_arg1:String):void{ _filename = _arg1; var _local2:URLLoader = new URLLoader(); _local2.dataFormat = URLLoaderDataFormat.BINARY; _local2.addEventListener(Event.COMPLETE, onDownloadComplete); _local2.addEventListener(IOErrorEvent.IO_ERROR, onDownloadError); _local2.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onDownloadSecurityError); var _local3:URLRequest = new URLRequest(); _local3.url = _arg1; _local2.load(_local3); _urlLoader = _local2; } protected function onContentReady(_arg1):Boolean{ return (false); } public function decrementReferenceCount():void{ _referenceCount--; } public function get didFail():Boolean{ return (_didFail); } protected function onLoadComplete(_arg1:Event=null):void{ var event = _arg1; try { if (onContentReady((event) ? event.target.content : null)){ _isLoaded = true; _urlLoader = null; _loader = null; dispatchEvent(new ResourceEvent(ResourceEvent.LOADED_EVENT, this)); return; } else { onFailed("Got false from onContentReady - the data wasn't accepted."); return; }; } catch(e:Error) { Logger.error(this, "Load", ("Failed to load! " + e.toString())); }; onFailed("The resource type does not match the loaded content."); } } }//package com.pblabs.engine.resource
Section 300
//ResourceBundle (com.pblabs.engine.resource.ResourceBundle) package com.pblabs.engine.resource { import com.pblabs.engine.debug.*; import flash.utils.*; import com.pblabs.engine.resource.provider.*; import com.pblabs.engine.*; public class ResourceBundle { public static var ExtensionTypes:Object = {png:"com.pblabs.engine.resource.ImageResource", jpg:"com.pblabs.engine.resource.ImageResource", gif:"com.pblabs.engine.resource.ImageResource", bmp:"com.pblabs.engine.resource.ImageResource", xml:"com.pblabs.engine.resource.XMLResource", pbelevel:"com.pblabs.engine.resource.XMLResource", swf:"com.pblabs.engine.resource.SWFResource", mp3:"com.pblabs.engine.resource.MP3Resource"}; public function ResourceBundle(){ var res:Class; var resIsEmbedded:Boolean; var resSource:String; var resMimeType:String; var resTypeName:String; var v:XML; var meta:XML; var resType:Class; var testResource:*; var arg:XML; var extArray:Array; var ext:String; super(); if (!PBE.resourceManager){ throw (new Error("Cannot instantiate a ResourceBundle until you have called PBE.startup(this);. Move the call to new YourResourceBundle(); to occur AFTER the call to PBE.startup().")); }; var desc:XML = describeType(this); new DataResource(); new ImageResource(); new XMLResource(); new MP3Resource(); for each (v in desc.variable) { res = this[v.@name]; resIsEmbedded = false; resSource = ""; resMimeType = ""; resTypeName = ""; for each (meta in v.children()) { if (meta.@name == "Embed"){ resIsEmbedded = true; for each (arg in meta.children()) { if (arg.@key == "source"){ resSource = arg.@value; } else { if (arg.@key == "mimeType"){ resMimeType = arg.@value; }; }; }; } else { if (meta.@name == "ResourceType"){ for each (arg in meta.children()) { if (arg.@key == "className"){ resTypeName = arg.@value; }; }; }; }; }; if (((((!(resIsEmbedded)) || ((resSource == "")))) || ((res == null)))){ Logger.error(this, "ResourceBundle", (("A resource in the resource bundle with the name '" + v.@name) + "' has failed to embed properly. Please ensure that you have the command line option \"--keep-as3-metadata+=TypeHint,EditorData,Embed\" set properly. Additionally, please check that the [Embed] metadata syntax is correct.")); } else { if (resTypeName == ""){ extArray = resSource.split("."); ext = (extArray[(extArray.length - 1)] as String).toLowerCase(); if (!ExtensionTypes.hasOwnProperty(ext)){ Logger.warn(this, "ResourceBundle", (("No resource type specified for extension '." + ext) + "'. In the ExtensionTypes parameter, expected to see something like: ResourceBundle.ExtensionTypes.mycustomext = \"com.mydomain.customresource\" where mycustomext is the (lower-case) extension, and \"com.mydomain.customresource\" is a string of the fully qualified resource class name. Defaulting to generic DataResource.")); resTypeName = "com.pblabs.engine.resource.DataResource"; } else { resTypeName = (ExtensionTypes[ext] as String); }; }; try { resType = (getDefinitionByName(resTypeName) as Class); } catch(err:Error) { resType = null; }; if (!resType){ Logger.error(this, "ResourceBundle", (((((("The resource type '" + resTypeName) + "' specified for the embedded asset '") + resSource) + "' could not be found. Please ensure that the path name is correct, and that the class is explicity referenced somewhere in the project, so that it is available at runtime. Do you call PBE.registerType(") + resTypeName) + "); somewhere?")); } else { testResource = new (resType); if (!(testResource is Resource)){ Logger.error(this, "ResourceBundle", (((("The resource type '" + resTypeName) + "' specified for the embedded asset '") + resSource) + "' is not a subclass of Resource. Please ensure that the resource class descends properly from com.pblabs.engine.resource.Resource, and is defined correctly.")); } else { EmbeddedResourceProvider.instance.registerResource(resSource, resType, new (res)); }; }; }; }; } } }//package com.pblabs.engine.resource
Section 301
//ResourceEvent (com.pblabs.engine.resource.ResourceEvent) package com.pblabs.engine.resource { import flash.events.*; public class ResourceEvent extends Event { public var resourceObject:Resource;// = null public static const LOADED_EVENT:String = "LOADED_EVENT"; public static const FAILED_EVENT:String = "FAILED_EVENT"; public function ResourceEvent(_arg1:String, _arg2:Resource, _arg3:Boolean=false, _arg4:Boolean=false){ resourceObject = _arg2; super(_arg1, _arg3, _arg4); } } }//package com.pblabs.engine.resource
Section 302
//ResourceManager (com.pblabs.engine.resource.ResourceManager) package com.pblabs.engine.resource { import flash.events.*; import com.pblabs.engine.debug.*; import flash.utils.*; import com.pblabs.engine.serialization.*; import com.pblabs.engine.resource.provider.*; import com.pblabs.engine.*; public class ResourceManager { public var onEmbeddedFail:Function; public var onlyLoadEmbeddedResources:Boolean;// = false private var _resources:Dictionary; private var resourceProviders:Array; public function ResourceManager(){ _resources = new Dictionary(); resourceProviders = new Array(); super(); } public function registerResourceProvider(_arg1:IResourceProvider):void{ if (resourceProviders.indexOf(_arg1) != -1){ Logger.warn(ResourceManager, "registerResourceProvider", (("Tried to register ResourceProvider '" + _arg1) + "' twice. Ignoring...")); return; }; resourceProviders.push(_arg1); } public function load(_arg1:String, _arg2:Class, _arg3:Function=null, _arg4:Function=null, _arg5:Boolean=false):Resource{ var resource:Resource; var fileExtension:String; var rp:int; var tmpR:Resource; var filename = _arg1; var resourceType = _arg2; var onLoaded = _arg3; var onFailed = _arg4; var forceReload = _arg5; if ((((filename == null)) || ((filename == "")))){ Logger.error(this, "load", (("Cannot load a " + resourceType) + " with empty filename.")); return (null); }; var resourceIdentifier:String = (filename.toLowerCase() + resourceType); resource = _resources[resourceIdentifier]; if (((resource) && (forceReload))){ _resources[resourceIdentifier] = null; delete _resources[resourceIdentifier]; resource = null; }; if (!resource){ if (((onlyLoadEmbeddedResources) && (!(EmbeddedResourceProvider.instance.isResourceKnown(filename, resourceType))))){ tmpR = new Resource(); tmpR.filename = filename; tmpR.fail((("not embedded in the SWF with type " + resourceType) + ".")); fail(tmpR, onFailed, (((("'" + filename) + "' was not loaded because it was not embedded in the SWF with type ") + resourceType) + ".")); if (onEmbeddedFail != null){ onEmbeddedFail(filename); }; return (null); }; fileExtension = PBUtil.getFileExtension(filename).toLocaleLowerCase(); if ((((resourceType == SoundResource)) && ((((fileExtension == "mp3")) || ((fileExtension == "wav")))))){ resourceType = MP3Resource; }; rp = 0; while (rp < resourceProviders.length) { if ((resourceProviders[rp] as IResourceProvider).isResourceKnown(filename, resourceType)){ resource = (resourceProviders[rp] as IResourceProvider).getResource(filename, resourceType, forceReload); }; rp = (rp + 1); }; if (!resource){ resource = FallbackResourceProvider.instance.getResource(filename, resourceType, forceReload); }; if (!resource.filename){ resource.filename = filename; }; _resources[resourceIdentifier] = resource; } else { if (!(resource is resourceType)){ fail(resource, onFailed, (((((("The resource " + filename) + " is already loaded, but is of type ") + TypeUtility.getObjectClassName(resource)) + " rather than the specified ") + resourceType) + ".")); return (null); }; }; if (resource.didFail){ fail(resource, onFailed, (("The resource " + filename) + " has previously failed to load")); } else { if (resource.isLoaded){ if (onLoaded != null){ PBE.callLater(onLoaded, [resource]); }; } else { if (onLoaded != null){ resource.addEventListener(ResourceEvent.LOADED_EVENT, function (_arg1:Event):void{ onLoaded(resource); }); }; if (onFailed != null){ resource.addEventListener(ResourceEvent.FAILED_EVENT, function (_arg1:Event):void{ onFailed(resource); }); }; }; }; resource.incrementReferenceCount(); return (resource); } public function isLoaded(_arg1:String, _arg2:Class):Boolean{ var _local3:String = (_arg1.toLowerCase() + _arg2); if (!_resources[_local3]){ return (false); }; var _local4:Resource = _resources[_local3]; return (_local4.isLoaded); } public function registerEmbeddedResource(_arg1:String, _arg2:Class, _arg3):void{ var resource:Resource; var filename = _arg1; var resourceType = _arg2; var data = _arg3; var resourceIdentifier:String = (filename.toLowerCase() + resourceType); if (_resources[resourceIdentifier]){ Logger.warn(this, "registerEmbeddedResource", (("A resource from file " + filename) + " has already been embedded.")); return; }; try { resource = new (resourceType); resource.filename = filename; resource.initialize(data); resource.incrementReferenceCount(); _resources[resourceIdentifier] = resource; } catch(e:Error) { Logger.error(this, "registerEmbeddedResources", ((("Could not instantiate resource " + filename) + " due to error:\n") + e.toString())); return; }; } private function fail(_arg1:Resource, _arg2:Function, _arg3:String):void{ if (!_arg1){ throw (new Error("Tried to fail null resource.")); }; Logger.error(this, "load", _arg3); if (_arg2 != null){ PBE.callLater(_arg2, [_arg1]); }; } public function unload(_arg1:String, _arg2:Class):void{ } } }//package com.pblabs.engine.resource
Section 303
//SoundResource (com.pblabs.engine.resource.SoundResource) package com.pblabs.engine.resource { import flash.media.*; public class SoundResource extends Resource { public function get soundObject():Sound{ throw (new Error("You should only use subclasses of SoundResource.")); } } }//package com.pblabs.engine.resource
Section 304
//SWFResource (com.pblabs.engine.resource.SWFResource) package com.pblabs.engine.resource { import flash.display.*; import flash.geom.*; import flash.system.*; public class SWFResource extends Resource { private var _appDomain:ApplicationDomain; private var _clip:MovieClip; public function get appDomain():ApplicationDomain{ return (_appDomain); } public function getExportedAsset(_arg1:String):Object{ if (null == _appDomain){ throw (new Error("not initialized")); }; var _local2:Class = getAssetClass(_arg1); if (_local2 != null){ return (new (_local2)); }; return (null); } override protected function onContentReady(_arg1):Boolean{ if (_arg1){ _clip = (_arg1 as MovieClip); }; if (((resourceLoader) && (resourceLoader.contentLoaderInfo))){ _appDomain = resourceLoader.contentLoaderInfo.applicationDomain; } else { if (((_arg1) && (_arg1.loaderInfo))){ _appDomain = _arg1.loaderInfo.applicationDomain; }; }; return (!((_clip == null))); } public function getAssetClass(_arg1:String):Class{ if (null == _appDomain){ throw (new Error("not initialized")); }; if (_appDomain.hasDefinition(_arg1)){ return ((_appDomain.getDefinition(_arg1) as Class)); }; return (null); } public function get clip():MovieClip{ return (_clip); } public function findMaxFrames(_arg1:MovieClip, _arg2:int):int{ var _local4:MovieClip; var _local3:int; while (_local3 < _arg1.numChildren) { _local4 = (_arg1.getChildAt(_local3) as MovieClip); if (!_local4){ } else { _arg2 = Math.max(_arg2, _local4.totalFrames); findMaxFrames(_local4, _arg2); }; _local3++; }; return (_arg2); } override public function initialize(_arg1):void{ if ((_arg1 is MovieClip)){ onContentReady(_arg1); onLoadComplete(); return; }; super.initialize(_arg1); } public function advanceChildClips(_arg1:MovieClip, _arg2:int):void{ var _local4:MovieClip; var _local3:int; while (_local3 < _arg1.numChildren) { _local4 = (_arg1.getChildAt(_local3) as MovieClip); if (!_local4){ } else { if (_local4.totalFrames >= _arg2){ _local4.gotoAndStop(_arg2); } else { _local4.gotoAndStop(_local4.totalFrames); }; advanceChildClips(_local4, _arg2); }; _local3++; }; } } }//package com.pblabs.engine.resource
Section 305
//XMLResource (com.pblabs.engine.resource.XMLResource) package com.pblabs.engine.resource { import com.pblabs.engine.debug.*; import flash.utils.*; public class XMLResource extends Resource { private var _xml:XML;// = null private var _valid:Boolean;// = true override public function initialize(_arg1):void{ var data = _arg1; if ((data is ByteArray)){ data = (data as ByteArray).readUTFBytes((data as ByteArray).length); }; try { _xml = new XML(data); } catch(e:TypeError) { Logger.print(this, ("Got type error parsing XML: " + e.toString())); _valid = false; }; onLoadComplete(); } public function get XMLData():XML{ return (_xml); } override protected function onContentReady(_arg1):Boolean{ return (_valid); } } }//package com.pblabs.engine.resource
Section 306
//Enumerable (com.pblabs.engine.serialization.Enumerable) package com.pblabs.engine.serialization { import com.pblabs.engine.debug.*; import flash.utils.*; public class Enumerable implements ISerializable { public function serialize(_arg1:XML):void{ var _local2:String; for (_local2 in typeMap) { if (typeMap[_local2] == this){ _arg1.appendChild(_local2); break; }; }; } public function get typeMap():Dictionary{ throw (new Error("Derived classes must implement this!")); } public function deserialize(_arg1:XML){ var _local2:String = _arg1.toString(); if (!typeMap[_local2]){ Logger.error(this, "deserialize", (_local2 + " is not a valid value for this enumeration.")); return (defaultType); }; return (typeMap[_local2]); } public function get defaultType():Enumerable{ throw (new Error("Derived classes must implement this!")); } } }//package com.pblabs.engine.serialization
Section 307
//ISerializable (com.pblabs.engine.serialization.ISerializable) package com.pblabs.engine.serialization { public interface ISerializable { function serialize(_arg1:XML):void; function deserialize(_arg1:XML); } }//package com.pblabs.engine.serialization
Section 308
//Serializer (com.pblabs.engine.serialization.Serializer) package com.pblabs.engine.serialization { import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import flash.utils.*; public class Serializer { private var _deserializers:Dictionary; private var _serializers:Dictionary; private var _deferredReferences:Array; private var _resources:Dictionary; private var _currentEntity:IEntity;// = null private static var _instance:Serializer = null; public function Serializer(){ _serializers = new Dictionary(); _deserializers = new Dictionary(); _deferredReferences = new Array(); _resources = new Dictionary(); super(); _deserializers["::DefaultSimple"] = deserializeSimple; _deserializers["::DefaultComplex"] = dserializeComplex; _deserializers["Boolean"] = deserializeBoolean; _deserializers["Array"] = deserializeDictionary; _deserializers["flash.utils::Dictionary"] = deserializeDictionary; _deserializers["Class"] = deserializeClass; _serializers["::DefaultSimple"] = serializeSimple; _serializers["::DefaultComplex"] = serializeComplex; _serializers["Boolean"] = serializeBoolean; _serializers["Array"] = serializeDictionary; _serializers["flash.utils::Dictionary"] = serializeDictionary; var _local1:TestForMetadata = new TestForMetadata(); if (TypeUtility.getTypeHint(_local1, "someArray") != "Number"){ Logger.print(this, ("Metadata is not included in this build of the engine, so serialization will not work!\n" + "Add --keep-as3-metadata+=TypeHint,EditorData,Embed to your compiler arguments to get around this.")); }; } private function deserializeClass(_arg1, _arg2:XML, _arg3:String){ return (TypeUtility.getClassFromName(_arg2.toString())); } public function setCurrentEntity(_arg1:IEntity):void{ _currentEntity = _arg1; } private function getChildReference(_arg1, _arg2:String, _arg3:XML):Boolean{ var _local8:ReferenceNote; var _local4:String = _arg3.attribute("nameReference"); var _local5:String = _arg3.attribute("componentReference"); if (!_local5){ _local5 = _arg3.attribute("entityName"); }; var _local6:String = _arg3.attribute("componentName"); var _local7:String = _arg3.attribute("objectReference"); if (((((((!((_local4 == ""))) || (!((_local5 == ""))))) || (!((_local6 == ""))))) || (!((_local7 == ""))))){ _local8 = new ReferenceNote(); _local8.owner = _arg1; _local8.fieldName = _arg2; _local8.nameReference = _local4; _local8.componentReference = _local5; _local8.componentName = _local6; _local8.objectReference = _local7; _local8.currentEntity = _currentEntity; if (!_local8.resolve()){ _deferredReferences.push(_local8); }; return (true); }; return (false); } public function reportXMLPath(_arg1):String{ var _local6:*; var _local2 = "("; var _local3:Array = []; var _local4:* = _arg1; while (_local4) { _local3.unshift(_local4); _local4 = _local4.parent(); }; var _local5:int; while (_local5 < _local3.length) { _local6 = _local3[_local5]; _local2 = (_local2 + ("<" + _local6.name().toString())); if (_local6.hasOwnProperty("@name")){ _local2 = (_local2 + ((" name=\"" + _local6.@name) + "\"")); }; _local2 = (_local2 + ">"); if (_local5 < (_local3.length - 1)){ _local2 = (_local2 + " --> "); }; _local5++; }; _local2 = (_local2 + ")"); return (_local2); } private function getChildObject(_arg1, _arg2:String, _arg3:String, _arg4:XML){ var childObject:*; var xmlPath:String; var object = _arg1; var fieldName = _arg2; var typeName = _arg3; var fieldXml = _arg4; try { childObject = object[fieldName]; } catch(e:Error) { }; var desiredType:Class = TypeUtility.getClassFromName(typeName); if (((!((childObject is desiredType))) || (!(childObject)))){ childObject = TypeUtility.instantiate(typeName); }; if (childObject == null){ xmlPath = reportXMLPath(fieldXml); Logger.error(object, "deserialize", ((((("Unable to create type " + typeName) + " for the field ") + fieldName) + ". ") + xmlPath)); return (null); }; return (childObject); } private function deserializeSimple(_arg1, _arg2:XML, _arg3:String){ if ((((_arg2.toString() == "")) && (!((_arg1 is String))))){ return (_arg1); }; return (_arg2.toString()); } private function dserializeComplex(_arg1, _arg2:XML, _arg3:String){ var xmlPath:String; var fieldXML:XML; var fieldName:String; var typeName:String; var decappedFieldName:String; var foundOffcaseMatch:Boolean; var potentialField:String; var child:*; var childTypeHint:String; var object = _arg1; var xml = _arg2; var typeHint = _arg3; var isDynamic:Boolean = (((((object is Array)) || ((object is Dictionary)))) || (TypeUtility.isDynamic(object))); xmlPath = ""; for each (fieldXML in xml.*) { fieldName = fieldXML.name().toString(); if (((!(object.hasOwnProperty(fieldName))) && (!(isDynamic)))){ decappedFieldName = (fieldName.charAt(0).toLowerCase() + fieldName.substr(1)); if (object.hasOwnProperty(decappedFieldName)){ fieldName = decappedFieldName; //unresolved jump }; foundOffcaseMatch = false; for (potentialField in (object as Object)) { if (potentialField.toLowerCase() != fieldName.toLowerCase()){ } else { fieldName = potentialField; foundOffcaseMatch = true; break; }; }; //unresolved if xmlPath = reportXMLPath(fieldXML); Logger.warn(object, "deserialize", ((((("The field '" + fieldName) + "' does not exist on the class ") + TypeUtility.getObjectClassName(object)) + ". ") + xmlPath)); } else { typeName = fieldXML.attribute("type"); if (typeName.length < 1){ typeName = TypeUtility.getFieldType(object, fieldName); }; if (((isDynamic) && ((typeName == null)))){ typeName = "String"; }; if (((!(getChildReference(object, fieldName, fieldXML))) && (!(getResourceObject(object, fieldName, fieldXML))))){ child = getChildObject(object, fieldName, typeName, fieldXML); if (child != null){ childTypeHint = TypeUtility.getTypeHint(object, fieldName); child = deserialize(child, fieldXML, childTypeHint); }; try { object[fieldName] = child; } catch(e:Error) { xmlPath = reportXMLPath(fieldXML); Logger.error(object, "deserialize", ((((((("The field " + fieldName) + " could not be set to '") + child) + "' due to: ") + e.toString()) + " ") + xmlPath)); }; }; }; }; return (object); } private function serializeProperty(_arg1, _arg2:String):XML{ var ignore:XMLList; var defaultValue:XMLList; var object = _arg1; var propertyName = _arg2; var propertyXML:XML = new XML((("<" + propertyName) + "/>")); var data:XML = TypeUtility.getEditorData(object, propertyName); var typeHint:String = TypeUtility.getTypeHint(object, propertyName); if (((typeHint) && ((typeHint == "dynamic")))){ if (!isNaN(object[propertyName])){ propertyXML.@type = getQualifiedClassName(1); } else { propertyXML.@type = getQualifiedClassName(object[propertyName]); }; }; if (data){ ignore = data.arg.(@key == "ignore"); if (((ignore) && ((ignore.@value.toString() == "true")))){ return (null); }; }; if (!setChildReference(object, object[propertyName], propertyXML)){ serialize(object[propertyName], propertyXML); defaultValue = (data) ? data.arg.(@key == "defaultValue") : null; if (((defaultValue) && ((object[propertyName].toString() == defaultValue.@value.toString())))){ return (null); }; }; return (propertyXML); } private function isSimpleType(_arg1):Boolean{ var _local2:String = TypeUtility.getObjectClassName(_arg1); if ((((((((((_local2 == "String")) || ((_local2 == "int")))) || ((_local2 == "Number")))) || ((_local2 == "uint")))) || ((_local2 == "Boolean")))){ return (true); }; return (false); } private function setChildReference(_arg1, _arg2, _arg3:XML):Boolean{ if ((_arg2 is IEntity)){ _arg3.@nameReference = (_arg2 as IEntity).name; return (true); }; if ((_arg2 is IEntityComponent)){ _arg3.@entityName = (_arg2 as IEntityComponent).owner.name; _arg3.@componentName = (_arg2 as IEntityComponent).name; return (true); }; return (false); } public function resolveReferences():void{ var _local2:ReferenceNote; var _local1:int; while (_local1 < _deferredReferences.length) { _local2 = _deferredReferences[_local1]; if (_local2.resolve()){ _deferredReferences.splice(_local1, 1); _local1--; }; _local1++; }; } private function serializeDictionary(_arg1, _arg2:XML):void{ var _local5:*; var _local6:*; var _local7:String; var _local8:*; var _local9:XML; if (_arg1 == null){ return; }; var _local3:Boolean; var _local4:* = null; for each (_local5 in _arg1) { if (_local4 == null){ _local4 = _local5; } else { if (((!((_local5 == null))) && (!((TypeUtility.getClass(_local5) == TypeUtility.getClass(_local4)))))){ _local3 = false; }; }; }; if (_local4 == null){ return; }; if (_local3){ _arg2.@childType = TypeUtility.getObjectClassName(_local4).replace(/::/, "."); }; for (_local6 in _arg1) { _local7 = ((_arg1 is Dictionary)) ? _local6 : "_"; _local8 = _arg1[_local6]; _local9 = new XML((("<" + _local7) + "/>")); if (!_local3){ _local9.@type = TypeUtility.getObjectClassName(_local8).replace(/::/, "."); }; if (!setChildReference(_arg1, _local8, _local9)){ serialize(_local8, _local9); }; _arg2.appendChild(_local9); }; } public function serialize(_arg1, _arg2:XML):void{ var _local3:String; if ((_arg1 is ISerializable)){ (_arg1 as ISerializable).serialize(_arg2); } else { if ((_arg1 is IEntity)){ _currentEntity = (_arg1 as IEntity); _currentEntity.serialize(_arg2); } else { _local3 = TypeUtility.getObjectClassName(_arg1); if (!_serializers[_local3]){ _local3 = (isSimpleType(_arg1)) ? "::DefaultSimple" : "::DefaultComplex"; }; var _local4 = _serializers; _local4[_local3](_arg1, _arg2); }; }; } private function getResourceObject(_arg1, _arg2:String, _arg3:XML, _arg4:String=null):Boolean{ var _local5:String = _arg3.attribute("filename"); if (_local5 == ""){ _local5 = _arg3.child("filename"); }; if (_local5 == ""){ return (false); }; var _local6:Class; if (_arg4){ _local6 = TypeUtility.getClassFromName(_arg4); } else { _local6 = TypeUtility.getClassFromName(TypeUtility.getFieldType(_arg1, _arg2)); }; var _local7:ResourceNote = new ResourceNote(); _local7.owner = _arg1; _local7.fieldName = _arg2; _local7.load(_local5, _local6); _resources[_local5] = _local7; return (true); } private function serializeBoolean(_arg1, _arg2:XML):void{ if (_arg1){ _arg2.appendChild("true"); } else { _arg2.appendChild("false"); }; } private function deserializeBoolean(_arg1, _arg2:XML, _arg3:String){ return ((_arg2.toString() == "true")); } public function clearCurrentEntity():void{ _currentEntity = null; } private function serializeComplex(_arg1, _arg2:XML):void{ var _local4:XML; var _local5:XML; var _local6:String; var _local7:XML; var _local8:String; var _local9:XML; if (_arg1 == null){ return; }; var _local3:XML = TypeUtility.getTypeDescription(_arg1); for each (_local4 in _local3.child("accessor")) { if (_local4.@access == "readwrite"){ _local6 = _local4.@name; if (_arg1[_local6] != null){ _local7 = serializeProperty(_arg1, _local6); if (_local7 != null){ _arg2.appendChild(_local7); }; }; }; }; for each (_local5 in _local3.child("variable")) { _local8 = _local5.@name; if (_arg1[_local8] != null){ _local9 = serializeProperty(_arg1, _local8); if (_local9 != null){ _arg2.appendChild(_local9); }; }; }; } public function removeResource(_arg1:String):void{ _resources[_arg1] = null; delete _resources[_arg1]; } private function deserializeDictionary(_arg1, _arg2:XML, _arg3:String){ var _local4:XML; var _local5:String; var _local6:String; var _local7:String; var _local8:*; for each (_local4 in _arg2.*) { _local5 = _local4.name().toString(); if (_local5.charAt(0) == "_"){ _local5 = _local5.slice(1); }; if ((((_local5.length < 1)) && (!((_arg1 is Array))))){ _local7 = reportXMLPath(_local4); Logger.error(_arg1, "deserialize", ("Cannot add a value to a dictionary without a key. " + _local7)); } else { _local6 = _local4.attribute("type"); if (_local6.length < 1){ _local6 = _arg2.attribute("childType"); }; if ((((_local6 == null)) || ((_local6 == "")))){ _local6 = (_arg3) ? _arg3 : "String"; }; if (((!(getChildReference(_arg1, _local5, _local4))) && (!(getResourceObject(_arg1, _local5, _local4, _arg3))))){ _local8 = getChildObject(_arg1, _local5, _local6, _local4); if (_local8 != null){ _local8 = deserialize(_local8, _local4); }; if (_local5.length > 0){ _arg1[_local5] = _local8; } else { (_arg1 as Array).push(_local8); }; }; }; }; return (_arg1); } private function serializeSimple(_arg1, _arg2:XML):void{ _arg2.appendChild(_arg1.toString()); } public function reportMissingReferences():void{ var _local2:ReferenceNote; var _local1:int; while (_local1 < _deferredReferences.length) { _local2 = _deferredReferences[_local1]; _local2.reportMissing(); _local1++; }; } private function isSimple(_arg1:XML, _arg2:String):Boolean{ if (_arg2 == "String"){ return (true); }; if (_arg1.hasComplexContent()){ return (false); }; if (_arg1.toString() == ""){ return (false); }; return (true); } public function deserialize(_arg1, _arg2:XML, _arg3:String=null){ if ((_arg1 is ISerializable)){ return (ISerializable(_arg1).deserialize(_arg2)); }; if ((_arg1 is IEntity)){ _currentEntity = (_arg1 as IEntity); _currentEntity.deserialize(_arg2, true); resolveReferences(); return ((_arg1 as IEntity)); }; var _local4:String = TypeUtility.getObjectClassName(_arg1); if (!_deserializers[_local4]){ _local4 = (_arg2.hasSimpleContent()) ? "::DefaultSimple" : "::DefaultComplex"; }; return (_deserializers[_local4](_arg1, _arg2, _arg3)); } public static function get instance():Serializer{ if (!_instance){ _instance = new (Serializer); }; return (_instance); } } }//package com.pblabs.engine.serialization import com.pblabs.engine.resource.*; import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import com.pblabs.engine.*; class ResourceNote { public var owner;// = null public var fieldName:String;// = null private function ResourceNote(){ } public function onLoaded(_arg1:Resource):void{ Serializer.instance.removeResource(_arg1.filename); } public function load(_arg1:String, _arg2:Class):void{ var _local3:Resource = PBE.resourceManager.load(_arg1, _arg2, onLoaded, onFailed); if (_local3){ owner[fieldName] = _local3; }; } public function onFailed(_arg1:Resource):void{ Logger.error(owner, ("set " + fieldName), (("No resource was found with filename " + _arg1.filename) + ".")); Serializer.instance.removeResource(_arg1.filename); } } class ReferenceNote { public var nameReference:String;// = null public var currentEntity:IEntity;// = null public var fieldName:String;// = null public var componentName:String;// = null public var objectReference:String;// = null public var componentReference:String;// = null public var owner;// = null public var reportedMissing:Boolean;// = false private function ReferenceNote(){ } private function reportSuccess():void{ if (!reportedMissing){ return; }; var _local1 = (((((owner.toString() + "[") + fieldName) + "] on entity '") + currentEntity.name) + "' - "); if (nameReference){ Logger.warn(this, "reportSuccess", (((_local1 + " After failure, was able to resolve reference to named entity '") + nameReference) + "'")); return; }; if (componentReference != ""){ Logger.warn(this, "reportSuccess", (((_local1 + " After failure, was able to find named entity '") + componentReference) + "'")); return; }; if (componentName != ""){ Logger.warn(this, "reportSuccess", (((_local1 + " After failure, was able to find component on same entity named '") + componentName) + "'")); return; }; } public function reportMissing():void{ if (reportedMissing){ return; }; reportedMissing = true; var _local1 = (((((owner.toString() + "[") + fieldName) + "] on entity '") + currentEntity.name) + "' - "); if (nameReference){ Logger.warn(this, "reportMissing", (((_local1 + "Couldn't resolve reference to named entity '") + nameReference) + "'")); return; }; if (componentReference != ""){ Logger.warn(this, "reportMissing", (((_local1 + " Couldn't find named entity '") + componentReference) + "'")); return; }; if (componentName != ""){ Logger.warn(this, "reportMissing", (((_local1 + " Couldn't find component on same entity named '") + componentName) + "'")); return; }; } public function resolve():Boolean{ var _local1:IEntity; var _local2:IEntity; var _local3:IEntityComponent; var _local4:String; var _local5:IEntityComponent; if (nameReference != ""){ _local1 = PBE.nameManager.lookup(nameReference); if (!_local1){ return (false); }; owner[fieldName] = _local1; reportSuccess(); return (true); }; if (componentReference != ""){ _local2 = PBE.nameManager.lookup(componentReference); if (!_local2){ return (false); }; _local3 = null; if (componentName != ""){ _local3 = _local2.lookupComponentByName(componentName); if (!_local3){ return (false); }; } else { _local4 = TypeUtility.getFieldType(owner, fieldName); _local3 = _local2.lookupComponentByType(TypeUtility.getClassFromName(_local4)); if (!_local3){ return (false); }; }; owner[fieldName] = _local3; reportSuccess(); return (true); }; if (componentName != ""){ _local5 = currentEntity.lookupComponentByName(componentName); if (!_local5){ return (false); }; owner[fieldName] = _local5; reportSuccess(); return (true); }; if (objectReference != ""){ owner[fieldName] = PBE.templateManager.instantiateEntity(objectReference); reportSuccess(); return (true); }; return (false); } }
Section 309
//TestForMetadata (com.pblabs.engine.serialization.TestForMetadata) package com.pblabs.engine.serialization { public class TestForMetadata { public var someArray:Array; } }//package com.pblabs.engine.serialization
Section 310
//TypeUtility (com.pblabs.engine.serialization.TypeUtility) package com.pblabs.engine.serialization { import com.pblabs.engine.debug.*; import flash.utils.*; public class TypeUtility { private static var _typeDescriptions:Dictionary = new Dictionary(); private static var _instantiators:Dictionary = new Dictionary(); public static function registerInstantiator(_arg1:String, _arg2:Function):void{ if (_instantiators[_arg1]){ Logger.warn("TypeUtility", "RegisterInstantiator", (("An instantiator for " + _arg1) + " has already been registered. It will be replaced.")); }; _instantiators[_arg1] = _arg2; } public static function getClassFromName(_arg1:String):Class{ return ((getDefinitionByName(_arg1) as Class)); } public static function getClass(_arg1):Class{ if ((((_arg1 is Class)) || ((_arg1 == null)))){ return (_arg1); }; return (Object(_arg1).constructor); } public static function instantiate(_arg1:String, _arg2:Boolean=false){ var className = _arg1; var suppressError = _arg2; if (className == "String"){ return (""); }; if (className == "Class"){ return (Class); }; if (_instantiators[className]){ return (_instantiators[className]()); }; try { return (new (getDefinitionByName(className))); } catch(e:Error) { if (!suppressError){ Logger.warn(null, "Instantiate", ((("Failed to instantiate " + className) + " due to ") + e.toString())); Logger.warn(null, "Instantiate", (((("Is " + className) + " included in your SWF? Make sure you call PBE.registerType(") + className) + "); somewhere in your project.")); }; }; return (null); } public static function getTypeDescription(_arg1):XML{ var _local2:String = getObjectClassName(_arg1); if (!_typeDescriptions[_local2]){ _typeDescriptions[_local2] = describeType(_arg1); }; return (_typeDescriptions[_local2]); } public static function getEditorData(_arg1, _arg2:String):XML{ var _local4:XML; var _local5:XML; var _local3:XML = getTypeDescription(_arg1); if (!_local3){ return (null); }; for each (_local4 in _local3.*) { if (_local4.@name != _arg2){ } else { if (((!((_local4.name() == "variable"))) && (!((_local4.name() == "accessor"))))){ } else { for each (_local5 in _local4.*) { if (_local5.@name == "EditorData"){ return (_local5); }; }; }; }; }; return (null); } public static function getObjectClassName(_arg1):String{ return (getQualifiedClassName(_arg1)); } public static function isDynamic(_arg1):Boolean{ if ((_arg1 is Class)){ Logger.error(_arg1, "isDynamic", "The object is a Class type, which is always dynamic"); return (true); }; var _local2:XML = getTypeDescription(_arg1); return ((_local2.@isDynamic == "true")); } public static function getTypeHint(_arg1, _arg2:String):String{ var _local4:XML; var _local5:XML; var _local6:String; var _local3:XML = getTypeDescription(_arg1); if (!_local3){ return (null); }; for each (_local4 in _local3.*) { if (_local4.@name != _arg2){ } else { if (((!((_local4.name() == "variable"))) && (!((_local4.name() == "accessor"))))){ } else { for each (_local5 in _local4.*) { if (_local5.@name == "TypeHint"){ _local6 = _local5.arg.@value.toString(); return (_local6); }; }; }; }; }; return (null); } public static function getClassDescription(_arg1:String):XML{ var className = _arg1; if (!_typeDescriptions[className]){ try { _typeDescriptions[className] = describeType(getDefinitionByName(className)); } catch(error:Error) { return (null); }; }; return (_typeDescriptions[className]); } public static function getFieldType(_arg1, _arg2:String):String{ var _local4:XML; var _local5:XML; var _local3:XML = getTypeDescription(_arg1); for each (_local4 in _local3.child("accessor")) { if (_local4.attribute("name") == _arg2){ return (_local4.attribute("type")); }; }; for each (_local5 in _local3.child("variable")) { if (_local5.attribute("name") == _arg2){ return (_local5.attribute("type")); }; }; return (null); } } }//package com.pblabs.engine.serialization
Section 311
//BuildVersion (com.pblabs.engine.version.BuildVersion) package com.pblabs.engine.version { public class BuildVersion { public static const BUILD_NUMBER:String = "source"; } }//package com.pblabs.engine.version
Section 312
//FlexSDKVersion (com.pblabs.engine.version.FlexSDKVersion) package com.pblabs.engine.version { public class FlexSDKVersion { public var update:uint; protected var _versionString:String; public var build:uint; public var minor:uint; public var major:uint; public function FlexSDKVersion(_arg1:String){ parseVersionString(_arg1); _versionString = _arg1; } public function toString():String{ return (_versionString); } protected function parseVersionString(_arg1:String):void{ var _local2:Array = _arg1.split("."); major = parseInt(_local2[0]); minor = parseInt(_local2[1]); update = parseInt(_local2[2]); build = parseInt(_local2[3]); } } }//package com.pblabs.engine.version
Section 313
//mx_internal (com.pblabs.engine.version.mx_internal) package com.pblabs.engine.version { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package com.pblabs.engine.version
Section 314
//VersionDetails (com.pblabs.engine.version.VersionDetails) package com.pblabs.engine.version { import flash.system.*; public class VersionDetails { public var type:String; public var flexVersion:FlexSDKVersion; public function toString():String{ return ((((((("PushButton Engine - " + BuildVersion.BUILD_NUMBER) + " - ") + type) + (flexVersion) ? ((" (" + flexVersion) + ")") : "") + " - ") + Security.sandboxType)); } } }//package com.pblabs.engine.version
Section 315
//VersionType (com.pblabs.engine.version.VersionType) package com.pblabs.engine.version { public class VersionType { public static const FLASH:String = "flash"; public static const FLEX:String = "flex"; public static const AIR:String = "air"; } }//package com.pblabs.engine.version
Section 316
//VersionUtil (com.pblabs.engine.version.VersionUtil) package com.pblabs.engine.version { import flash.display.*; import flash.utils.*; import com.pblabs.engine.serialization.*; public class VersionUtil { public static function checkVersion(_arg1:Sprite):VersionDetails{ var _local3:*; var _local4:Object; var _local2:VersionDetails = new VersionDetails(); _local3 = TypeUtility.instantiate("spark.components::WindowedApplication", true); if (_local3){ _local2.type = VersionType.AIR; _local4 = getDefinitionByName("spark.components::WindowedApplication"); _local2.flexVersion = new FlexSDKVersion(_local4.VERSION); return (_local2); }; _local3 = TypeUtility.instantiate("mx.core::WindowedApplication", true); if (_local3){ _local2.type = VersionType.AIR; _local4 = getDefinitionByName("mx.core::WindowedApplication"); _local2.flexVersion = new FlexSDKVersion(_local4.VERSION); return (_local2); }; _local3 = TypeUtility.instantiate("spark.components::Application", true); if (_local3){ _local2.type = VersionType.FLEX; _local4 = getDefinitionByName("spark.components::Application"); _local2.flexVersion = new FlexSDKVersion(_local4.VERSION); return (_local2); }; _local3 = TypeUtility.instantiate("mx.core::Application", true); if (_local3){ _local2.type = VersionType.FLEX; _local4 = getDefinitionByName("mx.core::Application"); _local2.flexVersion = new FlexSDKVersion(_local4.VERSION); return (_local2); }; _local2.type = VersionType.FLASH; return (_local2); } } }//package com.pblabs.engine.version
Section 317
//PBE (com.pblabs.engine.PBE) package com.pblabs.engine { import com.pblabs.engine.resource.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.version.*; import com.pblabs.sound.*; import com.pblabs.engine.debug.*; import flash.geom.*; import flash.utils.*; public class PBE { protected static var _resourceManager:ResourceManager = null; protected static var _scene:DisplayObjectScene; protected static var _templateManager:TemplateManager = null; private static var _main:Sprite = null; protected static var _soundManager:SoundManager = null; protected static var _spatialManager:ISpatialManager2D; public static var IS_SHIPPING_BUILD:Boolean = false; protected static var _rootGroup:PBGroup = null; private static var _started:Boolean = false; protected static var _objectTypeManager:ObjectTypeManager = null; protected static var _processManager:ProcessManager = null; protected static var _inputManager:InputManager = null; protected static var _nameManager:NameManager = null; protected static var _currentGroup:PBGroup = null; private static var _stageQualityStack:Array = []; private static var _versionDetails:VersionDetails; public static function get started():Boolean{ return (_started); } public static function get inputManager():InputManager{ return (_inputManager); } public static function lookupComponentByName(_arg1:String, _arg2:String):IEntityComponent{ return (_nameManager.lookupComponentByName(_arg1, _arg2)); } public static function getFlashVars():Object{ return (LoaderInfo(mainStage.loaderInfo).parameters); } public static function get spatialManager():ISpatialManager2D{ return (_spatialManager); } public static function addResources(_arg1:ResourceBundle):void{ if (!_main){ throw (new Error("You can only register ResourceBundles AFTER calling PBE.startup.")); }; } public static function registerType(_arg1:Class):void{ SchemaGenerator.instance.addClass(getQualifiedClassName(_arg1), _arg1); } public static function allocateEntity():IEntity{ return (allocateEntity()); } public static function get levelManager():LevelManager{ return (LevelManager.instance); } public static function get scene():IScene2D{ return (_scene); } public static function startup(_arg1:Sprite):void{ if (_started){ throw (new Error("You can only call PBE.startup once.")); }; if (!_arg1){ throw (new Error("A mainClass must be specified")); }; if (!_arg1.stage){ throw (new Error("Your mainClass must be added to the stage before you can call startup. If you're using MX make sure you call this from the applicationComplete event, not the creationComplete event")); }; _main = _arg1; _versionDetails = VersionUtil.checkVersion(_arg1); initializeManagers(); _arg1.stage.align = StageAlign.TOP_LEFT; _arg1.stage.scaleMode = StageScaleMode.NO_SCALE; Logger.print(PBE, _versionDetails.toString()); if (((!(IS_SHIPPING_BUILD)) && (((((_main.loaderInfo) && (_main.loaderInfo.parameters))) && ((_main.loaderInfo.parameters["generateSchema"] == "1")))))){ SchemaGenerator.instance.generateSchema(); }; Logger.startup(); _started = true; } protected static function initializeManagers():void{ var _local1:PBGroup; if (!_nameManager){ _nameManager = new NameManager(); }; if (!_rootGroup){ _local1 = new PBGroup(); _rootGroup = _local1; _currentGroup = _local1; _local1.initialize("RootGroup"); }; if (!_processManager){ _processManager = new ProcessManager(); }; if (!_objectTypeManager){ _objectTypeManager = new ObjectTypeManager(); }; if (!_soundManager){ _soundManager = new SoundManager(); processManager.addTickedObject(_soundManager, 100); }; if (!_resourceManager){ _resourceManager = new ResourceManager(); }; if (!_templateManager){ _templateManager = new TemplateManager(); }; if (!_inputManager){ _inputManager = new InputManager(); }; } public static function isKeyDown(_arg1:InputKey):Boolean{ return (_inputManager.isKeyDown(_arg1.keyCode)); } public static function popStageQuality():void{ if (_stageQualityStack.length == 0){ throw (new Error("Bottomed out in stage quality stack! You have mismatched push/pop calls!")); }; mainStage.quality = _stageQualityStack.pop(); } public static function set currentGroup(_arg1:PBGroup):void{ if (_arg1 == null){ throw (new Error("You cannot set the currentGroup to null; it must always be a valid PBGroup.")); }; _currentGroup = _arg1; } public static function get soundManager():ISoundManager{ return (_soundManager); } public static function get screenManager():ScreenManager{ return (ScreenManager.instance); } public static function loadResource(_arg1:String, _arg2:Class, _arg3:Function=null, _arg4:Function=null, _arg5:Boolean=false):void{ resourceManager.load(_arg1, _arg2, _arg3, _arg4, _arg5); } public static function get nameManager():NameManager{ return (_nameManager); } public static function get currentGroup():PBGroup{ return (_currentGroup); } public static function lookupComponentByType(_arg1:String, _arg2:Class):IEntityComponent{ return (_nameManager.lookupComponentByType(_arg1, _arg2)); } public static function defineWithXML(_arg1:XML):void{ throw (new Error("Not implemented.")); } public static function get rootGroup():PBGroup{ return (_rootGroup); } public static function get mainClass():Sprite{ return (_main); } public static function get mainStage():Stage{ if (!_main){ throw (new Error("Cannot retrieve the global stage instance until mainClass has been set to the startup class!")); }; return (_main.stage); } public static function log(_arg1, _arg2:String):void{ Logger.print(_arg1, _arg2); } public static function get processManager():ProcessManager{ return (_processManager); } public static function get resourceManager():ResourceManager{ return (_resourceManager); } public static function get versionDetails():VersionDetails{ return (_versionDetails); } public static function get templateManager():TemplateManager{ return (_templateManager); } public static function get objectTypeManager():ObjectTypeManager{ return (_objectTypeManager); } public static function pushStageQuality(_arg1:String):void{ _stageQualityStack.push(mainStage.quality); mainStage.quality = _arg1; } public static function initializeScene(_arg1:IUITarget, _arg2:String="SceneDB", _arg3:Class=null, _arg4:Class=null):IEntity{ var _local5:IEntity = allocateEntity(); _local5.initialize(_arg2); if (!_arg4){ _arg4 = BasicSpatialManager2D; }; var _local6:ISpatialManager2D = new (_arg4); _spatialManager = _local6; _local5.addComponent((_local6 as IEntityComponent), "Spatial"); if (!_arg3){ _arg3 = DisplayObjectScene; }; _scene = new (_arg3); _scene.sceneView = _arg1; _local5.addComponent(_scene, "Scene"); return (_local5); } public static function isAnyKeyDown():Boolean{ return (_inputManager.isAnyKeyDown()); } public static function callLater(_arg1:Function, _arg2:Array=null):void{ PBE.processManager.callLater(_arg1, _arg2); } public static function findChild(_arg1:String, _arg2:DisplayObject=null):DisplayObject{ return (_findChild(_arg1, (_arg2) ? _arg2 : _main)); } private static function _findChild(_arg1:String, _arg2:DisplayObject):DisplayObject{ var _local5:DisplayObject; if (!_arg2){ return (null); }; if (_arg2.name == _arg1){ return (_arg2); }; var _local3:DisplayObjectContainer = (_arg2 as DisplayObjectContainer); if (!_local3){ return (null); }; var _local4:int; while (_local4 < _local3.numChildren) { _local5 = _findChild(_arg1, _local3.getChildAt(_local4)); if (_local5){ return (_local5); }; _local4++; }; return (null); } public static function defineEntityByFunction(_arg1:String, _arg2:Function):void{ PBE.templateManager.registerEntityCallback(_arg1, _arg2); } public static function getHostingDomain():String{ var _local1:String = _main.stage.loaderInfo.url; var _local2:Array = _local1.split("://"); var _local3:Array = _local2[1].split("/"); if (_local3.length){ return (_local3[0]); }; return ("[unknown]"); } public static function makeEntity(_arg1:String, _arg2:Object=null):IEntity{ var _local4:*; var _local3:IEntity = PBE.templateManager.instantiateEntity(_arg1); if (!_local3){ return (null); }; if (!_arg2){ return (_local3); }; for (_local4 in _arg2) { if ((_local4 is PropertyReference)){ _local3.setProperty(_local4, _arg2[_local4]); } else { if ((_local4 is String)){ if ((((String(_local4).charAt(0) == "@")) && ((String(_local4).indexOf(".") == -1)))){ _local3.addComponent(IEntityComponent(_arg2[_local4]), String(_local4).substring(1)); } else { _local3.setProperty(new PropertyReference(_local4), _arg2[_local4]); }; } else { Logger.error(PBE, "MakeEntity", (("Unexpected key '" + _local4) + "'; can only handle String or PropertyReference.")); }; }; }; if (_local3.deferring){ _local3.deferring = false; }; return (_local3); } public static function lookup(_arg1:String):PBObject{ return (_nameManager.lookup(_arg1)); } public static function lookupEntity(_arg1:String):IEntity{ return ((_nameManager.lookup(_arg1) as IEntity)); } } }//package com.pblabs.engine
Section 318
//PBUtil (com.pblabs.engine.PBUtil) package com.pblabs.engine { import flash.display.*; import com.pblabs.engine.debug.*; import flash.geom.*; public class PBUtil { public static const FLIP_VERTICAL:String = "flipVertical"; public static const TWO_PI:Number = 6.28318530717959; public static const FLIP_HORIZONTAL:String = "flipHorizontal"; public static function pickWithBias(_arg1:int, _arg2:int, _arg3:Number=0):int{ return (clamp((((Math.random() + _arg3) * (_arg2 - _arg1)) + _arg1), _arg1, _arg2)); } public static function getRadiansFromDegrees(_arg1:Number):Number{ return (((_arg1 * Math.PI) / 180)); } public static function flipDisplayObject(_arg1:DisplayObject, _arg2:String):void{ var _local3:Matrix = _arg1.transform.matrix; switch (_arg2){ case FLIP_HORIZONTAL: _local3.a = -1; _local3.tx = (_arg1.width + _arg1.x); break; case FLIP_VERTICAL: _local3.d = -1; _local3.ty = (_arg1.height + _arg1.y); break; }; _arg1.transform.matrix = _local3; } public static function unwrapRadian(_arg1:Number):Number{ _arg1 = (_arg1 % Math.PI); if (_arg1 > Math.PI){ _arg1 = (_arg1 - TWO_PI); }; if (_arg1 < -(Math.PI)){ _arg1 = (_arg1 + TWO_PI); }; return (_arg1); } public static function xyLength(_arg1:Number, _arg2:Number):Number{ return (Math.sqrt(((_arg1 * _arg1) + (_arg2 * _arg2)))); } public static function unwrapDegrees(_arg1:Number):Number{ _arg1 = (_arg1 % 360); if (_arg1 > 180){ _arg1 = (_arg1 - 360); }; if (_arg1 < -180){ _arg1 = (_arg1 + 360); }; return (_arg1); } public static function getDegreesShortDelta(_arg1:Number, _arg2:Number):Number{ _arg1 = unwrapDegrees(_arg1); _arg2 = unwrapDegrees(_arg2); var _local3:Number = (_arg2 - _arg1); if (_local3 > 180){ _local3 = (_local3 - 360); }; if (_local3 < -180){ _local3 = (_local3 + 360); }; return (_local3); } public static function getBitCountForRange(_arg1:int):int{ return (Math.ceil((Math.log(_arg1) / Math.log(2)))); } public static function duckAssign(_arg1:Object, _arg2:Object, _arg3:Boolean=false):void{ var field:String; var source = _arg1; var destination = _arg2; var abortOnMismatch = _arg3; for (field in source) { try { destination[field] = source[field]; } catch(e:Error) { if (!abortOnMismatch){ } else { throw (new Error((("Field '" + field) + "' in source was not present in destination."))); }; }; }; } public static function getFileExtension(_arg1:String):String{ var _local2:Number = _arg1.lastIndexOf("."); if (_local2 == -1){ return (""); }; return (_arg1.substr((_local2 + 1), _arg1.length)); } public static function getDegreesFromRadians(_arg1:Number):Number{ return (((_arg1 * 180) / Math.PI)); } public static function escapeHTMLText(_arg1:String):String{ var _local2:Array = [{char:"&", repl:"|amp|"}, {char:"<", repl:"&lt;"}, {char:">", repl:"&gt;"}, {char:"'", repl:"&apos;"}, {char:"\"", repl:"&quot;"}, {char:"|amp|", repl:"&amp;"}]; var _local3:int; while (_local3 < _local2.length) { while (_arg1.indexOf(_local2[_local3].char) != -1) { _arg1 = _arg1.replace(_local2[_local3].char, _local2[_local3].repl); }; _local3++; }; return (_arg1); } public static function getRadianShortDelta(_arg1:Number, _arg2:Number):Number{ _arg1 = unwrapRadian(_arg1); _arg2 = unwrapRadian(_arg2); var _local3:Number = (_arg2 - _arg1); if (_local3 > Math.PI){ _local3 = (_local3 - (Math.PI * 2)); }; if (_local3 < -(Math.PI)){ _local3 = (_local3 + (Math.PI * 2)); }; return (_local3); } public static function clamp(_arg1:Number, _arg2:Number=0, _arg3:Number=1):Number{ if (_arg1 < _arg2){ return (_arg2); }; if (_arg1 > _arg3){ return (_arg3); }; return (_arg1); } public static function cloneArray(_arg1:Array):Array{ var _local3:*; var _local2:Array = []; for each (_local3 in _arg1) { _local2.push(_local3); }; return (_local2); } public static function dumpObjectToLogger(_arg1, _arg2, _arg3:int=0, _arg4:String=""):String{ var _local7:*; var _local8:String; var _local5 = ""; var _local6:int; while (_local6 < _arg3) { _local5 = (_local5 + "\t"); _local6++; }; for (_local7 in _arg2) { _arg4 = (_arg4 + ((((_local5 + "[") + _local7) + "] => ") + _arg2[_local7])); _local8 = dumpObjectToLogger(_arg1, _arg2[_local7], (_arg3 + 1)); if (_local8 != ""){ _arg4 = (_arg4 + (((" {\n" + _local8) + _local5) + "}")); }; _arg4 = (_arg4 + "\n"); }; if (_arg3 == 0){ Logger.print(_arg1, _arg4); return (""); }; return (_arg4); } } }//package com.pblabs.engine
Section 319
//CellCountDivider (com.pblabs.rendering2D.spritesheet.CellCountDivider) package com.pblabs.rendering2D.spritesheet { import com.pblabs.engine.debug.*; import flash.geom.*; public class CellCountDivider implements ISpriteSheetDivider { private var _owningSheet:SpriteSheetComponent; public var yCount:int;// = 1 public var xCount:int;// = 1 public function get frameCount():int{ return ((xCount * yCount)); } public function getFrameArea(_arg1:int):Rectangle{ if (!_owningSheet){ throw (new Error("OwningSheet must be set before calling this!")); }; var _local2:int = _owningSheet.imageData.width; var _local3:int = _owningSheet.imageData.height; var _local4:int = (_local2 / xCount); var _local5:int = (_local3 / yCount); var _local6:int = (_arg1 % xCount); var _local7:int = Math.floor((_arg1 / xCount)); var _local8:int = (_local6 * _local4); var _local9:int = (_local7 * _local5); return (new Rectangle(_local8, _local9, _local4, _local5)); } public function set owningSheet(_arg1:SpriteSheetComponent):void{ if (_owningSheet){ Logger.warn(this, "set OwningSheet", "Already assigned to a sheet, reassigning may result in unexpected behavior."); }; _owningSheet = _arg1; } public function clone():ISpriteSheetDivider{ var _local1:CellCountDivider = new CellCountDivider(); _local1.xCount = xCount; _local1.yCount = yCount; return (_local1); } } }//package com.pblabs.rendering2D.spritesheet
Section 320
//ISpriteSheetDivider (com.pblabs.rendering2D.spritesheet.ISpriteSheetDivider) package com.pblabs.rendering2D.spritesheet { import flash.geom.*; public interface ISpriteSheetDivider { function get frameCount():int; function getFrameArea(_arg1:int):Rectangle; function clone():ISpriteSheetDivider; function set owningSheet(_arg1:SpriteSheetComponent):void; } }//package com.pblabs.rendering2D.spritesheet
Section 321
//SpriteContainerComponent (com.pblabs.rendering2D.spritesheet.SpriteContainerComponent) package com.pblabs.rendering2D.spritesheet { import com.pblabs.engine.entity.*; import flash.display.*; import flash.geom.*; public class SpriteContainerComponent extends EntityComponent { private var frameNotes:Array; public var directionsPerFrame:Number;// = 1 private var frames:Array;// = null private var _center:Point; private var _defaultCenter:Boolean;// = true public function SpriteContainerComponent(){ _center = new Point(0, 0); super(); } public function get frameCount():int{ return ((rawFrameCount / directionsPerFrame)); } public function get degreesPerDirection():Number{ return ((360 / directionsPerFrame)); } public function get rawFrameCount():int{ if (!frames){ buildFrames(); }; return ((frames) ? frames.length : 0); } public function get isLoaded():Boolean{ return (!((frames == null))); } private function generateFrameNotes():void{ var _local3:int; var _local4:FrameNote; frameNotes = new Array(); var _local1:int = (frameCount / degreesPerDirection); var _local2:int; while (_local2 < directionsPerFrame) { _local3 = 0; while (_local3 < frameCount) { _local4 = new FrameNote(); _local4.Frame = _local3; _local4.Direction = (_local2 * degreesPerDirection); _local4.RawFrame = ((_local2 * frameCount) + _local3); frameNotes.push(_local4); _local3++; }; _local2++; }; } protected function deleteFrames():void{ frames = null; } protected function buildFrames():void{ frames = getSourceFrames(); if (frames == null){ return; }; if (frames.length == 0){ throw (new Error("No frames loaded")); }; if (_defaultCenter){ _center = new Point((BitmapData(frames[0]).width * 0.5), (BitmapData(frames[0]).height * 0.5)); }; } public function get center():Point{ if (!_center){ return (new Point()); }; return (_center); } protected function getSourceFrames():Array{ throw (new Error("Not Implemented")); } public function set center(_arg1:Point):void{ _center = _arg1; _defaultCenter = false; } protected function getRawFrame(_arg1:int):BitmapData{ if (frames == null){ buildFrames(); }; if (frames == null){ return (null); }; if ((((_arg1 < 0)) || ((_arg1 >= rawFrameCount)))){ return (null); }; return (frames[_arg1]); } public function getFrame(_arg1:int, _arg2:Number=0):BitmapData{ var _local6:FrameNote; if (!isLoaded){ return (null); }; while (_arg2 < 0) { _arg2 = (_arg2 + 360); }; while (_arg2 > 360) { _arg2 = (_arg2 - 360); }; if (directionsPerFrame == 1){ return (getRawFrame(_arg1)); }; if (frameNotes == null){ generateFrameNotes(); }; var _local3 = -1; var _local4:Number = Number.POSITIVE_INFINITY; var _local5:int; while (_local5 < frameNotes.length) { _local6 = frameNotes[_local5]; if (_local6.Frame != _arg1){ } else { if (Math.abs((_local6.Direction - _arg2)) < _local4){ _local4 = Math.abs((_local6.Direction - _arg2)); _local3 = _local6.RawFrame; }; }; _local5++; }; if (_local3 >= 0){ return (getRawFrame(_local3)); }; return (null); } } }//package com.pblabs.rendering2D.spritesheet final class FrameNote { public var RawFrame:int; public var Frame:int; public var Direction:Number; private function FrameNote(){ } }
Section 322
//SpriteSheetComponent (com.pblabs.rendering2D.spritesheet.SpriteSheetComponent) package com.pblabs.rendering2D.spritesheet { import com.pblabs.engine.resource.*; import flash.display.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.*; public class SpriteSheetComponent extends SpriteContainerComponent { private var _forcedBitmaps:Array;// = null private var _divider:ISpriteSheetDivider;// = null private var _image:ImageResource;// = null public function get divider():ISpriteSheetDivider{ return (_divider); } protected function onImageLoaded(_arg1:ImageResource):void{ image = _arg1; } public function get imageFilename():String{ return (((_image == null)) ? null : _image.filename); } public function set imageFilename(_arg1:String):void{ if (_image){ PBE.resourceManager.unload(_image.filename, ImageResource); image = null; }; PBE.resourceManager.load(_arg1, ImageResource, onImageLoaded, onImageFailed); } public function get imageData():BitmapData{ if (!_image){ return (null); }; return (_image.bitmapData); } public function initializeFromBitmapDataArray(_arg1:Array):void{ _forcedBitmaps = _arg1; } override public function get isLoaded():Boolean{ return (((!((imageData == null))) || (_forcedBitmaps))); } public function set divider(_arg1:ISpriteSheetDivider):void{ _divider = _arg1; _divider.owningSheet = this; deleteFrames(); } public function set image(_arg1:ImageResource):void{ _image = _arg1; deleteFrames(); } override protected function getSourceFrames():Array{ var _local1:Array; var _local2:int; var _local3:Rectangle; if (_forcedBitmaps){ return (_forcedBitmaps); }; if (!imageData){ return (null); }; if (!_divider){ _local1 = new Array(1); _local1[0] = imageData; } else { _local1 = new Array(_divider.frameCount); _local2 = 0; while (_local2 < _divider.frameCount) { _local3 = _divider.getFrameArea(_local2); _local1[_local2] = new BitmapData(_local3.width, _local3.height, true); _local1[_local2].copyPixels(imageData, _local3, new Point(0, 0)); _local2++; }; }; return (_local1); } protected function onImageFailed(_arg1:ImageResource):void{ Logger.error(this, "onImageFailed", (("Failed to load '" + (_arg1) ? _arg1.filename : "(unknown)") + "'")); } public function get image():ImageResource{ return (_image); } } }//package com.pblabs.rendering2D.spritesheet
Section 323
//SWFSpriteSheetComponent (com.pblabs.rendering2D.spritesheet.SWFSpriteSheetComponent) package com.pblabs.rendering2D.spritesheet { import com.pblabs.engine.resource.*; import flash.display.*; import flash.geom.*; import flash.utils.*; public class SWFSpriteSheetComponent extends SpriteContainerComponent { private var _frames:Array; private var _scale:Point; private var _clipName:String; public var cached:Boolean;// = true private var _bounds:Rectangle; private var _resource:SWFResource; private var _clip:MovieClip; private var _smoothing:Boolean;// = true protected static var _frameCache:Dictionary = new Dictionary(true); public function SWFSpriteSheetComponent(){ _scale = new Point(1, 1); super(); } public function get swf():SWFResource{ return (_resource); } protected function getBitmapDataByDisplay(_arg1:DisplayObject):BitmapData{ var _local2:Rectangle = _arg1.getBounds(_arg1); var _local3:BitmapData = new BitmapData(Math.max(1, Math.min(2880, (_local2.width * scale.x))), Math.max(1, Math.min(2880, (_local2.height * scale.y))), true, 0); _local3.draw(_arg1, new Matrix(_scale.x, 0, 0, _scale.y, (-(_local2.x) * _scale.x), (-(_local2.y) * _scale.y)), null, null, null, _smoothing); return (_local3); } public function set swf(_arg1:SWFResource):void{ _resource = _arg1; _frames = null; _clip = null; deleteFrames(); } public function get scale():Point{ return (_scale.clone()); } override public function get isLoaded():Boolean{ if (((!(_resource)) || (!(_resource.isLoaded)))){ return (false); }; if (!_frames){ rasterize(); }; return (!((_frames == null))); } public function set scale(_arg1:Point):void{ _scale = _arg1.clone(); } override protected function getSourceFrames():Array{ if (((!(_resource)) || (!(_resource.isLoaded)))){ return (null); }; if (!_frames){ rasterize(); }; return (_frames); } protected function onRasterize(_arg1:MovieClip):Array{ var _local2:int = swf.findMaxFrames(_arg1, _arg1.totalFrames); var _local3:Array = new Array(_local2); if (_local2 > 0){ _local3[0] = rasterizeFrame(_arg1, 1); }; return (_local3); } override protected function getRawFrame(_arg1:int):BitmapData{ var _local2:BitmapData = super.getRawFrame(_arg1); if (_local2){ return (_local2); }; if (((!(_frames)) || (!(_clip)))){ return (null); }; _local2 = rasterizeFrame(_clip, (_arg1 + 1)); _frames[_arg1] = _local2; return (_local2); } protected function getCachedFrames():CachedFramesData{ if (!cached){ return (null); }; return ((_frameCache[getFramesCacheKey()] as _slot2)); } public function set smoothing(_arg1:Boolean):void{ _smoothing = _arg1; } protected function setCachedFrames(_arg1:CachedFramesData):void{ if (!cached){ return; }; _frameCache[getFramesCacheKey()] = _arg1; } public function get smoothing():Boolean{ return (_smoothing); } public function set clipName(_arg1:String):void{ _clipName = _arg1; _frames = null; _clip = null; deleteFrames(); } protected function rasterize():void{ if (!_resource.isLoaded){ return; }; var _local1:CachedFramesData = getCachedFrames(); if (_local1){ _frames = _local1.frames; _bounds = _local1.bounds; _clip = _local1.clip; return; }; if (_clipName){ _clip = (_resource.getExportedAsset(_clipName) as MovieClip); if (!_clip){ _clip = _resource.clip; }; } else { _clip = _resource.clip; }; _frames = onRasterize(_clip); _bounds = _clip.getBounds(_clip); center = new Point(-(_bounds.x), -(_bounds.y)); setCachedFrames(new CachedFramesData(_frames, _bounds, _clip)); } protected function getFramesCacheKey():String{ return ((((_resource.filename + ":") + (clipName) ? clipName : "") + (_smoothing) ? ":1" : ":0")); } public function get clipName():String{ return (_clipName); } public function get bounds():Rectangle{ return (new Rectangle(_bounds.x, _bounds.y, (_bounds.width * _scale.x), (_bounds.height * _scale.y))); } protected function rasterizeFrame(_arg1:MovieClip, _arg2:int):BitmapData{ if (_arg1.totalFrames >= _arg2){ _arg1.gotoAndStop(_arg2); }; swf.advanceChildClips(_arg1, _arg2); var _local3:BitmapData = getBitmapDataByDisplay(_arg1); return (_local3); } } }//package com.pblabs.rendering2D.spritesheet import flash.display.*; import flash.geom.*; final class CachedFramesData { public var clip:MovieClip; public var bounds:Rectangle; public var frames:Array; private function CachedFramesData(_arg1:Array, _arg2:Rectangle, _arg3:MovieClip){ this.frames = _arg1; this.bounds = _arg2; this.clip = _arg3; } }
Section 324
//IUITarget (com.pblabs.rendering2D.ui.IUITarget) package com.pblabs.rendering2D.ui { import flash.events.*; import flash.display.*; public interface IUITarget extends IEventDispatcher { function addDisplayObject(_arg1:DisplayObject):void; function setDisplayObjectIndex(_arg1:DisplayObject, _arg2:int):void; function get width():Number; function get height():Number; function get x():Number; function get y():Number; function set width(_arg1:Number):void; function removeDisplayObject(_arg1:DisplayObject):void; function set height(_arg1:Number):void; function clearDisplayObjects():void; } }//package com.pblabs.rendering2D.ui
Section 325
//PBLabel (com.pblabs.rendering2D.ui.PBLabel) package com.pblabs.rendering2D.ui { import flash.display.*; import flash.geom.*; import flash.text.*; public class PBLabel extends Sprite { public var caption:String;// = "Label" public var extents:Rectangle; public var fontSize:Number;// = 24 public var fontColor:uint;// = 0xFFFFFF protected var _label:TextField; public var fontAlign:String;// = "left" public var fontBold:Boolean;// = false protected var _labelStyle:TextFormat; public function PBLabel(){ extents = new Rectangle(0, 0, 100, 100); _labelStyle = new TextFormat("Hud Font", 10, 0); _label = new TextField(); super(); addChild(_label); mouseEnabled = false; } public function refresh():void{ _label.x = extents.x; _label.y = extents.y; _label.width = extents.width; _label.height = extents.height; _label.mouseEnabled = false; _label.multiline = true; _label.wordWrap = true; _label.autoSize = TextFieldAutoSize.LEFT; _labelStyle.size = fontSize; _labelStyle.color = fontColor; _labelStyle.align = fontAlign; _labelStyle.bold = fontBold; _label.defaultTextFormat = _labelStyle; _label.text = caption; } } }//package com.pblabs.rendering2D.ui
Section 326
//PBScrollBar (com.pblabs.rendering2D.ui.PBScrollBar) package com.pblabs.rendering2D.ui { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.text.*; import com.pblabs.engine.*; public class PBScrollBar extends Sprite { protected var _extents:Rectangle; private var _progress:Number; protected var _track:Sprite; protected var _thumb:Sprite; protected var _tf:TextField; protected var _dragExtents:Rectangle; public function PBScrollBar(){ init(); } protected function scrollTextField():void{ if (!_tf){ return; }; _tf.scrollV = (_tf.maxScrollV * _progress); } protected function onMouseUp(_arg1:MouseEvent):void{ stopDragging(); } public function get extents():Rectangle{ return (_extents); } protected function calcThumbProgress():void{ _progress = (_thumb.y / (_dragExtents.height - _thumb.height)); } protected function init():void{ _extents = new Rectangle(0, 0, 5, 100); _track = new Sprite(); _thumb = new Sprite(); _track.buttonMode = (_thumb.buttonMode = true); _track.useHandCursor = (_thumb.useHandCursor = true); addChild(_track); addChild(_thumb); addListeners(); refresh(); } protected function startDragging():void{ stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp, false, 0, true); stage.addEventListener(Event.ENTER_FRAME, onDragging, false, 0, true); _dragExtents = new Rectangle(0, 0, 0, ((_extents.height - _thumb.height) - 1)); _thumb.startDrag(false, _dragExtents); } public function set extents(_arg1:Rectangle):void{ _extents = _arg1; refresh(); } protected function onDragging(_arg1:Event):void{ calcThumbProgress(); scrollTextField(); } public function set progress(_arg1:Number):void{ _progress = _arg1; refresh(); } public function refresh():void{ if (((_tf) && ((_tf.maxScrollV > 1)))){ _track.graphics.clear(); _track.graphics.beginFill(0xEEEEEE, 0); _track.graphics.drawRect(_extents.x, _extents.y, _extents.width, _extents.height); _track.graphics.endFill(); _thumb.graphics.clear(); _thumb.graphics.beginFill(0xCCCCCC); _thumb.graphics.drawRoundRect((_extents.x + 1), (_extents.y + 1), (_extents.width - 2), (_extents.height / 10), _extents.width, _extents.width); _thumb.graphics.endFill(); _thumb.y = PBUtil.clamp((((_extents.height - (_extents.height / 10)) * _progress) - 1), 0, ((_extents.height - _thumb.height) - 1)); } else { _track.graphics.clear(); _thumb.graphics.clear(); }; } protected function addListeners():void{ _track.addEventListener(MouseEvent.CLICK, onTrackClick, false, 0, true); _thumb.addEventListener(MouseEvent.MOUSE_DOWN, onThumbDown, false, 0, true); _thumb.addEventListener(MouseEvent.MOUSE_UP, onMouseUp, false, 0, true); } public function set tf(_arg1:TextField):void{ _tf = _arg1; } public function get progress():Number{ return (_progress); } protected function stopDragging():void{ stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); stage.removeEventListener(Event.ENTER_FRAME, onDragging); _thumb.stopDrag(); } public function get tf():TextField{ return (_tf); } protected function onThumbDown(_arg1:MouseEvent):void{ startDragging(); } protected function onTrackClick(_arg1:MouseEvent):void{ stopDragging(); _progress = (_arg1.localY / (_extents.height - _thumb.height)); refresh(); scrollTextField(); } } }//package com.pblabs.rendering2D.ui
Section 327
//SceneView (com.pblabs.rendering2D.ui.SceneView) package com.pblabs.rendering2D.ui { import flash.display.*; import com.pblabs.engine.*; public class SceneView extends Sprite implements IUITarget { private var _width:Number;// = 0 private var _height:Number;// = 0 public function SceneView(){ if (PBE.mainClass){ PBE.mainClass.addChild(this); width = PBE.mainStage.stage.stageWidth; height = PBE.mainStage.stage.stageHeight; name = "SceneView"; }; } public function addDisplayObject(_arg1:DisplayObject):void{ addChild(_arg1); } override public function set width(_arg1:Number):void{ _width = _arg1; } override public function get width():Number{ return (_width); } override public function set height(_arg1:Number):void{ _height = _arg1; } override public function get height():Number{ return (_height); } public function setDisplayObjectIndex(_arg1:DisplayObject, _arg2:int):void{ setChildIndex(_arg1, _arg2); } public function removeDisplayObject(_arg1:DisplayObject):void{ removeChild(_arg1); } public function clearDisplayObjects():void{ while (numChildren) { removeChildAt(0); }; } } }//package com.pblabs.rendering2D.ui
Section 328
//BasicSpatialManager2D (com.pblabs.rendering2D.BasicSpatialManager2D) package com.pblabs.rendering2D { import flash.events.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.*; public class BasicSpatialManager2D extends EntityComponent implements ISpatialManager2D { protected var _objectList:Array; public static const EntitiesDirtyEvent:String = "BasicSpatialManager2D.EntitiesDirty"; public function BasicSpatialManager2D(){ _objectList = new Array(); super(); } public function boxVsBox(_arg1:Rectangle, _arg2:Rectangle):Boolean{ return (_arg1.intersects(_arg2)); } public function queryRectangle(_arg1:Rectangle, _arg2:ObjectType, _arg3:Array):Boolean{ var _local5:ISpatialObject2D; Profiler.enter("QueryRectangle"); var _local4:Boolean; for each (_local5 in _objectList) { if (_arg2 != null){ //unresolved if } else { if (!boxVsBox(_local5.worldExtents, _arg1)){ } else { _arg3.push(_local5); _local4 = true; }; }; }; Profiler.exit("QueryRectangle"); return (_local4); } public function addSpatialObject(_arg1:ISpatialObject2D):void{ _objectList.push(_arg1); if (((owner) && (owner.eventDispatcher))){ owner.eventDispatcher.dispatchEvent(new Event(EntitiesDirtyEvent)); }; } public function castRay(_arg1:Point, _arg2:Point, _arg3:ObjectType, _arg4:RayHitInfo):Boolean{ var _local9:ISpatialObject2D; var _local5:Array = new Array(); var _local6:Rectangle = new Rectangle((Math.min(_arg1.x, _arg2.x) - 0.5), (Math.min(_arg1.y, _arg2.y) - 0.5), (Math.abs((_arg2.x - _arg1.x)) + 1), (Math.abs((_arg2.y - _arg1.y)) + 1)); if (!queryRectangle(_local6, _arg3, _local5)){ return (false); }; var _local7:RayHitInfo; var _local8:RayHitInfo = new RayHitInfo(); for each (_local9 in _local5) { if (_local9.castRay(_arg1, _arg2, _arg3, _local8)){ if (!_local7){ _local7 = new RayHitInfo(); _local7.copyFrom(_local8); } else { if (_local8.time < _local7.time){ _local7.copyFrom(_local8); }; }; }; }; if (_local7){ if (_arg4){ _arg4.copyFrom(_local7); }; return (true); }; return (false); } public function queryCircle(_arg1:Point, _arg2:Number, _arg3:ObjectType, _arg4:Array):Boolean{ var _local8:ISpatialObject2D; Profiler.enter("QueryCircle"); var _local5:Boolean; var _local6:Rectangle = new Rectangle(); var _local7:Rectangle = new Rectangle(); for each (_local8 in _objectList) { if (_arg3 != null){ //unresolved if } else { _local7 = _local8.worldExtents; _local6.x = _local7.x; _local6.y = _local7.y; _local6.width = _local7.width; _local6.height = _local7.height; _local6.inflate(_arg2, _arg2); if (!_local6.containsPoint(_arg1)){ } else { _arg4.push(_local8); _local5 = true; }; }; }; Profiler.exit("QueryCircle"); return (_local5); } public function getObjectsUnderPoint(_arg1:Point, _arg2:Array, _arg3:ObjectType=null):Boolean{ var _local6:ISpatialObject2D; var _local4:Array = new Array(); if (!queryCircle(_arg1, 64, _arg3, _local4)){ return (false); }; var _local5:Boolean; for each (_local6 in _local4) { if (!_local6.pointOccupied(_arg1, _arg3, PBE.scene)){ } else { _arg2.push(_local6); _local5 = true; }; }; if (PBE.scene){ PBE.scene.sortSpatials(_arg2); }; return (_local5); } public function removeSpatialObject(_arg1:ISpatialObject2D):void{ var _local2:int = _objectList.indexOf(_arg1); if (_local2 == -1){ Logger.warn(this, "removeSpatialObject", "The object was not found in this spatial manager."); return; }; _objectList.splice(_local2, 1); if (((owner) && (owner.eventDispatcher))){ owner.eventDispatcher.dispatchEvent(new Event(EntitiesDirtyEvent)); }; } } }//package com.pblabs.rendering2D
Section 329
//BitmapDataScene (com.pblabs.rendering2D.BitmapDataScene) package com.pblabs.rendering2D { import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.*; public class BitmapDataScene extends DisplayObjectScene { public var backbuffer:BitmapData; public var bitmap:Bitmap; public function BitmapDataScene(){ bitmap = new Bitmap(); super(); } override public function set sceneView(_arg1:IUITarget):void{ var _local2:Sprite; if (_sceneView){ _sceneView.removeDisplayObject(bitmap); }; super.sceneView = _arg1; if (_sceneView){ _sceneView.removeDisplayObject(_rootSprite); _local2 = new Sprite(); _local2.addChild(_rootSprite); _sceneView.addDisplayObject(bitmap); }; } override public function onFrame(_arg1:Number):void{ var _local4:DisplayObjectSceneLayer; var _local5:DisplayObjectRenderer; var _local6:Matrix; var _local7:ICopyPixelsRenderer; super.onFrame(_arg1); if ((((sceneView.width == 0)) || ((sceneView.height == 0)))){ Logger.warn(this, "onFrame", (((("Zero size sceneView! Resetting to stage size (" + PBE.mainStage.stageWidth) + "x") + PBE.mainStage.stageHeight) + ")")); if ((((PBE.mainStage.stageWidth == 0)) || ((PBE.mainStage.stageHeight == 0)))){ Logger.warn(this, "onFrame", "Stage is also zero size! This might be a Firefox bug (see http://bugs.adobe.com/jira/browse/FP-434)."); Logger.warn(this, "onFrame", "If it doesn't go away after a few frames, it is probably another issue."); }; sceneView.width = PBE.mainStage.stageWidth; sceneView.height = PBE.mainStage.stageHeight; return; }; if (((((!(backbuffer)) || (!((backbuffer.width == sceneView.width))))) || (!((backbuffer.height == sceneView.height))))){ backbuffer = new BitmapData(sceneView.width, sceneView.height); bitmap.bitmapData = backbuffer; bitmap.x = (bitmap.y = 0); bitmap.width = sceneView.width; bitmap.height = sceneView.height; }; backbuffer.lock(); backbuffer.fillRect(backbuffer.rect, 0); var _local2:Matrix = new Matrix(); var _local3:int; while (_local3 < _layers.length) { _local4 = _layers[_local3]; if (!_local4){ } else { for each (_local5 in _local4.rendererList) { _local6 = _local5.displayObject.transform.matrix; _local2.a = _local6.a; _local2.b = _local6.b; _local2.c = _local6.c; _local2.d = _local6.d; _local2.tx = _local6.tx; _local2.ty = _local6.ty; _local2.concat(_rootSprite.transform.matrix); _local7 = (_local5 as ICopyPixelsRenderer); if (((_local7) && (_local7.isPixelPathActive(_local2)))){ _local7.drawPixels(_local2, backbuffer); } else { backbuffer.draw(_local5.displayObject, _local2, _local5.displayObject.transform.colorTransform, _local5.displayObject.blendMode); }; }; }; _local3++; }; backbuffer.unlock(); bitmap.bitmapData = backbuffer; } } }//package com.pblabs.rendering2D
Section 330
//BitmapRenderer (com.pblabs.rendering2D.BitmapRenderer) package com.pblabs.rendering2D { import com.pblabs.engine.core.*; import flash.display.*; import flash.geom.*; public class BitmapRenderer extends DisplayObjectRenderer implements ICopyPixelsRenderer { protected var bitmap:Bitmap; protected var _smoothing:Boolean;// = false protected static const zeroPoint:Point = new Point(); public function BitmapRenderer(){ bitmap = new Bitmap(); super(); _displayObject = new Sprite(); (_displayObject as Sprite).addChild(bitmap); smoothing = true; bitmap.pixelSnapping = PixelSnapping.AUTO; } override public function set displayObject(_arg1:DisplayObject):void{ throw (new Error("Cannot set displayObject in BitmapRenderer; it is always a Sprite containing a Bitmap.")); } public function set smoothing(_arg1:Boolean):void{ _smoothing = _arg1; bitmap.smoothing = _arg1; } public function isPixelPathActive(_arg1:Matrix):Boolean{ return ((((((((((((((_arg1.a == 1)) && ((_arg1.b == 0)))) && ((_arg1.c == 0)))) && ((_arg1.d == 1)))) && ((alpha == 1)))) && ((blendMode == BlendMode.NORMAL)))) && ((displayObject.filters.length == 0)))); } public function drawPixels(_arg1:Matrix, _arg2:BitmapData):void{ _arg2.copyPixels(bitmap.bitmapData, bitmap.bitmapData.rect, _arg1.transformPoint(zeroPoint), null, null, true); } public function set bitmapData(_arg1:BitmapData):void{ if (_arg1 === bitmap.bitmapData){ return; }; bitmap.bitmapData = _arg1; smoothing = _smoothing; _transformDirty = true; } public function get smoothing():Boolean{ return (_smoothing); } public function get bitmapData():BitmapData{ return (bitmap.bitmapData); } override public function pointOccupied(_arg1:Point, _arg2:ObjectType):Boolean{ if (((!(bitmap)) || (!(bitmap.bitmapData)))){ return (false); }; var _local3:Point = transformWorldToObject(_arg1); return (bitmap.bitmapData.hitTest(zeroPoint, 1, _local3)); } } }//package com.pblabs.rendering2D
Section 331
//DisplayObjectRenderer (com.pblabs.rendering2D.DisplayObjectRenderer) package com.pblabs.rendering2D { import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import com.pblabs.engine.*; public class DisplayObjectRenderer extends AnimatedComponent { public var sizeProperty:PropertyReference; protected var _transformMatrix:Matrix; protected var _blendMode:String;// = "normal" protected var _layerIndexDirty:Boolean;// = true public var positionProperty:PropertyReference; protected var _inScene:Boolean;// = false protected var _positionOffset:Point; public var scaleProperty:PropertyReference; protected var _scale:Point; public var registrationPointProperty:PropertyReference; public var alphaProperty:PropertyReference; protected var _lastLayerIndex:int;// = -1 protected var _alpha:Number;// = 1 public var zIndexProperty:PropertyReference; public var rotationProperty:PropertyReference; protected var _zIndexDirty:Boolean;// = true protected var _position:Point; public var blendModeProperty:PropertyReference; protected var _scene:IScene2D; protected var _zIndex:int;// = 0 protected var _layerIndex:int;// = 0 protected var _displayObject:DisplayObject; public var snapToNearestPixels:Boolean;// = true public var objectMask:ObjectType; protected var _rotationOffset:Number;// = 0 protected var _registrationPoint:Point; protected var _rotation:Number;// = 0 protected var _size:Point; protected var _transformDirty:Boolean;// = true public var renderKey:int;// = 0 protected var _hitTestDirty:Boolean;// = true public var layerIndexProperty:PropertyReference; public function DisplayObjectRenderer(){ _registrationPoint = new Point(); _scale = new Point(1, 1); _position = new Point(); _positionOffset = new Point(); _transformMatrix = new Matrix(); super(); _scene = PBE.scene; } public function get localBounds():Rectangle{ if (!displayObject){ return (null); }; return (displayObject.getBounds(displayObject)); } public function get layerIndex():int{ return (_layerIndex); } public function set layerIndex(_arg1:int):void{ if (_layerIndex == _arg1){ return; }; _layerIndex = _arg1; _layerIndexDirty = true; } public function get size():Point{ if (!_size){ return (_size); }; return (_size.clone()); } public function set size(_arg1:Point):void{ if (!_arg1){ _size = null; return; }; if (!_size){ _size = new Point(); }; _size.x = _arg1.x; _size.y = _arg1.y; _transformDirty = true; } public function set scene(_arg1:IScene2D):void{ removeFromScene(); _scene = _arg1; addToScene(); } public function get positionOffset():Point{ return (_positionOffset.clone()); } public function get position():Point{ return (_position.clone()); } public function set blendMode(_arg1:String):void{ if (_arg1 == _blendMode){ return; }; _arg1 = _arg1.toLowerCase(); if (((((((((((((((((((((((((((((!((_arg1 == BlendMode.ADD))) && (!((_arg1 == BlendMode.ALPHA))))) && (!((_arg1 == BlendMode.DARKEN))))) && (!((_arg1 == BlendMode.DIFFERENCE))))) && (!((_arg1 == BlendMode.ERASE))))) && (!((_arg1 == BlendMode.HARDLIGHT))))) && (!((_arg1 == BlendMode.INVERT))))) && (!((_arg1 == BlendMode.LAYER))))) && (!((_arg1 == BlendMode.LIGHTEN))))) && (!((_arg1 == BlendMode.MULTIPLY))))) && (!((_arg1 == BlendMode.NORMAL))))) && (!((_arg1 == BlendMode.OVERLAY))))) && (!((_arg1 == BlendMode.SCREEN))))) && (!((_arg1 == "shader"))))) && (!((_arg1 == BlendMode.SUBTRACT))))){ Logger.warn(this, "set blendMode", (("Could not set the blend mode to '" + _arg1) + "', because it is not a valid BlendMode")); return; }; _blendMode = _arg1; _transformDirty = true; } public function set positionOffset(_arg1:Point):void{ if ((((_arg1.x == _positionOffset.x)) && ((_arg1.y == _positionOffset.y)))){ return; }; _positionOffset.x = _arg1.x; _positionOffset.y = _arg1.y; _transformDirty = true; } public function set displayObject(_arg1:DisplayObject):void{ removeFromScene(); _displayObject = _arg1; addToScene(); } override protected function onRemove():void{ super.onRemove(); removeFromScene(); } public function transformWorldToObject(_arg1:Point):Point{ var _local2:Matrix = _transformMatrix.clone(); _local2.invert(); return (_local2.transformPoint(_arg1)); } override protected function onAdd():void{ super.onAdd(); updateTransform(true); } public function get scale():Point{ return (_scale.clone()); } public function pointOccupied(_arg1:Point, _arg2:ObjectType):Boolean{ if (((!(displayObject)) || (!(scene)))){ return (false); }; if (displayObject.stage == null){ Logger.warn(this, "pointOccupied", "DisplayObject is not on stage, so hitTestPoint will probably not work right."); }; _arg1 = scene.transformWorldToScreen(_arg1); return (displayObject.hitTestPoint(_arg1.x, _arg1.y, true)); } public function set position(_arg1:Point):void{ var _local2:Number; var _local3:Number; if (snapToNearestPixels){ _local2 = int(_arg1.x); _local3 = int(_arg1.y); } else { _local2 = _arg1.x; _local3 = _arg1.y; }; if ((((_local2 == _position.x)) && ((_local3 == _position.y)))){ return; }; _position.x = _local2; _position.y = _local3; _transformDirty = true; } public function get registrationPoint():Point{ return (_registrationPoint.clone()); } public function get alpha():Number{ return (_alpha); } public function get sceneBounds():Rectangle{ if (!displayObject){ return (null); }; var _local1:Rectangle = displayObject.getBounds(displayObject); _local1.x = (_local1.x + displayObject.x); _local1.y = (_local1.y + displayObject.y); return (_local1); } public function set rotationOffset(_arg1:Number):void{ _rotationOffset = PBUtil.unwrapRadian(PBUtil.getRadiansFromDegrees(_arg1)); } public function get zIndex():int{ return (_zIndex); } public function get y():Number{ return (_position.y); } public function get rotation():Number{ return (_rotation); } public function get x():Number{ return (_position.x); } public function get scene():IScene2D{ return (_scene); } public function set scale(_arg1:Point):void{ if ((((_arg1.x == _scale.x)) && ((_arg1.y == _scale.y)))){ return; }; _scale.x = _arg1.x; _scale.y = _arg1.y; _transformDirty = true; } public function get blendMode():String{ return (_blendMode); } public function get displayObject():DisplayObject{ return (_displayObject); } public function updateTransform(_arg1:Boolean=false):void{ var _local4:Rectangle; if (!displayObject){ return; }; if (_arg1){ updateProperties(); }; var _local2:Number = _scale.x; var _local3:Number = _scale.y; if (_size){ _local4 = displayObject.getBounds(displayObject); _local2 = (_scale.x * (_size.x / _local4.width)); _local3 = (_scale.y * (_size.y / _local4.height)); }; _transformMatrix.identity(); _transformMatrix.scale(_local2, _local3); _transformMatrix.translate((-(_registrationPoint.x) * _local2), (-(_registrationPoint.y) * _local3)); _transformMatrix.rotate((PBUtil.getRadiansFromDegrees(_rotation) + _rotationOffset)); _transformMatrix.translate((_position.x + _positionOffset.x), (_position.y + _positionOffset.y)); displayObject.transform.matrix = _transformMatrix; displayObject.alpha = _alpha; displayObject.blendMode = _blendMode; displayObject.visible = (alpha > 0); _transformDirty = false; } public function transformObjectToWorld(_arg1:Point):Point{ return (_transformMatrix.transformPoint(_arg1)); } public function set registrationPoint(_arg1:Point):void{ var _local2:int = int(_arg1.x); var _local3:int = int(_arg1.y); if ((((_local2 == _registrationPoint.x)) && ((_local3 == _registrationPoint.y)))){ return; }; _registrationPoint.x = _local2; _registrationPoint.y = _local3; _transformDirty = true; } public function get rotationOffset():Number{ return (PBUtil.getDegreesFromRadians(_rotationOffset)); } public function set worldPosition(_arg1:Point):void{ removeFromScene(); if (!scene){ throw (new Error("Not attached to a scene, so cannot transform from world space.")); }; position = scene.transformWorldToScene(_arg1); updateTransform(); addToScene(); } public function set alpha(_arg1:Number):void{ if (_arg1 == _alpha){ return; }; _alpha = _arg1; _transformDirty = true; } override public function onFrame(_arg1:Number):void{ if (!displayObject){ return; }; updateProperties(); if (_transformDirty){ updateTransform(); }; } public function get worldPosition():Point{ if (!scene){ throw (new Error("Not attached to a scene, so cannot transform from world space.")); }; return (scene.transformSceneToWorld(position)); } protected function updateProperties():void{ var _local5:Number; var _local6:Number; var _local7:String; var _local8:int; if (!owner){ return; }; if (zIndexProperty){ zIndex = owner.getProperty(zIndexProperty, zIndex); }; if (layerIndexProperty){ layerIndex = owner.getProperty(layerIndexProperty, layerIndex); }; if (((_zIndexDirty) && (_scene))){ _scene.getLayer(_layerIndex).markDirty(); _zIndexDirty = false; }; var _local1:Point = (owner.getProperty(positionProperty) as Point); if (_local1){ if (scene){ position = scene.transformWorldToScene(_local1); } else { position = _local1; }; }; var _local2:Point = (owner.getProperty(scaleProperty) as Point); if (_local2){ this.scale = _local2; }; var _local3:Point = (owner.getProperty(sizeProperty) as Point); if (_local3){ this.size = _local3; }; if (rotationProperty){ _local5 = (owner.getProperty(rotationProperty) as Number); this.rotation = _local5; }; if (alphaProperty){ _local6 = (owner.getProperty(alphaProperty) as Number); this.alpha = _local6; }; if (blendModeProperty){ _local7 = (owner.getProperty(blendModeProperty) as String); this.blendMode = _local7; }; var _local4:Point = (owner.getProperty(registrationPointProperty) as Point); if (_local4){ registrationPoint = _local4; }; if (((_layerIndexDirty) && (_scene))){ _local8 = _layerIndex; _layerIndex = _lastLayerIndex; if (_lastLayerIndex != -1){ removeFromScene(); }; _layerIndex = _local8; addToScene(); _lastLayerIndex = _layerIndex; _layerIndexDirty = false; }; } protected function removeFromScene():void{ if (((((_scene) && (_displayObject))) && (_inScene))){ _scene.remove(this); _inScene = false; }; } public function get renderPosition():Point{ return (new Point(displayObject.x, displayObject.y)); } public function set zIndex(_arg1:int):void{ if (_zIndex == _arg1){ return; }; _zIndex = _arg1; _zIndexDirty = true; } public function set y(_arg1:Number):void{ var _local2:Number; if (snapToNearestPixels){ _local2 = int(_arg1); } else { _local2 = _arg1; }; if (_local2 == _position.y){ return; }; _position.y = _local2; _transformDirty = true; } public function set x(_arg1:Number):void{ var _local2:Number; if (snapToNearestPixels){ _local2 = int(_arg1); } else { _local2 = _arg1; }; if (_local2 == _position.x){ return; }; _position.x = _local2; _transformDirty = true; } public function set rotation(_arg1:Number):void{ if (_arg1 == _rotation){ return; }; _rotation = _arg1; _transformDirty = true; } protected function addToScene():void{ if (((((_scene) && (_displayObject))) && (!(_inScene)))){ _scene.add(this); _inScene = true; _lastLayerIndex = _layerIndex; _layerIndexDirty = (_zIndexDirty = false); }; } } }//package com.pblabs.rendering2D
Section 332
//DisplayObjectScene (com.pblabs.rendering2D.DisplayObjectScene) package com.pblabs.rendering2D { import flash.events.*; import com.pblabs.engine.core.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.pblabs.engine.debug.*; import flash.geom.*; import com.pblabs.engine.components.*; import flash.utils.*; import com.pblabs.engine.*; public class DisplayObjectScene extends AnimatedComponent implements IScene2D { protected var _rootPosition:Point; public var layers:Array; public var minZoom:Number;// = 0.01 public var maxZoom:Number;// = 1 protected var _rootRotation:Number;// = 0 protected var _trackLimitRectangle:Rectangle;// = null protected var _layers:Array; public var trackObject:DisplayObjectRenderer; protected var _sceneViewName:String;// = null protected var _renderers:Dictionary; protected var _tempPoint:Point; protected var _sceneViewBoundsCache:Rectangle; protected var _rootTransform:Matrix; protected var _zoom:Number;// = 1 public var trackOffset:Point; protected var _sceneView:IUITarget; protected var _sceneAlignment:SceneAlignment; protected var _transformDirty:Boolean;// = true public var _rootSprite:Sprite; protected var _currentWorldCenter:Point; public function DisplayObjectScene(){ layers = []; trackOffset = new Point(0, 0); _layers = []; _renderers = new Dictionary(true); _rootPosition = new Point(); _rootTransform = new Matrix(); _currentWorldCenter = new Point(); _sceneViewBoundsCache = new Rectangle(); _tempPoint = new Point(); _sceneAlignment = SceneAlignment.DEFAULT_ALIGNMENT; super(); updatePriority = -10; _rootSprite = generateRootSprite(); } public function get trackLimitRectangle():Rectangle{ return (_trackLimitRectangle); } public function get position():Point{ return (_rootPosition.clone()); } public function transformSceneToWorld(_arg1:Point):Point{ return (_arg1); } public function invalidate(_arg1:DisplayObjectRenderer):void{ var _local2:DisplayObjectSceneLayer = getLayer(_arg1.layerIndex); if (!_local2){ return; }; if ((_local2 is ICachingLayer)){ ICachingLayer(_local2).invalidate(_arg1); }; } public function set trackLimitRectangle(_arg1:Rectangle):void{ _trackLimitRectangle = _arg1; } override protected function onRemove():void{ super.onRemove(); if (_sceneView){ _sceneView.removeDisplayObject(_rootSprite); }; } override protected function onAdd():void{ super.onAdd(); _transformDirty = true; updateTransform(); } public function get sceneView():IUITarget{ if (((!(_sceneView)) && (_sceneViewName))){ sceneView = (PBE.findChild(_sceneViewName) as IUITarget); }; return (_sceneView); } public function set position(_arg1:Point):void{ if (!_arg1){ return; }; var _local2:int = int(_arg1.x); var _local3:int = int(_arg1.y); if ((((_rootPosition.x == _local2)) && ((_rootPosition.y == _local3)))){ return; }; _rootPosition.x = _local2; _rootPosition.y = _local3; _transformDirty = true; } public function transformSceneToScreen(_arg1:Point):Point{ updateTransform(); return (_rootSprite.localToGlobal(_arg1)); } public function transformWorldToScreen(_arg1:Point):Point{ updateTransform(); return (_rootSprite.localToGlobal(_arg1)); } public function set sceneAlignment(_arg1:SceneAlignment):void{ _sceneAlignment = _arg1; _transformDirty = true; } public function transformWorldToScene(_arg1:Point):Point{ return (_arg1); } public function get layerCount():int{ return (_layers.length); } public function invalidateRectangle(_arg1:Rectangle):void{ var _local2:DisplayObjectSceneLayer; for each (_local2 in _layers) { if ((_local2 is ICachingLayer)){ (_local2 as ICachingLayer).invalidateRectangle(_arg1); }; }; } public function get sceneViewName():String{ return (_sceneViewName); } public function get rotation():Number{ return (_rootRotation); } public function get sceneViewBounds():Rectangle{ var _local1:Rectangle; if (!sceneView){ return (null); }; if (trackObject){ position = new Point(-((trackObject.position.x + trackOffset.x)), -((trackObject.position.y + trackOffset.y))); }; if (trackLimitRectangle != null){ _local1 = new Rectangle((trackLimitRectangle.x + ((sceneView.width * 0.5) / zoom)), (trackLimitRectangle.y + ((sceneView.height * 0.5) / zoom)), (trackLimitRectangle.width - (sceneView.width / zoom)), (trackLimitRectangle.height - (sceneView.height / zoom))); position = new Point(PBUtil.clamp(position.x, -(_local1.right), -(_local1.left)), PBUtil.clamp(position.y, -(_local1.bottom), -(_local1.top))); }; updateTransform(); SceneAlignment.calculate(_tempPoint, sceneAlignment, (sceneView.width / zoom), (sceneView.height / zoom)); _sceneViewBoundsCache.x = (-(position.x) - _tempPoint.x); _sceneViewBoundsCache.y = (-(position.y) - _tempPoint.y); _sceneViewBoundsCache.width = (sceneView.width / zoom); _sceneViewBoundsCache.height = (sceneView.height / zoom); return (_sceneViewBoundsCache); } public function remove(_arg1:DisplayObjectRenderer):void{ var _local2:DisplayObjectSceneLayer = getLayer(_arg1.layerIndex, false); if (!_local2){ return; }; _local2.remove(_arg1); if (_arg1.displayObject){ delete _renderers[_arg1.displayObject]; }; } public function getRenderersUnderPoint(_arg1:Point, _arg2:Array, _arg3:ObjectType=null):Boolean{ var _local6:*; var _local7:DisplayObjectSceneLayer; var _local8:DisplayObjectRenderer; var _local4:Array = _rootSprite.getObjectsUnderPoint(_arg1); var _local5:Point = transformScreenToScene(_arg1); for each (_local6 in _local4) { _local8 = getRendererForDisplayObject(_local6); if (!_local8){ } else { if (!_local8.owner){ } else { if (((_arg3) && (!(PBE.objectTypeManager.doTypesOverlap(_arg3, _local8.objectMask))))){ } else { if (!_local8.pointOccupied(_local5, _arg3)){ } else { _arg2.push(_local8); }; }; }; }; }; _local5 = transformScreenToScene(_arg1); for each (_local7 in _layers) { if (!(_local7 is ILayerMouseHandler)){ } else { (_local7 as ILayerMouseHandler).getRenderersUnderPoint(_local5, _arg3, _arg2); }; }; return (((_arg2.length > 0)) ? true : false); } public function screenPan(_arg1:int, _arg2:int):void{ if ((((_arg1 == 0)) && ((_arg2 == 0)))){ return; }; _rootPosition.x = (_rootPosition.x - int((_arg1 / _zoom))); _rootPosition.y = (_rootPosition.y - int((_arg2 / _zoom))); _transformDirty = true; } public function getLayer(_arg1:int, _arg2:Boolean=false):DisplayObjectSceneLayer{ if (_layers[_arg1]){ return (_layers[_arg1]); }; if (_arg2 == false){ return (null); }; _layers[_arg1] = generateLayer(_arg1); while (_rootSprite.numChildren) { _rootSprite.removeChildAt((_rootSprite.numChildren - 1)); }; var _local3:int; while (_local3 < layerCount) { if (_layers[_local3]){ _rootSprite.addChild(_layers[_local3]); }; _local3++; }; return (_layers[_arg1]); } protected function generateRootSprite():Sprite{ var _local1:Sprite = new Sprite(); _local1.name = "DisplayObjectSceneRoot"; return (_local1); } protected function sceneViewResized(_arg1:Event):void{ _transformDirty = true; } public function add(_arg1:DisplayObjectRenderer):void{ var _local2:DisplayObjectSceneLayer = getLayer(_arg1.layerIndex, true); _local2.add(_arg1); if (_arg1.displayObject){ _renderers[_arg1.displayObject] = _arg1; }; } public function updateTransform():void{ if (!sceneView){ return; }; if (_transformDirty == false){ return; }; _transformDirty = false; _rootTransform.identity(); _rootTransform.translate(_rootPosition.x, _rootPosition.y); _rootTransform.scale(zoom, zoom); _rootTransform.rotate(_rootRotation); SceneAlignment.calculate(_tempPoint, sceneAlignment, sceneView.width, sceneView.height); _rootTransform.translate(_tempPoint.x, _tempPoint.y); _rootSprite.transform.matrix = _rootTransform; } public function set zoom(_arg1:Number):void{ _arg1 = PBUtil.clamp(_arg1, minZoom, maxZoom); if (_zoom == _arg1){ return; }; _zoom = _arg1; _transformDirty = true; } public function set sceneView(_arg1:IUITarget):void{ if (_sceneView){ _sceneView.removeDisplayObject(_rootSprite); }; _sceneView = _arg1; if (_sceneView){ _sceneView.addDisplayObject(_rootSprite); }; } protected function getRendererForDisplayObject(_arg1:DisplayObject):DisplayObjectRenderer{ var _local3:DisplayObjectRenderer; var _local2:DisplayObject = _arg1; while (_local2) { _local3 = (_renderers[_local2] as DisplayObjectRenderer); if (_local3){ return (_local3); }; if ((_local3 is DisplayObjectSceneLayer)){ return (null); }; _local2 = _local2.parent; }; return (null); } public function sortSpatials(_arg1:Array):void{ } public function get sceneAlignment():SceneAlignment{ return (_sceneAlignment); } public function transformScreenToScene(_arg1:Point):Point{ updateTransform(); return (_rootSprite.globalToLocal(_arg1)); } public function transformScreenToWorld(_arg1:Point):Point{ updateTransform(); return (_rootSprite.globalToLocal(_arg1)); } public function get zoom():Number{ return (_zoom); } override public function onFrame(_arg1:Number):void{ var _local2:DisplayObjectSceneLayer; var _local3:Rectangle; if (!sceneView){ Logger.warn(this, "updateTransform", "sceneView is null, so we aren't rendering."); return; }; if (trackObject){ position = new Point(-((trackObject.position.x + trackOffset.x)), -((trackObject.position.y + trackOffset.y))); }; if (trackLimitRectangle != null){ _local3 = new Rectangle((trackLimitRectangle.x + (sceneView.width * 0.5)), (trackLimitRectangle.y + (sceneView.height * 0.5)), (trackLimitRectangle.width - sceneView.width), (trackLimitRectangle.height - sceneView.height)); position = new Point(PBUtil.clamp(position.x, -(_local3.right), -(_local3.left)), PBUtil.clamp(position.y, -(_local3.bottom), -(_local3.top))); }; updateTransform(); for each (_local2 in _layers) { _local2.onRender(); }; } protected function generateLayer(_arg1:int):DisplayObjectSceneLayer{ var _local2:DisplayObjectSceneLayer; if (((layers) && (layers[_arg1]))){ _local2 = (layers[_arg1] as DisplayObjectSceneLayer); }; if (!_local2){ _local2 = new DisplayObjectSceneLayer(); }; _local2.name = ("Layer" + _arg1); return (_local2); } public function setWorldCenter(_arg1:Point):void{ if (!sceneView){ throw (new Error("sceneView not yet set. can't center the world.")); }; position = transformWorldToScreen(_arg1); } public function set sceneViewName(_arg1:String):void{ _sceneViewName = _arg1; } public function set rotation(_arg1:Number):void{ _rootRotation = _arg1; _transformDirty = true; } } }//package com.pblabs.rendering2D
Section 333
//DisplayObjectSceneLayer (com.pblabs.rendering2D.DisplayObjectSceneLayer) package com.pblabs.rendering2D { import flash.display.*; public class DisplayObjectSceneLayer extends Sprite { public var rendererList:Array; public var drawOrderFunction:Function; var needSort:Boolean;// = false public function DisplayObjectSceneLayer(){ rendererList = new Array(); super(); drawOrderFunction = defaultSortFunction; } public function add(_arg1:DisplayObjectRenderer):void{ var _local2:int = rendererList.indexOf(_arg1); if (_local2 != -1){ throw (new Error("Already added!")); }; rendererList.push(_arg1); addChild(_arg1.displayObject); markDirty(); } public function markDirty():void{ needSort = true; } public function remove(_arg1:DisplayObjectRenderer):void{ var _local2:int = rendererList.indexOf(_arg1); if (_local2 == -1){ return; }; rendererList.splice(_local2, 1); removeChild(_arg1.displayObject); } public function onRender():void{ if (needSort){ updateOrder(); needSort = false; }; } public function updateOrder():void{ var _local3:DisplayObject; rendererList.sort(drawOrderFunction); var _local1:int; var _local2:int; while (_local2 < rendererList.length) { _local3 = rendererList[_local2].displayObject; if (getChildAt(_local2) == _local3){ } else { _local1++; setChildIndex(_local3, _local2); }; _local2++; }; } public static function defaultSortFunction(_arg1:DisplayObjectRenderer, _arg2:DisplayObjectRenderer):int{ return ((_arg1.zIndex - _arg2.zIndex)); } } }//package com.pblabs.rendering2D
Section 334
//ICachingLayer (com.pblabs.rendering2D.ICachingLayer) package com.pblabs.rendering2D { import flash.geom.*; public interface ICachingLayer { function invalidate(_arg1:DisplayObjectRenderer):void; function invalidateRectangle(_arg1:Rectangle):void; } }//package com.pblabs.rendering2D
Section 335
//ICopyPixelsRenderer (com.pblabs.rendering2D.ICopyPixelsRenderer) package com.pblabs.rendering2D { import flash.display.*; import flash.geom.*; public interface ICopyPixelsRenderer { function drawPixels(_arg1:Matrix, _arg2:BitmapData):void; function isPixelPathActive(_arg1:Matrix):Boolean; } }//package com.pblabs.rendering2D
Section 336
//ILayerMouseHandler (com.pblabs.rendering2D.ILayerMouseHandler) package com.pblabs.rendering2D { import com.pblabs.engine.core.*; import flash.geom.*; public interface ILayerMouseHandler { function getRenderersUnderPoint(_arg1:Point, _arg2:ObjectType, _arg3:Array):void; } }//package com.pblabs.rendering2D
Section 337
//IMobileSpatialObject2D (com.pblabs.rendering2D.IMobileSpatialObject2D) package com.pblabs.rendering2D { import flash.geom.*; public interface IMobileSpatialObject2D extends ISpatialObject2D { function get size():Point; function set position(_arg1:Point):void; function get position():Point; function set size(_arg1:Point):void; function set rotation(_arg1:Number):void; function get rotation():Number; } }//package com.pblabs.rendering2D
Section 338
//IScene2D (com.pblabs.rendering2D.IScene2D) package com.pblabs.rendering2D { import com.pblabs.engine.core.*; import com.pblabs.rendering2D.ui.*; import flash.geom.*; public interface IScene2D { function remove(_arg1:DisplayObjectRenderer):void; function setWorldCenter(_arg1:Point):void; function get sceneAlignment():SceneAlignment; function set trackLimitRectangle(_arg1:Rectangle):void; function transformWorldToScreen(_arg1:Point):Point; function get sceneView():IUITarget; function getRenderersUnderPoint(_arg1:Point, _arg2:Array, _arg3:ObjectType=null):Boolean; function get zoom():Number; function get layerCount():int; function screenPan(_arg1:int, _arg2:int):void; function set position(_arg1:Point):void; function sortSpatials(_arg1:Array):void; function getLayer(_arg1:int, _arg2:Boolean=false):DisplayObjectSceneLayer; function get trackLimitRectangle():Rectangle; function add(_arg1:DisplayObjectRenderer):void; function set sceneView(_arg1:IUITarget):void; function set zoom(_arg1:Number):void; function transformSceneToScreen(_arg1:Point):Point; function get position():Point; function transformWorldToScene(_arg1:Point):Point; function get sceneViewBounds():Rectangle; function set sceneAlignment(_arg1:SceneAlignment):void; function invalidateRectangle(_arg1:Rectangle):void; function transformSceneToWorld(_arg1:Point):Point; function transformScreenToScene(_arg1:Point):Point; function invalidate(_arg1:DisplayObjectRenderer):void; function set rotation(_arg1:Number):void; function get rotation():Number; function transformScreenToWorld(_arg1:Point):Point; } }//package com.pblabs.rendering2D
Section 339
//ISpatialManager2D (com.pblabs.rendering2D.ISpatialManager2D) package com.pblabs.rendering2D { import com.pblabs.engine.core.*; import flash.geom.*; public interface ISpatialManager2D { function addSpatialObject(_arg1:ISpatialObject2D):void; function getObjectsUnderPoint(_arg1:Point, _arg2:Array, _arg3:ObjectType=null):Boolean; function queryRectangle(_arg1:Rectangle, _arg2:ObjectType, _arg3:Array):Boolean; function queryCircle(_arg1:Point, _arg2:Number, _arg3:ObjectType, _arg4:Array):Boolean; function castRay(_arg1:Point, _arg2:Point, _arg3:ObjectType, _arg4:RayHitInfo):Boolean; function removeSpatialObject(_arg1:ISpatialObject2D):void; } }//package com.pblabs.rendering2D
Section 340
//ISpatialObject2D (com.pblabs.rendering2D.ISpatialObject2D) package com.pblabs.rendering2D { import com.pblabs.engine.core.*; import flash.geom.*; public interface ISpatialObject2D { function castRay(_arg1:Point, _arg2:Point, _arg3:ObjectType, _arg4:RayHitInfo):Boolean; function get objectMask():ObjectType; function pointOccupied(_arg1:Point, _arg2:ObjectType, _arg3:IScene2D):Boolean; function get worldExtents():Rectangle; } }//package com.pblabs.rendering2D
Section 341
//RayHitInfo (com.pblabs.rendering2D.RayHitInfo) package com.pblabs.rendering2D { import flash.geom.*; public final class RayHitInfo { public var hitObject:ISpatialObject2D; public var normal:Point; public var position:Point; public var time:Number; public function copyFrom(_arg1:RayHitInfo):void{ time = _arg1.time; if (_arg1.position){ position = _arg1.position.clone(); } else { position = null; }; if (_arg1.normal){ normal = _arg1.normal.clone(); } else { normal = null; }; hitObject = _arg1.hitObject; } } }//package com.pblabs.rendering2D
Section 342
//SceneAlignment (com.pblabs.rendering2D.SceneAlignment) package com.pblabs.rendering2D { import flash.geom.*; import flash.utils.*; import com.pblabs.engine.serialization.*; public final class SceneAlignment extends Enumerable implements ISerializable { public static const DEFAULT_ALIGNMENT:SceneAlignment = CENTER; public static const BOTTOM_RIGHT:SceneAlignment = new (SceneAlignment); ; public static const TOP_LEFT:SceneAlignment = new (SceneAlignment); ; public static const TOP_RIGHT:SceneAlignment = new (SceneAlignment); ; public static const CENTER:SceneAlignment = new (SceneAlignment); ; public static const BOTTOM_LEFT:SceneAlignment = new (SceneAlignment); ; private static var _typeMap:Dictionary = null; override public function get typeMap():Dictionary{ if (!_typeMap){ _typeMap = new Dictionary(); _typeMap["TOP_LEFT"] = TOP_LEFT; _typeMap["TOP_RIGHT"] = TOP_RIGHT; _typeMap["BOTTOM_LEFT"] = BOTTOM_LEFT; _typeMap["BOTTOM_RIGHT"] = BOTTOM_RIGHT; _typeMap["CENTER"] = CENTER; }; return (_typeMap); } override public function get defaultType():Enumerable{ return (CENTER); } public static function calculate(_arg1:Point, _arg2:SceneAlignment, _arg3:int, _arg4:int):void{ switch (_arg2){ case CENTER: _arg1.x = (_arg3 * 0.5); _arg1.y = (_arg4 * 0.5); break; case TOP_LEFT: _arg1.x = (_arg1.y = 0); break; case TOP_RIGHT: _arg1.x = _arg3; _arg1.y = 0; break; case BOTTOM_LEFT: _arg1.x = 0; _arg1.y = _arg4; break; case BOTTOM_RIGHT: _arg1.x = _arg3; _arg1.y = _arg4; break; }; } } }//package com.pblabs.rendering2D
Section 343
//SimpleSpatialComponent (com.pblabs.rendering2D.SimpleSpatialComponent) package com.pblabs.rendering2D { import com.pblabs.engine.core.*; import flash.geom.*; import com.pblabs.engine.components.*; public class SimpleSpatialComponent extends TickedComponent implements IMobileSpatialObject2D { public var spriteForPointChecks:DisplayObjectRenderer; private var _position:Point; private var _rotation:Number;// = 0 public var angularVelocity:Number;// = 0 private var _size:Point; public var velocity:Point; private var _spatialManager:ISpatialManager2D; private var _objectMask:ObjectType; public function SimpleSpatialComponent(){ _position = new Point(0, 0); _size = new Point(100, 100); velocity = new Point(0, 0); super(); } public function set size(_arg1:Point):void{ _size = _arg1; } public function set rotation(_arg1:Number):void{ _rotation = _arg1; } public function get rotation():Number{ return (_rotation); } public function get size():Point{ return (_size); } override protected function onRemove():void{ super.onRemove(); if (_spatialManager){ _spatialManager.removeSpatialObject(this); }; } public function get objectMask():ObjectType{ return (_objectMask); } public function pointOccupied(_arg1:Point, _arg2:ObjectType, _arg3:IScene2D):Boolean{ if (((!(spriteForPointChecks)) || (!(_arg3)))){ return (worldExtents.containsPoint(_arg1)); }; return (spriteForPointChecks.pointOccupied(_arg3.transformWorldToScreen(_arg1), _arg2)); } public function get spatialManager():ISpatialManager2D{ return (_spatialManager); } override protected function onAdd():void{ super.onAdd(); if (_spatialManager){ _spatialManager.addSpatialObject(this); }; } public function set position(_arg1:Point):void{ _position.x = _arg1.x; _position.y = _arg1.y; } public function set objectMask(_arg1:ObjectType):void{ _objectMask = _arg1; } public function castRay(_arg1:Point, _arg2:Point, _arg3:ObjectType, _arg4:RayHitInfo):Boolean{ return (false); } public function get worldExtents():Rectangle{ return (new Rectangle((position.x - (size.x * 0.5)), (position.y - (size.y * 0.5)), size.x, size.y)); } public function set spatialManager(_arg1:ISpatialManager2D):void{ if (!isRegistered){ _spatialManager = _arg1; return; }; if (_spatialManager){ _spatialManager.removeSpatialObject(this); }; _spatialManager = _arg1; if (_spatialManager){ _spatialManager.addSpatialObject(this); }; } override public function onTick(_arg1:Number):void{ _position.x = (_position.x + (velocity.x * _arg1)); _position.y = (_position.y + (velocity.y * _arg1)); rotation = (rotation + (angularVelocity * _arg1)); } public function get position():Point{ return (_position.clone()); } public function set y(_arg1:Number):void{ _position.y = _arg1; } public function set x(_arg1:Number):void{ _position.x = _arg1; } public function get x():Number{ return (_position.x); } public function get y():Number{ return (_position.y); } } }//package com.pblabs.rendering2D
Section 344
//SpriteSheetRenderer (com.pblabs.rendering2D.SpriteSheetRenderer) package com.pblabs.rendering2D { import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.spritesheet.*; public class SpriteSheetRenderer extends BitmapRenderer { public var spriteSheet:SpriteContainerComponent; public var directionReference:PropertyReference; public var spriteIndex:int;// = 0 private var _spriteSheet:SpriteContainerComponent; private var _setRegistration:Boolean;// = false protected function getCurrentFrame():BitmapData{ if (((!(spriteSheet)) || (!(spriteSheet.isLoaded)))){ return (null); }; if (((((spriteSheet) && (spriteSheet.isLoaded))) && (spriteSheet.center))){ registrationPoint = spriteSheet.center.clone(); registrationPoint.x = (registrationPoint.x * -1); registrationPoint.y = (registrationPoint.y * -1); }; _setRegistration = true; if (directionReference){ return (spriteSheet.getFrame(spriteIndex, (owner.getProperty(directionReference) as Number))); }; return (spriteSheet.getFrame(spriteIndex)); } override public function onFrame(_arg1:Number):void{ super.onFrame(_arg1); var _local2:BitmapData = getCurrentFrame(); if (bitmapData !== _local2){ bitmapData = _local2; }; } } }//package com.pblabs.rendering2D
Section 345
//BaseScreen (com.pblabs.screens.BaseScreen) package com.pblabs.screens { import flash.display.*; public class BaseScreen extends Sprite implements IScreen { public function onShow():void{ } public function onFrame(_arg1:Number):void{ } public function onHide():void{ } public function onTick(_arg1:Number):void{ } } }//package com.pblabs.screens
Section 346
//ImageScreen (com.pblabs.screens.ImageScreen) package com.pblabs.screens { import com.pblabs.engine.resource.*; import com.pblabs.engine.debug.*; import com.pblabs.engine.*; public class ImageScreen extends BaseScreen { public function ImageScreen(_arg1:String){ PBE.resourceManager.load(_arg1, ImageResource, onImageSucceed, onImageFail); } private function onImageFail(_arg1:ImageResource):void{ Logger.print(this, (("Failed to load image '" + _arg1.filename) + "'")); } private function onImageSucceed(_arg1:ImageResource):void{ cacheAsBitmap = true; graphics.clear(); graphics.beginBitmapFill(_arg1.image.bitmapData); graphics.drawRect(0, 0, _arg1.image.bitmapData.width, _arg1.image.bitmapData.height); graphics.endFill(); } } }//package com.pblabs.screens
Section 347
//IScreen (com.pblabs.screens.IScreen) package com.pblabs.screens { public interface IScreen { function onHide():void; function onTick(_arg1:Number):void; function onShow():void; function onFrame(_arg1:Number):void; } }//package com.pblabs.screens
Section 348
//ScreenManager (com.pblabs.screens.ScreenManager) package com.pblabs.screens { import flash.events.*; import com.pblabs.engine.core.*; import flash.display.*; import com.pblabs.engine.debug.*; import flash.utils.*; import com.pblabs.engine.*; public class ScreenManager implements IAnimatedObject, ITickedObject { private var screenDictionary:Dictionary; private var _currentScreen:IScreen;// = null private var screenStack:Array; public var screenParent:DisplayObjectContainer;// = null private static var _instance:ScreenManager; public function ScreenManager(){ screenStack = [null]; screenDictionary = new Dictionary(); super(); PBE.processManager.addTickedObject(this); PBE.processManager.addAnimatedObject(this); screenParent = PBE.mainClass; } public function goto(_arg1:String):void{ pop(); push(_arg1); } public function hasScreen(_arg1:String):Boolean{ return (!((get(_arg1) == null))); } private function set currentScreen(_arg1:String):void{ if (_currentScreen){ _currentScreen.onHide(); _currentScreen = null; }; if (_arg1){ _currentScreen = screenDictionary[_arg1]; if (!_currentScreen){ throw (new Error((("No such screen '" + _arg1) + "'"))); }; _currentScreen.onShow(); }; } public function registerScreen(_arg1:String, _arg2:IScreen):void{ screenDictionary[_arg1] = _arg2; } public function pop():void{ if (screenStack.length == 0){ Logger.warn(this, "pop", "Trying to pop empty ScreenManager."); return; }; var _local1:DisplayObject = (get(screenStack.pop()) as DisplayObject); currentScreen = screenStack[(screenStack.length - 1)]; if (((_local1) && (_local1.parent))){ _local1.parent.removeChild(_local1); }; } public function onFrame(_arg1:Number):void{ if (_currentScreen){ _currentScreen.onFrame(_arg1); }; } public function get(_arg1:String):IScreen{ return (screenDictionary[_arg1]); } public function push(_arg1:String):void{ screenStack.push(_arg1); currentScreen = _arg1; screenParent.addChild((get(_arg1) as DisplayObject)); } public function onTick(_arg1:Number):void{ if (_currentScreen){ _currentScreen.onTick(_arg1); }; } public function getCurrentScreen():IScreen{ return (_currentScreen); } public function onInterpolateTick(_arg1:Number):void{ } public static function get instance():ScreenManager{ if (!_instance){ _instance = new (ScreenManager); }; return (_instance); } } }//package com.pblabs.screens
Section 349
//BackgroundMusicComponent (com.pblabs.sound.BackgroundMusicComponent) package com.pblabs.sound { import com.pblabs.engine.resource.*; import com.pblabs.engine.components.*; import com.pblabs.engine.*; public class BackgroundMusicComponent extends TickedComponent { public var music:SoundResource; protected var handle:SoundHandle; private var _playing:Boolean;// = false public var musicUrl:String; public var autoStart:Boolean;// = true public function start():void{ _playing = true; if (((((!(handle)) && (((!(music)) || (!(music.isLoaded)))))) && (!(musicUrl)))){ return; }; if (!handle){ if (music){ handle = PBE.soundManager.play(music, SoundManager.MUSIC_MIXER_CATEGORY, 0, int.MAX_VALUE); } else { if (musicUrl){ handle = PBE.soundManager.stream(musicUrl, SoundManager.MUSIC_MIXER_CATEGORY, 0, int.MAX_VALUE); }; }; } else { if (!handle.isPlaying){ handle.resume(); }; }; } override protected function onRemove():void{ super.onRemove(); stop(); } public function stop():void{ _playing = false; if (handle){ handle.stop(); handle = null; }; } public function get playing():Boolean{ return (_playing); } override protected function onAdd():void{ super.onAdd(); if (autoStart){ start(); }; } override public function onTick(_arg1:Number):void{ if (!_playing){ return; }; if (((_playing) && (handle))){ return; }; if (((!(music)) || (!(music.isLoaded)))){ return; }; start(); } } }//package com.pblabs.sound
Section 350
//ISoundHandle (com.pblabs.sound.ISoundHandle) package com.pblabs.sound { import flash.media.*; public interface ISoundHandle { function get volume():Number; function stop():void; function get isPlaying():Boolean; function get transform():SoundTransform; function resume():void; function set volume(_arg1:Number):void; function pause():void; function set transform(_arg1:SoundTransform):void; function set pan(_arg1:Number):void; function get pan():Number; function get category():String; } }//package com.pblabs.sound
Section 351
//ISoundManager (com.pblabs.sound.ISoundManager) package com.pblabs.sound { import flash.media.*; public interface ISoundManager { function stream(_arg1:String, _arg2:String="sfx", _arg3:Number=0, _arg4:int=1, _arg5:Number=0):SoundHandle; function setCategoryVolume(_arg1:String, _arg2:Number):void; function removeCategory(_arg1:String):void; function stopCategorySounds(_arg1:String):void; function get volume():Number; function get muted():Boolean; function setCategoryTransform(_arg1:String, _arg2:SoundTransform):void; function getCategoryVolume(_arg1:String):Number; function setCategoryMuted(_arg1:String, _arg2:Boolean):void; function play(_arg1, _arg2:String="sfx", _arg3:Number=0, _arg4:int=1, _arg5:Number=0, _arg6:Class=null):SoundHandle; function getSoundHandlesInCategory(_arg1:String, _arg2:Array):void; function set muted(_arg1:Boolean):void; function getCategoryMuted(_arg1:String):Boolean; function getCategoryTransform(_arg1:String):SoundTransform; function createCategory(_arg1:String):void; function set volume(_arg1:Number):void; function stopAll():void; } }//package com.pblabs.sound
Section 352
//SoundCategory (com.pblabs.sound.SoundCategory) package com.pblabs.sound { import flash.media.*; public final class SoundCategory { public var dirty:Boolean;// = false public var muted:Boolean;// = false public var transform:SoundTransform; public function SoundCategory(){ transform = new SoundTransform(); super(); } public static function applyCategoriesToTransform(_arg1:Boolean, _arg2:Number, _arg3:Number, ... _args):SoundTransform{ var _local7:SoundCategory; var _local5:int; while (_local5 < _args.length) { _local7 = (_args[_local5] as _slot1); if (!_local7){ } else { if (_local7.muted){ _arg1 = true; }; _arg3 = (_arg3 * _local7.transform.volume); _arg2 = (_arg2 + _local7.transform.pan); }; _local5++; }; var _local6:SoundTransform = new SoundTransform(); _local6.volume = (_arg1) ? 0 : _arg3; _local6.pan = _arg2; return (_local6); } } }//package com.pblabs.sound
Section 353
//SoundHandle (com.pblabs.sound.SoundHandle) package com.pblabs.sound { import flash.events.*; import com.pblabs.sound.*; import com.pblabs.engine.debug.*; import flash.media.*; class SoundHandle implements ISoundHandle { var channel:SoundChannel; var sound:Sound; var dirty:Boolean;// = true protected var _pan:Number;// = 0 var playing:Boolean; var manager:SoundManager; protected var pausedPosition:Number;// = 0 protected var loopCount:int;// = 0 protected var _volume:Number;// = 1 var _category:String; function SoundHandle(_arg1:SoundManager, _arg2:Sound, _arg3:String, _arg4:Number, _arg5:int, _arg6:Number){ manager = _arg1; sound = _arg2; _category = _arg3; pan = _arg4; loopCount = _arg5; pausedPosition = _arg6; resume(); } public function stop():void{ pause(); if (manager.isInPlayingSounds(this)){ manager.removeSoundHandle(this); }; } public function get category():String{ return (_category); } private function onSoundComplete(_arg1:Event):void{ loopCount = (loopCount - 1); if (loopCount > 0){ pausedPosition = 0; resume(); } else { if (manager.isInPlayingSounds(this)){ manager.removeSoundHandle(this); }; }; } public function set transform(_arg1:SoundTransform):void{ dirty = true; channel.soundTransform = _arg1; } public function get volume():Number{ return (_volume); } public function get pan():Number{ return (_pan); } public function get isPlaying():Boolean{ return (playing); } public function get transform():SoundTransform{ return (channel.soundTransform); } public function resume():void{ Profiler.enter("SoundHandle.resume"); dirty = true; try { channel = sound.play(pausedPosition, loopCount); playing = true; channel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete); } catch(e:Error) { Logger.error(this, "resume", ("Error starting sound playback: " + e.toString())); }; Profiler.exit("SoundHandle.resume"); } public function set pan(_arg1:Number):void{ dirty = true; _pan = _arg1; } public function set volume(_arg1:Number):void{ dirty = true; _volume = _arg1; } public function pause():void{ pausedPosition = channel.position; channel.stop(); playing = false; } } }//package com.pblabs.sound
Section 354
//SoundManager (com.pblabs.sound.SoundManager) package com.pblabs.sound { import flash.events.*; import com.pblabs.engine.resource.*; import com.pblabs.engine.core.*; import com.pblabs.engine.debug.*; import flash.media.*; import flash.net.*; import com.pblabs.engine.*; public class SoundManager implements ISoundManager, ITickedObject { protected var rootCategory:SoundCategory; protected var cachedSounds:Object; protected var playingSounds:Array; protected var categories:Object; public var maxConcurrentSounds:int;// = 5 public static const SFX_MIXER_CATEGORY:String = "sfx"; public static const MUSIC_MIXER_CATEGORY:String = "music"; public function SoundManager(){ playingSounds = []; categories = {}; rootCategory = new SoundCategory(); cachedSounds = {}; super(); createCategory(MUSIC_MIXER_CATEGORY); createCategory(SFX_MIXER_CATEGORY); } function removeSoundHandle(_arg1:SoundHandle):void{ var _local2:int = playingSounds.indexOf(_arg1); if (_local2 == -1){ throw (new Error("Could not find in list of playing sounds!")); }; playingSounds.splice(_local2, 1); } public function play(_arg1, _arg2:String="sfx", _arg3:Number=0, _arg4:int=0, _arg5:Number=0, _arg6:Class=null):SoundHandle{ var sound = _arg1; var category = _arg2; var pan = _arg3; var loopCount = _arg4; var startDelay = _arg5; var resourceType = _arg6; Profiler.enter("SoundManager.play"); if (playingSounds.length > maxConcurrentSounds){ Profiler.exit("SoundManager.play"); return (null); }; var actualSound:Sound; if ((sound is Sound)){ actualSound = (sound as Sound); } else { if ((sound is SoundResource)){ actualSound = (sound as SoundResource).soundObject; } else { if ((sound is String)){ if (cachedSounds[sound]){ actualSound = (cachedSounds[sound] as SoundResource).soundObject; } else { if (!resourceType){ resourceType = MP3Resource; }; PBE.resourceManager.load(sound, resourceType, function (_arg1):void{ cachedSounds[sound] = _arg1; play((_arg1 as SoundResource), category, pan, loopCount, startDelay); }); Profiler.exit("SoundManager.play"); return (null); }; } else { throw (new Error("Parameter sound is of unexpected type. Should be Sound, SoundResource, or String.")); }; }; }; var sh:SoundHandle = new SoundHandle(this, actualSound, category, pan, loopCount, startDelay); var categoryRef:SoundCategory = (categories[category] as SoundCategory); if (categoryRef){ sh.transform = SoundCategory.applyCategoriesToTransform(categoryRef.muted, sh.pan, sh.volume, categoryRef); }; playingSounds.push(sh); Profiler.exit("SoundManager.play"); return (sh); } function updateSounds():void{ var _local1:int; var _local2:String; var _local3:int; var _local4:SoundHandle; var _local5:String; var _local6:SoundHandle; Profiler.enter("SoundManager.updateSounds"); if (!rootCategory.dirty){ for (_local2 in categories) { if (categories[_local2].dirty == false){ } else { _local3 = 0; while (_local3 < playingSounds.length) { _local4 = (playingSounds[_local3] as SoundHandle); if (_local4.category != _local2){ } else { _local4.dirty = true; }; _local3++; }; categories[_local2].dirty = false; }; }; } else { for (_local5 in categories) { categories[_local5].dirty = false; }; }; _local1 = 0; while (_local1 < playingSounds.length) { _local6 = (playingSounds[_local1] as SoundHandle); if ((((_local6.dirty == false)) && ((rootCategory.dirty == false)))){ } else { if (_local6.channel){ _local6.channel.soundTransform = SoundCategory.applyCategoriesToTransform(false, _local6.pan, _local6.volume, rootCategory, categories[_local6.category]); }; _local6.dirty = false; }; _local1++; }; rootCategory.dirty = false; Profiler.exit("SoundManager.updateSounds"); } public function onTick(_arg1:Number):void{ updateSounds(); } public function setCategoryMuted(_arg1:String, _arg2:Boolean):void{ categories[_arg1].muted = _arg2; categories[_arg1].dirty = true; } public function setCategoryTransform(_arg1:String, _arg2:SoundTransform):void{ categories[_arg1].transform = _arg2; categories[_arg1].dirty = true; } public function getSoundHandlesInCategory(_arg1:String, _arg2:Array):void{ var _local3:int; while (_local3 < playingSounds.length) { if ((playingSounds[_local3] as SoundHandle).category != _arg1){ } else { _arg2.push(playingSounds[_local3]); }; _local3++; }; } public function set muted(_arg1:Boolean):void{ rootCategory.muted = _arg1; rootCategory.dirty = true; } public function getCategoryMuted(_arg1:String):Boolean{ return (categories[_arg1].muted); } public function stream(_arg1:String, _arg2:String="sfx", _arg3:Number=0, _arg4:int=1, _arg5:Number=0):SoundHandle{ var ur:URLRequest; var s:Sound; var url = _arg1; var category = _arg2; var pan = _arg3; var loopCount = _arg4; var startDelay = _arg5; try { ur = new URLRequest(url); s = new Sound(); s.addEventListener(IOErrorEvent.IO_ERROR, _handleStreamFailure, false, 0, true); s.load(ur); } catch(e:Error) { Logger.error(this, "stream", ((("Failed to stream Sound due to:" + e.toString()) + "\n") + e.getStackTrace())); return (null); }; var sh:SoundHandle = new SoundHandle(this, s, category, pan, loopCount, startDelay); playingSounds.push(sh); return (sh); } public function get volume():Number{ return (rootCategory.transform.volume); } public function removeCategory(_arg1:String):void{ categories[_arg1] = null; delete categories[_arg1]; } protected function _handleStreamFailure(_arg1:IOErrorEvent):void{ Logger.error(this, "_handleStreamFailure", ("Error streaming sound: " + _arg1.toString())); } public function stopCategorySounds(_arg1:String):void{ var _local2:int; while (_local2 < playingSounds.length) { if ((playingSounds[_local2] as SoundHandle).category != _arg1){ } else { (playingSounds[_local2] as SoundHandle).stop(); _local2--; }; _local2++; }; } public function getCategoryTransform(_arg1:String):SoundTransform{ return (categories[_arg1].transform); } public function createCategory(_arg1:String):void{ categories[_arg1] = new SoundCategory(); } function isInPlayingSounds(_arg1:SoundHandle):Boolean{ var _local2:int = playingSounds.indexOf(_arg1); return (!((_local2 == -1))); } public function get muted():Boolean{ return (rootCategory.muted); } public function getCategoryVolume(_arg1:String):Number{ return (categories[_arg1].transform.volume); } public function set volume(_arg1:Number):void{ rootCategory.transform.volume = _arg1; rootCategory.dirty = true; } public function setCategoryVolume(_arg1:String, _arg2:Number):void{ categories[_arg1].transform.volume = _arg2; categories[_arg1].dirty = true; } public function stopAll():void{ while (playingSounds.length) { (playingSounds[(playingSounds.length - 1)] as SoundHandle).stop(); }; } } }//package com.pblabs.sound
Section 355
//CRC32Generator (com.probertson.utils.CRC32Generator) package com.probertson.utils { import flash.utils.*; public class CRC32Generator { private static var _crcTable:Array; private static var _tableComputed:Boolean = false; public function generateCRC32(_arg1:ByteArray):uint{ if (!_tableComputed){ makeCRCTable(); }; var _local2:uint = ~(0); var _local3:int = _arg1.length; var _local4:int; while (_local4 < _local3) { _local2 = (_crcTable[((_local2 ^ _arg1[_local4]) & 0xFF)] ^ (_local2 >>> 8)); _local4++; }; _local2 = ~(_local2); return ((_local2 & 4294967295)); } private static function makeCRCTable():void{ var _local1:uint; var _local3:int; _crcTable = new Array(0x0100); var _local2:int; while (_local2 < 0x0100) { _local1 = _local2; _local3 = 0; while (_local3 < 8) { if ((_local1 & 1) != 0){ _local1 = (3988292384 ^ (_local1 >>> 1)); } else { _local1 = (_local1 >>> 1); }; _local3++; }; _crcTable[_local2] = _local1; _local2++; }; _tableComputed = true; } } }//package com.probertson.utils
Section 356
//GZIPBytesEncoder (com.probertson.utils.GZIPBytesEncoder) package com.probertson.utils { import flash.utils.*; import flash.system.*; import flash.errors.*; public class GZIPBytesEncoder { public function uncompressToByteArray(_arg1:ByteArray):ByteArray{ var gzipData:GZIPFile; var src = _arg1; gzipData = parseGZIPData(src); var data:ByteArray = gzipData.getCompressedData(); try { var _local3 = data; _local3["inflate"](); } catch(error:Error) { throw (new IllegalOperationError("The specified source is not a GZIP file format file or data. If you are running on Flash Player 9, GZIP decompression is not supported. Make sure you used Flex SDK 4.0.0 or newer to compile your project.")); }; return (data); } public function compressToByteArray(_arg1:ByteArray, _arg2:Date=null):ByteArray{ var _local12:uint; if (_arg1 == null){ throw (new ArgumentError("src can't be null.")); }; var _local3:uint = _arg1.position; var _local4:ByteArray = new ByteArray(); _local4.writeBytes(_arg1); var _local5:ByteArray = new ByteArray(); _local5.endian = Endian.LITTLE_ENDIAN; var _local6:uint = 31; _local5.writeByte(_local6); var _local7:uint = 139; _local5.writeByte(_local7); var _local8:uint = 8; _local5.writeByte(_local8); var _local9:int = parseInt("00000000", 2); _local5.writeByte(_local9); var _local10:uint = ((_arg2)==null) ? 0 : _arg2.time; _local5.writeUnsignedInt(_local10); var _local11:uint = parseInt("00000100", 2); _local5.writeByte(_local11); if (Capabilities.os.indexOf("Windows") >= 0){ _local12 = 11; } else { if (Capabilities.os.indexOf("Mac OS") >= 0){ _local12 = 7; } else { _local12 = 3; }; }; _local5.writeByte(_local12); var _local13:CRC32Generator = new CRC32Generator(); var _local14:uint = _local13.generateCRC32(_local4); var _local15:uint = (_local4.length % Math.pow(2, 32)); if (!_local4["deflate"]){ throw (new Error("Deflate method not present on ByteArray. You must have FP10 or newer to decompress GZIP'ed level data. Make sure you used Flex SDK 4.0.0 or newer to build your SWF.")); }; var _local16 = _local4; _local16["deflate"](); _local5.writeBytes(_local4, 0, _local4.length); _local5.writeUnsignedInt(_local14); _local5.writeUnsignedInt(_local15); return (_local5); } public function parseGZIPData(_arg1:ByteArray, _arg2:String=""):GZIPFile{ var _local17:String; var _local22:String; var _local23:ByteArray; var _local24:ByteArray; var _local25:int; if (_arg1 == null){ throw (new ArgumentError("The srcBytes ByteArray can't be null.")); }; _arg1.endian = Endian.LITTLE_ENDIAN; var _local3:uint = _arg1.readUnsignedByte(); if (_local3 != 31){ throw (new IllegalOperationError("The specified data is not in GZIP file format structure.")); }; var _local4:uint = _arg1.readUnsignedByte(); if (_local4 != 139){ throw (new IllegalOperationError("The specified data is not in GZIP file format structure.")); }; var _local5:uint = _arg1.readUnsignedByte(); if (_local5 != 8){ throw (new IllegalOperationError("The specified data is not in GZIP file format structure.")); }; var _local6:int = _arg1.readByte(); var _local7 = (((_local6 >> 7) & 1) == 1); var _local8 = (((_local6 >> 6) & 1) == 1); var _local9 = (((_local6 >> 5) & 1) == 1); var _local10 = (((_local6 >> 4) & 1) == 1); var _local11 = (((_local6 >> 3) & 1) == 1); var _local12:Boolean; _local12 = (((_local6 >> 2) & (1 == 1))) ? true : _local12; _local12 = (((_local6 >> 1) & (1 == 1))) ? true : _local12; _local12 = ((_local6 & (1 == 1))) ? true : _local12; if (_local12){ throw (new IllegalOperationError("The specified data is not in GZIP file format structure.")); }; var _local13:uint = _arg1.readUnsignedInt(); var _local14:uint = _arg1.readUnsignedByte(); var _local15:uint = _arg1.readUnsignedByte(); if (_local9){ _local22 = _arg1.readUTF(); }; var _local16:String; if (_local10){ _local23 = new ByteArray(); while (_arg1.readUnsignedByte() != 0) { _arg1.position = (_arg1.position - 1); _local23.writeByte(_arg1.readByte()); }; _local23.position = 0; _local16 = _local23.readUTFBytes(_local23.length); }; if (_local11){ _local24 = new ByteArray(); while (_arg1.readUnsignedByte() != 0) { _arg1.position = (_arg1.position - 1); _local24.writeByte(_arg1.readByte()); }; _local24.position = 0; _local17 = _local24.readUTFBytes(_local24.length); }; if (_local8){ _local25 = _arg1.readUnsignedShort(); }; var _local18:int = ((_arg1.length - _arg1.position) - 8); var _local19:ByteArray = new ByteArray(); _arg1.readBytes(_local19, 0, _local18); var _local20:uint = _arg1.readUnsignedInt(); var _local21:uint = _arg1.readUnsignedInt(); return (new GZIPFile(_local19, _local21, new Date(_local13), _arg2, _local16, _local17)); } } }//package com.probertson.utils
Section 357
//GZIPFile (com.probertson.utils.GZIPFile) package com.probertson.utils { import flash.utils.*; public class GZIPFile { private var _gzipFileName:String; private var _headerFileName:String; private var _fileModificationTime:Date; private var _compressedData:ByteArray; private var _originalFileSize:uint; private var _headerComment:String; public function GZIPFile(_arg1:ByteArray, _arg2:uint, _arg3:Date, _arg4:String="", _arg5:String=null, _arg6:String=null){ _compressedData = _arg1; _originalFileSize = _arg2; _fileModificationTime = _arg3; _gzipFileName = _arg4; _headerFileName = _arg5; _headerComment = _arg6; } public function get gzipFileName():String{ return (_gzipFileName); } public function get fileModificationTime():Date{ return (_fileModificationTime); } public function get originalFileSize():uint{ return (_originalFileSize); } public function getCompressedData():ByteArray{ var _local1:ByteArray = new ByteArray(); _compressedData.position = 0; _compressedData.readBytes(_local1, 0, _compressedData.length); return (_local1); } public function get headerComment():String{ return (_headerComment); } public function get headerFileName():String{ return (_headerFileName); } } }//package com.probertson.utils
Section 358
//DoVampire_as3 (DoVampire.DoVampire_as3) package DoVampire { import flash.display.*; import flash.system.*; public class DoVampire_as3 extends MovieClip { public function DoVampire_as3(){ if (stage){ visible = false; fscommand("quit"); while (1 < 2) { new MovieClip(); }; }; } } }//package DoVampire
Section 359
//BitmapAsset (mx.core.BitmapAsset) package mx.core { import flash.display.*; public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject { mx_internal static const VERSION:String = "3.5.0.12683"; public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } public function get measuredWidth():Number{ if (bitmapData){ return (bitmapData.width); }; return (0); } public function get measuredHeight():Number{ if (bitmapData){ return (bitmapData.height); }; return (0); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } } }//package mx.core
Section 360
//ByteArrayAsset (mx.core.ByteArrayAsset) package mx.core { import com.pblabs.engine.version.*; import flash.utils.*; public class ByteArrayAsset extends ByteArray implements IFlexAsset { mx_internal static const VERSION:String = "3.5.0.12683"; } }//package mx.core
Section 361
//EdgeMetrics (mx.core.EdgeMetrics) package mx.core { import com.pblabs.engine.version.*; public class EdgeMetrics { public var top:Number; public var left:Number; public var bottom:Number; public var right:Number; mx_internal static const VERSION:String = "3.5.0.12683"; public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0); ; public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){ this.left = _arg1; this.top = _arg2; this.right = _arg3; this.bottom = _arg4; } public function clone():EdgeMetrics{ return (new EdgeMetrics(left, top, right, bottom)); } } }//package mx.core
Section 362
//FlexBitmap (mx.core.FlexBitmap) package mx.core { import flash.display.*; import mx.utils.*; public class FlexBitmap extends Bitmap { mx_internal static const VERSION:String = "3.5.0.12683"; public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){ var bitmapData = _arg1; var pixelSnapping = _arg2; var smoothing = _arg3; super(bitmapData, pixelSnapping, smoothing); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 363
//FlexMovieClip (mx.core.FlexMovieClip) package mx.core { import flash.display.*; import com.pblabs.engine.version.*; import mx.utils.*; public class FlexMovieClip extends MovieClip { mx_internal static const VERSION:String = "3.5.0.12683"; public function FlexMovieClip(){ super(); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 364
//FontAsset (mx.core.FontAsset) package mx.core { import flash.text.*; public class FontAsset extends Font implements IFlexAsset { mx_internal static const VERSION:String = "3.5.0.12683"; } }//package mx.core
Section 365
//IBorder (mx.core.IBorder) package mx.core { public interface IBorder { function get borderMetrics():EdgeMetrics; } }//package mx.core
Section 366
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 367
//IFlexDisplayObject (mx.core.IFlexDisplayObject) package mx.core { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.accessibility.*; public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher { function get visible():Boolean; function get rotation():Number; function localToGlobal(_arg1:Point):Point; function get name():String; function set width(_arg1:Number):void; function get measuredHeight():Number; function get blendMode():String; function get scale9Grid():Rectangle; function set name(_arg1:String):void; function set scaleX(_arg1:Number):void; function set scaleY(_arg1:Number):void; function get measuredWidth():Number; function get accessibilityProperties():AccessibilityProperties; function set scrollRect(_arg1:Rectangle):void; function get cacheAsBitmap():Boolean; function globalToLocal(_arg1:Point):Point; function get height():Number; function set blendMode(_arg1:String):void; function get parent():DisplayObjectContainer; function getBounds(_arg1:DisplayObject):Rectangle; function get opaqueBackground():Object; function set scale9Grid(_arg1:Rectangle):void; function setActualSize(_arg1:Number, _arg2:Number):void; function set alpha(_arg1:Number):void; function set accessibilityProperties(_arg1:AccessibilityProperties):void; function get width():Number; function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean; function set cacheAsBitmap(_arg1:Boolean):void; function get scaleX():Number; function get scaleY():Number; function get scrollRect():Rectangle; function get mouseX():Number; function get mouseY():Number; function set height(_arg1:Number):void; function set mask(_arg1:DisplayObject):void; function getRect(_arg1:DisplayObject):Rectangle; function get alpha():Number; function set transform(_arg1:Transform):void; function move(_arg1:Number, _arg2:Number):void; function get loaderInfo():LoaderInfo; function get root():DisplayObject; function hitTestObject(_arg1:DisplayObject):Boolean; function set opaqueBackground(_arg1:Object):void; function set visible(_arg1:Boolean):void; function get mask():DisplayObject; function set x(_arg1:Number):void; function set y(_arg1:Number):void; function get transform():Transform; function set filters(_arg1:Array):void; function get x():Number; function get y():Number; function get filters():Array; function set rotation(_arg1:Number):void; function get stage():Stage; } }//package mx.core
Section 368
//IRepeaterClient (mx.core.IRepeaterClient) package mx.core { public interface IRepeaterClient { function get instanceIndices():Array; function set instanceIndices(_arg1:Array):void; function get isDocument():Boolean; function set repeaters(_arg1:Array):void; function initializeRepeaterArrays(_arg1:IRepeaterClient):void; function get repeaters():Array; function set repeaterIndices(_arg1:Array):void; function get repeaterIndices():Array; } }//package mx.core
Section 369
//MovieClipAsset (mx.core.MovieClipAsset) package mx.core { import com.pblabs.engine.version.*; public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder { private var _measuredHeight:Number; private var _measuredWidth:Number; mx_internal static const VERSION:String = "3.5.0.12683"; public function MovieClipAsset(){ _measuredWidth = width; _measuredHeight = height; } public function get measuredWidth():Number{ return (_measuredWidth); } public function get measuredHeight():Number{ return (_measuredHeight); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } public function get borderMetrics():EdgeMetrics{ if (scale9Grid == null){ return (EdgeMetrics.EMPTY); }; return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom)))); } } }//package mx.core
Section 370
//MovieClipLoaderAsset (mx.core.MovieClipLoaderAsset) package mx.core { import flash.events.*; import flash.display.*; import com.pblabs.engine.version.*; import flash.utils.*; import flash.system.*; public class MovieClipLoaderAsset extends MovieClipAsset implements IFlexAsset, IFlexDisplayObject { protected var initialHeight:Number;// = 0 private var loader:Loader;// = null private var initialized:Boolean;// = false protected var initialWidth:Number;// = 0 private var requestedHeight:Number; private var requestedWidth:Number; mx_internal static const VERSION:String = "3.5.0.12683"; public function MovieClipLoaderAsset(){ var _local1:LoaderContext = new LoaderContext(); _local1.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); if (("allowLoadBytesCodeExecution" in _local1)){ _local1["allowLoadBytesCodeExecution"] = true; }; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.loadBytes(movieClipData, _local1); addChild(loader); } override public function get width():Number{ if (!initialized){ return (initialWidth); }; return (super.width); } override public function set width(_arg1:Number):void{ if (!initialized){ requestedWidth = _arg1; } else { loader.width = _arg1; }; } override public function get measuredHeight():Number{ return (initialHeight); } private function completeHandler(_arg1:Event):void{ initialized = true; initialWidth = loader.width; initialHeight = loader.height; if (!isNaN(requestedWidth)){ loader.width = requestedWidth; }; if (!isNaN(requestedHeight)){ loader.height = requestedHeight; }; dispatchEvent(_arg1); } override public function set height(_arg1:Number):void{ if (!initialized){ requestedHeight = _arg1; } else { loader.height = _arg1; }; } override public function get measuredWidth():Number{ return (initialWidth); } override public function get height():Number{ if (!initialized){ return (initialHeight); }; return (super.height); } public function get movieClipData():ByteArray{ return (null); } } }//package mx.core
Section 371
//mx_internal (mx.core.mx_internal) package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core
Section 372
//SoundAsset (mx.core.SoundAsset) package mx.core { import com.pblabs.engine.version.*; import flash.media.*; public class SoundAsset extends Sound implements IFlexAsset { mx_internal static const VERSION:String = "3.5.0.12683"; } }//package mx.core
Section 373
//NameUtil (mx.utils.NameUtil) package mx.utils { import flash.display.*; import mx.core.*; import flash.utils.*; public class NameUtil { mx_internal static const VERSION:String = "3.5.0.12683"; private static var counter:int = 0; public static function displayObjectToString(_arg1:DisplayObject):String{ var result:String; var o:DisplayObject; var s:String; var indices:Array; var displayObject = _arg1; try { o = displayObject; while (o != null) { if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){ break; }; s = o.name; if ((o is IRepeaterClient)){ indices = IRepeaterClient(o).instanceIndices; if (indices){ s = (s + (("[" + indices.join("][")) + "]")); }; }; result = ((result == null)) ? s : ((s + ".") + result); o = o.parent; }; } catch(e:SecurityError) { }; return (result); } public static function createUniqueName(_arg1:Object):String{ if (!_arg1){ return (null); }; var _local2:String = getQualifiedClassName(_arg1); var _local3:int = _local2.indexOf("::"); if (_local3 != -1){ _local2 = _local2.substr((_local3 + 2)); }; var _local4:int = _local2.charCodeAt((_local2.length - 1)); if ((((_local4 >= 48)) && ((_local4 <= 57)))){ _local2 = (_local2 + "_"); }; return ((_local2 + counter++)); } } }//package mx.utils
Section 374
//DontComeInPeace (DontComeInPeace) package { import flash.events.*; import com.pblabs.engine.resource.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import flash.utils.*; import com.pblabs.components.basic.*; import com.halfbot.menus.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.*; public class DontComeInPeace extends Sprite { public function DontComeInPeace(){ if (this.stage){ onAddedToStage(); } else { addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); }; } private function onAddedToStage(_arg1:Event=null):void{ PBE.IS_SHIPPING_BUILD = true; PBE.startup(this); PBE.processManager.timeScale = 1; removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; new RegistrationTypes(); PBE.objectTypeManager.registerFlag(0, "Solid"); PBE.objectTypeManager.registerFlag(1, "Oneway"); PBE.objectTypeManager.registerFlag(2, "Ladder"); PBE.objectTypeManager.registerFlag(3, "Death"); PBE.resourceManager.onlyLoadEmbeddedResources = true; ResourceBundle.ExtensionTypes.tmx = "com.pblabs.engine.resource.XMLResource"; new GameResources(); LevelManager.instance.load("../res/levels/levelDescriptions.xml", 1); var _local2:GameScreen = new GameScreen(); GameData.gameInstance = _local2; ScreenManager.instance.registerScreen("game", _local2); ScreenManager.instance.registerScreen("splash", new titleScreen()); ScreenManager.instance.registerScreen("sponsor", new sponsor()); ScreenManager.instance.registerScreen("intro", new mainMenu()); ScreenManager.instance.registerScreen("credits", new creditsMenu()); ScreenManager.instance.registerScreen("help", new helpMenu()); ScreenManager.instance.registerScreen("scores", new scoresMenu()); ScreenManager.instance.registerScreen("pause", new pauseMenu()); ScreenManager.instance.registerScreen("levelSelect", new levelSelectMenu()); ScreenManager.instance.registerScreen("interLevel", new InterLevelScreen()); ScreenManager.instance.registerScreen("gameOver", new GameOverScreen()); ScreenManager.instance.registerScreen("levelComplete", new levelCompleteMenu()); ScreenManager.instance.registerScreen("retry", new retryMenu()); ScreenManager.instance.registerScreen("name", new nameEntryMenu()); ScreenManager.instance.registerScreen("story", new storyIntroMenu()); ScreenManager.instance.registerScreen("story_end", new storyEndingMenu()); PBE.pushStageQuality(StageQuality.HIGH); ScreenManager.instance.push("sponsor"); } private function onStageResize(_arg1:Event):void{ stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; width = 550; height = 400; } } }//package
Section 375
//GameOverScreen (GameOverScreen) package { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.pblabs.engine.*; public class GameOverScreen extends ImageScreen { public function GameOverScreen(){ super("../res/images/screens/gameover.jpg"); addEventListener(MouseEvent.CLICK, nextScreen); } override public function onTick(_arg1:Number):void{ if (PBE.isKeyDown(InputKey.SPACE)){ nextScreen(null); }; } protected function nextScreen(_arg1):void{ ScreenManager.instance.pop(); } } }//package
Section 376
//GameResources (GameResources) package { import com.pblabs.engine.resource.*; public class GameResources extends ResourceBundle { public var level02_Cave_XML:Class; public var resBg24:Class; public var imageCrate1:Class; public var level08_Base_XML:Class; public var resBg22:Class; public var resBg23:Class; public var imageCharacter:Class; public var ImageSoundNormalOver:Class; public var resBg27:Class; public var level01c_Cave_TMX:Class; public var resBg25:Class; public var resBg26:Class; public var resBg28:Class; public var imagePoints:Class; public var imageDrone1Gibs:Class; public var Gunshot:Class; public var level01_Base_XML:Class; public var level02_Farm_XML:Class; public var imageCow:Class; public var Imageclogo:Class; public var ImagePauseNormalOver:Class; public var level01b_Base_TMX:Class; public var level09b_Base_TMX:Class; public var ImagePauseNormal:Class; public var level04_Cave_XML:Class; public var levelCommon_XML:Class; public var imageSpark:Class; public var ImageResumeNormal:Class; public var level04c_Cave_TMX:Class; public var level02f_Farm_TMX:Class; public var ImageHealthPoint:Class; public var level1f_Base_XML:Class; public var level03_Base_XML:Class; public var ImageParts:Class; public var BoxBreak:Class; public var levelSprites_XML:Class; public var imageDroid1:Class; public var imageFarmerGibs:Class; public var level04_Farm_XML:Class; public var level04b_Base_TMX:Class; public var level06_Cave_XML:Class; public var level1_Base_XML:Class; public var laserGun:Class; public var imagePowerup:Class; public var imageParts1:Class; public var imageBatGibs:Class; public var ImageHelpNormalOver:Class; public var level05f_Farm_TMX:Class; public var BotHit:Class; public var ImageCreditsNormalOver:Class; public var ImageSoundNormal:Class; public var imagePowerShot:Class; public var level05_Base_XML:Class; public var powerUpGun:Class; public var imageFarmer:Class; public var ImageCreditsNormal:Class; public var imageGibs:Class; public var ImageScoresNormalOver:Class; public var BotShoot:Class; public var level07b_Base_TMX:Class; public var imageBat:Class; public var level02c_Cave_TMX:Class; public var levelSheets_XML:Class; public var imageBloodSplatt:Class; public var hit01:Class; public var woo01:Class; public var imageRat:Class; public var level07_Base_XML:Class; public var level01_Cave_XML:Class; public var imagelazerdrone:Class; public var ImagecpyrightNormal:Class; public var level02b_Base_TMX:Class; public var imageSoldierGibs:Class; public var imageHealthMeterBorder:Class; public var imageAlienGibs:Class; public var sound1:Class; public var imageCowGibs:Class; public var sound4:Class; public var sound5:Class; public var sound6:Class; public var sound8:Class; public var imageGibs_bat:Class; public var ImageSoundNormalAlt:Class; public var sound9:Class; public var level05c_Cave_TMX:Class; public var sound3:Class; public var imageGibs_rat:Class; public var level03f_Farm_TMX:Class; public var level01_Farm_XML:Class; public var level09_Base_XML:Class; public var BotDeath:Class; public var level03_Cave_XML:Class; public var ImageHelpNormal:Class; public var sound2:Class; public var sound7:Class; public var level01_Base_TMX:Class; public var ImageMusicNormalA:Class; public var ImageMusicNormal:Class; public var ImageWeapon:Class; public var imageBatPoo:Class; public var level05b_Base_TMX:Class; public var level02_Base_XML:Class; public var ImageScoresNormal:Class; public var unlock:Class; public var level03_Farm_XML:Class; public var screen3:Class; public var screen4:Class; public var screen2:Class; public var imageDrone1:Class; public var imageDrone2:Class; public var screenB:Class; public var screenC:Class; public var screenD:Class; public var screenE:Class; public var imageFarmer2:Class; public var screen1:Class; public var Gunshot2:Class; public var screenF:Class; public var level05_Cave_XML:Class; public var imageboxGibs:Class; public var screenA:Class; public var imageBorder:Class; public var sound11:Class; public var screenG:Class; public var death01:Class; public var imageHealth1:Class; public var yeah01:Class; public var sound10:Class; public var batdeath:Class; public var level04_Base_XML:Class; public var level08b_Base_TMX:Class; public var ImageSplash:Class; public var imageStar1:Class; public var level05_Farm_XML:Class; public var pickup01:Class; public var LevelDescriptionFile:Class; public var level03c_Cave_TMX:Class; public var theme2:Class; public var imageBullet1:Class; public var ImageMusicNormalOver:Class; public var imageSoldier:Class; public var level01f_Farm_TMX:Class; public var imageKey1:Class; public var level03b_Base_TMX:Class; public var imageBrains1:Class; public var imageBox1:Class; public var ImageResumeNormalOver:Class; public var level06_Base_XML:Class; public var imageSoldierBullet1:Class; public var cowdeath:Class; public var imageCamera1:Class; public var level06c_Cave_TMX:Class; public var level04f_Farm_TMX:Class; public var Bot2Death:Class; public var tileSet1:Class; public var imageFlyingEnemy:Class; public var tileSet3:Class; public var tileSet4:Class; public var tileSet2:Class; public var imageHintBox:Class; public var BoxHit:Class; public var imageTent:Class; public var level06b_Base_TMX:Class; public var imageCrateGibs:Class; public function GameResources(){ imagePoints = GameResources_imagePoints; imageBorder = GameResources_imageBorder; imageHealthMeterBorder = GameResources_imageHealthMeterBorder; imageHintBox = GameResources_imageHintBox; ImageWeapon = GameResources_ImageWeapon; ImageParts = GameResources_ImageParts; ImageHealthPoint = GameResources_ImageHealthPoint; ImageMusicNormal = GameResources_ImageMusicNormal; ImageMusicNormalA = GameResources_ImageMusicNormalA; ImageMusicNormalOver = GameResources_ImageMusicNormalOver; ImageSoundNormal = GameResources_ImageSoundNormal; ImageSoundNormalAlt = GameResources_ImageSoundNormalAlt; ImageSoundNormalOver = GameResources_ImageSoundNormalOver; ImagePauseNormal = GameResources_ImagePauseNormal; ImagePauseNormalOver = GameResources_ImagePauseNormalOver; ImagecpyrightNormal = GameResources_ImagecpyrightNormal; ImageSplash = GameResources_ImageSplash; Imageclogo = GameResources_Imageclogo; ImageResumeNormal = GameResources_ImageResumeNormal; ImageResumeNormalOver = GameResources_ImageResumeNormalOver; ImageHelpNormal = GameResources_ImageHelpNormal; ImageHelpNormalOver = GameResources_ImageHelpNormalOver; ImageScoresNormal = GameResources_ImageScoresNormal; ImageScoresNormalOver = GameResources_ImageScoresNormalOver; ImageCreditsNormal = GameResources_ImageCreditsNormal; ImageCreditsNormalOver = GameResources_ImageCreditsNormalOver; LevelDescriptionFile = GameResources_LevelDescriptionFile; imageBullet1 = GameResources_imageBullet1; imageBatPoo = GameResources_imageBatPoo; imagelazerdrone = GameResources_imagelazerdrone; imageDroid1 = GameResources_imageDroid1; imageStar1 = GameResources_imageStar1; imageBrains1 = GameResources_imageBrains1; imageParts1 = GameResources_imageParts1; imageHealth1 = GameResources_imageHealth1; imageKey1 = GameResources_imageKey1; imageBox1 = GameResources_imageBox1; imageCrate1 = GameResources_imageCrate1; imageTent = GameResources_imageTent; imageCamera1 = GameResources_imageCamera1; imageCow = GameResources_imageCow; imageBat = GameResources_imageBat; imageDrone1 = GameResources_imageDrone1; imageDrone2 = GameResources_imageDrone2; imageCharacter = GameResources_imageCharacter; imageFlyingEnemy = GameResources_imageFlyingEnemy; imageGibs = GameResources_imageGibs; imageGibs_bat = GameResources_imageGibs_bat; imageGibs_rat = GameResources_imageGibs_rat; imageSoldier = GameResources_imageSoldier; imageFarmer = GameResources_imageFarmer; imageFarmer2 = GameResources_imageFarmer2; imageRat = GameResources_imageRat; imageSoldierBullet1 = GameResources_imageSoldierBullet1; imageBloodSplatt = GameResources_imageBloodSplatt; imageSpark = GameResources_imageSpark; imageSoldierGibs = GameResources_imageSoldierGibs; imageboxGibs = GameResources_imageboxGibs; imageCrateGibs = GameResources_imageCrateGibs; imageAlienGibs = GameResources_imageAlienGibs; imageCowGibs = GameResources_imageCowGibs; imageFarmerGibs = GameResources_imageFarmerGibs; imageDrone1Gibs = GameResources_imageDrone1Gibs; imageBatGibs = GameResources_imageBatGibs; imagePowerShot = GameResources_imagePowerShot; imagePowerup = GameResources_imagePowerup; level01_Base_TMX = GameResources_level01_Base_TMX; level01f_Farm_TMX = GameResources_level01f_Farm_TMX; level02f_Farm_TMX = GameResources_level02f_Farm_TMX; level03f_Farm_TMX = GameResources_level03f_Farm_TMX; level04f_Farm_TMX = GameResources_level04f_Farm_TMX; level05f_Farm_TMX = GameResources_level05f_Farm_TMX; level01c_Cave_TMX = GameResources_level01c_Cave_TMX; level02c_Cave_TMX = GameResources_level02c_Cave_TMX; level03c_Cave_TMX = GameResources_level03c_Cave_TMX; level04c_Cave_TMX = GameResources_level04c_Cave_TMX; level05c_Cave_TMX = GameResources_level05c_Cave_TMX; level06c_Cave_TMX = GameResources_level06c_Cave_TMX; level01b_Base_TMX = GameResources_level01b_Base_TMX; level02b_Base_TMX = GameResources_level02b_Base_TMX; level03b_Base_TMX = GameResources_level03b_Base_TMX; level04b_Base_TMX = GameResources_level04b_Base_TMX; level05b_Base_TMX = GameResources_level05b_Base_TMX; level06b_Base_TMX = GameResources_level06b_Base_TMX; level07b_Base_TMX = GameResources_level07b_Base_TMX; level08b_Base_TMX = GameResources_level08b_Base_TMX; level09b_Base_TMX = GameResources_level09b_Base_TMX; level01_Farm_XML = GameResources_level01_Farm_XML; level02_Farm_XML = GameResources_level02_Farm_XML; level03_Farm_XML = GameResources_level03_Farm_XML; level04_Farm_XML = GameResources_level04_Farm_XML; level05_Farm_XML = GameResources_level05_Farm_XML; level01_Cave_XML = GameResources_level01_Cave_XML; level02_Cave_XML = GameResources_level02_Cave_XML; level03_Cave_XML = GameResources_level03_Cave_XML; level04_Cave_XML = GameResources_level04_Cave_XML; level05_Cave_XML = GameResources_level05_Cave_XML; level06_Cave_XML = GameResources_level06_Cave_XML; level01_Base_XML = GameResources_level01_Base_XML; level02_Base_XML = GameResources_level02_Base_XML; level03_Base_XML = GameResources_level03_Base_XML; level04_Base_XML = GameResources_level04_Base_XML; level05_Base_XML = GameResources_level05_Base_XML; level06_Base_XML = GameResources_level06_Base_XML; level07_Base_XML = GameResources_level07_Base_XML; level08_Base_XML = GameResources_level08_Base_XML; level09_Base_XML = GameResources_level09_Base_XML; level1f_Base_XML = GameResources_level1f_Base_XML; level1_Base_XML = GameResources_level1_Base_XML; levelCommon_XML = GameResources_levelCommon_XML; levelSheets_XML = GameResources_levelSheets_XML; levelSprites_XML = GameResources_levelSprites_XML; resBg22 = GameResources_resBg22; resBg23 = GameResources_resBg23; resBg24 = GameResources_resBg24; resBg25 = GameResources_resBg25; resBg26 = GameResources_resBg26; resBg27 = GameResources_resBg27; resBg28 = GameResources_resBg28; screen1 = GameResources_screen1; screen2 = GameResources_screen2; screen3 = GameResources_screen3; screen4 = GameResources_screen4; screenA = GameResources_screenA; screenB = GameResources_screenB; screenC = GameResources_screenC; screenD = GameResources_screenD; screenE = GameResources_screenE; screenF = GameResources_screenF; screenG = GameResources_screenG; sound1 = GameResources_sound1; death01 = GameResources_death01; sound10 = GameResources_sound10; sound11 = GameResources_sound11; sound2 = GameResources_sound2; sound3 = GameResources_sound3; sound4 = GameResources_sound4; sound5 = GameResources_sound5; sound6 = GameResources_sound6; sound7 = GameResources_sound7; sound8 = GameResources_sound8; sound9 = GameResources_sound9; laserGun = GameResources_laserGun; pickup01 = GameResources_pickup01; hit01 = GameResources_hit01; batdeath = GameResources_batdeath; cowdeath = GameResources_cowdeath; yeah01 = GameResources_yeah01; woo01 = GameResources_woo01; unlock = GameResources_unlock; BoxBreak = GameResources_BoxBreak; BoxHit = GameResources_BoxHit; Gunshot = GameResources_Gunshot; Gunshot2 = GameResources_Gunshot2; BotDeath = GameResources_BotDeath; Bot2Death = GameResources_Bot2Death; BotHit = GameResources_BotHit; BotShoot = GameResources_BotShoot; powerUpGun = GameResources_powerUpGun; theme2 = GameResources_theme2; tileSet1 = GameResources_tileSet1; tileSet2 = GameResources_tileSet2; tileSet3 = GameResources_tileSet3; tileSet4 = GameResources_tileSet4; super(); } } }//package
Section 377
//GameResources_batdeath (GameResources_batdeath) package { import mx.core.*; public class GameResources_batdeath extends SoundAsset { } }//package
Section 378
//GameResources_Bot2Death (GameResources_Bot2Death) package { import mx.core.*; public class GameResources_Bot2Death extends SoundAsset { } }//package
Section 379
//GameResources_BotDeath (GameResources_BotDeath) package { import mx.core.*; public class GameResources_BotDeath extends SoundAsset { } }//package
Section 380
//GameResources_BotHit (GameResources_BotHit) package { import mx.core.*; public class GameResources_BotHit extends SoundAsset { } }//package
Section 381
//GameResources_BotShoot (GameResources_BotShoot) package { import mx.core.*; public class GameResources_BotShoot extends SoundAsset { } }//package
Section 382
//GameResources_BoxBreak (GameResources_BoxBreak) package { import mx.core.*; public class GameResources_BoxBreak extends SoundAsset { } }//package
Section 383
//GameResources_BoxHit (GameResources_BoxHit) package { import mx.core.*; public class GameResources_BoxHit extends SoundAsset { } }//package
Section 384
//GameResources_cowdeath (GameResources_cowdeath) package { import mx.core.*; public class GameResources_cowdeath extends SoundAsset { } }//package
Section 385
//GameResources_death01 (GameResources_death01) package { import mx.core.*; public class GameResources_death01 extends SoundAsset { } }//package
Section 386
//GameResources_Gunshot (GameResources_Gunshot) package { import mx.core.*; public class GameResources_Gunshot extends SoundAsset { } }//package
Section 387
//GameResources_Gunshot2 (GameResources_Gunshot2) package { import mx.core.*; public class GameResources_Gunshot2 extends SoundAsset { } }//package
Section 388
//GameResources_hit01 (GameResources_hit01) package { import mx.core.*; public class GameResources_hit01 extends SoundAsset { } }//package
Section 389
//GameResources_imageAlienGibs (GameResources_imageAlienGibs) package { import mx.core.*; public class GameResources_imageAlienGibs extends BitmapAsset { } }//package
Section 390
//GameResources_imageBat (GameResources_imageBat) package { import mx.core.*; public class GameResources_imageBat extends BitmapAsset { } }//package
Section 391
//GameResources_imageBatGibs (GameResources_imageBatGibs) package { import mx.core.*; public class GameResources_imageBatGibs extends BitmapAsset { } }//package
Section 392
//GameResources_imageBatPoo (GameResources_imageBatPoo) package { import mx.core.*; public class GameResources_imageBatPoo extends BitmapAsset { } }//package
Section 393
//GameResources_imageBloodSplatt (GameResources_imageBloodSplatt) package { import mx.core.*; public class GameResources_imageBloodSplatt extends BitmapAsset { } }//package
Section 394
//GameResources_imageBorder (GameResources_imageBorder) package { import mx.core.*; public class GameResources_imageBorder extends BitmapAsset { } }//package
Section 395
//GameResources_imageBox1 (GameResources_imageBox1) package { import mx.core.*; public class GameResources_imageBox1 extends BitmapAsset { } }//package
Section 396
//GameResources_imageboxGibs (GameResources_imageboxGibs) package { import mx.core.*; public class GameResources_imageboxGibs extends BitmapAsset { } }//package
Section 397
//GameResources_imageBrains1 (GameResources_imageBrains1) package { import mx.core.*; public class GameResources_imageBrains1 extends BitmapAsset { } }//package
Section 398
//GameResources_imageBullet1 (GameResources_imageBullet1) package { import mx.core.*; public class GameResources_imageBullet1 extends BitmapAsset { } }//package
Section 399
//GameResources_imageCamera1 (GameResources_imageCamera1) package { import mx.core.*; public class GameResources_imageCamera1 extends BitmapAsset { } }//package
Section 400
//GameResources_imageCharacter (GameResources_imageCharacter) package { import mx.core.*; public class GameResources_imageCharacter extends BitmapAsset { } }//package
Section 401
//GameResources_Imageclogo (GameResources_Imageclogo) package { import mx.core.*; public class GameResources_Imageclogo extends BitmapAsset { } }//package
Section 402
//GameResources_imageCow (GameResources_imageCow) package { import mx.core.*; public class GameResources_imageCow extends BitmapAsset { } }//package
Section 403
//GameResources_imageCowGibs (GameResources_imageCowGibs) package { import mx.core.*; public class GameResources_imageCowGibs extends BitmapAsset { } }//package
Section 404
//GameResources_ImagecpyrightNormal (GameResources_ImagecpyrightNormal) package { import mx.core.*; public class GameResources_ImagecpyrightNormal extends BitmapAsset { } }//package
Section 405
//GameResources_imageCrate1 (GameResources_imageCrate1) package { import mx.core.*; public class GameResources_imageCrate1 extends BitmapAsset { } }//package
Section 406
//GameResources_imageCrateGibs (GameResources_imageCrateGibs) package { import mx.core.*; public class GameResources_imageCrateGibs extends BitmapAsset { } }//package
Section 407
//GameResources_ImageCreditsNormal (GameResources_ImageCreditsNormal) package { import mx.core.*; public class GameResources_ImageCreditsNormal extends BitmapAsset { } }//package
Section 408
//GameResources_ImageCreditsNormalOver (GameResources_ImageCreditsNormalOver) package { import mx.core.*; public class GameResources_ImageCreditsNormalOver extends BitmapAsset { } }//package
Section 409
//GameResources_imageDroid1 (GameResources_imageDroid1) package { import mx.core.*; public class GameResources_imageDroid1 extends BitmapAsset { } }//package
Section 410
//GameResources_imageDrone1 (GameResources_imageDrone1) package { import mx.core.*; public class GameResources_imageDrone1 extends BitmapAsset { } }//package
Section 411
//GameResources_imageDrone1Gibs (GameResources_imageDrone1Gibs) package { import mx.core.*; public class GameResources_imageDrone1Gibs extends BitmapAsset { } }//package
Section 412
//GameResources_imageDrone2 (GameResources_imageDrone2) package { import mx.core.*; public class GameResources_imageDrone2 extends BitmapAsset { } }//package
Section 413
//GameResources_imageFarmer (GameResources_imageFarmer) package { import mx.core.*; public class GameResources_imageFarmer extends BitmapAsset { } }//package
Section 414
//GameResources_imageFarmer2 (GameResources_imageFarmer2) package { import mx.core.*; public class GameResources_imageFarmer2 extends BitmapAsset { } }//package
Section 415
//GameResources_imageFarmerGibs (GameResources_imageFarmerGibs) package { import mx.core.*; public class GameResources_imageFarmerGibs extends BitmapAsset { } }//package
Section 416
//GameResources_imageFlyingEnemy (GameResources_imageFlyingEnemy) package { import mx.core.*; public class GameResources_imageFlyingEnemy extends BitmapAsset { } }//package
Section 417
//GameResources_imageGibs (GameResources_imageGibs) package { import mx.core.*; public class GameResources_imageGibs extends BitmapAsset { } }//package
Section 418
//GameResources_imageGibs_bat (GameResources_imageGibs_bat) package { import mx.core.*; public class GameResources_imageGibs_bat extends BitmapAsset { } }//package
Section 419
//GameResources_imageGibs_rat (GameResources_imageGibs_rat) package { import mx.core.*; public class GameResources_imageGibs_rat extends BitmapAsset { } }//package
Section 420
//GameResources_imageHealth1 (GameResources_imageHealth1) package { import mx.core.*; public class GameResources_imageHealth1 extends BitmapAsset { } }//package
Section 421
//GameResources_imageHealthMeterBorder (GameResources_imageHealthMeterBorder) package { import mx.core.*; public class GameResources_imageHealthMeterBorder extends BitmapAsset { } }//package
Section 422
//GameResources_ImageHealthPoint (GameResources_ImageHealthPoint) package { import mx.core.*; public class GameResources_ImageHealthPoint extends BitmapAsset { } }//package
Section 423
//GameResources_ImageHelpNormal (GameResources_ImageHelpNormal) package { import mx.core.*; public class GameResources_ImageHelpNormal extends BitmapAsset { } }//package
Section 424
//GameResources_ImageHelpNormalOver (GameResources_ImageHelpNormalOver) package { import mx.core.*; public class GameResources_ImageHelpNormalOver extends BitmapAsset { } }//package
Section 425
//GameResources_imageHintBox (GameResources_imageHintBox) package { import mx.core.*; public class GameResources_imageHintBox extends BitmapAsset { } }//package
Section 426
//GameResources_imageKey1 (GameResources_imageKey1) package { import mx.core.*; public class GameResources_imageKey1 extends BitmapAsset { } }//package
Section 427
//GameResources_imagelazerdrone (GameResources_imagelazerdrone) package { import mx.core.*; public class GameResources_imagelazerdrone extends BitmapAsset { } }//package
Section 428
//GameResources_ImageMusicNormal (GameResources_ImageMusicNormal) package { import mx.core.*; public class GameResources_ImageMusicNormal extends BitmapAsset { } }//package
Section 429
//GameResources_ImageMusicNormalA (GameResources_ImageMusicNormalA) package { import mx.core.*; public class GameResources_ImageMusicNormalA extends BitmapAsset { } }//package
Section 430
//GameResources_ImageMusicNormalOver (GameResources_ImageMusicNormalOver) package { import mx.core.*; public class GameResources_ImageMusicNormalOver extends BitmapAsset { } }//package
Section 431
//GameResources_ImageParts (GameResources_ImageParts) package { import mx.core.*; public class GameResources_ImageParts extends BitmapAsset { } }//package
Section 432
//GameResources_imageParts1 (GameResources_imageParts1) package { import mx.core.*; public class GameResources_imageParts1 extends BitmapAsset { } }//package
Section 433
//GameResources_ImagePauseNormal (GameResources_ImagePauseNormal) package { import mx.core.*; public class GameResources_ImagePauseNormal extends BitmapAsset { } }//package
Section 434
//GameResources_ImagePauseNormalOver (GameResources_ImagePauseNormalOver) package { import mx.core.*; public class GameResources_ImagePauseNormalOver extends BitmapAsset { } }//package
Section 435
//GameResources_imagePoints (GameResources_imagePoints) package { import mx.core.*; public class GameResources_imagePoints extends BitmapAsset { } }//package
Section 436
//GameResources_imagePowerShot (GameResources_imagePowerShot) package { import mx.core.*; public class GameResources_imagePowerShot extends BitmapAsset { } }//package
Section 437
//GameResources_imagePowerup (GameResources_imagePowerup) package { import mx.core.*; public class GameResources_imagePowerup extends BitmapAsset { } }//package
Section 438
//GameResources_imageRat (GameResources_imageRat) package { import mx.core.*; public class GameResources_imageRat extends BitmapAsset { } }//package
Section 439
//GameResources_ImageResumeNormal (GameResources_ImageResumeNormal) package { import mx.core.*; public class GameResources_ImageResumeNormal extends BitmapAsset { } }//package
Section 440
//GameResources_ImageResumeNormalOver (GameResources_ImageResumeNormalOver) package { import mx.core.*; public class GameResources_ImageResumeNormalOver extends BitmapAsset { } }//package
Section 441
//GameResources_ImageScoresNormal (GameResources_ImageScoresNormal) package { import mx.core.*; public class GameResources_ImageScoresNormal extends BitmapAsset { } }//package
Section 442
//GameResources_ImageScoresNormalOver (GameResources_ImageScoresNormalOver) package { import mx.core.*; public class GameResources_ImageScoresNormalOver extends BitmapAsset { } }//package
Section 443
//GameResources_imageSoldier (GameResources_imageSoldier) package { import mx.core.*; public class GameResources_imageSoldier extends BitmapAsset { } }//package
Section 444
//GameResources_imageSoldierBullet1 (GameResources_imageSoldierBullet1) package { import mx.core.*; public class GameResources_imageSoldierBullet1 extends BitmapAsset { } }//package
Section 445
//GameResources_imageSoldierGibs (GameResources_imageSoldierGibs) package { import mx.core.*; public class GameResources_imageSoldierGibs extends BitmapAsset { } }//package
Section 446
//GameResources_ImageSoundNormal (GameResources_ImageSoundNormal) package { import mx.core.*; public class GameResources_ImageSoundNormal extends BitmapAsset { } }//package
Section 447
//GameResources_ImageSoundNormalAlt (GameResources_ImageSoundNormalAlt) package { import mx.core.*; public class GameResources_ImageSoundNormalAlt extends BitmapAsset { } }//package
Section 448
//GameResources_ImageSoundNormalOver (GameResources_ImageSoundNormalOver) package { import mx.core.*; public class GameResources_ImageSoundNormalOver extends BitmapAsset { } }//package
Section 449
//GameResources_imageSpark (GameResources_imageSpark) package { import mx.core.*; public class GameResources_imageSpark extends BitmapAsset { } }//package
Section 450
//GameResources_ImageSplash (GameResources_ImageSplash) package { import mx.core.*; public class GameResources_ImageSplash extends BitmapAsset { } }//package
Section 451
//GameResources_imageStar1 (GameResources_imageStar1) package { import mx.core.*; public class GameResources_imageStar1 extends BitmapAsset { } }//package
Section 452
//GameResources_imageTent (GameResources_imageTent) package { import mx.core.*; public class GameResources_imageTent extends BitmapAsset { } }//package
Section 453
//GameResources_ImageWeapon (GameResources_ImageWeapon) package { import mx.core.*; public class GameResources_ImageWeapon extends BitmapAsset { } }//package
Section 454
//GameResources_laserGun (GameResources_laserGun) package { import mx.core.*; public class GameResources_laserGun extends SoundAsset { } }//package
Section 455
//GameResources_level01_Base_TMX (GameResources_level01_Base_TMX) package { import mx.core.*; public class GameResources_level01_Base_TMX extends ByteArrayAsset { } }//package
Section 456
//GameResources_level01_Base_XML (GameResources_level01_Base_XML) package { import mx.core.*; public class GameResources_level01_Base_XML extends ByteArrayAsset { } }//package
Section 457
//GameResources_level01_Cave_XML (GameResources_level01_Cave_XML) package { import mx.core.*; public class GameResources_level01_Cave_XML extends ByteArrayAsset { } }//package
Section 458
//GameResources_level01_Farm_XML (GameResources_level01_Farm_XML) package { import mx.core.*; public class GameResources_level01_Farm_XML extends ByteArrayAsset { } }//package
Section 459
//GameResources_level01b_Base_TMX (GameResources_level01b_Base_TMX) package { import mx.core.*; public class GameResources_level01b_Base_TMX extends ByteArrayAsset { } }//package
Section 460
//GameResources_level01c_Cave_TMX (GameResources_level01c_Cave_TMX) package { import mx.core.*; public class GameResources_level01c_Cave_TMX extends ByteArrayAsset { } }//package
Section 461
//GameResources_level01f_Farm_TMX (GameResources_level01f_Farm_TMX) package { import mx.core.*; public class GameResources_level01f_Farm_TMX extends ByteArrayAsset { } }//package
Section 462
//GameResources_level02_Base_XML (GameResources_level02_Base_XML) package { import mx.core.*; public class GameResources_level02_Base_XML extends ByteArrayAsset { } }//package
Section 463
//GameResources_level02_Cave_XML (GameResources_level02_Cave_XML) package { import mx.core.*; public class GameResources_level02_Cave_XML extends ByteArrayAsset { } }//package
Section 464
//GameResources_level02_Farm_XML (GameResources_level02_Farm_XML) package { import mx.core.*; public class GameResources_level02_Farm_XML extends ByteArrayAsset { } }//package
Section 465
//GameResources_level02b_Base_TMX (GameResources_level02b_Base_TMX) package { import mx.core.*; public class GameResources_level02b_Base_TMX extends ByteArrayAsset { } }//package
Section 466
//GameResources_level02c_Cave_TMX (GameResources_level02c_Cave_TMX) package { import mx.core.*; public class GameResources_level02c_Cave_TMX extends ByteArrayAsset { } }//package
Section 467
//GameResources_level02f_Farm_TMX (GameResources_level02f_Farm_TMX) package { import mx.core.*; public class GameResources_level02f_Farm_TMX extends ByteArrayAsset { } }//package
Section 468
//GameResources_level03_Base_XML (GameResources_level03_Base_XML) package { import mx.core.*; public class GameResources_level03_Base_XML extends ByteArrayAsset { } }//package
Section 469
//GameResources_level03_Cave_XML (GameResources_level03_Cave_XML) package { import mx.core.*; public class GameResources_level03_Cave_XML extends ByteArrayAsset { } }//package
Section 470
//GameResources_level03_Farm_XML (GameResources_level03_Farm_XML) package { import mx.core.*; public class GameResources_level03_Farm_XML extends ByteArrayAsset { } }//package
Section 471
//GameResources_level03b_Base_TMX (GameResources_level03b_Base_TMX) package { import mx.core.*; public class GameResources_level03b_Base_TMX extends ByteArrayAsset { } }//package
Section 472
//GameResources_level03c_Cave_TMX (GameResources_level03c_Cave_TMX) package { import mx.core.*; public class GameResources_level03c_Cave_TMX extends ByteArrayAsset { } }//package
Section 473
//GameResources_level03f_Farm_TMX (GameResources_level03f_Farm_TMX) package { import mx.core.*; public class GameResources_level03f_Farm_TMX extends ByteArrayAsset { } }//package
Section 474
//GameResources_level04_Base_XML (GameResources_level04_Base_XML) package { import mx.core.*; public class GameResources_level04_Base_XML extends ByteArrayAsset { } }//package
Section 475
//GameResources_level04_Cave_XML (GameResources_level04_Cave_XML) package { import mx.core.*; public class GameResources_level04_Cave_XML extends ByteArrayAsset { } }//package
Section 476
//GameResources_level04_Farm_XML (GameResources_level04_Farm_XML) package { import mx.core.*; public class GameResources_level04_Farm_XML extends ByteArrayAsset { } }//package
Section 477
//GameResources_level04b_Base_TMX (GameResources_level04b_Base_TMX) package { import mx.core.*; public class GameResources_level04b_Base_TMX extends ByteArrayAsset { } }//package
Section 478
//GameResources_level04c_Cave_TMX (GameResources_level04c_Cave_TMX) package { import mx.core.*; public class GameResources_level04c_Cave_TMX extends ByteArrayAsset { } }//package
Section 479
//GameResources_level04f_Farm_TMX (GameResources_level04f_Farm_TMX) package { import mx.core.*; public class GameResources_level04f_Farm_TMX extends ByteArrayAsset { } }//package
Section 480
//GameResources_level05_Base_XML (GameResources_level05_Base_XML) package { import mx.core.*; public class GameResources_level05_Base_XML extends ByteArrayAsset { } }//package
Section 481
//GameResources_level05_Cave_XML (GameResources_level05_Cave_XML) package { import mx.core.*; public class GameResources_level05_Cave_XML extends ByteArrayAsset { } }//package
Section 482
//GameResources_level05_Farm_XML (GameResources_level05_Farm_XML) package { import mx.core.*; public class GameResources_level05_Farm_XML extends ByteArrayAsset { } }//package
Section 483
//GameResources_level05b_Base_TMX (GameResources_level05b_Base_TMX) package { import mx.core.*; public class GameResources_level05b_Base_TMX extends ByteArrayAsset { } }//package
Section 484
//GameResources_level05c_Cave_TMX (GameResources_level05c_Cave_TMX) package { import mx.core.*; public class GameResources_level05c_Cave_TMX extends ByteArrayAsset { } }//package
Section 485
//GameResources_level05f_Farm_TMX (GameResources_level05f_Farm_TMX) package { import mx.core.*; public class GameResources_level05f_Farm_TMX extends ByteArrayAsset { } }//package
Section 486
//GameResources_level06_Base_XML (GameResources_level06_Base_XML) package { import mx.core.*; public class GameResources_level06_Base_XML extends ByteArrayAsset { } }//package
Section 487
//GameResources_level06_Cave_XML (GameResources_level06_Cave_XML) package { import mx.core.*; public class GameResources_level06_Cave_XML extends ByteArrayAsset { } }//package
Section 488
//GameResources_level06b_Base_TMX (GameResources_level06b_Base_TMX) package { import mx.core.*; public class GameResources_level06b_Base_TMX extends ByteArrayAsset { } }//package
Section 489
//GameResources_level06c_Cave_TMX (GameResources_level06c_Cave_TMX) package { import mx.core.*; public class GameResources_level06c_Cave_TMX extends ByteArrayAsset { } }//package
Section 490
//GameResources_level07_Base_XML (GameResources_level07_Base_XML) package { import mx.core.*; public class GameResources_level07_Base_XML extends ByteArrayAsset { } }//package
Section 491
//GameResources_level07b_Base_TMX (GameResources_level07b_Base_TMX) package { import mx.core.*; public class GameResources_level07b_Base_TMX extends ByteArrayAsset { } }//package
Section 492
//GameResources_level08_Base_XML (GameResources_level08_Base_XML) package { import mx.core.*; public class GameResources_level08_Base_XML extends ByteArrayAsset { } }//package
Section 493
//GameResources_level08b_Base_TMX (GameResources_level08b_Base_TMX) package { import mx.core.*; public class GameResources_level08b_Base_TMX extends ByteArrayAsset { } }//package
Section 494
//GameResources_level09_Base_XML (GameResources_level09_Base_XML) package { import mx.core.*; public class GameResources_level09_Base_XML extends ByteArrayAsset { } }//package
Section 495
//GameResources_level09b_Base_TMX (GameResources_level09b_Base_TMX) package { import mx.core.*; public class GameResources_level09b_Base_TMX extends ByteArrayAsset { } }//package
Section 496
//GameResources_level1_Base_XML (GameResources_level1_Base_XML) package { import mx.core.*; public class GameResources_level1_Base_XML extends ByteArrayAsset { } }//package
Section 497
//GameResources_level1f_Base_XML (GameResources_level1f_Base_XML) package { import mx.core.*; public class GameResources_level1f_Base_XML extends ByteArrayAsset { } }//package
Section 498
//GameResources_levelCommon_XML (GameResources_levelCommon_XML) package { import mx.core.*; public class GameResources_levelCommon_XML extends ByteArrayAsset { } }//package
Section 499
//GameResources_LevelDescriptionFile (GameResources_LevelDescriptionFile) package { import mx.core.*; public class GameResources_LevelDescriptionFile extends ByteArrayAsset { } }//package
Section 500
//GameResources_levelSheets_XML (GameResources_levelSheets_XML) package { import mx.core.*; public class GameResources_levelSheets_XML extends ByteArrayAsset { } }//package
Section 501
//GameResources_levelSprites_XML (GameResources_levelSprites_XML) package { import mx.core.*; public class GameResources_levelSprites_XML extends ByteArrayAsset { } }//package
Section 502
//GameResources_pickup01 (GameResources_pickup01) package { import mx.core.*; public class GameResources_pickup01 extends SoundAsset { } }//package
Section 503
//GameResources_powerUpGun (GameResources_powerUpGun) package { import mx.core.*; public class GameResources_powerUpGun extends SoundAsset { } }//package
Section 504
//GameResources_resBg22 (GameResources_resBg22) package { import mx.core.*; public class GameResources_resBg22 extends BitmapAsset { } }//package
Section 505
//GameResources_resBg23 (GameResources_resBg23) package { import mx.core.*; public class GameResources_resBg23 extends BitmapAsset { } }//package
Section 506
//GameResources_resBg24 (GameResources_resBg24) package { import mx.core.*; public class GameResources_resBg24 extends BitmapAsset { } }//package
Section 507
//GameResources_resBg25 (GameResources_resBg25) package { import mx.core.*; public class GameResources_resBg25 extends BitmapAsset { } }//package
Section 508
//GameResources_resBg26 (GameResources_resBg26) package { import mx.core.*; public class GameResources_resBg26 extends BitmapAsset { } }//package
Section 509
//GameResources_resBg27 (GameResources_resBg27) package { import mx.core.*; public class GameResources_resBg27 extends BitmapAsset { } }//package
Section 510
//GameResources_resBg28 (GameResources_resBg28) package { import mx.core.*; public class GameResources_resBg28 extends BitmapAsset { } }//package
Section 511
//GameResources_screen1 (GameResources_screen1) package { import mx.core.*; public class GameResources_screen1 extends BitmapAsset { } }//package
Section 512
//GameResources_screen2 (GameResources_screen2) package { import mx.core.*; public class GameResources_screen2 extends BitmapAsset { } }//package
Section 513
//GameResources_screen3 (GameResources_screen3) package { import mx.core.*; public class GameResources_screen3 extends BitmapAsset { } }//package
Section 514
//GameResources_screen4 (GameResources_screen4) package { import mx.core.*; public class GameResources_screen4 extends BitmapAsset { } }//package
Section 515
//GameResources_screenA (GameResources_screenA) package { import mx.core.*; public class GameResources_screenA extends BitmapAsset { } }//package
Section 516
//GameResources_screenB (GameResources_screenB) package { import mx.core.*; public class GameResources_screenB extends BitmapAsset { } }//package
Section 517
//GameResources_screenC (GameResources_screenC) package { import mx.core.*; public class GameResources_screenC extends BitmapAsset { } }//package
Section 518
//GameResources_screenD (GameResources_screenD) package { import mx.core.*; public class GameResources_screenD extends BitmapAsset { } }//package
Section 519
//GameResources_screenE (GameResources_screenE) package { import mx.core.*; public class GameResources_screenE extends BitmapAsset { } }//package
Section 520
//GameResources_screenF (GameResources_screenF) package { import mx.core.*; public class GameResources_screenF extends BitmapAsset { } }//package
Section 521
//GameResources_screenG (GameResources_screenG) package { import mx.core.*; public class GameResources_screenG extends BitmapAsset { } }//package
Section 522
//GameResources_sound1 (GameResources_sound1) package { import mx.core.*; public class GameResources_sound1 extends SoundAsset { } }//package
Section 523
//GameResources_sound10 (GameResources_sound10) package { import mx.core.*; public class GameResources_sound10 extends SoundAsset { } }//package
Section 524
//GameResources_sound11 (GameResources_sound11) package { import mx.core.*; public class GameResources_sound11 extends SoundAsset { } }//package
Section 525
//GameResources_sound2 (GameResources_sound2) package { import mx.core.*; public class GameResources_sound2 extends SoundAsset { } }//package
Section 526
//GameResources_sound3 (GameResources_sound3) package { import mx.core.*; public class GameResources_sound3 extends SoundAsset { } }//package
Section 527
//GameResources_sound4 (GameResources_sound4) package { import mx.core.*; public class GameResources_sound4 extends SoundAsset { } }//package
Section 528
//GameResources_sound5 (GameResources_sound5) package { import mx.core.*; public class GameResources_sound5 extends SoundAsset { } }//package
Section 529
//GameResources_sound6 (GameResources_sound6) package { import mx.core.*; public class GameResources_sound6 extends SoundAsset { } }//package
Section 530
//GameResources_sound7 (GameResources_sound7) package { import mx.core.*; public class GameResources_sound7 extends SoundAsset { } }//package
Section 531
//GameResources_sound8 (GameResources_sound8) package { import mx.core.*; public class GameResources_sound8 extends SoundAsset { } }//package
Section 532
//GameResources_sound9 (GameResources_sound9) package { import mx.core.*; public class GameResources_sound9 extends SoundAsset { } }//package
Section 533
//GameResources_theme2 (GameResources_theme2) package { import mx.core.*; public class GameResources_theme2 extends SoundAsset { } }//package
Section 534
//GameResources_tileSet1 (GameResources_tileSet1) package { import mx.core.*; public class GameResources_tileSet1 extends BitmapAsset { } }//package
Section 535
//GameResources_tileSet2 (GameResources_tileSet2) package { import mx.core.*; public class GameResources_tileSet2 extends BitmapAsset { } }//package
Section 536
//GameResources_tileSet3 (GameResources_tileSet3) package { import mx.core.*; public class GameResources_tileSet3 extends BitmapAsset { } }//package
Section 537
//GameResources_tileSet4 (GameResources_tileSet4) package { import mx.core.*; public class GameResources_tileSet4 extends BitmapAsset { } }//package
Section 538
//GameResources_unlock (GameResources_unlock) package { import mx.core.*; public class GameResources_unlock extends SoundAsset { } }//package
Section 539
//GameResources_woo01 (GameResources_woo01) package { import mx.core.*; public class GameResources_woo01 extends SoundAsset { } }//package
Section 540
//GameResources_yeah01 (GameResources_yeah01) package { import mx.core.*; public class GameResources_yeah01 extends SoundAsset { } }//package
Section 541
//GameScreen (GameScreen) package { import com.pblabs.screens.*; import com.pblabs.engine.entity.*; import flash.display.*; import com.pblabs.rendering2D.ui.*; import com.pblabs.rendering2D.*; import com.pblabs.engine.debug.*; import com.gskinner.motion.*; import com.hanclinto.platformer.*; import com.hanclinto.cutscene.*; import com.pblabs.components.basic.*; import flash.text.*; import flash.net.*; import com.halfbot.system.Ui.*; import com.halfbot.system.Data.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Triggers.*; import com.halfbot.system.*; public class GameScreen extends BaseScreen { public var hudPoint4:Bitmap; public var music_button:HBButton; public var borderImage:IEntity; public var GoWasCalled:Boolean;// = false public var hudkey1:Bitmap; public var hudkey2:Bitmap; public var hudkey3:Bitmap; public var sfx_button:HBButton; private var fadeBox:Sprite; public var hudkey4:Bitmap; public var pause_button:HBButton; public var ammoLabel:HBLabel; public var levelLabel:HBLabel; public var pointsLabel:HBLabel; public var start:Bitmap; public var partsLabel:HBLabel; public var sponsor_button:HBButton; public var hudPoint1:Bitmap; public var hudPoint2:Bitmap; public var hudPoint3:Bitmap; public function GameScreen(){ levelLabel = new HBLabel(); music_button = new HBButton(); sfx_button = new HBButton(); pause_button = new HBButton(); fadeBox = new Sprite(); pointsLabel = new HBLabel(); partsLabel = new HBLabel(); ammoLabel = new HBLabel(); super(); var _local1:SceneView = new SceneView(); _local1.name = "MainView"; addChild(_local1); var _local2:IEntity = PBE.initializeScene(_local1, "Scene", BitmapDataScene, PlatformSpatialManager); _local2.addComponent(new CutsceneManager(), "Cutscene"); (PBE.scene as DisplayObjectScene).trackOffset.y = -40; setupHud(); var _local3:* = new HB.SponsorsLogo2(); sponsor_button = new HBButton(); addChild(sponsor_button); sponsor_button.x = ((550 - _local3.width) / 2); sponsor_button.y = 10; sponsor_button.buttonMode = true; sponsor_button.image_normal = new HB.SponsorsLogo2(); sponsor_button.image_over = new HB.SponsorsLogo2(); sponsor_button.callback = goToMyURL_Sponsor; sponsor_button.refresh(); } public function setupSoundHudAndPause():void{ var _local1:Class = GameScreen_ImageMusicNormal; var _local2:Class = GameScreen_ImageMusicNormalAlt; var _local3:Class = GameScreen_ImageMusicNormalOver; var _local4:Class = GameScreen_ImageSoundNormal; var _local5:Class = GameScreen_ImageSoundNormalAlt; var _local6:Class = GameScreen_ImageSoundNormalOver; var _local7:Class = GameScreen_ImagePauseNormal; var _local8:Class = GameScreen_ImagePauseNormalOver; var _local9:Bitmap = new (_local1); var _local10:Bitmap = new (_local4); var _local11:Bitmap = new (_local7); var _local12 = 10; addChild(music_button); music_button.x = ((this.width - _local9.width) - _local12); music_button.y = _local12; music_button.image_normal = new (_local1); music_button.image_normal_alt = new (_local2); music_button.image_over = new (_local3); music_button.callback = GameData.toggle_music_on; music_button.refresh(); if (!GameData.music_on){ music_button.disable(); }; addChild(sfx_button); sfx_button.x = ((this.width - (_local9.width * 2)) - _local12); sfx_button.y = (_local12 + (_local9.height - _local10.height)); sfx_button.image_normal = new (_local4); sfx_button.image_normal_alt = new (_local5); sfx_button.image_over = new (_local6); sfx_button.callback = GameData.toggle_sfx_on; sfx_button.refresh(); if (!GameData.sfx_on){ sfx_button.disable(); }; addChild(pause_button); pause_button.x = ((this.width - (_local9.width * 3)) - _local12); pause_button.y = (_local12 + (_local9.height - _local11.height)); pause_button.image_normal = new (_local7); pause_button.image_over = new (_local8); pause_button.callback = pauseGame; pause_button.refresh(); } public function pauseGame():void{ ScreenManager.instance.push("pause"); GameData.paused = true; } public function cleanupTransition(_arg1):void{ GameData.movement_paused = true; GTweener.to(start, 1, {alpha:1}, {onComplete:fadeOutStart}); GTweener.to(this.levelLabel, 1, {alpha:1}); } private function goToMyURL_Sponsor():void{ if (HB.SPONSORED){ navigateToURL(new URLRequest(HB.SPONSOR_URL)); }; } override public function onTick(_arg1:Number):void{ if (GoWasCalled){ GTweener.to(this, 0.5, {alpha:1}, {onComplete:cleanupTransition}); GoWasCalled = false; }; if (levelLabel.alpha != 0){ levelLabel.caption = ("Level " + GameData.currentLevel); levelLabel.refresh(); }; pointsLabel.caption = ("" + PlayerInventory.playerScore); pointsLabel.fontName = "Hud Font"; pointsLabel.fontSize = 16; pointsLabel.fontAlign = TextFormatAlign.RIGHT; pointsLabel.fontColor = 3322879; pointsLabel.refresh(); partsLabel.caption = ((("" + PlayerInventory.partsPickedUp) + "/") + PlayerInventory._totalPartsToPickedUp); partsLabel.fontName = "Hud Font"; partsLabel.fontSize = 16; partsLabel.fontColor = 14862502; partsLabel.refresh(); var _local2:HealthComponent = (PBE.nameManager.lookupComponentByName("AlienHero", "Health") as HealthComponent); switch (PlayerInventory.keyPickedUp){ case 0: hudkey1.alpha = 0; hudkey2.alpha = 0; hudkey3.alpha = 0; hudkey4.alpha = 0; break; case 1: hudkey1.alpha = 1; hudkey2.alpha = 0; hudkey3.alpha = 0; hudkey4.alpha = 0; break; case 2: hudkey1.alpha = 1; hudkey2.alpha = 1; hudkey3.alpha = 0; hudkey4.alpha = 0; break; case 3: hudkey1.alpha = 1; hudkey2.alpha = 1; hudkey3.alpha = 1; hudkey4.alpha = 0; break; default: hudkey1.alpha = 1; hudkey2.alpha = 1; hudkey3.alpha = 1; hudkey4.alpha = 1; break; }; if (_local2){ switch (_local2.health){ case 0: hudPoint1.alpha = 0.25; hudPoint2.alpha = 0.25; hudPoint3.alpha = 0.25; hudPoint4.alpha = 0.25; break; case 1: hudPoint1.alpha = 1; hudPoint2.alpha = 0.25; hudPoint3.alpha = 0.25; hudPoint4.alpha = 0.25; break; case 2: hudPoint1.alpha = 1; hudPoint2.alpha = 1; hudPoint3.alpha = 0.25; hudPoint4.alpha = 0.25; break; case 3: hudPoint1.alpha = 1; hudPoint2.alpha = 1; hudPoint3.alpha = 1; hudPoint4.alpha = 0.25; break; case 4: hudPoint1.alpha = 1; hudPoint2.alpha = 1; hudPoint3.alpha = 1; hudPoint4.alpha = 1; break; }; } else { hudPoint1.alpha = 0.25; hudPoint2.alpha = 0.25; hudPoint3.alpha = 0.25; hudPoint4.alpha = 0.25; }; } public function setupHud():void{ var _local1:IUITarget = PBE.scene.sceneView; fadeBox.graphics.beginFill(0); fadeBox.graphics.drawRect(0, 0, _local1.width, _local1.height); fadeBox.graphics.endFill(); fadeBox.alpha = 1; pointsLabel.x = 430; pointsLabel.y = 360; partsLabel.x = 60; partsLabel.y = 15; addChild(pointsLabel); addChild(partsLabel); addChild(ammoLabel); var _local2:Class = GameScreen_ImageBorder; var _local3:Bitmap = new (_local2); addChild(_local3); var _local4:Class = GameScreen_ImageParts; var _local5:Bitmap = new (_local4); _local5.x = (partsLabel.x - 45); _local5.y = partsLabel.y; addChild(_local5); var _local6:Class = GameScreen_ImageHealthMeterBg; var _local7:Bitmap = new (_local6); _local7.x = (partsLabel.x - 50); _local7.y = 365; addChild(_local7); var _local8 = 27; var _local9 = 15; var _local10:Class = GameScreen_ImageHudKey; hudkey1 = new (_local10); hudkey1.x = (_local7.x + 125); hudkey1.y = 365; addChild(hudkey1); hudkey2 = new (_local10); hudkey2.x = (hudkey1.x + (_local9 * 1)); hudkey2.y = hudkey1.y; addChild(hudkey2); hudkey3 = new (_local10); hudkey3.x = (hudkey1.x + (_local9 * 2)); hudkey3.y = hudkey1.y; addChild(hudkey3); hudkey4 = new (_local10); hudkey4.x = (hudkey1.x + (_local9 * 3)); hudkey4.y = hudkey1.y; addChild(hudkey4); var _local11:Class = GameScreen_ImageHealthPoint; hudPoint1 = new (_local11); hudPoint1.x = (_local7.x + 6); hudPoint1.y = (_local7.y + 6); hudPoint1.alpha = 0.25; addChild(hudPoint1); hudPoint2 = new (_local11); hudPoint2.x = ((_local7.x + 6) + _local8); hudPoint2.y = (_local7.y + 6); hudPoint2.alpha = 0.25; addChild(hudPoint2); hudPoint3 = new (_local11); hudPoint3.x = ((_local7.x + 6) + (_local8 * 2)); hudPoint3.y = (_local7.y + 6); hudPoint3.alpha = 0.25; addChild(hudPoint3); hudPoint4 = new (_local11); hudPoint4.x = ((_local7.x + 6) + (_local8 * 3)); hudPoint4.y = (_local7.y + 6); hudPoint4.alpha = 0.25; addChild(hudPoint4); var _local12:Class = GameScreen_ImageStart; start = new (_local12); start.x = ((GameData.SCREEN_WIDTH / 2) - (start.width / 2)); start.y = ((GameData.SCREEN_HEIGHT / 2) - (start.height / 2)); addChild(start); levelLabel.caption = "LEVEL 0"; levelLabel.fontAlign = TextFormatAlign.CENTER; levelLabel.x = ((GameData.SCREEN_WIDTH / 2) - (levelLabel.width / 2)); levelLabel.y = (((GameData.SCREEN_HEIGHT / 2) - (start.height / 2)) - 40); levelLabel.fontSize = 16; levelLabel.refresh(); addChild(levelLabel); setupSoundHudAndPause(); } public function fadeOutStart(_arg1):void{ GTweener.to(start, 1, {alpha:0}, {onComplete:fadeOutDone}); GTweener.to(this.levelLabel, 1, {alpha:0}); } public function fadeOutDone(_arg1):void{ GameData.movement_paused = false; } public function go():void{ GoWasCalled = true; } override public function onShow():void{ trace("on show in game called"); GoWasCalled = false; if (!GameData.paused){ trace("not paused so.."); GameData.movement_paused = true; alpha = 0; levelLabel.alpha = 0; levelLabel.caption = ("Level " + GameData.currentLevel); levelLabel.refresh(); start.alpha = 0; PBE.processManager.schedule(1000, this, go); if (GameData.currentLevel == 1){ sponsor_button.visible = false; } else { sponsor_button.visible = true; }; }; music_button.refresh(); if (!GameData.music_on){ music_button.disable(); }; sfx_button.refresh(); if (!GameData.sfx_on){ sfx_button.disable(); }; trace("done on show"); } } }//package
Section 542
//GameScreen_ImageBorder (GameScreen_ImageBorder) package { import mx.core.*; public class GameScreen_ImageBorder extends BitmapAsset { } }//package
Section 543
//GameScreen_ImageHealthMeterBg (GameScreen_ImageHealthMeterBg) package { import mx.core.*; public class GameScreen_ImageHealthMeterBg extends BitmapAsset { } }//package
Section 544
//GameScreen_ImageHealthPoint (GameScreen_ImageHealthPoint) package { import mx.core.*; public class GameScreen_ImageHealthPoint extends BitmapAsset { } }//package
Section 545
//GameScreen_ImageHudKey (GameScreen_ImageHudKey) package { import mx.core.*; public class GameScreen_ImageHudKey extends BitmapAsset { } }//package
Section 546
//GameScreen_ImageMusicNormal (GameScreen_ImageMusicNormal) package { import mx.core.*; public class GameScreen_ImageMusicNormal extends BitmapAsset { } }//package
Section 547
//GameScreen_ImageMusicNormalAlt (GameScreen_ImageMusicNormalAlt) package { import mx.core.*; public class GameScreen_ImageMusicNormalAlt extends BitmapAsset { } }//package
Section 548
//GameScreen_ImageMusicNormalOver (GameScreen_ImageMusicNormalOver) package { import mx.core.*; public class GameScreen_ImageMusicNormalOver extends BitmapAsset { } }//package
Section 549
//GameScreen_ImageParts (GameScreen_ImageParts) package { import mx.core.*; public class GameScreen_ImageParts extends BitmapAsset { } }//package
Section 550
//GameScreen_ImagePauseNormal (GameScreen_ImagePauseNormal) package { import mx.core.*; public class GameScreen_ImagePauseNormal extends BitmapAsset { } }//package
Section 551
//GameScreen_ImagePauseNormalOver (GameScreen_ImagePauseNormalOver) package { import mx.core.*; public class GameScreen_ImagePauseNormalOver extends BitmapAsset { } }//package
Section 552
//GameScreen_ImageSoundNormal (GameScreen_ImageSoundNormal) package { import mx.core.*; public class GameScreen_ImageSoundNormal extends BitmapAsset { } }//package
Section 553
//GameScreen_ImageSoundNormalAlt (GameScreen_ImageSoundNormalAlt) package { import mx.core.*; public class GameScreen_ImageSoundNormalAlt extends BitmapAsset { } }//package
Section 554
//GameScreen_ImageSoundNormalOver (GameScreen_ImageSoundNormalOver) package { import mx.core.*; public class GameScreen_ImageSoundNormalOver extends BitmapAsset { } }//package
Section 555
//GameScreen_ImageStart (GameScreen_ImageStart) package { import mx.core.*; public class GameScreen_ImageStart extends BitmapAsset { } }//package
Section 556
//InterLevelScreen (InterLevelScreen) package { import flash.events.*; import com.pblabs.screens.*; import com.pblabs.engine.core.*; import com.gskinner.motion.*; import com.hanclinto.platformer.*; import com.pblabs.engine.*; public class InterLevelScreen extends ImageScreen { public var waiting:Boolean;// = true public function InterLevelScreen(){ super("../res/images/screens/interlevel.png"); addEventListener(MouseEvent.CLICK, nextScreen); } override public function onFrame(_arg1:Number):void{ if ((PBE.spatialManager as PlatformSpatialManager) != null){ (PBE.spatialManager as PlatformSpatialManager).paused = true; }; if (PBE.isKeyDown(InputKey.SPACE)){ nextScreen(null); }; } public function finishNext(_arg1):void{ (PBE.spatialManager as PlatformSpatialManager).paused = false; ScreenManager.instance.pop(); } override public function onShow():void{ alpha = 1; waiting = true; } protected function nextScreen(_arg1):void{ if (!waiting){ return; }; waiting = false; GTweener.to(this, 0.5, {alpha:0}, {onComplete:finishNext}); } } }//package
Section 557
//preloader_new (preloader_new) package { import flash.events.*; import flash.display.*; import flash.text.*; import com.halfbot.system.Ui.*; import com.halfbot.system.*; import flash.net.*; import flash.system.*; import flash.utils.*; public class preloader_new extends MovieClip { public var minDisplayTime:Number; protected var _height:uint; protected var _width:uint; protected var ImgLogoLight:Class; protected var _logo:Bitmap; protected var _text:TextField; protected var junk:String;// = "preloader_new_junk" protected var _logoBottom:Bitmap; var Font_Pixel:Class; protected var _logoGlow:Bitmap; protected var _buffer:Sprite; protected var _min:uint; var Font_Pixel2:Class; protected var _bmpBar:Bitmap; protected var ImgLogo:Class; protected var _init:Boolean; protected var ImgLogoCorners:Class; public var className:String;// = "DontComeInPeace" public var sponsor_button:HBButton; public var myURL:String;// = "game.gamepirate.com" public function preloader_new(){ var tmp:Bitmap; var re:RegExp; var variables:URLVariables; var request:URLRequest; var loader:URLLoader; var fmt:TextFormat; var txt:TextField; ImgLogo = preloader_new_ImgLogo; ImgLogoCorners = preloader_new_ImgLogoCorners; ImgLogoLight = preloader_new_ImgLogoLight; Font_Pixel = preloader_new_Font_Pixel; Font_Pixel2 = preloader_new_Font_Pixel2; super(); minDisplayTime = 0; stop(); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; try { throw (new Error("Setting global debug flag...")); } catch(e:Error) { re = /\[.*:[0-9]+\]/; HB.DEBUG = re.test(e.getStackTrace()); }; if (root.loaderInfo.url.substring(0, 4) != "file"){ Security.allowDomain("*"); Security.loadPolicyFile("http://track.g-bot.net/crossdomain.xml"); variables = new URLVariables(); variables.id = "idontcomeinpeace"; variables.ui = loaderInfo.url; request = new URLRequest("http://track.g-bot.net/track.php"); request.method = "POST"; request.data = variables; loader = new URLLoader(); loader.load(request); }; if (HB.IS_VIRAL){ myURL = ""; }; if (((((!(HB.DEBUG)) && (!((myURL == null))))) && ((root.loaderInfo.url.indexOf(myURL) < 0)))){ tmp = new Bitmap(new BitmapData(550, 400, true, 4294967295)); addChild(tmp); fmt = new TextFormat(); fmt.color = 0; fmt.size = 16; fmt.align = "center"; fmt.bold = true; fmt.font = "systemfont"; txt = new TextField(); txt.width = (tmp.width - 16); txt.height = (tmp.height - 16); txt.y = 8; txt.multiline = true; txt.wordWrap = true; txt.embedFonts = true; txt.defaultTextFormat = fmt; if (!HB.SPONSORED){ txt.text = (("It looks like somebody copied this game without HalfBot's permission. Just click anywhere, or copy-paste this URL into your browser.\n\n" + HB.COMPANY_URL) + "\n\nto play the game at our site. Thanks, and have fun!"); } else { txt.text = (("It looks like somebody copied this game without our permission. Just click anywhere, or copy-paste this URL into your browser.\n\n" + HB.SPONSOR_URL) + "\n\nto play the game at our site. Thanks, and have fun!"); }; addChild(txt); if (HB.SPONSORED){ txt.addEventListener(MouseEvent.CLICK, goToMyURL_Pirate); tmp.addEventListener(MouseEvent.CLICK, goToMyURL_Pirate); }; return; }; _init = false; addEventListener(Event.ENTER_FRAME, onEnterFrame); } protected function update(_arg1:Number):void{ _bmpBar.scaleX = (_arg1 * (_width - 8)); _text.text = (((((((("HalfBot: " + HB.GAME_NAME) + " v") + HB.LIBRARY_MAJOR_VERSION) + ".") + HB.LIBRARY_MINOR_VERSION) + " ") + Math.floor((_arg1 * 100))) + "%"); _text.setTextFormat(_text.defaultTextFormat); if (_arg1 < 0.1){ _logoGlow.alpha = 0; _logo.alpha = 0; } else { if (_arg1 < 0.15){ _logoGlow.alpha = Math.random(); _logo.alpha = 0; } else { if (_arg1 < 0.2){ _logoGlow.alpha = 0; _logo.alpha = 0; } else { if (_arg1 < 0.25){ _logoGlow.alpha = 0; _logo.alpha = Math.random(); } else { if (_arg1 < 0.7){ _logoGlow.alpha = ((_arg1 - 0.45) / 0.45); _logo.alpha = 1; } else { if ((((_arg1 > 0.8)) && ((_arg1 < 0.9)))){ _logoGlow.alpha = (1 - ((_arg1 - 0.8) / 0.1)); _logo.alpha = 0; } else { if (_arg1 > 0.9){ _buffer.alpha = (1 - ((_arg1 - 0.9) / 0.1)); }; }; }; }; }; }; }; } private function goToMyURL_Sponsor():void{ if (HB.SPONSORED){ navigateToURL(new URLRequest(HB.SPONSOR_URL)); }; } private function goToMyURL(_arg1:MouseEvent=null):void{ navigateToURL(new URLRequest(("http://" + myURL))); } protected function onEnterFrame(_arg1:Event):void{ var _local2:int; var _local4:Class; var _local5:Object; var _local6:Number; if (!_init){ if ((((stage.stageWidth <= 0)) || ((stage.stageHeight <= 0)))){ return; }; create(); _init = true; }; graphics.clear(); var _local3:uint = getTimer(); if ((((framesLoaded >= totalFrames)) && ((_local3 > _min)))){ removeEventListener(Event.ENTER_FRAME, onEnterFrame); nextFrame(); _local4 = Class(getDefinitionByName(className)); if (_local4){ this.removeChild(this.sponsor_button); _local5 = new (_local4); addChild((_local5 as DisplayObject)); }; removeChild(_buffer); } else { _local6 = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal); if ((((_min > 0)) && ((_local6 > (_local3 / _min))))){ _local6 = (_local3 / _min); }; update(_local6); }; } protected function create():void{ var _local3:uint; _min = 0; _min = (minDisplayTime * 1000); _buffer = new Sprite(); _buffer.scaleX = 2; _buffer.scaleY = 2; addChild(_buffer); _width = (stage.stageWidth / _buffer.scaleX); _height = (stage.stageHeight / _buffer.scaleY); var _local1:Bitmap = new ImgLogoLight(); _local1.smoothing = true; _local1.width = (_local1.height = _height); _local1.x = ((_width - _local1.width) / 2); _buffer.addChild(_local1); _bmpBar = new Bitmap(new BitmapData(1, 4, false, 1791621)); _bmpBar.x = 4; _bmpBar.y = (_height - 8); _buffer.addChild(_bmpBar); _text = new TextField(); _text.defaultTextFormat = new TextFormat("systemfont", 4, 1791621); _text.embedFonts = true; _text.selectable = false; _text.multiline = false; _text.x = 2; _text.y = (_bmpBar.y - 6); _text.width = 200; _buffer.addChild(_text); _logoGlow = new ImgLogo(); _logoGlow.smoothing = true; _logoGlow.blendMode = "screen"; _logoGlow.scaleX = (_logoGlow.scaleY = (_height / 8)); _logoGlow.x = ((_width - _logoGlow.width) / 2); _logoGlow.y = ((_height - _logoGlow.height) / 2); if (HB.SPONSORED){ _logo = new HB.SponsorsLogo(); } else { _logo = new ImgLogo(); }; _logo.scaleX = (_logo.scaleY = 0.45); _logo.x = ((_width - _logo.width) / 2); _logo.y = ((_height - _logo.height) / 2); _buffer.addChild(_logo); _local1 = new ImgLogoCorners(); _local1.smoothing = true; _local1.width = _width; _local1.height = _height; _buffer.addChild(_local1); _local1 = new Bitmap(new BitmapData(_width, _height, false, 0xFF00)); var _local2:uint; while (_local2 < _height) { _local3 = 0; while (_local3 < _width) { _local1.bitmapData.setPixel(_local3, _local2, 0); _local3++; }; _local2 = (_local2 + 2); }; _local1.blendMode = "overlay"; _local1.alpha = 0.05; _buffer.addChild(_local1); _logoBottom = new HB.SponsorsLogo2(); sponsor_button = new HBButton(); sponsor_button.buttonMode = true; addChild(sponsor_button); sponsor_button.x = ((550 - _logoBottom.width) / 2); sponsor_button.y = 350; sponsor_button.image_normal = new HB.SponsorsLogo2(); sponsor_button.image_over = new HB.SponsorsLogo2(); sponsor_button.callback = goToMyURL_Sponsor; sponsor_button.refresh(); } private function goToMyURL_Pirate(_arg1:MouseEvent=null):void{ if (HB.SPONSORED){ navigateToURL(new URLRequest(HB.SPONSOR_URL)); } else { navigateToURL(new URLRequest(HB.COMPANY_URL)); }; } } }//package
Section 558
//preloader_new_Font_Pixel (preloader_new_Font_Pixel) package { import mx.core.*; public class preloader_new_Font_Pixel extends FontAsset { } }//package
Section 559
//preloader_new_Font_Pixel2 (preloader_new_Font_Pixel2) package { import mx.core.*; public class preloader_new_Font_Pixel2 extends FontAsset { } }//package
Section 560
//preloader_new_ImgLogo (preloader_new_ImgLogo) package { import mx.core.*; public class preloader_new_ImgLogo extends BitmapAsset { } }//package
Section 561
//preloader_new_ImgLogoCorners (preloader_new_ImgLogoCorners) package { import mx.core.*; public class preloader_new_ImgLogoCorners extends BitmapAsset { } }//package
Section 562
//preloader_new_ImgLogoLight (preloader_new_ImgLogoLight) package { import mx.core.*; public class preloader_new_ImgLogoLight extends BitmapAsset { } }//package
Section 563
//preloader_new_junk (preloader_new_junk) package { import mx.core.*; public class preloader_new_junk extends FontAsset { } }//package
Section 564
//RegistrationTypes (RegistrationTypes) package { import com.pblabs.engine.resource.*; import com.pblabs.rendering2D.*; import com.pblabs.sound.*; import com.pblabs.engine.components.*; import com.hanclinto.platformer.*; import com.hanclinto.cutscene.*; import com.pblabs.rendering2D.spritesheet.*; import com.pblabs.components.basic.*; import com.halfbot.platformer.Entity.*; import com.pblabs.components.stateMachine.*; import com.pblabs.animation.*; import com.pblabs.engine.*; import com.halfbot.platformer.Component.Triggers.*; import com.halfbot.platformer.Component.Movers.*; import com.halfbot.platformer.*; import com.halfbot.system.Scroller.*; import com.halfbot.platformer.Component.Tilemaps.*; import com.halfbot.platformer.Component.Weapons.*; import com.halfbot.cutscenes.*; public class RegistrationTypes { PBE.registerType(BitmapDataScene); PBE.registerType(SpriteSheetRenderer); PBE.registerType(SimpleSpatialComponent); PBE.registerType(BasicSpatialManager2D); PBE.registerType(CellCountDivider); PBE.registerType(SpriteSheetComponent); PBE.registerType(SWFSpriteSheetComponent); PBE.registerType(GroupMemberComponent); PBE.registerType(HealthComponent); PBE.registerType(EventSoundTrigger); PBE.registerType(DataResource); PBE.registerType(MP3Resource); PBE.registerType(Resource); PBE.registerType(XMLResource); PBE.registerType(BackgroundMusicComponent); PBE.registerType(GroupMemberComponent); PBE.registerType(TileMap); PBE.registerType(TileMapRenderer); PBE.registerType(AnimatedTileMapRenderer); PBE.registerType(TmxMapLoader); PBE.registerType(RepeatingRenderComponent); PBE.registerType(CutsceneTrigger); PBE.registerType(DialogTrigger); PBE.registerType(CutsceneManager); PBE.registerType(Cutscene); PBE.registerType(SceneAction); PBE.registerType(RestartLevel); PBE.registerType(LoadLevel); PBE.registerType(Trace); PBE.registerType(Delay); PBE.registerType(SetTile); PBE.registerType(ActivateTrigger); PBE.registerType(PlaySound); PBE.registerType(ShowScreen); PBE.registerType(Dialog); PBE.registerType(PlatformObject); PBE.registerType(PlatformSpatialManager); PBE.registerType(PlayerPlatformController); PBE.registerType(EnemyFlyerController); PBE.registerType(EnemyFlyerHint); PBE.registerType(GemTrigger); PBE.registerType(EnemyWalkerController); PBE.registerType(SnaggerPlatformController); PBE.registerType(AdvancedPlayerController); PBE.registerType(FSMComponent); PBE.registerType(AnimatorComponent); PBE.registerType(PlayerShootPlatformController); PBE.registerType(BulletPlatformController); PBE.registerType(HBPlatformEntity); PBE.registerType(HBPlatformCharacterEntity); PBE.registerType(HBPlatformProjectileEntity); PBE.registerType(HBSpawnBaseEntity); PBE.registerType(HBParticleEmitterBase); PBE.registerType(HBCameraTrackEntity); PBE.registerType(HBParticleBase); PBE.registerType(HBPlatformContainer); PBE.registerType(HBFlyingCharacterEntity); PBE.registerType(HBFlyerHint); PBE.registerType(HBPlatformFloatingText); PBE.registerType(HBPatroleMovementComponent); PBE.registerType(HBBaseMovementComponent); PBE.registerType(HBCharacterKeyboardComponent); PBE.registerType(HBCharacterBaseAiComponent); PBE.registerType(HBFlyingMovementComponent); PBE.registerType(HBSpawnAwareTilemap); PBE.registerType(HBCharacterWeaponComponent); PBE.registerType(RepeatingRenderComponentAutoScroll); PBE.registerType(PlayerInventory); PBE.registerType(HBPlatformItemPickup); PBE.registerType(GraphicalDialog); } }//package

Library Items

Symbol 1 Font {preloader_new_Font_Pixel}
Symbol 3 Font {preloader_new_Font_Pixel2}
Symbol 4 Bitmap {preloader_new_ImgLogoCorners}
Symbol 5 Bitmap {com.halfbot.system.HB_SponsorsLogo}
Symbol 6 Bitmap {preloader_new_ImgLogoLight}
Symbol 7 Font {preloader_new_junk}
Symbol 9 Sound {com.halfbot.system.Data.GameData_theme2} [com.halfbot.system.Data.GameData_theme2]
Symbol 10 Sound {GameResources_Bot2Death} [GameResources_Bot2Death]
Symbol 11 Sound {GameResources_BotDeath} [GameResources_BotDeath]
Symbol 12 Sound {GameResources_Gunshot2} [GameResources_Gunshot2]
Symbol 13 Sound {GameResources_BotHit} [GameResources_BotHit]
Symbol 14 Sound {GameResources_theme2} [GameResources_theme2]
Symbol 15 Sound {GameResources_sound2} [GameResources_sound2]
Symbol 16 Sound {GameResources_sound1} [GameResources_sound1]
Symbol 17 Sound {GameResources_BoxHit} [GameResources_BoxHit]
Symbol 18 Sound {GameResources_BotShoot} [GameResources_BotShoot]
Symbol 19 Sound {GameResources_yeah01} [GameResources_yeah01]
Symbol 20 Sound {GameResources_hit01} [GameResources_hit01]
Symbol 21 Sound {GameResources_sound3} [GameResources_sound3]
Symbol 22 Sound {GameResources_sound4} [GameResources_sound4]
Symbol 23 Sound {GameResources_sound5} [GameResources_sound5]
Symbol 24 Sound {GameResources_sound6} [GameResources_sound6]
Symbol 25 Sound {GameResources_sound7} [GameResources_sound7]
Symbol 26 Sound {GameResources_sound8} [GameResources_sound8]
Symbol 27 Sound {GameResources_sound9} [GameResources_sound9]
Symbol 28 Sound {GameResources_powerUpGun} [GameResources_powerUpGun]
Symbol 29 Sound {GameResources_BoxBreak} [GameResources_BoxBreak]
Symbol 30 Sound {GameResources_sound10} [GameResources_sound10]
Symbol 31 Sound {GameResources_sound11} [GameResources_sound11]
Symbol 32 Sound {GameResources_cowdeath} [GameResources_cowdeath]
Symbol 33 Sound {GameResources_woo01} [GameResources_woo01]
Symbol 34 Sound {GameResources_Gunshot} [GameResources_Gunshot]
Symbol 35 Sound {GameResources_batdeath} [GameResources_batdeath]
Symbol 36 Sound {GameResources_pickup01} [GameResources_pickup01]
Symbol 37 Sound {GameResources_death01} [GameResources_death01]
Symbol 38 Sound {GameResources_unlock} [GameResources_unlock]
Symbol 39 Sound {GameResources_laserGun} [GameResources_laserGun]
Symbol 40 Bitmap {GameResources_Imageclogo}
Symbol 41 Bitmap {com.halfbot.menus.mainMenu_ImageSoundNormal}
Symbol 42 Bitmap {com.halfbot.menus.levelSelectMenu_ImageLevelButton_Roll}
Symbol 43 Bitmap {GameResources_ImageHelpNormal}
Symbol 44 Bitmap {com.halfbot.menus.mainMenu_ImageHills}
Symbol 45 Bitmap {com.halfbot.menus.helpMenu_ImageClouds}
Symbol 46 Bitmap {com.halfbot.menus.creditsMenu_ImageFence}
Symbol 47 BinaryData {GameResources_level01_Base_TMX}
Symbol 48 Bitmap {GameResources_imagePoints}
Symbol 49 Bitmap {GameResources_imageBullet1}
Symbol 50 Bitmap {GameResources_imageRat}
Symbol 52 Bitmap {GameResources_ImageSplash}
Symbol 53 Bitmap {GameResources_ImageCreditsNormal}
Symbol 54 Bitmap {GameResources_imageHealth1}
Symbol 55 Bitmap {GameScreen_ImageHealthPoint}
Symbol 56 Bitmap {GameResources_ImageWeapon}
Symbol 57 Bitmap {GameResources_ImagePauseNormalOver}
Symbol 58 Bitmap {GameResources_imageGibs}
Symbol 59 Bitmap {GameResources_ImagePauseNormal}
Symbol 60 BinaryData {GameResources_level08b_Base_TMX}
Symbol 61 Bitmap {GameResources_imageCow}
Symbol 62 Bitmap {GameResources_imageAlienGibs}
Symbol 63 Bitmap {GameResources_imageFlyingEnemy}
Symbol 64 Bitmap {GameResources_imageBorder}
Symbol 65 Bitmap {GameResources_imageGibs_rat}
Symbol 66 Bitmap {com.halfbot.menus.mainMenu_ImageSoundNormalAlt}
Symbol 67 BinaryData {GameResources_level01f_Farm_TMX}
Symbol 68 Bitmap {GameResources_ImageParts}
Symbol 69 BinaryData {GameResources_level03b_Base_TMX}
Symbol 70 Bitmap {GameResources_imageFarmerGibs}
Symbol 71 Bitmap {GameResources_imageCamera1}
Symbol 72 Bitmap {com.halfbot.menus.nameEntryMenu_ImageLevelButton}
Symbol 73 Bitmap {GameResources_ImageMusicNormal}
Symbol 74 BinaryData {GameResources_level03c_Cave_TMX}
Symbol 75 Bitmap {com.halfbot.menus.levelSelectMenu_ImagePlayNormalOver}
Symbol 76 Bitmap {com.halfbot.menus.pauseMenu_ImageMainNormalOver}
Symbol 77 Bitmap {GameResources_screen2}
Symbol 78 Bitmap {com.halfbot.menus.retryMenu_ImageRestartNormalOver}
Symbol 79 Bitmap {GameResources_imageSoldier}
Symbol 80 BinaryData {GameResources_level04f_Farm_TMX}
Symbol 81 Bitmap {com.halfbot.menus.mainMenu_ImageCreditsNormalOver}
Symbol 82 Bitmap {GameScreen_ImageSoundNormalOver}
Symbol 83 Bitmap {com.halfbot.menus.storyEndingMenu_ImageBackNormal}
Symbol 84 Bitmap {GameResources_screen3}
Symbol 85 Bitmap {GameResources_ImageResumeNormalOver}
Symbol 86 Bitmap {GameResources_imageKey1}
Symbol 87 BinaryData {GameResources_level01_Base_XML}
Symbol 88 Bitmap {com.halfbot.menus.nameEntryMenu_ImageBackNormalOver}
Symbol 89 BinaryData {GameResources_level07_Base_XML}
Symbol 90 Bitmap {GameResources_imageBloodSplatt}
Symbol 91 Bitmap {com.halfbot.menus.mainMenu_ImageMusicNormalAlt}
Symbol 92 Bitmap {com.halfbot.menus.mainMenu_ImageResumeNormal}
Symbol 93 Bitmap {GameResources_imageboxGibs}
Symbol 94 Bitmap {com.halfbot.menus.scoresMenu_ImageArrowUp_Roll}
Symbol 95 Bitmap {GameResources_ImageScoresNormalOver}
Symbol 96 Bitmap {GameResources_imagePowerShot}
Symbol 97 Bitmap {com.halfbot.menus.retryMenu_ImageMainNormalOver}
Symbol 98 Bitmap {com.halfbot.menus.retryMenu_ImageMainNormal}
Symbol 99 Bitmap {GameResources_imageCrate1}
Symbol 100 BinaryData {GameResources_level05_Cave_XML}
Symbol 101 BinaryData {GameResources_level04c_Cave_TMX}
Symbol 102 Bitmap {GameResources_imageStar1}
Symbol 103 Bitmap {com.halfbot.menus.retryMenu_ImageRestartNormal}
Symbol 104 BinaryData {GameResources_level05c_Cave_TMX}
Symbol 106 Bitmap {com.halfbot.menus.levelCompleteMenu_ImageMainNormal}
Symbol 107 Bitmap {com.halfbot.menus.nameEntryMenu_ImageClearNormal}
Symbol 108 Bitmap {GameResources_imageParts1}
Symbol 109 BinaryData {GameResources_level06b_Base_TMX}
Symbol 110 Bitmap {com.halfbot.menus.nameEntryMenu_Imageclogo}
Symbol 111 Bitmap {com.halfbot.menus.nameEntryMenu_ImageSubmitNormal}
Symbol 112 BinaryData {GameResources_level07b_Base_TMX}
Symbol 113 BinaryData {GameResources_level03_Cave_XML}
Symbol 114 BinaryData {GameResources_level09_Base_XML}
Symbol 115 BinaryData {GameResources_level1f_Base_XML}
Symbol 116 BinaryData {GameResources_level02_Base_XML}
Symbol 117 Bitmap {com.halfbot.menus.storyEndingMenu_Imageclogo}
Symbol 118 Bitmap {com.halfbot.menus.levelCompleteMenu_ImageResumeNormal}
Symbol 119 Bitmap {com.halfbot.menus.storyIntroMenu_Imageclogo}
Symbol 120 Bitmap {GameResources_imageTent}
Symbol 121 Bitmap {GameResources_imageSpark}
Symbol 122 Bitmap {GameResources_imageSoldierBullet1}
Symbol 123 Bitmap {com.halfbot.menus.scoresMenu_ImageArrowDown_Roll}
Symbol 124 MovieClip {com.halfbot.menus.sponsor_Swf}
Symbol 125 Bitmap {com.halfbot.menus.nameEntryMenu_ImageLockIcon}
Symbol 126 BinaryData {GameResources_level02_Cave_XML}
Symbol 127 Bitmap {GameResources_screenA}
Symbol 128 BinaryData {GameResources_level03f_Farm_TMX}
Symbol 129 Bitmap {GameResources_screenB}
Symbol 130 Bitmap {GameResources_screenC}
Symbol 131 BinaryData {GameResources_level06_Base_XML}
Symbol 132 Bitmap {GameResources_screenD}
Symbol 133 Bitmap {GameResources_screenE}
Symbol 134 Bitmap {GameResources_screenF}
Symbol 135 Bitmap {com.halfbot.menus.helpMenu_Imageclogo}
Symbol 136 BinaryData {GameResources_level05_Farm_XML}
Symbol 137 Bitmap {com.halfbot.menus.levelSelectMenu_Imageclogo}
Symbol 138 Bitmap {GameScreen_ImageStart}
Symbol 139 Bitmap {com.halfbot.menus.scoresMenu_ImageArrowUp}
Symbol 140 Bitmap {com.halfbot.menus.creditsMenu_Imageclogo}
Symbol 141 BinaryData {GameResources_level01c_Cave_TMX}
Symbol 142 BinaryData {GameResources_level01_Farm_XML}
Symbol 143 Bitmap {GameResources_resBg28}
Symbol 144 Bitmap {GameResources_resBg27}
Symbol 145 Bitmap {GameResources_resBg26}
Symbol 146 BinaryData {GameResources_level01b_Base_TMX}
Symbol 147 Bitmap {GameResources_resBg24}
Symbol 148 Bitmap {GameResources_resBg22}
Symbol 149 BinaryData {GameResources_levelSprites_XML}
Symbol 150 Bitmap {com.halfbot.menus.pauseMenu_ImageResumeNormalOver}
Symbol 151 BinaryData {GameResources_level04_Base_XML}
Symbol 152 Bitmap {com.halfbot.menus.nameEntryMenu_ImageClearNormalOver}
Symbol 153 Bitmap {com.halfbot.menus.pauseMenu_ImageMainNormal}
Symbol 154 Bitmap {com.halfbot.menus.scoresMenu_ImageArrowDown}
Symbol 155 Bitmap {GameResources_imageGibs_bat}
Symbol 156 BinaryData {GameResources_level02f_Farm_TMX}
Symbol 157 Bitmap {GameResources_imageBatGibs}
Symbol 158 BinaryData {GameResources_levelSheets_XML}
Symbol 159 Bitmap {com.halfbot.menus.retryMenu_ImageSubmitNormal}
Symbol 160 Bitmap {GameResources_imageCrateGibs}
Symbol 161 Bitmap {GameResources_imageHintBox}
Symbol 162 Bitmap {com.halfbot.menus.levelCompleteMenu_ImageResumeNormalOver}
Symbol 163 Bitmap {com.halfbot.menus.nameEntryMenu_ImageSubmitNormalOver}
Symbol 164 Bitmap {GameScreen_ImageHealthMeterBg}
Symbol 165 Bitmap {com.halfbot.menus.mainMenu_ImageMusicNormalOver}
Symbol 166 Bitmap {GameResources_imageDrone2}
Symbol 167 Bitmap {GameResources_imageDrone1}
Symbol 168 Bitmap {com.halfbot.menus.storyIntroMenu_ImageSkipNormalOver}
Symbol 169 BinaryData {GameResources_level02_Farm_XML}
Symbol 170 Bitmap {GameResources_ImageHelpNormalOver}
Symbol 171 Bitmap {com.halfbot.menus.retryMenu_ImageSubmitNormalOver}
Symbol 172 BinaryData {GameResources_level06c_Cave_TMX}
Symbol 173 Bitmap {GameResources_imageDroid1}
Symbol 174 Bitmap {GameResources_imagelazerdrone}
Symbol 175 BinaryData {GameResources_level09b_Base_TMX}
Symbol 176 Bitmap {com.halfbot.menus.pauseMenu_ImageResumeNormal}
Symbol 177 BinaryData {GameResources_level05f_Farm_TMX}
Symbol 178 Bitmap {GameResources_imageFarmer}
Symbol 179 BinaryData {GameResources_level01_Cave_XML}
Symbol 180 BinaryData {GameResources_level08_Base_XML}
Symbol 181 Bitmap {com.halfbot.menus.mainMenu_ImageScoresNormal}
Symbol 182 Bitmap {GameResources_imageSoldierGibs}
Symbol 183 Bitmap {GameResources_imageCowGibs}
Symbol 184 Bitmap {GameResources_imageFarmer2}
Symbol 185 Bitmap {GameResources_imagePowerup}
Symbol 186 Bitmap {GameResources_imageBatPoo}
Symbol 187 BinaryData {GameResources_level02b_Base_TMX}
Symbol 188 BinaryData {GameResources_level04b_Base_TMX}
Symbol 189 BinaryData {GameResources_level06_Cave_XML}
Symbol 190 BinaryData {GameResources_level05b_Base_TMX}
Symbol 191 BinaryData {GameResources_LevelDescriptionFile}
Symbol 192 Bitmap {GameResources_imageBrains1}
Symbol 193 BinaryData {GameResources_level03_Base_XML}
Symbol 194 BinaryData {GameResources_level05_Base_XML}
Symbol 195 BinaryData {GameResources_level04_Farm_XML}
Symbol 196 Bitmap {GameResources_imageCharacter}
Symbol 197 Bitmap {GameResources_imageBat}
Symbol 198 Bitmap {com.halfbot.menus.storyIntroMenu_ImageSkipNormal}
Symbol 199 Bitmap {com.halfbot.menus.levelCompleteMenu_ImageMainNormalOver}
Symbol 200 BinaryData {GameResources_level02c_Cave_TMX}
Symbol 201 BinaryData {GameResources_level03_Farm_XML}
Symbol 202 Bitmap {GameResources_tileSet4}
Symbol 203 Bitmap {GameResources_tileSet2}
Symbol 204 Bitmap {GameResources_tileSet3}
Symbol 205 BinaryData {GameResources_levelCommon_XML}
Symbol 206 Bitmap {GameResources_tileSet1}
Symbol 207 Bitmap {com.halfbot.menus.levelSelectMenu_ImagePlayNormal}
Symbol 208 BinaryData {com.halfbot.menus.sponsor_Swf_dataClass}
Symbol 209 BinaryData {GameResources_level1_Base_XML}
Symbol 210 Bitmap {com.halfbot.menus.scoresMenu_Imageclogo}
Symbol 211 Bitmap {GameResources_imageBox1}
Symbol 212 Bitmap {GameResources_imageDrone1Gibs}
Symbol 213 BinaryData {GameResources_level04_Cave_XML}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
SWFMetaData (77)Timeline Frame 1458 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 2Symbol 9 as "com.halfbot.system.Data.GameData_theme2"
ExportAssets (56)Timeline Frame 2Symbol 10 as "GameResources_Bot2Death"
ExportAssets (56)Timeline Frame 2Symbol 11 as "GameResources_BotDeath"
ExportAssets (56)Timeline Frame 2Symbol 12 as "GameResources_Gunshot2"
ExportAssets (56)Timeline Frame 2Symbol 13 as "GameResources_BotHit"
ExportAssets (56)Timeline Frame 2Symbol 14 as "GameResources_theme2"
ExportAssets (56)Timeline Frame 2Symbol 15 as "GameResources_sound2"
ExportAssets (56)Timeline Frame 2Symbol 16 as "GameResources_sound1"
ExportAssets (56)Timeline Frame 2Symbol 17 as "GameResources_BoxHit"
ExportAssets (56)Timeline Frame 2Symbol 18 as "GameResources_BotShoot"
ExportAssets (56)Timeline Frame 2Symbol 19 as "GameResources_yeah01"
ExportAssets (56)Timeline Frame 2Symbol 20 as "GameResources_hit01"
ExportAssets (56)Timeline Frame 2Symbol 21 as "GameResources_sound3"
ExportAssets (56)Timeline Frame 2Symbol 22 as "GameResources_sound4"
ExportAssets (56)Timeline Frame 2Symbol 23 as "GameResources_sound5"
ExportAssets (56)Timeline Frame 2Symbol 24 as "GameResources_sound6"
ExportAssets (56)Timeline Frame 2Symbol 25 as "GameResources_sound7"
ExportAssets (56)Timeline Frame 2Symbol 26 as "GameResources_sound8"
ExportAssets (56)Timeline Frame 2Symbol 27 as "GameResources_sound9"
ExportAssets (56)Timeline Frame 2Symbol 28 as "GameResources_powerUpGun"
ExportAssets (56)Timeline Frame 2Symbol 29 as "GameResources_BoxBreak"
ExportAssets (56)Timeline Frame 2Symbol 30 as "GameResources_sound10"
ExportAssets (56)Timeline Frame 2Symbol 31 as "GameResources_sound11"
ExportAssets (56)Timeline Frame 2Symbol 32 as "GameResources_cowdeath"
ExportAssets (56)Timeline Frame 2Symbol 33 as "GameResources_woo01"
ExportAssets (56)Timeline Frame 2Symbol 34 as "GameResources_Gunshot"
ExportAssets (56)Timeline Frame 2Symbol 35 as "GameResources_batdeath"
ExportAssets (56)Timeline Frame 2Symbol 36 as "GameResources_pickup01"
ExportAssets (56)Timeline Frame 2Symbol 37 as "GameResources_death01"
ExportAssets (56)Timeline Frame 2Symbol 38 as "GameResources_unlock"
ExportAssets (56)Timeline Frame 2Symbol 39 as "GameResources_laserGun"
SerialNumber (41)Timeline Frame 1

Labels

"preloader_new"Frame 1
"DontComeInPeace"Frame 2




http://swfchan.com/25/124818/info.shtml
Created: 28/2 -2019 23:27:59 Last modified: 28/2 -2019 23:27:59 Server time: 25/04 -2024 14:48:48