[client] update Frames

This commit is contained in:
2019-06-24 22:09:52 +03:00
parent d0ebf05f1c
commit bc95ca03e2
21 changed files with 140 additions and 104 deletions

View File

@@ -1,6 +1,5 @@
package ru.m.tankz.view; package ru.m.tankz.view;
import ru.m.tankz.game.IGame;
import flash.events.KeyboardEvent; import flash.events.KeyboardEvent;
import flash.ui.Keyboard; import flash.ui.Keyboard;
import haxework.resources.IResources; import haxework.resources.IResources;
@@ -8,6 +7,7 @@ import haxework.view.ButtonView;
import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameSwitcher;
import haxework.view.LabelView; import haxework.view.LabelView;
import haxework.view.VGroupView; import haxework.view.VGroupView;
import ru.m.tankz.game.IGame;
import ru.m.tankz.network.NetworkManager; import ru.m.tankz.network.NetworkManager;
import ru.m.tankz.sound.SoundManager; import ru.m.tankz.sound.SoundManager;
import ru.m.tankz.view.popup.LoginPopup; import ru.m.tankz.view.popup.LoginPopup;

View File

@@ -4,23 +4,15 @@ views:
id: switcher id: switcher
geometry.size.stretch: true geometry.size.stretch: true
skinId: dark skinId: dark
views: factory:
- id: start _start_: {$class: ru.m.tankz.view.StartFrame}
$type: ru.m.tankz.view.StartFrame _level_: {$class: ru.m.tankz.view.LevelFrame}
- id: level _game_: {$class: ru.m.tankz.view.GameFrame}
$type: ru.m.tankz.view.LevelFrame _result_: {$class: ru.m.tankz.view.ResultFrame}
- id: game _settings_: {$class: ru.m.tankz.view.SettingsFrame}
$type: ru.m.tankz.view.GameFrame _record_: {$class: ru.m.tankz.view.RecordFrame}
- id: result _room_list_: {$class: ru.m.tankz.view.network.RoomListFrame}
$type: ru.m.tankz.view.ResultFrame _room_: {$class: ru.m.tankz.view.network.RoomFrame}
- id: settings
$type: ru.m.tankz.view.SettingsFrame
- id: record
$type: ru.m.tankz.view.RecordFrame
- id: room_list
$type: ru.m.tankz.view.network.RoomListFrame
- id: room
$type: ru.m.tankz.view.network.RoomFrame
- $type: haxework.view.HGroupView - $type: haxework.view.HGroupView
skinId: panel skinId: panel
layout.margin: 10 layout.margin: 10

View File

@@ -1,7 +1,7 @@
package ru.m.tankz.view; package ru.m.tankz.view;
import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameSwitcher;
import haxework.view.VGroupView; import haxework.view.frame.FrameView;
import ru.m.control.DeviceType; import ru.m.control.DeviceType;
import ru.m.control.IControlBus; import ru.m.control.IControlBus;
import ru.m.tankz.game.GameEvent; import ru.m.tankz.game.GameEvent;
@@ -18,7 +18,7 @@ import ru.m.tankz.Type;
import ru.m.tankz.view.game.GameView; import ru.m.tankz.view.game.GameView;
import ru.m.tankz.view.GamepadView; import ru.m.tankz.view.GamepadView;
@:template class GameFrame extends VGroupView implements GameListener { @:template class GameFrame extends FrameView<GameInit> implements GameListener {
public static inline var ID = "game"; public static inline var ID = "game";
private static inline var TAG = "GameFrame"; private static inline var TAG = "GameFrame";
@@ -31,18 +31,21 @@ import ru.m.tankz.view.GamepadView;
@:provide static var gameStorage:GameStorage; @:provide static var gameStorage:GameStorage;
@:provide static var settings:SettingsStorage; @:provide static var settings:SettingsStorage;
@:provide var gameInit:GameInit;
//@:provide var result:Result; //@:provide var result:Result;
@:provide static var bus:IControlBus; @:provide static var bus:IControlBus;
private var game:IGame; private var game:IGame;
private var recorder:GameRecord; private var recorder:GameRecord;
public function new() {
super(id);
}
public function init():Void { public function init():Void {
bus.connect(gamepad); bus.connect(gamepad);
} }
public function onShow():Void { override public function onShow(data:GameInit):Void {
gamepad.visible = false; gamepad.visible = false;
// ToDo: // ToDo:
for (i in 0...1) { for (i in 0...1) {
@@ -55,7 +58,7 @@ import ru.m.tankz.view.GamepadView;
} }
} }
} }
game = switch gameInit { game = switch data {
case LOCAL(start): new LocalGame(start); case LOCAL(start): new LocalGame(start);
case NETWORK(network): new NetworkGame(network); case NETWORK(network): new NetworkGame(network);
case RECORD(record): new GamePlayer(record); case RECORD(record): new GamePlayer(record);
@@ -87,7 +90,7 @@ import ru.m.tankz.view.GamepadView;
//this.result = result; //this.result = result;
updateProgress(game, result.winner); updateProgress(game, result.winner);
stop(); stop();
switcher.change(ResultFrame.ID); switcher.change(ResultFrame.ID, result);
case _: case _:
} }
} }
@@ -107,12 +110,12 @@ import ru.m.tankz.view.GamepadView;
} }
} }
public function onHide():Void { override public function onHide():Void {
stop(); stop();
soundManager.stopAll(); soundManager.stopAll();
} }
public function close():Void { public function close():Void {
switcher.change(LevelFrame.ID); switcher.change(StartFrame.ID);
} }
} }

