[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,87 @@
package ru.m.connect.flash;
import ru.m.connect.IConnection.IConnectionHandler;
import flash.utils.Endian;
import haxe.io.BytesOutput;
import protohx.Message;
import haxe.io.Bytes;
import flash.events.ErrorEvent;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.events.SecurityErrorEvent;
import flash.events.IOErrorEvent;
import flash.net.Socket;
class FlashConnection extends BaseConnection {
private var host:String;
private var port:Int;
private var socket:Socket;
public function new(host:String, port:Int) {
super();
this.host = host;
this.port = port;
connected = false;
socket = new Socket();
socket.addEventListener(IOErrorEvent.IO_ERROR, onError);
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
socket.addEventListener(Event.CLOSE, onClose);
socket.addEventListener(Event.CONNECT, onConnect);
socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);
socket.endian = Endian.LITTLE_ENDIAN;
}
override public function connect():Void {
socket.connect(host, port);
}
override public function disconnect():Void {
if (socket.connected) {
socket.close();
connected = false;
handler.dispatch(function(h) h.onDisconnected());
}
}
private function onError(event:ErrorEvent):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(_):Void {
try {
var b = new flash.utils.ByteArray();
socket.readBytes(b);
var bs = Bytes.ofData(cast b);
pushData(bs);
} catch (error:Dynamic) {
handler.dispatch(function(h) h.onError(error));
}
}
override public function send(packet:Message):Void {
super.send(packet);
var meta = builder.packetMeta(packet);
socket.writeByte(meta.family);
socket.writeByte(meta.id);
var out = new BytesOutput();
packet.writeTo(out);
var bytes = out.getBytes();
socket.writeShort(bytes.length);
socket.writeBytes(cast bytes.getData());
socket.flush();
}
}