[server] update
This commit is contained in:
@@ -1,30 +1,17 @@
|
||||
package ru.m.tankz.bundle;
|
||||
|
||||
import openfl.Assets;
|
||||
import ru.m.tankz.bundle.IConfigBundle;
|
||||
import ru.m.tankz.config.Config;
|
||||
import ru.m.tankz.Type;
|
||||
import yaml.Parser;
|
||||
import yaml.Yaml;
|
||||
|
||||
|
||||
typedef ConfigSource = {
|
||||
var game:GameConfig;
|
||||
var map: MapConfig;
|
||||
var bricks: Array<BrickConfig>;
|
||||
var presets: Array<GamePreset>;
|
||||
var points: Array<SpawnPoint>;
|
||||
var tanks: Array<TankConfig>;
|
||||
var bonuses: Array<BonusConfig>;
|
||||
}
|
||||
|
||||
class ConfigBundle implements IConfigBundle {
|
||||
|
||||
private static function convert(raw:Dynamic):ConfigSource {
|
||||
return raw;
|
||||
}
|
||||
|
||||
public function get(type:GameType):Config {
|
||||
var source = convert(Yaml.parse(Assets.getText('resources/${type}/config.yaml'), Parser.options().useObjects()));
|
||||
var source:ConfigSource = Yaml.parse(Assets.getText('resources/${type}/config.yaml'), Parser.options().useObjects());
|
||||
return new Config(type, source.game, source.map, source.bricks, source.presets, source.points, source.tanks, source.bonuses);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package ru.m.tankz.frame;
|
||||
|
||||
import ru.m.tankz.game.ClassicGame;
|
||||
import ru.m.tankz.game.GameSave;
|
||||
import haxework.provider.Provider;
|
||||
import ru.m.tankz.proto.core.GameState;
|
||||
import haxework.gui.ButtonView;
|
||||
import haxework.gui.frame.IFrameSwitcher;
|
||||
import haxework.gui.IGroupView;
|
||||
@@ -17,23 +21,29 @@ class NetworkFrame extends VGroupView {
|
||||
public static var ID(default, never):String = "network";
|
||||
|
||||
@:view var frameSwitcher(default, null):IFrameSwitcher;
|
||||
|
||||
@:view var loginFrame(default, null):IGroupView;
|
||||
@:view var stateLabel(default, null):LabelView;
|
||||
@:view var nameInput(default, null):InputView;
|
||||
@:view var loginButton(default, null):ButtonView;
|
||||
|
||||
@:view var gameListFrame(default, null):IGroupView;
|
||||
@:view var createGameButton(default, null):ButtonView;
|
||||
@:view var gameList(default, null):ListView<Game>;
|
||||
|
||||
@:view var gameFrame(default, null):IGroupView;
|
||||
@:view var leaveGameButton(default, null):ButtonView;
|
||||
@:view var startGameButton(default, null):ButtonView;
|
||||
@:view var userList(default, null):ListView<User>;
|
||||
|
||||
@:provide var network:NetworkManager;
|
||||
@:provide var mainFrameSwitcher:IFrameSwitcher;
|
||||
|
||||
public function init():Void {
|
||||
loginButton.onPress = this;
|
||||
createGameButton.onPress = this;
|
||||
leaveGameButton.onPress = this;
|
||||
startGameButton.onPress = this;
|
||||
gameList.dispatcher.addListener({
|
||||
onListItemClick: function(item:IListItemView<Game>):Void {
|
||||
network.joinGame(item.data.id);
|
||||
@@ -69,6 +79,10 @@ class NetworkFrame extends VGroupView {
|
||||
if (game != null) {
|
||||
userList.data = game.players;
|
||||
frameSwitcher.change(gameFrame.id);
|
||||
if (game.state == GameState.STARTED) {
|
||||
Provider.set(GameSave, new GameSave({type: ClassicGame.TYPE, presetId: ClassicGame.PLAYER1}));
|
||||
mainFrameSwitcher.change(GameFrame.ID);
|
||||
}
|
||||
} else {
|
||||
frameSwitcher.change(gameListFrame.id);
|
||||
}
|
||||
@@ -88,6 +102,8 @@ class NetworkFrame extends VGroupView {
|
||||
network.createGame('classic');
|
||||
case 'leaveGameButton':
|
||||
network.leaveGame();
|
||||
case 'startGameButton':
|
||||
network.startGame();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -58,12 +58,16 @@ views:
|
||||
$type: haxework.gui.skin.ColorSkin
|
||||
color: "#000000"
|
||||
alpha: 0
|
||||
# game list
|
||||
# game
|
||||
- id: gameFrame
|
||||
$type: haxework.gui.VGroupView
|
||||
pWidth: 100
|
||||
pHeight: 100
|
||||
views:
|
||||
- id: startGameButton
|
||||
$type: haxework.gui.ButtonView
|
||||
$style: button
|
||||
text: Start
|
||||
- id: leaveGameButton
|
||||
$type: haxework.gui.ButtonView
|
||||
$style: button
|
||||
|
||||
@@ -25,6 +25,7 @@ class StartFrame extends VGroupView {
|
||||
@:view var network(default, null):ButtonView;
|
||||
|
||||
@:provide var frameSwitcher:IFrameSwitcher;
|
||||
@:provide var storage:SaveStorage;
|
||||
|
||||
public function init():Void {
|
||||
classic_1p.onPress = this;
|
||||
@@ -37,7 +38,7 @@ class StartFrame extends VGroupView {
|
||||
}
|
||||
|
||||
public function onShow():Void {
|
||||
var save:GameSave = Provider.get(SaveStorage).read(ClassicGame.TYPE);
|
||||
var save:GameSave = storage.read(ClassicGame.TYPE);
|
||||
if (save != null) {
|
||||
classic_load.visible = true;
|
||||
classic_load.text = 'Load (Level ${save.state.level})';
|
||||
@@ -71,7 +72,7 @@ class StartFrame extends VGroupView {
|
||||
}
|
||||
|
||||
private function loadGame(type:GameType):Void {
|
||||
var save:GameSave = Provider.get(SaveStorage).read(type);
|
||||
var save:GameSave = storage.read(type);
|
||||
Provider.set(GameSave, save);
|
||||
frameSwitcher.change(GameFrame.ID);
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ views:
|
||||
# network
|
||||
- $type: haxework.gui.VGroupView
|
||||
contentSize: true
|
||||
visible: false
|
||||
visible: true
|
||||
views:
|
||||
- $type: haxework.gui.LabelView
|
||||
$style: label
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.m.tankz.network;
|
||||
|
||||
import ru.m.tankz.proto.pack.StartGameRequest;
|
||||
import ru.m.tankz.proto.game.GameChange;
|
||||
import ru.m.tankz.proto.game.GameActionType;
|
||||
import ru.m.tankz.proto.pack.GameUpdateRequest;
|
||||
@@ -79,6 +80,10 @@ class NetworkManager {
|
||||
connection.send(new Request().setLeaveGame(new LeaveGameRequest()));
|
||||
}
|
||||
|
||||
public function startGame():Void {
|
||||
connection.send(new Request().setStartGame(new StartGameRequest()));
|
||||
}
|
||||
|
||||
public function action(action:TankAction):Void {
|
||||
var update:GameUpdateRequest = switch action {
|
||||
case TankAction.MOVE(direction): new GameUpdateRequest().setType(GameActionType.MOVE).setDirectionX(direction.x).setDirectionY(direction.y);
|
||||
@@ -119,7 +124,9 @@ class NetworkManager {
|
||||
gameSignal.emit(packet.joinGame.game);
|
||||
} else if (packet.hasLeaveGame()) {
|
||||
gameSignal.emit(null);
|
||||
}else if (packet.hasUpdateGame()) {
|
||||
} else if (packet.hasStartGame()) {
|
||||
gameSignal.emit(packet.startGame.game);
|
||||
} else if (packet.hasUpdateGame()) {
|
||||
gameUpdateSignal.emit(packet.updateGame.changes);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user