home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Diversos / Jumper.swf / scripts / com / kongregate / as3 / client / KongregateAPI.as < prev   
Encoding:
Text File  |  2008-09-05  |  7.0 KB  |  205 lines

  1. package com.kongregate.as3.client
  2. {
  3.    import com.kongregate.as3.client.events.KongregateEvent;
  4.    import com.kongregate.as3.client.services.HighScoreServiceShadow;
  5.    import com.kongregate.as3.client.services.IHighScoreServices;
  6.    import com.kongregate.as3.client.services.IKongregateServices;
  7.    import com.kongregate.as3.client.services.IStatServices;
  8.    import com.kongregate.as3.client.services.IUserServices;
  9.    import com.kongregate.as3.client.services.KongregateServiceShadow;
  10.    import com.kongregate.as3.client.services.StatServiceShadow;
  11.    import com.kongregate.as3.client.services.UserServiceShadow;
  12.    import flash.display.Loader;
  13.    import flash.display.LoaderInfo;
  14.    import flash.display.Sprite;
  15.    import flash.errors.IOError;
  16.    import flash.errors.IllegalOperationError;
  17.    import flash.events.Event;
  18.    import flash.events.IOErrorEvent;
  19.    import flash.events.TimerEvent;
  20.    import flash.net.URLRequest;
  21.    import flash.system.ApplicationDomain;
  22.    import flash.system.LoaderContext;
  23.    import flash.system.Security;
  24.    import flash.system.SecurityDomain;
  25.    import flash.utils.*;
  26.    
  27.    [Embed(source="/_assets/assets.swf", symbol="com.kongregate.as3.client.KongregateAPI")]
  28.    public class KongregateAPI extends Sprite
  29.    {
  30.       
  31.       private static var _connected:Boolean;
  32.       
  33.       private static var kUser:IUserServices;
  34.       
  35.       private static const CLASS_USER:String = "com.kongregate.as3.client.services.UserServices";
  36.       
  37.       private static const CLASS_STATS:String = "com.kongregate.as3.client.services.StatServices";
  38.       
  39.       private static var _loaded:Boolean;
  40.       
  41.       private static const CLASS_SERVICES:String = "com.kongregate.as3.client.services.KongregateServices";
  42.       
  43.       private static const CLASS_SCORES:String = "com.kongregate.as3.client.services.HighScoreServices";
  44.       
  45.       private static var kServices:IKongregateServices;
  46.       
  47.       private static var kScores:IHighScoreServices;
  48.       
  49.       private static var mInstance:KongregateAPI;
  50.       
  51.       private static var kStats:IStatServices;
  52.       
  53.       private static var kAPI:IAPIBootstrap;
  54.       
  55.       private static const DEBUG_API_URL:String = "//Linuxpc/kongregate/public/flash/API_AS3.swf";
  56.        
  57.       
  58.       private var loader:Loader;
  59.       
  60.       private var loadedDomain:ApplicationDomain;
  61.       
  62.       private const VERSION:Number = 1;
  63.       
  64.       public function KongregateAPI()
  65.       {
  66.          super();
  67.          if(mInstance != null)
  68.          {
  69.             throw new Error("Warning: KongregateAPI has been added to stage more than once or accessed improperly. Use getInstance() or a stage reference to access.");
  70.          }
  71.          mInstance = this;
  72.          this.addEventListener(Event.ADDED_TO_STAGE,init,false,0,true);
  73.       }
  74.       
  75.       public static function getInstance() : KongregateAPI
  76.       {
  77.          if(!mInstance)
  78.          {
  79.             throw new IllegalOperationError("You must add the Kongregate API component to the stage before attempting to access it.");
  80.          }
  81.          return mInstance;
  82.       }
  83.       
  84.       public function get loaded() : Boolean
  85.       {
  86.          return _loaded;
  87.       }
  88.       
  89.       public function get connected() : Boolean
  90.       {
  91.          return _connected;
  92.       }
  93.       
  94.       private function alertConnected(param1:TimerEvent = null) : void
  95.       {
  96.          var _loc2_:KongregateEvent = null;
  97.          var _loc3_:Boolean = false;
  98.          _loc2_ = new KongregateEvent(KongregateEvent.COMPLETE);
  99.          _loc3_ = this.dispatchEvent(_loc2_);
  100.       }
  101.       
  102.       private function init(param1:Event) : void
  103.       {
  104.          var _loc2_:Object = null;
  105.          var _loc3_:String = null;
  106.          var _loc4_:URLRequest = null;
  107.          var _loc5_:LoaderContext = null;
  108.          this.removeEventListener(Event.ADDED_TO_STAGE,init);
  109.          _loaded = false;
  110.          _connected = false;
  111.          _loc2_ = LoaderInfo(root.loaderInfo).parameters;
  112.          _loc3_ = String(_loc2_.api_path);
  113.          if(_loc3_ == null)
  114.          {
  115.             trace("Alert: Kongregate API could not be loaded, due to local testing. API will load when the game is uploaded.");
  116.             createShadowServices();
  117.             return;
  118.          }
  119.          Security.allowDomain("*.kongregate.com");
  120.          Security.allowDomain("kongregatetrunk.com");
  121.          _loc4_ = new URLRequest(_loc3_);
  122.          (_loc5_ = new LoaderContext(false)).applicationDomain = ApplicationDomain.currentDomain;
  123.          _loc5_.securityDomain = SecurityDomain.currentDomain;
  124.          loader = new Loader();
  125.          loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);
  126.          loader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
  127.          loader.load(_loc4_,_loc5_);
  128.       }
  129.       
  130.       public function get api() : IAPIBootstrap
  131.       {
  132.          return kAPI;
  133.       }
  134.       
  135.       private function loadComplete(param1:Event) : void
  136.       {
  137.          getServices();
  138.       }
  139.       
  140.       public function get scores() : IHighScoreServices
  141.       {
  142.          return kScores;
  143.       }
  144.       
  145.       private function ioErrorHandler(param1:IOErrorEvent) : void
  146.       {
  147.          throw new IOError("API file not found. " + param1);
  148.       }
  149.       
  150.       public function get services() : IKongregateServices
  151.       {
  152.          return kServices;
  153.       }
  154.       
  155.       public function get stats() : IStatServices
  156.       {
  157.          return kStats;
  158.       }
  159.       
  160.       private function createShadowServices() : void
  161.       {
  162.          var _loc1_:Timer = null;
  163.          trace(">>> Kongregate Shadow Services instantiated for local development..");
  164.          kServices = new KongregateServiceShadow();
  165.          kScores = new HighScoreServiceShadow();
  166.          kStats = new StatServiceShadow();
  167.          kUser = new UserServiceShadow();
  168.          _loc1_ = new Timer(200,1);
  169.          _loc1_.addEventListener(TimerEvent.TIMER_COMPLETE,alertConnected);
  170.          _loc1_.start();
  171.          _connected = true;
  172.       }
  173.       
  174.       public function get user() : IUserServices
  175.       {
  176.          return kUser;
  177.       }
  178.       
  179.       private function getServices() : void
  180.       {
  181.          var _loc1_:ApplicationDomain = null;
  182.          var _loc2_:* = undefined;
  183.          var _loc3_:* = undefined;
  184.          var _loc4_:* = undefined;
  185.          var _loc5_:* = undefined;
  186.          _loc1_ = ApplicationDomain.currentDomain;
  187.          kAPI = IAPIBootstrap(loader.getChildAt(0));
  188.          this.addChild(loader);
  189.          _loc2_ = _loc1_.getDefinition(CLASS_SERVICES);
  190.          trace(_loc2_);
  191.          kServices = _loc2_.getInstance();
  192.          _loc3_ = _loc1_.getDefinition(CLASS_SCORES);
  193.          kScores = _loc3_.getInstance();
  194.          _loc4_ = _loc1_.getDefinition(CLASS_STATS);
  195.          kStats = _loc4_.getInstance();
  196.          _loc5_ = _loc1_.getDefinition(CLASS_USER);
  197.          kUser = _loc5_.getInstance();
  198.          kServices.connect(VERSION);
  199.          _loaded = true;
  200.          _connected = true;
  201.          alertConnected();
  202.       }
  203.    }
  204. }
  205.