[common] bullet with bricks collision

This commit is contained in:
2018-01-07 20:33:05 +03:00
parent 12328a8a5e
commit 348d31d754
33 changed files with 277 additions and 217 deletions

View File

@@ -0,0 +1,82 @@
package ru.m.connect.js;
import ru.m.core.Base64;
import ru.m.connect.IConnection.IConnectionHandler;
import protohx.Message;
import haxe.io.Bytes;
typedef WebSocket = {
var onopen:Dynamic->Void;
var onclose:Dynamic->Void;
var onmessage:Dynamic->Void;
var onerror:Dynamic->Void;
function send(message:String):Void;
function emit(a:String, b:String):Void;
function close():Void;
}
class JsConnection extends BaseConnection {
private var host:String;
private var port:Int;
private var socket:WebSocket;
public function new(host:String, port:Int) {
super();
this.host = host;
this.port = port;
connected = false;
}
private function buildSocket(host:String, port:Int):WebSocket {
return untyped __js__("new WebSocket('ws://'+host+':'+port);");
}
override public function connect():Void {
var self = this;
var decodeBytes = Base64.decodeBase64;
socket = buildSocket(host, port);
socket.onopen = this.onConnect;
socket.onclose = this.onClose;
socket.onerror = this.onError;
socket.onmessage = this.onSocketData;
}
override public function disconnect():Void {
socket.close();
connected = false;
handler.dispatch(function(h) h.onDisconnected());
}
private function onError(event:Dynamic):Void {
socket.close();
connected = false;
handler.dispatch(function(h) h.onError(event));
}
private function onConnect(_):Void {
connected = true;
handler.dispatch(function(h) h.onConnected());
}
private function onClose(_):Void {
socket.close();
connected = false;
handler.dispatch(function(h) h.onDisconnected());
}
private function onSocketData(event:Dynamic):Void {
try {
var data:String = event.data;
var packet = WebSocketTools.string2packet(data, builder);
receive(packet);
} catch (error:Dynamic) {
handler.dispatch(function(h) h.onError(error));
}
}
override public function send(packet:Message):Void {
super.send(packet);
socket.send(WebSocketTools.packet2string(packet, builder));
}
}