[client] use meta @:provide

This commit is contained in:
2018-03-05 17:38:55 +03:00
parent 5330be142c
commit 2705afc327
4 changed files with 14 additions and 25 deletions

View File

@@ -1,17 +1,14 @@
package ru.m.tankz.control; package ru.m.tankz.control;
import haxework.provider.Provider;
import ru.m.tankz.network.NetworkManager; import ru.m.tankz.network.NetworkManager;
import ru.m.tankz.control.Control; import ru.m.tankz.control.Control;
@:haxework
class ClientNetworkControl extends HumanControl { class ClientNetworkControl extends HumanControl {
private var network(get, never):NetworkManager; @:provider
private var network:NetworkManager;
inline private function get_network():NetworkManager {
return Provider.get(NetworkManager);
}
override public function action(action:TankAction):Void { override public function action(action:TankAction):Void {
network.action(action); network.action(action);

View File

@@ -31,15 +31,12 @@ interface NetworkFrameLayout {
var userList(default, null):ListView<User>; var userList(default, null):ListView<User>;
} }
@:haxework
@:template("ru/m/tankz/frame/NetworkFrame.yaml", "ru/m/tankz/Style.yaml") @:template("ru/m/tankz/frame/NetworkFrame.yaml", "ru/m/tankz/Style.yaml")
class NetworkFrame extends VGroupView implements ViewBuilder implements NetworkFrameLayout { class NetworkFrame extends VGroupView implements ViewBuilder implements NetworkFrameLayout {
public static var ID(default, never):String = "network"; public static var ID(default, never):String = "network";
private var network(get, never):NetworkManager; @:provide private var network:NetworkManager;
private inline function get_network():NetworkManager {
return Provider.get(NetworkManager);
}
public function init():Void { public function init():Void {
loginButton.onPress = this; loginButton.onPress = this;

View File

@@ -22,11 +22,14 @@ interface StartFrameLayout {
var network(default, null):ButtonView; var network(default, null):ButtonView;
} }
@:haxework
@:template("ru/m/tankz/frame/StartFrame.yaml", "ru/m/tankz/Style.yaml") @:template("ru/m/tankz/frame/StartFrame.yaml", "ru/m/tankz/Style.yaml")
class StartFrame extends VGroupView implements ViewBuilder implements StartFrameLayout { class StartFrame extends VGroupView implements ViewBuilder implements StartFrameLayout {
public static var ID(default, never):String = "start"; public static var ID(default, never):String = "start";
@:provide private var frameSwitcher:IFrameSwitcher;
public function init():Void { public function init():Void {
classic_1p.onPress = this; classic_1p.onPress = this;
classic_2p.onPress = this; classic_2p.onPress = this;
@@ -62,18 +65,18 @@ class StartFrame extends VGroupView implements ViewBuilder implements StartFrame
case 'dota_2p_vs': case 'dota_2p_vs':
startGame(DotaGame.TYPE, DotaGame.PLAYER2_VS); startGame(DotaGame.TYPE, DotaGame.PLAYER2_VS);
case 'network': case 'network':
Provider.get(IFrameSwitcher).change(NetworkFrame.ID); frameSwitcher.change(NetworkFrame.ID);
} }
} }
private function startGame(type:GameType, presetId:PresetId):Void { private function startGame(type:GameType, presetId:PresetId):Void {
Provider.set(GameSave, new GameSave({type: type, presetId: presetId})); Provider.set(GameSave, new GameSave({type: type, presetId: presetId}));
Provider.get(IFrameSwitcher).change(LevelFrame.ID); frameSwitcher.change(LevelFrame.ID);
} }
private function loadGame(type:GameType):Void { private function loadGame(type:GameType):Void {
var save:GameSave = Provider.get(SaveStorage).read(type); var save:GameSave = Provider.get(SaveStorage).read(type);
Provider.set(GameSave, save); Provider.set(GameSave, save);
Provider.get(IFrameSwitcher).change(GameFrame.ID); frameSwitcher.change(GameFrame.ID);
} }
} }

View File

@@ -7,7 +7,6 @@ import ru.m.tankz.control.Control;
import ru.m.tankz.proto.pack.JoinGameRequest; import ru.m.tankz.proto.pack.JoinGameRequest;
import ru.m.tankz.proto.pack.LeaveGameRequest; import ru.m.tankz.proto.pack.LeaveGameRequest;
import ru.m.tankz.proto.pack.CreateGameRequest; import ru.m.tankz.proto.pack.CreateGameRequest;
import haxework.provider.Provider;
import ru.m.connect.IConnection; import ru.m.connect.IConnection;
import ru.m.signal.Signal; import ru.m.signal.Signal;
import ru.m.tankz.proto.core.Game; import ru.m.tankz.proto.core.Game;
@@ -20,6 +19,7 @@ import ru.m.tankz.storage.UserStorage;
typedef ClientConnection = IConnection<Request, Response>; typedef ClientConnection = IConnection<Request, Response>;
@:haxework
class NetworkManager { class NetworkManager {
public var state(default, null):String; public var state(default, null):String;
@@ -29,16 +29,8 @@ class NetworkManager {
public var gameUpdateSignal:Signal<Array<GameChange>>; public var gameUpdateSignal:Signal<Array<GameChange>>;
public var user(default, null):User; public var user(default, null):User;
private var connection(get, never):ClientConnection; @:provide private var connection:ClientConnection;
private var storage(get, never):UserStorage; @:provide private var storage:UserStorage;
inline private function get_connection():ClientConnection {
return Provider.get(IConnection);
}
inline private function get_storage():UserStorage {
return Provider.get(UserStorage);
}
public function new() { public function new() {
stateSignal = new Signal<String>(); stateSignal = new Signal<String>();