Advertisement
Masadow

Client side

Sep 3rd, 2014
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Haxe 1.93 KB | None | 0 0
  1. package state;
  2.  
  3. import flixel.FlxSubState;
  4. import flixel.text.FlxText;
  5. import flixel.FlxG;
  6. import flixel.ui.FlxButton;
  7. import haxe.remoting.SocketConnection;
  8. import state.LoadState.ServerApiImpl;
  9. //import haxe.remoting.SocketProtocol.Socket;
  10. import flash.net.Socket;
  11. import net.ClientApi;
  12.  
  13. using SocketUtil;
  14.  
  15. class ServerApiImpl extends haxe.remoting.AsyncProxy<net.IServerApi> {
  16. }
  17.  
  18. /**
  19.  * Execute a query to the game server
  20.  * @author Masadow
  21.  */
  22. class LoadState extends FlxSubState
  23. {
  24.     private static var socket : flash.net.XMLSocket = null;
  25.     private static var scnx : SocketConnection;
  26.     private static var server : ServerApiImpl;
  27.    
  28.     private var msg : String;
  29.     private var cb : Dynamic -> Void;
  30.     private var cmd : String;
  31.     private var args : Array<Dynamic>;
  32.  
  33.     public function new(msg : String, cb : Dynamic -> Void, cmd : String, args : Array<Dynamic>)
  34.     {
  35.         super();
  36.  
  37.         this.msg = msg;
  38.         this.cb = cb;
  39.         this.cmd = cmd;
  40.         this.args = args;
  41.     }
  42.  
  43.     override public function create():Void
  44.     {
  45.         super.create();
  46.  
  47.         var txt = new FlxText(0, 350, 640, msg, 24);
  48.         txt.alignment = "center";
  49.         add(txt);
  50.  
  51.         //Prepare socket if needed
  52.         if (socket == null)
  53.         {
  54.             FlxG.log.add("Init socket");
  55.             socket = new flash.net.XMLSocket();
  56.             socket.addEventListener(flash.events.Event.CONNECT, send);
  57.             socket.connect("localhost",3000);
  58.             var context = new haxe.remoting.Context();
  59.             context.addObject("client", new ClientApi());
  60.             scnx = haxe.remoting.SocketConnection.create(socket,context);
  61.             scnx.setErrorHandler( function(err) FlxG.log.error(Std.string(err)) );
  62.             context.addObject("server", new ServerApiImpl(scnx.api));
  63.         }
  64.         else {
  65.             send(null);
  66.         }
  67.     }
  68.    
  69.     public function send(event:flash.events.Event)
  70.     {
  71.         FlxG.log.add("Send request");
  72.         scnx.api.resolve(cmd).call(args, function(v) { cb(v); done(); } );
  73.     }
  74.  
  75.     private function done()
  76.     {
  77.         //Request is done, we can close this state
  78.         close();
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement