home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Puzzle / Clusterz / Clusterz.swf / scripts / it / gotoandplay / smartfoxserver / handlers / SysHandler.as < prev   
Encoding:
Text File  |  2008-09-12  |  25.4 KB  |  713 lines

  1. package it.gotoandplay.smartfoxserver.handlers
  2. {
  3.    import flash.utils.getTimer;
  4.    import it.gotoandplay.smartfoxserver.SFSEvent;
  5.    import it.gotoandplay.smartfoxserver.SmartFoxClient;
  6.    import it.gotoandplay.smartfoxserver.data.Room;
  7.    import it.gotoandplay.smartfoxserver.data.User;
  8.    import it.gotoandplay.smartfoxserver.util.Entities;
  9.    import it.gotoandplay.smartfoxserver.util.ObjectSerializer;
  10.    
  11.    public class SysHandler implements IMessageHandler
  12.    {
  13.        
  14.       
  15.       private var sfs:SmartFoxClient;
  16.       
  17.       private var handlersTable:Array;
  18.       
  19.       public function SysHandler(param1:SmartFoxClient)
  20.       {
  21.          super();
  22.          this.sfs = param1;
  23.          handlersTable = [];
  24.          handlersTable["apiOK"] = this.handleApiOK;
  25.          handlersTable["apiKO"] = this.handleApiKO;
  26.          handlersTable["logOK"] = this.handleLoginOk;
  27.          handlersTable["logKO"] = this.handleLoginKo;
  28.          handlersTable["rmList"] = this.handleRoomList;
  29.          handlersTable["uCount"] = this.handleUserCountChange;
  30.          handlersTable["joinOK"] = this.handleJoinOk;
  31.          handlersTable["joinKO"] = this.handleJoinKo;
  32.          handlersTable["uER"] = this.handleUserEnterRoom;
  33.          handlersTable["userGone"] = this.handleUserLeaverRoom;
  34.          handlersTable["pubMsg"] = this.handlePublicMessage;
  35.          handlersTable["prvMsg"] = this.handlePrivateMessage;
  36.          handlersTable["dmnMsg"] = this.handleAdminMessage;
  37.          handlersTable["modMsg"] = this.handleModMessage;
  38.          handlersTable["dataObj"] = this.handleASObject;
  39.          handlersTable["rVarsUpdate"] = this.handleRoomVarsUpdate;
  40.          handlersTable["roomAdd"] = this.handleRoomAdded;
  41.          handlersTable["roomDel"] = this.handleRoomDeleted;
  42.          handlersTable["rndK"] = this.handleRandomKey;
  43.          handlersTable["roundTripRes"] = this.handleRoundTripBench;
  44.          handlersTable["uVarsUpdate"] = this.handleUserVarsUpdate;
  45.          handlersTable["createRmKO"] = this.handleCreateRoomError;
  46.          handlersTable["bList"] = this.handleBuddyList;
  47.          handlersTable["bUpd"] = this.handleBuddyListUpdate;
  48.          handlersTable["bAdd"] = this.handleBuddyAdded;
  49.          handlersTable["roomB"] = this.handleBuddyRoom;
  50.          handlersTable["leaveRoom"] = this.handleLeaveRoom;
  51.          handlersTable["swSpec"] = this.handleSpectatorSwitched;
  52.       }
  53.       
  54.       private function handleRoomDeleted(param1:Object) : void
  55.       {
  56.          var _loc2_:int = 0;
  57.          var _loc3_:Array = null;
  58.          var _loc4_:Object = null;
  59.          var _loc5_:SFSEvent = null;
  60.          _loc2_ = int(param1.body.rm.@id);
  61.          _loc3_ = sfs.getAllRooms();
  62.          (_loc4_ = {}).room = _loc3_[_loc2_];
  63.          delete _loc3_[_loc2_];
  64.          _loc5_ = new SFSEvent(SFSEvent.onRoomDeleted,_loc4_);
  65.          sfs.dispatchEvent(_loc5_);
  66.       }
  67.       
  68.       public function handleMessage(param1:Object, param2:String) : void
  69.       {
  70.          var _loc3_:XML = null;
  71.          var _loc4_:String = null;
  72.          var _loc5_:Function = null;
  73.          _loc3_ = param1 as XML;
  74.          _loc4_ = _loc3_.body.@action;
  75.          if((_loc5_ = handlersTable[_loc4_]) != null)
  76.          {
  77.             _loc5_.apply(this,[param1]);
  78.          }
  79.          else
  80.          {
  81.             trace("Unknown sys command: " + _loc4_);
  82.          }
  83.       }
  84.       
  85.       public function handleUserEnterRoom(param1:Object) : void
  86.       {
  87.          var _loc2_:int = 0;
  88.          var _loc3_:int = 0;
  89.          var _loc4_:String = null;
  90.          var _loc5_:* = false;
  91.          var _loc6_:* = false;
  92.          var _loc7_:int = 0;
  93.          var _loc8_:XMLList = null;
  94.          var _loc9_:Room = null;
  95.          var _loc10_:User = null;
  96.          var _loc11_:Object = null;
  97.          var _loc12_:SFSEvent = null;
  98.          _loc2_ = int(param1.body.@r);
  99.          _loc3_ = int(param1.body.u.@i);
  100.          _loc4_ = String(param1.body.u.n);
  101.          _loc5_ = param1.body.u.@m == "1";
  102.          _loc6_ = param1.body.u.@s == "1";
  103.          _loc7_ = param1.body.u.@p != null ? int(param1.body.u.@p) : -1;
  104.          _loc8_ = param1.body.u.vars["var"];
  105.          _loc9_ = sfs.getRoom(_loc2_);
  106.          (_loc10_ = new User(_loc3_,_loc4_)).setModerator(_loc5_);
  107.          _loc10_.setIsSpectator(_loc6_);
  108.          _loc10_.setPlayerId(_loc7_);
  109.          _loc9_.addUser(_loc10_,_loc3_);
  110.          if(param1.body.u.vars.toString().length > 0)
  111.          {
  112.             populateVariables(_loc10_.getVariables(),param1.body.u);
  113.          }
  114.          (_loc11_ = {}).roomId = _loc2_;
  115.          _loc11_.user = _loc10_;
  116.          _loc12_ = new SFSEvent(SFSEvent.onUserEnterRoom,_loc11_);
  117.          sfs.dispatchEvent(_loc12_);
  118.       }
  119.       
  120.       public function handleUserVarsUpdate(param1:Object) : void
  121.       {
  122.          var _loc2_:int = 0;
  123.          var _loc3_:int = 0;
  124.          var _loc4_:User = null;
  125.          var _loc5_:Array = null;
  126.          var _loc6_:Object = null;
  127.          var _loc7_:SFSEvent = null;
  128.          _loc2_ = int(param1.body.@r);
  129.          _loc3_ = int(param1.body.user.@id);
  130.          _loc4_ = sfs.getRoom(_loc2_).getUser(_loc3_);
  131.          _loc5_ = [];
  132.          if(param1.body.vars.toString().length > 0)
  133.          {
  134.             populateVariables(_loc4_.getVariables(),param1.body,_loc5_);
  135.          }
  136.          (_loc6_ = {}).user = _loc4_;
  137.          _loc6_.changedVars = _loc5_;
  138.          _loc7_ = new SFSEvent(SFSEvent.onUserVariablesUpdate,_loc6_);
  139.          sfs.dispatchEvent(_loc7_);
  140.       }
  141.       
  142.       public function handleUserLeaverRoom(param1:Object) : void
  143.       {
  144.          var _loc2_:int = 0;
  145.          var _loc3_:int = 0;
  146.          var _loc4_:Room = null;
  147.          var _loc5_:String = null;
  148.          var _loc6_:Object = null;
  149.          var _loc7_:SFSEvent = null;
  150.          _loc2_ = int(param1.body.user.@id);
  151.          _loc3_ = int(param1.body.@r);
  152.          _loc5_ = (_loc4_ = sfs.getRoom(_loc3_)).getUser(_loc2_).getName();
  153.          _loc4_.removeUser(_loc2_);
  154.          (_loc6_ = {}).roomId = _loc3_;
  155.          _loc6_.userId = _loc2_;
  156.          _loc6_.userName = _loc5_;
  157.          _loc7_ = new SFSEvent(SFSEvent.onUserLeaveRoom,_loc6_);
  158.          sfs.dispatchEvent(_loc7_);
  159.       }
  160.       
  161.       public function handlePrivateMessage(param1:Object) : void
  162.       {
  163.          var _loc2_:int = 0;
  164.          var _loc3_:int = 0;
  165.          var _loc4_:String = null;
  166.          var _loc5_:User = null;
  167.          var _loc6_:Object = null;
  168.          var _loc7_:SFSEvent = null;
  169.          _loc2_ = int(param1.body.@r);
  170.          _loc3_ = int(param1.body.user.@id);
  171.          _loc4_ = String(param1.body.txt);
  172.          _loc5_ = sfs.getRoom(_loc2_).getUser(_loc3_);
  173.          (_loc6_ = {}).message = Entities.decodeEntities(_loc4_);
  174.          _loc6_.sender = _loc5_;
  175.          _loc6_.roomId = _loc2_;
  176.          _loc6_.userId = _loc3_;
  177.          _loc7_ = new SFSEvent(SFSEvent.onPrivateMessage,_loc6_);
  178.          sfs.dispatchEvent(_loc7_);
  179.       }
  180.       
  181.       private function handleCreateRoomError(param1:Object) : void
  182.       {
  183.          var _loc2_:String = null;
  184.          var _loc3_:Object = null;
  185.          var _loc4_:SFSEvent = null;
  186.          _loc2_ = String(param1.body.room.@e);
  187.          _loc3_ = {};
  188.          _loc3_.error = _loc2_;
  189.          _loc4_ = new SFSEvent(SFSEvent.onCreateRoomError,_loc3_);
  190.          sfs.dispatchEvent(_loc4_);
  191.       }
  192.       
  193.       private function handleBuddyRoom(param1:Object) : void
  194.       {
  195.          var _loc2_:String = null;
  196.          var _loc3_:Array = null;
  197.          var _loc4_:int = 0;
  198.          var _loc5_:Object = null;
  199.          var _loc6_:SFSEvent = null;
  200.          _loc2_ = String(param1.body.br.@r);
  201.          _loc3_ = _loc2_.split(",");
  202.          _loc4_ = 0;
  203.          while(_loc4_ < _loc3_.length)
  204.          {
  205.             _loc3_[_loc4_] = int(_loc3_[_loc4_]);
  206.             _loc4_++;
  207.          }
  208.          (_loc5_ = {}).idList = _loc3_;
  209.          _loc6_ = new SFSEvent(SFSEvent.onBuddyRoom,_loc5_);
  210.          sfs.dispatchEvent(_loc6_);
  211.       }
  212.       
  213.       private function handleBuddyListUpdate(param1:Object) : void
  214.       {
  215.          var _loc2_:Object = null;
  216.          var _loc3_:SFSEvent = null;
  217.          var _loc4_:Object = null;
  218.          var _loc5_:XMLList = null;
  219.          var _loc6_:Object = null;
  220.          var _loc7_:Boolean = false;
  221.          var _loc8_:String = null;
  222.          var _loc9_:XML = null;
  223.          _loc2_ = {};
  224.          _loc3_ = null;
  225.          if(param1.body.b != null)
  226.          {
  227.             (_loc4_ = {}).isOnline = param1.body.b.@s == "1" ? true : false;
  228.             _loc4_.name = param1.body.b.n.toString();
  229.             _loc4_.id = param1.body.b.@i;
  230.             _loc4_.variables = {};
  231.             if((_loc5_ = param1.body.b.vs).toString().length > 0)
  232.             {
  233.                for each(_loc9_ in _loc5_.v)
  234.                {
  235.                   _loc4_.variables[_loc9_.@n.toString()] = _loc9_.v.toString();
  236.                }
  237.             }
  238.             _loc6_ = null;
  239.             _loc7_ = false;
  240.             for(_loc8_ in sfs.buddyList)
  241.             {
  242.                if((_loc6_ = sfs.buddyList[_loc8_]).name == _loc4_.name)
  243.                {
  244.                   sfs.buddyList[_loc8_] = _loc4_;
  245.                   _loc7_ = true;
  246.                   break;
  247.                }
  248.             }
  249.             _loc2_.buddy = _loc4_;
  250.             _loc3_ = new SFSEvent(SFSEvent.onBuddyListUpdate,_loc2_);
  251.             sfs.dispatchEvent(_loc3_);
  252.          }
  253.          else
  254.          {
  255.             _loc2_.error = param1.body.err.toString();
  256.             _loc3_ = new SFSEvent(SFSEvent.onBuddyListError,_loc2_);
  257.             sfs.dispatchEvent(_loc3_);
  258.          }
  259.       }
  260.       
  261.       public function handleUserCountChange(param1:Object) : void
  262.       {
  263.          var _loc2_:int = 0;
  264.          var _loc3_:int = 0;
  265.          var _loc4_:int = 0;
  266.          var _loc5_:Room = null;
  267.          var _loc6_:Object = null;
  268.          var _loc7_:SFSEvent = null;
  269.          _loc2_ = int(param1.body.@u);
  270.          _loc3_ = int(param1.body.@s);
  271.          _loc4_ = int(param1.body.@r);
  272.          if((_loc5_ = sfs.getAllRooms()[_loc4_]) != null)
  273.          {
  274.             _loc5_.setUserCount(_loc2_);
  275.             _loc5_.setSpectatorCount(_loc3_);
  276.             (_loc6_ = {}).room = _loc5_;
  277.             _loc7_ = new SFSEvent(SFSEvent.onUserCountChange,_loc6_);
  278.             sfs.dispatchEvent(_loc7_);
  279.          }
  280.       }
  281.       
  282.       private function handleRandomKey(param1:Object) : void
  283.       {
  284.          var _loc2_:String = null;
  285.          var _loc3_:Object = null;
  286.          var _loc4_:SFSEvent = null;
  287.          _loc2_ = String(param1.body.k.toString());
  288.          _loc3_ = {};
  289.          _loc3_.key = _loc2_;
  290.          _loc4_ = new SFSEvent(SFSEvent.onRandomKey,_loc3_);
  291.          sfs.dispatchEvent(_loc4_);
  292.       }
  293.       
  294.       public function handlePublicMessage(param1:Object) : void
  295.       {
  296.          var _loc2_:int = 0;
  297.          var _loc3_:int = 0;
  298.          var _loc4_:String = null;
  299.          var _loc5_:User = null;
  300.          var _loc6_:Object = null;
  301.          var _loc7_:SFSEvent = null;
  302.          _loc2_ = int(param1.body.@r);
  303.          _loc3_ = int(param1.body.user.@id);
  304.          _loc4_ = String(param1.body.txt);
  305.          _loc5_ = sfs.getRoom(_loc2_).getUser(_loc3_);
  306.          (_loc6_ = {}).message = Entities.decodeEntities(_loc4_);
  307.          _loc6_.sender = _loc5_;
  308.          _loc6_.roomId = _loc2_;
  309.          _loc7_ = new SFSEvent(SFSEvent.onPublicMessage,_loc6_);
  310.          sfs.dispatchEvent(_loc7_);
  311.       }
  312.       
  313.       public function handleAdminMessage(param1:Object) : void
  314.       {
  315.          var _loc2_:int = 0;
  316.          var _loc3_:int = 0;
  317.          var _loc4_:String = null;
  318.          var _loc5_:Object = null;
  319.          var _loc6_:SFSEvent = null;
  320.          _loc2_ = int(param1.body.@r);
  321.          _loc3_ = int(param1.body.user.@id);
  322.          _loc4_ = String(param1.body.txt);
  323.          (_loc5_ = {}).message = Entities.decodeEntities(_loc4_);
  324.          _loc6_ = new SFSEvent(SFSEvent.onAdminMessage,_loc5_);
  325.          sfs.dispatchEvent(_loc6_);
  326.       }
  327.       
  328.       public function dispatchDisconnection() : void
  329.       {
  330.          var _loc1_:SFSEvent = null;
  331.          _loc1_ = new SFSEvent(SFSEvent.onConnectionLost,null);
  332.          sfs.dispatchEvent(_loc1_);
  333.       }
  334.       
  335.       private function handleSpectatorSwitched(param1:Object) : void
  336.       {
  337.          var _loc2_:int = 0;
  338.          var _loc3_:Object = null;
  339.          var _loc4_:SFSEvent = null;
  340.          _loc2_ = int(param1.body.rm.@id);
  341.          sfs.playerId = int(param1.body.pid.@id);
  342.          _loc3_ = {};
  343.          _loc3_.success = sfs.playerId > 0;
  344.          _loc3_.newId = sfs.playerId;
  345.          _loc3_.room = sfs.getRoom(_loc2_);
  346.          _loc4_ = new SFSEvent(SFSEvent.onSpectatorSwitched,_loc3_);
  347.          sfs.dispatchEvent(_loc4_);
  348.       }
  349.       
  350.       public function handleLoginOk(param1:Object) : void
  351.       {
  352.          var _loc2_:int = 0;
  353.          var _loc3_:int = 0;
  354.          var _loc4_:String = null;
  355.          var _loc5_:Object = null;
  356.          var _loc6_:SFSEvent = null;
  357.          _loc2_ = int(param1.body.login.@id);
  358.          _loc3_ = int(param1.body.login.@mod);
  359.          _loc4_ = String(param1.body.login.@n);
  360.          sfs.amIModerator = _loc3_ == 1;
  361.          sfs.myUserId = _loc2_;
  362.          sfs.myUserName = _loc4_;
  363.          sfs.playerId = -1;
  364.          (_loc5_ = {}).success = true;
  365.          _loc5_.name = _loc4_;
  366.          _loc5_.error = "";
  367.          _loc6_ = new SFSEvent(SFSEvent.onLogin,_loc5_);
  368.          sfs.dispatchEvent(_loc6_);
  369.          sfs.getRoomList();
  370.       }
  371.       
  372.       public function handleRoomVarsUpdate(param1:Object) : void
  373.       {
  374.          var _loc2_:int = 0;
  375.          var _loc3_:int = 0;
  376.          var _loc4_:Room = null;
  377.          var _loc5_:Array = null;
  378.          var _loc6_:Object = null;
  379.          var _loc7_:SFSEvent = null;
  380.          _loc2_ = int(param1.body.@r);
  381.          _loc3_ = int(param1.body.user.@id);
  382.          _loc4_ = sfs.getRoom(_loc2_);
  383.          _loc5_ = [];
  384.          if(param1.body.vars.toString().length > 0)
  385.          {
  386.             populateVariables(_loc4_.getVariables(),param1.body,_loc5_);
  387.          }
  388.          (_loc6_ = {}).room = _loc4_;
  389.          _loc6_.changedVars = _loc5_;
  390.          _loc7_ = new SFSEvent(SFSEvent.onRoomVariablesUpdate,_loc6_);
  391.          sfs.dispatchEvent(_loc7_);
  392.       }
  393.       
  394.       public function handleRoomList(param1:Object) : void
  395.       {
  396.          var _loc2_:Array = null;
  397.          var _loc3_:XML = null;
  398.          var _loc4_:Object = null;
  399.          var _loc5_:SFSEvent = null;
  400.          var _loc6_:int = 0;
  401.          var _loc7_:Room = null;
  402.          _loc2_ = sfs.getAllRooms();
  403.          for each(_loc3_ in param1.body.rmList.rm)
  404.          {
  405.             _loc6_ = int(_loc3_.@id);
  406.             _loc7_ = new Room(_loc6_,_loc3_.n,int(_loc3_.@maxu),int(_loc3_.@maxs),_loc3_.@temp == "1",_loc3_.@game == "1",_loc3_.@priv == "1",_loc3_.@lmb == "1",int(_loc3_.@ucnt),int(_loc3_.@scnt));
  407.             if(_loc3_.vars.toString().length > 0)
  408.             {
  409.                populateVariables(_loc7_.getVariables(),_loc3_);
  410.             }
  411.             _loc2_[_loc6_] = _loc7_;
  412.          }
  413.          (_loc4_ = {}).roomList = _loc2_;
  414.          _loc5_ = new SFSEvent(SFSEvent.onRoomListUpdate,_loc4_);
  415.          sfs.dispatchEvent(_loc5_);
  416.       }
  417.       
  418.       private function handleBuddyAdded(param1:Object) : void
  419.       {
  420.          var _loc2_:Object = null;
  421.          var _loc3_:XMLList = null;
  422.          var _loc4_:Object = null;
  423.          var _loc5_:SFSEvent = null;
  424.          var _loc6_:XML = null;
  425.          _loc2_ = {};
  426.          _loc2_.isOnline = param1.body.b.@s == "1" ? true : false;
  427.          _loc2_.name = param1.body.b.n.toString();
  428.          _loc2_.id = param1.body.b.@i;
  429.          _loc2_.variables = {};
  430.          _loc3_ = param1.body.b.vs;
  431.          if(_loc3_.toString().length > 0)
  432.          {
  433.             for each(_loc6_ in _loc3_.v)
  434.             {
  435.                _loc2_.variables[_loc6_.@n.toString()] = _loc6_.v.toString();
  436.             }
  437.          }
  438.          sfs.buddyList.push(_loc2_);
  439.          (_loc4_ = {}).list = sfs.buddyList;
  440.          _loc5_ = new SFSEvent(SFSEvent.onBuddyList,_loc4_);
  441.          sfs.dispatchEvent(_loc5_);
  442.       }
  443.       
  444.       private function handleRoomAdded(param1:Object) : void
  445.       {
  446.          var _loc2_:int = 0;
  447.          var _loc3_:String = null;
  448.          var _loc4_:int = 0;
  449.          var _loc5_:int = 0;
  450.          var _loc6_:Boolean = false;
  451.          var _loc7_:Boolean = false;
  452.          var _loc8_:Boolean = false;
  453.          var _loc9_:Boolean = false;
  454.          var _loc10_:Room = null;
  455.          var _loc11_:Array = null;
  456.          var _loc12_:Object = null;
  457.          var _loc13_:SFSEvent = null;
  458.          _loc2_ = int(param1.body.rm.@id);
  459.          _loc3_ = String(param1.body.rm.name);
  460.          _loc4_ = int(param1.body.rm.@max);
  461.          _loc5_ = int(param1.body.rm.@spec);
  462.          _loc6_ = param1.body.rm.@temp == "1" ? true : false;
  463.          _loc7_ = param1.body.rm.@game == "1" ? true : false;
  464.          _loc8_ = param1.body.rm.@priv == "1" ? true : false;
  465.          _loc9_ = param1.body.rm.@limbo == "1" ? true : false;
  466.          _loc10_ = new Room(_loc2_,_loc3_,_loc4_,_loc5_,_loc6_,_loc7_,_loc8_,_loc9_);
  467.          (_loc11_ = sfs.getAllRooms())[_loc2_] = _loc10_;
  468.          if(param1.body.rm.vars.toString().length > 0)
  469.          {
  470.             populateVariables(_loc10_.getVariables(),param1.body.rm);
  471.          }
  472.          (_loc12_ = {}).room = _loc10_;
  473.          _loc13_ = new SFSEvent(SFSEvent.onRoomAdded,_loc12_);
  474.          sfs.dispatchEvent(_loc13_);
  475.       }
  476.       
  477.       private function populateVariables(param1:Array, param2:Object, param3:Array = null) : void
  478.       {
  479.          var _loc4_:XML = null;
  480.          var _loc5_:String = null;
  481.          var _loc6_:String = null;
  482.          var _loc7_:String = null;
  483.          for each(_loc4_ in param2.vars["var"])
  484.          {
  485.             _loc5_ = String(_loc4_.@n);
  486.             _loc6_ = _loc4_.@t;
  487.             _loc7_ = _loc4_;
  488.             if(param3 != null)
  489.             {
  490.                param3.push(_loc5_);
  491.                param3[_loc5_] = true;
  492.             }
  493.             if(_loc6_ == "b")
  494.             {
  495.                param1[_loc5_] = Boolean(_loc7_);
  496.             }
  497.             else if(_loc6_ == "n")
  498.             {
  499.                param1[_loc5_] = Number(_loc7_);
  500.             }
  501.             else if(_loc6_ == "s")
  502.             {
  503.                param1[_loc5_] = _loc7_;
  504.             }
  505.             else if(_loc6_ == "x")
  506.             {
  507.                delete param1[_loc5_];
  508.             }
  509.          }
  510.       }
  511.       
  512.       private function handleLeaveRoom(param1:Object) : void
  513.       {
  514.          var _loc2_:int = 0;
  515.          var _loc3_:Object = null;
  516.          var _loc4_:SFSEvent = null;
  517.          _loc2_ = int(param1.body.rm.@id);
  518.          _loc3_ = {};
  519.          _loc3_.roomId = _loc2_;
  520.          _loc4_ = new SFSEvent(SFSEvent.onRoomLeft,_loc3_);
  521.          sfs.dispatchEvent(_loc4_);
  522.       }
  523.       
  524.       public function handleLoginKo(param1:Object) : void
  525.       {
  526.          var _loc2_:Object = null;
  527.          var _loc3_:SFSEvent = null;
  528.          _loc2_ = {};
  529.          _loc2_.success = false;
  530.          _loc2_.error = param1.body.login.@e;
  531.          _loc3_ = new SFSEvent(SFSEvent.onLogin,_loc2_);
  532.          sfs.dispatchEvent(_loc3_);
  533.       }
  534.       
  535.       public function handleModMessage(param1:Object) : void
  536.       {
  537.          var _loc2_:int = 0;
  538.          var _loc3_:int = 0;
  539.          var _loc4_:String = null;
  540.          var _loc5_:User = null;
  541.          var _loc6_:Object = null;
  542.          var _loc7_:SFSEvent = null;
  543.          _loc2_ = int(param1.body.@r);
  544.          _loc3_ = int(param1.body.user.@id);
  545.          _loc4_ = String(param1.body.txt);
  546.          _loc5_ = sfs.getRoom(_loc2_).getUser(_loc3_);
  547.          (_loc6_ = {}).message = Entities.decodeEntities(_loc4_);
  548.          _loc6_.sender = _loc5_;
  549.          _loc7_ = new SFSEvent(SFSEvent.onModeratorMessage,_loc6_);
  550.          sfs.dispatchEvent(_loc7_);
  551.       }
  552.       
  553.       public function handleApiOK(param1:Object) : void
  554.       {
  555.          var _loc2_:SFSEvent = null;
  556.          sfs.isConnected = true;
  557.          _loc2_ = new SFSEvent(SFSEvent.onConnection,{"success":true});
  558.          sfs.dispatchEvent(_loc2_);
  559.       }
  560.       
  561.       private function handleRoundTripBench(param1:Object) : void
  562.       {
  563.          var _loc2_:int = 0;
  564.          var _loc3_:int = 0;
  565.          var _loc4_:Object = null;
  566.          var _loc5_:SFSEvent = null;
  567.          _loc2_ = getTimer();
  568.          _loc3_ = _loc2_ - sfs.getBenchStartTime();
  569.          (_loc4_ = {}).elapsed = _loc3_;
  570.          _loc5_ = new SFSEvent(SFSEvent.onRoundTripResponse,_loc4_);
  571.          sfs.dispatchEvent(_loc5_);
  572.       }
  573.       
  574.       public function handleJoinOk(param1:Object) : void
  575.       {
  576.          var _loc2_:int = 0;
  577.          var _loc3_:XMLList = null;
  578.          var _loc4_:XMLList = null;
  579.          var _loc5_:int = 0;
  580.          var _loc6_:Room = null;
  581.          var _loc7_:XML = null;
  582.          var _loc8_:Object = null;
  583.          var _loc9_:SFSEvent = null;
  584.          var _loc10_:String = null;
  585.          var _loc11_:int = 0;
  586.          var _loc12_:Boolean = false;
  587.          var _loc13_:Boolean = false;
  588.          var _loc14_:int = 0;
  589.          var _loc15_:User = null;
  590.          _loc2_ = int(param1.body.@r);
  591.          _loc3_ = param1.body;
  592.          _loc4_ = param1.body.uLs.u;
  593.          _loc5_ = int(param1.body.pid.@id);
  594.          sfs.activeRoomId = _loc2_;
  595.          _loc6_ = sfs.getRoom(_loc2_);
  596.          sfs.playerId = _loc5_;
  597.          _loc6_.setMyPlayerIndex(_loc5_);
  598.          if(_loc3_.vars.toString().length > 0)
  599.          {
  600.             _loc6_.clearVariables();
  601.             populateVariables(_loc6_.getVariables(),_loc3_);
  602.          }
  603.          for each(_loc7_ in _loc4_)
  604.          {
  605.             _loc10_ = String(_loc7_.n);
  606.             _loc11_ = int(_loc7_.@i);
  607.             _loc12_ = _loc7_.@m == "1" ? true : false;
  608.             _loc13_ = _loc7_.@s == "1" ? true : false;
  609.             _loc14_ = _loc7_.p == undefined ? -1 : int(_loc7_.p);
  610.             (_loc15_ = new User(_loc11_,_loc10_)).setModerator(_loc12_);
  611.             _loc15_.setIsSpectator(_loc13_);
  612.             _loc15_.setPlayerId(_loc14_);
  613.             if(_loc7_.vars.toString().length > 0)
  614.             {
  615.                populateVariables(_loc15_.getVariables(),_loc7_);
  616.             }
  617.             _loc6_.addUser(_loc15_,_loc11_);
  618.          }
  619.          sfs.changingRoom = false;
  620.          (_loc8_ = {}).room = _loc6_;
  621.          _loc9_ = new SFSEvent(SFSEvent.onJoinRoom,_loc8_);
  622.          sfs.dispatchEvent(_loc9_);
  623.       }
  624.       
  625.       public function handleJoinKo(param1:Object) : void
  626.       {
  627.          var _loc2_:Object = null;
  628.          var _loc3_:SFSEvent = null;
  629.          sfs.changingRoom = false;
  630.          _loc2_ = {};
  631.          _loc2_.error = param1.body.error.@msg;
  632.          _loc3_ = new SFSEvent(SFSEvent.onJoinRoomError,_loc2_);
  633.          sfs.dispatchEvent(_loc3_);
  634.       }
  635.       
  636.       public function handleASObject(param1:Object) : void
  637.       {
  638.          var _loc2_:int = 0;
  639.          var _loc3_:int = 0;
  640.          var _loc4_:String = null;
  641.          var _loc5_:User = null;
  642.          var _loc6_:Object = null;
  643.          var _loc7_:Object = null;
  644.          var _loc8_:SFSEvent = null;
  645.          _loc2_ = int(param1.body.@r);
  646.          _loc3_ = int(param1.body.user.@id);
  647.          _loc4_ = String(param1.body.dataObj);
  648.          _loc5_ = sfs.getRoom(_loc2_).getUser(_loc3_);
  649.          _loc6_ = ObjectSerializer.getInstance().deserialize(new XML(_loc4_));
  650.          (_loc7_ = {}).obj = _loc6_;
  651.          _loc7_.sender = _loc5_;
  652.          _loc8_ = new SFSEvent(SFSEvent.onObjectReceived,_loc7_);
  653.          sfs.dispatchEvent(_loc8_);
  654.       }
  655.       
  656.       private function handleBuddyList(param1:Object) : void
  657.       {
  658.          var _loc2_:XMLList = null;
  659.          var _loc3_:Object = null;
  660.          var _loc4_:Object = null;
  661.          var _loc5_:SFSEvent = null;
  662.          var _loc6_:XML = null;
  663.          var _loc7_:XMLList = null;
  664.          var _loc8_:XML = null;
  665.          _loc2_ = param1.body.bList;
  666.          _loc4_ = {};
  667.          _loc5_ = null;
  668.          if(_loc2_ != null && _loc2_.b.length != null)
  669.          {
  670.             if(_loc2_.toString().length > 0)
  671.             {
  672.                for each(_loc6_ in _loc2_.b)
  673.                {
  674.                   _loc3_ = {};
  675.                   _loc3_.isOnline = _loc6_.@s == "1" ? true : false;
  676.                   _loc3_.name = _loc6_.n.toString();
  677.                   _loc3_.id = _loc6_.@i;
  678.                   _loc3_.variables = {};
  679.                   if((_loc7_ = _loc6_.vs).toString().length > 0)
  680.                   {
  681.                      for each(_loc8_ in _loc7_.v)
  682.                      {
  683.                         _loc3_.variables[_loc8_.@n.toString()] = _loc8_.v.toString();
  684.                      }
  685.                   }
  686.                   sfs.buddyList.push(_loc3_);
  687.                }
  688.             }
  689.             _loc4_.list = sfs.buddyList;
  690.             _loc5_ = new SFSEvent(SFSEvent.onBuddyList,_loc4_);
  691.             sfs.dispatchEvent(_loc5_);
  692.          }
  693.          else
  694.          {
  695.             _loc4_.error = param1.body.err.toString();
  696.             _loc5_ = new SFSEvent(SFSEvent.onBuddyListError,_loc4_);
  697.             sfs.dispatchEvent(_loc5_);
  698.          }
  699.       }
  700.       
  701.       public function handleApiKO(param1:Object) : void
  702.       {
  703.          var _loc2_:Object = null;
  704.          var _loc3_:SFSEvent = null;
  705.          _loc2_ = {};
  706.          _loc2_.success = false;
  707.          _loc2_.error = "API are obsolete, please upgrade";
  708.          _loc3_ = new SFSEvent(SFSEvent.onConnection,_loc2_);
  709.          sfs.dispatchEvent(_loc3_);
  710.       }
  711.    }
  712. }
  713.