[client] update Frames
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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) : {});
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user