[client] fixes

This commit is contained in:
2018-03-06 22:57:07 +03:00
parent df99ff817a
commit 0d4ac4e3e5
6 changed files with 104 additions and 88 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "tankz", "name": "tankz",
"version": "0.7.1", "version": "0.7.2",
"private": true, "private": true,
"devDependencies": { "devDependencies": {
"ansi-colors": "^1.0.1", "ansi-colors": "^1.0.1",

View File

@@ -38,9 +38,9 @@ class Init {
#if flash #if flash
Provider.set(IConnection, new ru.m.connect.flash.FlashConnection<Request, Response>('localhost', 5001, Response)); Provider.set(IConnection, new ru.m.connect.flash.FlashConnection<Request, Response>('localhost', 5001, Response));
#elseif html5 #elseif html5
Provider.set(IConnection, new ru.m.connect.js.JsConnection('localhost', 5001)); Provider.set(IConnection, new ru.m.connect.js.JsConnection<Request, Response>('localhost', 5001, Response));
#else #else
Provider.set(IConnection, new ru.m.connect.fake.FakeConnection()); Provider.set(IConnection, new ru.m.connect.fake.FakeConnection<Request, Response>(Response));
#end #end
} }
} }

View File

@@ -55,6 +55,10 @@ views:
text: 2 VS text: 2 VS
$style: button $style: button
# network # network
- $type: haxework.gui.VGroupView
contentSize: true
visible: false
views:
- $type: haxework.gui.LabelView - $type: haxework.gui.LabelView
$style: label $style: label
fontSize: 20 fontSize: 20

View File

@@ -1,7 +1,19 @@
package ru.m.connect.fake; package ru.m.connect.fake;
import ru.m.connect.IConnection.ConnectionEvent;
import promhx.Promise;
import protohx.Message;
class FakeConnection extends BaseConnection {
override public function connect():Void {} class FakeConnection<O:Message, I:Message> extends BaseConnection<O, I> {
override public function disconnect():Void {}
override public function connect():Promise<IConnection<O, I>> {
handler.emit(ConnectionEvent.CONNECTED);
var promise:Promise<IConnection<O, I>> = cast Promise.promise(this);
return promise;
}
override public function disconnect():Void {
handler.emit(ConnectionEvent.DISCONNECTED);
}
} }

View File

@@ -1,9 +1,10 @@
package ru.m.connect.js; package ru.m.connect.js;
import ru.m.Base64; import promhx.Promise;
import ru.m.connect.IConnection.IConnectionHandler;
import protohx.Message; import protohx.Message;
import haxe.io.Bytes; import ru.m.Base64;
import ru.m.connect.IConnection.ConnectionEvent;
typedef WebSocket = { typedef WebSocket = {
var onopen:Dynamic -> Void; var onopen:Dynamic -> Void;
@@ -15,14 +16,14 @@ typedef WebSocket = {
function close():Void; function close():Void;
} }
class JsConnection extends BaseConnection { class JsConnection<O:Message, I:Message> extends BaseConnection<O, I> {
private var host:String; private var host:String;
private var port:Int; private var port:Int;
private var socket:WebSocket; private var socket:WebSocket;
public function new(host:String, port:Int) { public function new(host:String, port:Int, i:Class<I>) {
super(); super(i);
this.host = host; this.host = host;
this.port = port; this.port = port;
connected = false; connected = false;
@@ -32,7 +33,7 @@ class JsConnection extends BaseConnection {
return untyped __js__("new WebSocket('ws://'+host+':'+port);"); return untyped __js__("new WebSocket('ws://'+host+':'+port);");
} }
override public function connect():Void { override public function connect():Promise<IConnection<O, I>> {
var self = this; var self = this;
var decodeBytes = Base64.decodeBase64; var decodeBytes = Base64.decodeBase64;
socket = buildSocket(host, port); socket = buildSocket(host, port);
@@ -40,43 +41,43 @@ class JsConnection extends BaseConnection {
socket.onclose = this.onClose; socket.onclose = this.onClose;
socket.onerror = this.onError; socket.onerror = this.onError;
socket.onmessage = this.onSocketData; socket.onmessage = this.onSocketData;
return connectDeferred.promise();
} }
override public function disconnect():Void { override public function disconnect():Void {
socket.close(); socket.close();
connected = false; connected = false;
handler.dispatch(function(h) h.onDisconnected());
} }
private function onError(event:Dynamic):Void { private function onError(event:Dynamic):Void {
socket.close(); socket.close();
connected = false; connected = false;
handler.dispatch(function(h) h.onError(event)); handler.emit(ConnectionEvent.ERROR(event));
} }
private function onConnect(_):Void { private function onConnect(_):Void {
connected = true; connected = true;
handler.dispatch(function(h) h.onConnected()); handler.emit(ConnectionEvent.CONNECTED);
} }
private function onClose(_):Void { private function onClose(_):Void {
socket.close(); socket.close();
connected = false; connected = false;
handler.dispatch(function(h) h.onDisconnected()); handler.emit(ConnectionEvent.DISCONNECTED);
} }
private function onSocketData(event:Dynamic):Void { private function onSocketData(event:Dynamic):Void {
try { try {
var data:String = event.data; var data:String = event.data;
var packet = WebSocketTools.string2packet(data, builder); var packet:I = WebSocketTools.string2packet(data, queue.packetClass);
receive(packet); receive(packet);
} catch (error:Dynamic) { } catch (error:Dynamic) {
handler.dispatch(function(h) h.onError(error)); handler.emit(ConnectionEvent.ERROR(event));
} }
} }
override public function send(packet:Message):Void { override public function send(packet:O):Void {
super.send(packet); super.send(packet);
socket.send(WebSocketTools.packet2string(packet, builder)); socket.send(WebSocketTools.packet2string(packet));
} }
} }

View File

@@ -224,10 +224,9 @@ class Game {
} }
public function next():Option<GameState> { public function next():Option<GameState> {
var level = state.level + 1;
state.level++; state.level++;
if (level >= config.game.levels) level = 0; if (state.level >= config.game.levels) state.level = 0;
return Option.Some({type: state.type, presetId: preset.id, level: level}); return Option.Some({type: state.type, presetId: preset.id, level: state.level});
} }
public function dispose():Void { public function dispose():Void {