View File

@@ -1,4 +1,7 @@
--- ---
geometry.size.stretch: true
layout:
$type: haxework.view.layout.VerticalLayout
views: views:
- $type: haxework.view.VGroupView - $type: haxework.view.VGroupView
skinId: container skinId: container

View File

@@ -3,60 +3,55 @@ package ru.m.tankz.view;
import haxework.view.ButtonView; import haxework.view.ButtonView;
import haxework.view.DataView; import haxework.view.DataView;
import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameSwitcher;
import haxework.view.frame.FrameView;
import haxework.view.LabelView; import haxework.view.LabelView;
import haxework.view.VGroupView; import ru.m.tankz.bundle.IConfigBundle;
import ru.m.tankz.bundle.ILevelBundle;
import ru.m.tankz.config.Config; import ru.m.tankz.config.Config;
import ru.m.tankz.game.GameInit; import ru.m.tankz.game.GameInit;
import ru.m.tankz.game.GameState; import ru.m.tankz.game.GameState;
import ru.m.tankz.storage.GameStorage; import ru.m.tankz.storage.GameStorage;
import ru.m.tankz.Type;
import ru.m.tankz.view.popup.LevelPopup; import ru.m.tankz.view.popup.LevelPopup;
@:template class LevelFrame extends VGroupView { @:template class LevelFrame extends FrameView<LevelPack> {
public static inline var ID = "level"; public static inline var ID = "level";
@:view var header:LabelView; @:view var header:LabelView;
@:view var levels:DataView<LevelConfig, ButtonView>; @:view var levels:DataView<LevelConfig, ButtonView>;
@:provide var gameInit:GameInit; @:provide static var switcher:FrameSwitcher;
@:provide var switcher:FrameSwitcher; @:provide static var storage:GameStorage;
@:provide var levelBundle:ILevelBundle; @:provide static var configBundle:IConfigBundle;
@:provide var storage:GameStorage;
private var pack:LevelPack; private var pack:LevelPack;
private var levelPopup:LevelPopup; private var levelPopup:LevelPopup;
private var config(get, never):Config;
public function onShow():Void { public function new() {
var state = getState(); super(ID);
header.text = state.type; }
pack = levelBundle.get(new PackId(state.type));
private function get_config():Config {
return configBundle.get(pack.id.type);
}
override public function onShow(data:LevelPack):Void {
header.text = data.id.type;
pack = data;
levels.data = pack.data; levels.data = pack.data;
} }
private function getState():GameState {
return switch gameInit {
case LOCAL(start): start.state;
case _: null;
}
}
private function start(level:LevelConfig, preset:GamePreset, control:ControlPreset):Void { private function start(level:LevelConfig, preset:GamePreset, control:ControlPreset):Void {
switch gameInit { switcher.change(GameFrame.ID, LOCAL({
case LOCAL(start): state: new GameState(pack.id.type, preset.id, control.values),
start.state.presetId = preset.id; level: level,
start.state.controls = control.values; }));
start.level = level;
case _:
}
switcher.change(GameFrame.ID);
} }
private function levelViewFactory(index:Int, level:LevelConfig):ButtonView { private function levelViewFactory(index:Int, level:LevelConfig):ButtonView {
var progress = storage.get(pack.id); var progress = storage.get(pack.id);
var result = new ButtonView(); var result = new ButtonView();
result.skinId = "button.level"; result.skinId = "button.level";
var presetsLine = [for (p in getState().config.presets) progress.isPresetCompleted(level.id, p.id) ? '*' : '_'].join(''); var presetsLine = [for (p in config.presets) progress.isPresetCompleted(level.id, p.id) ? '*' : '_'].join('');
result.text = '${level.id}\n${presetsLine}'; result.text = '${level.id}\n${presetsLine}';
result.disabled = !progress.isLevelAvailable(level.id); result.disabled = !progress.isLevelAvailable(level.id);
return result; return result;
@@ -69,11 +64,10 @@ import ru.m.tankz.view.popup.LevelPopup;
if (levelPopup == null) { if (levelPopup == null) {
levelPopup = new LevelPopup(); levelPopup = new LevelPopup();
} }
var state = getState();
levelPopup.setData( levelPopup.setData(
level, level,
state.config.presets, config.presets,
state.config.controls, config.controls,
storage.get(pack.id) storage.get(pack.id)
); );
levelPopup.show().then(function(result) result != null ? start(level, result.preset, result.control) : {}); levelPopup.show().then(function(result) result != null ? start(level, result.preset, result.control) : {});

View File

@@ -1,4 +1,7 @@
--- ---
geometry.size.stretch: true
layout:
$type: haxework.view.layout.VerticalLayout
views: views:
- $type: haxework.view.VGroupView - $type: haxework.view.VGroupView
skinId: container skinId: container

View File

@@ -1,13 +1,12 @@
package ru.m.tankz.view; package ru.m.tankz.view;
import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameSwitcher;
import haxework.view.list.ListView; import haxework.view.frame.FrameView;
import haxework.view.list.VListView; import haxework.view.list.VListView;
import haxework.view.VGroupView;
import ru.m.tankz.game.record.GameRecord; import ru.m.tankz.game.record.GameRecord;
import ru.m.tankz.storage.RecordStorage; import ru.m.tankz.storage.RecordStorage;
@:template class RecordFrame extends VGroupView { @:template class RecordFrame extends FrameView<Dynamic> {
public static var ID(default, never):String = "record"; public static var ID(default, never):String = "record";
@:view var data:VListView<GameRecordInfo>; @:view var data:VListView<GameRecordInfo>;
@@ -15,13 +14,13 @@ import ru.m.tankz.storage.RecordStorage;
@:provide var recordStorage:RecordStorage; @:provide var recordStorage:RecordStorage;
@:provide var switcher:FrameSwitcher; @:provide var switcher:FrameSwitcher;
public function onShow():Void { public function new() {
super(ID);
}
override public function onShow(_:Dynamic):Void {
var data = Lambda.array(recordStorage); var data = Lambda.array(recordStorage);
data.sort(function(a:GameRecordInfo, b:GameRecordInfo) return Std.int(b.date.getTime() - a.date.getTime())); data.sort(function(a:GameRecordInfo, b:GameRecordInfo) return Std.int(b.date.getTime() - a.date.getTime()));
this.data.data = data; this.data.data = data;
} }
private function onRecordSelect(item:IListItemView<GameRecordInfo>):Void {
}
} }

View File

@@ -1,4 +1,7 @@
--- ---
geometry.size.stretch: true
layout:
$type: haxework.view.layout.VerticalLayout
views: views:
- $type: haxework.view.VGroupView - $type: haxework.view.VGroupView
skinId: container skinId: container
@@ -10,7 +13,6 @@ views:
- id: data - id: data
$type: haxework.view.list.VListView $type: haxework.view.list.VListView
factory: $code:function() return new ru.m.tankz.view.common.RecordView() factory: $code:function() return new ru.m.tankz.view.common.RecordView()
+onItemSelect: $this:onRecordSelect
geometry.margin.top: 20 geometry.margin.top: 20
geometry.size.stretch: true geometry.size.stretch: true
scroll: scroll:

View File

@@ -2,44 +2,53 @@ package ru.m.tankz.view;
import haxework.view.DataView; import haxework.view.DataView;
import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameSwitcher;
import haxework.view.frame.FrameView;
import haxework.view.LabelView; import haxework.view.LabelView;
import haxework.view.VGroupView; import ru.m.tankz.game.GameEvent;
import ru.m.tankz.game.GameState; import ru.m.tankz.game.GameState;
import ru.m.tankz.game.IGame;
import ru.m.tankz.view.common.LifeView; import ru.m.tankz.view.common.LifeView;
@:template class ResultFrame extends VGroupView { @:template class ResultFrame extends FrameView<Result> {
public static var ID(default, never):String = "result"; public static var ID(default, never):String = "result";
@:view("result") var resultView:DataView<PlayerState, LifeView>; @:view("result") var resultView:DataView<PlayerState, LifeView>;
@:view("level") var levelLabel:LabelView; @:view("level") var levelLabel:LabelView;
@:provide var frames:FrameSwitcher; @:provide var frames:FrameSwitcher;
@:provide var game:IGame;
private function playerViewFactory(index:Int, player:PlayerState) { private var state:GameState;
public function new() {
super(ID);
}
private function playerViewFactory(index:Int, player:PlayerState):LifeView {
var view = new LifeView(); var view = new LifeView();
// ToDo: var playerConfig = state.config.getPlayer(player.id);
/*var playerConfig = state.config.getPlayer(player.id);
var tankType = playerConfig.tanks[0].type; var tankType = playerConfig.tanks[0].type;
var tankConfig = state.config.getTank(tankType); var tankConfig = state.config.getTank(tankType);
view.tank = tankConfig == null ? 'ba' : tankConfig.skin; view.tank = tankConfig == null ? 'ba' : tankConfig.skin;
view.color = state.getPlayerColor(player.id); view.color = state.getPlayerColor(player.id);
view.life = player.frags; view.life = player.frags;
view.score = player.score;*/ view.score = player.score;
return view; return view;
} }
public function onShow() { override public function onShow(data:Result):Void {
//resultView.data = Lambda.array(state.players); state = data.state;
//levelLabel.text = 'Level ${state.levelId}'; // ToDo: level? resultView.data = Lambda.array(data.state.players);
var label = '${data.state.type} Level ${data.level.id}';
if (data.level.name != null) {
label += '\n${data.level.name}';
}
levelLabel.text = label;
} }
private function next() { private function next():Void {
//ToDo: next level? //ToDo: next level?
} }
private function close() { private function close():Void {
frames.change(LevelFrame.ID); frames.change(StartFrame.ID);
} }
} }

View File

@@ -1,4 +1,7 @@
--- ---
geometry.size.stretch: true
layout:
$type: haxework.view.layout.VerticalLayout
views: views:
- $type: haxework.view.VGroupView - $type: haxework.view.VGroupView
skinId: container skinId: container
@@ -6,6 +9,7 @@ views:
- id: level - id: level
$type: haxework.view.LabelView $type: haxework.view.LabelView
skinId: text.header skinId: text.header
align: center
- id: result - id: result
$type: haxework.view.DataView $type: haxework.view.DataView
factory: $this:playerViewFactory factory: $this:playerViewFactory

View File

@@ -1,7 +1,11 @@
package ru.m.tankz.view; package ru.m.tankz.view;
import haxework.view.VGroupView; import haxework.view.frame.FrameView;
@:template class SettingsFrame extends VGroupView { @:template class SettingsFrame extends FrameView<Dynamic> {
public static var ID(default, never):String = "settings"; public static var ID(default, never):String = "settings";
public function new() {
super(ID);
}
} }

View File

@@ -1,4 +1,7 @@
--- ---
geometry.size.stretch: true
layout:
$type: haxework.view.layout.VerticalLayout
views: views:
- $type: haxework.view.VGroupView - $type: haxework.view.VGroupView
skinId: container skinId: container

View File

@@ -1,36 +1,42 @@
package ru.m.tankz.view; package ru.m.tankz.view;
import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameSwitcher;
import haxework.view.VGroupView; import haxework.view.frame.FrameView;
import ru.m.tankz.bundle.ILevelBundle;
import ru.m.tankz.game.GameInit; import ru.m.tankz.game.GameInit;
import ru.m.tankz.game.GameState; import ru.m.tankz.game.GameState;
import ru.m.tankz.network.NetworkManager; import ru.m.tankz.network.NetworkManager;
import ru.m.tankz.Type.GameType; import ru.m.tankz.Type;
import ru.m.tankz.view.network.RoomFrame; import ru.m.tankz.view.network.RoomFrame;
import ru.m.tankz.view.network.RoomListFrame; import ru.m.tankz.view.network.RoomListFrame;
import ru.m.tankz.view.popup.FontPopup; import ru.m.tankz.view.popup.FontPopup;
import ru.m.tankz.view.popup.LoginPopup; import ru.m.tankz.view.popup.LoginPopup;
@:template class StartFrame extends VGroupView { @:template class StartFrame extends FrameView<Void> {
public static var ID(default, never):String = "start"; public static var ID(default, never):String = "start";
@:provide var gameInit:GameInit; @:provide var gameInit:GameInit;
@:provide var switcher:FrameSwitcher; @:provide var switcher:FrameSwitcher;
@:provide var network:NetworkManager; @:provide var network:NetworkManager;
@:provide var levelBundle:ILevelBundle;
private var fontPopup:FontPopup; private var fontPopup:FontPopup;
public function new() {
super(ID);
}
private function startGame(type:GameType):Void { private function startGame(type:GameType):Void {
gameInit = LOCAL({state: new GameState(type), level: null}); gameInit = LOCAL({state: new GameState(type), level: null});
switcher.change(LevelFrame.ID); switcher.change(LevelFrame.ID, levelBundle.get(new PackId(type)));
} }
private function startNetwork():Void { private function startNetwork():Void {
switch network.state { switch network.state {
case ONLINE(user): case ONLINE(user):
if (network.room != null) { if (network.room != null) {
switcher.change(RoomFrame.ID); switcher.change(RoomFrame.ID, network.room);
network.joinGame(network.room.game.id, true); network.joinGame(network.room.game.id, true);
} else { } else {
switcher.change(RoomListFrame.ID); switcher.change(RoomListFrame.ID);

View File

@@ -1,4 +1,7 @@
--- ---
geometry.size.stretch: true
layout:
$type: haxework.view.layout.VerticalLayout
views: views:
- $type: haxework.view.VGroupView - $type: haxework.view.VGroupView
skinId: container skinId: container

View File

@@ -19,7 +19,6 @@ import ru.m.tankz.storage.RecordStorage;
@:provide var recordStorage:RecordStorage; @:provide var recordStorage:RecordStorage;
@:provide var switcher:FrameSwitcher; @:provide var switcher:FrameSwitcher;
@:provide var gameInit:GameInit;
private function set_data(value:GameRecordInfo):GameRecordInfo { private function set_data(value:GameRecordInfo):GameRecordInfo {
if (data != value) { if (data != value) {
@@ -34,8 +33,7 @@ import ru.m.tankz.storage.RecordStorage;
private function play():Void { private function play():Void {
var record = recordStorage.read(data.id); var record = recordStorage.read(data.id);
gameInit = RECORD(record); switcher.change(GameFrame.ID, RECORD(record));
switcher.change(GameFrame.ID);
} }
private function delete():Void { private function delete():Void {

View File

@@ -2,15 +2,15 @@ package ru.m.tankz.view.network;
import haxework.view.ButtonView; import haxework.view.ButtonView;
import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameSwitcher;
import haxework.view.frame.FrameView;
import haxework.view.list.VListView; import haxework.view.list.VListView;
import haxework.view.TextView; import haxework.view.TextView;
import haxework.view.VGroupView;
import ru.m.tankz.game.GameInit; import ru.m.tankz.game.GameInit;
import ru.m.tankz.network.NetworkManager; import ru.m.tankz.network.NetworkManager;
import ru.m.tankz.proto.room.RoomProto; import ru.m.tankz.proto.room.RoomProto;
import ru.m.tankz.proto.room.RoomSlotProto; import ru.m.tankz.proto.room.RoomSlotProto;
@:template class RoomFrame extends VGroupView { @:template class RoomFrame extends FrameView<RoomProto> {
public static inline var ID = "room"; public static inline var ID = "room";
@@ -20,7 +20,10 @@ import ru.m.tankz.proto.room.RoomSlotProto;
@:provide var switcher:FrameSwitcher; @:provide var switcher:FrameSwitcher;
@:provide var network:NetworkManager; @:provide var network:NetworkManager;
@:provide var gameInit:GameInit;
public function new() {
super(ID);
}
private function refresh(room:RoomProto):Void { private function refresh(room:RoomProto):Void {
if (room != null) { if (room != null) {
@@ -28,20 +31,19 @@ import ru.m.tankz.proto.room.RoomSlotProto;
info.text = '${room.game.type} #${room.game.level}'; info.text = '${room.game.type} #${room.game.level}';
slots.data = room.slots; slots.data = room.slots;
if (room.game.started) { if (room.game.started) {
gameInit = NETWORK(network); switcher.change(GameFrame.ID, NETWORK(network));
switcher.change(GameFrame.ID);
} }
} else { } else {
Timer.delay(function() switcher.change(RoomListFrame.ID), 1); Timer.delay(function() switcher.change(RoomListFrame.ID), 1);
} }
} }
public function onShow():Void { override public function onShow(data:RoomProto):Void {
refresh(network.room); refresh(data);
network.roomSignal.connect(refresh); network.roomSignal.connect(refresh);
} }
public function onHide():Void { override public function onHide():Void {
network.roomSignal.disconnect(refresh); network.roomSignal.disconnect(refresh);
} }
} }

View File

@@ -1,4 +1,7 @@
--- ---
geometry.size.stretch: true
layout:
$type: haxework.view.layout.VerticalLayout
views: views:
- $type: haxework.view.VGroupView - $type: haxework.view.VGroupView
skinId: container skinId: container

View File

@@ -1,13 +1,13 @@
package ru.m.tankz.view.network; package ru.m.tankz.view.network;
import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameSwitcher;
import haxework.view.frame.FrameView;
import haxework.view.list.VListView; import haxework.view.list.VListView;
import haxework.view.VGroupView;
import ru.m.tankz.network.NetworkManager; import ru.m.tankz.network.NetworkManager;
import ru.m.tankz.proto.room.RoomProto; import ru.m.tankz.proto.room.RoomProto;
import ru.m.tankz.view.popup.CreateGamePopup; import ru.m.tankz.view.popup.CreateGamePopup;
@:template class RoomListFrame extends VGroupView { @:template class RoomListFrame extends FrameView<Dynamic> {
public static inline var ID = "room_list"; public static inline var ID = "room_list";
@:view var games:VListView<RoomProto>; @:view var games:VListView<RoomProto>;
@@ -15,13 +15,17 @@ import ru.m.tankz.view.popup.CreateGamePopup;
@:provide var switcher:FrameSwitcher; @:provide var switcher:FrameSwitcher;
@:provide var network:NetworkManager; @:provide var network:NetworkManager;
public function onShow():Void { public function new() {
super(ID);
}
override public function onShow(_:Dynamic):Void {
network.listRoomSignal.connect(onRoomList); network.listRoomSignal.connect(onRoomList);
network.roomSignal.connect(onRoom); network.roomSignal.connect(onRoom);
network.listGame(true); network.listGame(true);
} }
public function onHide():Void { override public function onHide():Void {
network.listRoomSignal.disconnect(onRoomList); network.listRoomSignal.disconnect(onRoomList);
network.roomSignal.disconnect(onRoom); network.roomSignal.disconnect(onRoom);
network.listGame(false); network.listGame(false);
@@ -41,7 +45,7 @@ import ru.m.tankz.view.popup.CreateGamePopup;
private function onRoom(room:RoomProto):Void { private function onRoom(room:RoomProto):Void {
if (room != null) { if (room != null) {
switcher.change(RoomFrame.ID); switcher.change(RoomFrame.ID, room);
} }
} }
} }

View File

@@ -1,4 +1,7 @@
--- ---
geometry.size.stretch: true
layout:
$type: haxework.view.layout.VerticalLayout
views: views:
- $type: haxework.view.VGroupView - $type: haxework.view.VGroupView
skinId: container skinId: container

View File

@@ -14,6 +14,7 @@ typedef Start = {
typedef Result = { typedef Result = {
var state:GameState; var state:GameState;
var level:LevelConfig;
var winner:TeamId; var winner:TeamId;
} }

View File

@@ -160,7 +160,7 @@ class GameRunner extends Game implements EngineListener {
private function complete(winner:TeamId):Void { private function complete(winner:TeamId):Void {
Timer.delay(function() { Timer.delay(function() {
gameEventSignal.emit(COMPLETE({state: state, winner: winner})); gameEventSignal.emit(COMPLETE({state: state, level: level, winner: winner}));
}, 3000); }, 3000);
} }