[common] add deathmatch mode
This commit is contained in:
@@ -15,6 +15,11 @@ views:
|
||||
$type: ru.m.tankz.view.dota.DotaLevelFrame
|
||||
- id: dota.game
|
||||
$type: ru.m.tankz.view.dota.DotaGameFrame
|
||||
# death
|
||||
- id: death.level
|
||||
$type: ru.m.tankz.view.death.DeathLevelFrame
|
||||
- id: death.game
|
||||
$type: ru.m.tankz.view.death.DeathGameFrame
|
||||
# result
|
||||
- id: result
|
||||
$type: ru.m.tankz.view.ResultFrame
|
||||
|
||||
@@ -4,6 +4,7 @@ import haxework.view.ButtonView;
|
||||
import haxework.view.frame.FrameSwitcher;
|
||||
import haxework.view.VGroupView;
|
||||
import ru.m.tankz.view.classic.ClassicLevelFrame;
|
||||
import ru.m.tankz.view.death.DeathLevelFrame;
|
||||
import ru.m.tankz.view.dota.DotaLevelFrame;
|
||||
import ru.m.tankz.view.popup.FontPopup;
|
||||
|
||||
@@ -21,6 +22,8 @@ import ru.m.tankz.view.popup.FontPopup;
|
||||
frameSwitcher.change(ClassicLevelFrame.ID);
|
||||
case 'dota':
|
||||
frameSwitcher.change(DotaLevelFrame.ID);
|
||||
case 'death':
|
||||
frameSwitcher.change(DeathLevelFrame.ID);
|
||||
case 'network':
|
||||
//frameSwitcher.change(NetworkFrame.ID);
|
||||
case 'settings':
|
||||
|
||||
@@ -17,6 +17,11 @@ views:
|
||||
skinId: button
|
||||
+onPress: $this:onPress
|
||||
text: DotA
|
||||
- id: death
|
||||
$type: haxework.view.ButtonView
|
||||
skinId: button
|
||||
+onPress: $this:onPress
|
||||
text: DeathMatch
|
||||
# - id: font
|
||||
# $type: haxework.view.ButtonView
|
||||
# skinId: button
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package ru.m.tankz.view.common;
|
||||
|
||||
import ru.m.tankz.game.GameState;
|
||||
import flash.events.Event;
|
||||
import haxe.ds.Option;
|
||||
import haxe.Timer;
|
||||
import haxework.view.frame.FrameSwitcher;
|
||||
import haxework.view.GroupView;
|
||||
import ru.m.tankz.view.common.IGamePanel;
|
||||
import ru.m.tankz.game.Game;
|
||||
import ru.m.tankz.game.GameState;
|
||||
import ru.m.tankz.network.NetworkManager;
|
||||
import ru.m.tankz.render.Render;
|
||||
import ru.m.tankz.sound.SoundManager;
|
||||
import ru.m.tankz.view.common.IGamePanel;
|
||||
|
||||
class GameFrame extends GroupView {
|
||||
|
||||
@@ -33,7 +33,7 @@ class GameFrame extends GroupView {
|
||||
}
|
||||
|
||||
private function get_panel():IGamePanel {
|
||||
throw "Not implemented";
|
||||
return null;
|
||||
}
|
||||
|
||||
public function onShow():Void {
|
||||
@@ -47,7 +47,9 @@ class GameFrame extends GroupView {
|
||||
game.start(state).then(onGameStateChange).endThen(onGameComplete);
|
||||
timer = new Timer(10);
|
||||
timer.run = updateEngine;
|
||||
panel.game = game;
|
||||
if (panel != null) {
|
||||
panel.game = game;
|
||||
}
|
||||
content.addEventListener(Event.ENTER_FRAME, _redraw);
|
||||
render.draw(game.engine);
|
||||
sound.play('start');
|
||||
@@ -67,7 +69,9 @@ class GameFrame extends GroupView {
|
||||
}
|
||||
|
||||
private function onGameStateChange(_):Void {
|
||||
panel.toUpdate();
|
||||
if (panel != null) {
|
||||
panel.toUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
private function onGameComplete(_):Void {
|
||||
|
||||
@@ -10,6 +10,7 @@ views:
|
||||
$type: haxework.view.DataView
|
||||
factory: $this:teamViewFactory
|
||||
layout:
|
||||
$type: haxework.view.layout.HorizontalLayout
|
||||
$type: haxework.view.layout.TailLayout
|
||||
rowSize: 5
|
||||
margin: 3
|
||||
+onDataSelect: $this:onTeamSelect
|
||||
|
||||
21
src/client/haxe/ru/m/tankz/view/death/DeathGameFrame.hx
Executable file
21
src/client/haxe/ru/m/tankz/view/death/DeathGameFrame.hx
Executable file
@@ -0,0 +1,21 @@
|
||||
package ru.m.tankz.view.death;
|
||||
|
||||
import ru.m.tankz.render.Render;
|
||||
import ru.m.tankz.view.common.GameFrame;
|
||||
import ru.m.tankz.view.common.IGamePanel;
|
||||
|
||||
@:template class DeathGameFrame extends GameFrame {
|
||||
|
||||
public static inline var ID = "death.game";
|
||||
|
||||
@:view("render") private var renderView(default, null):Render;
|
||||
//@:view("panel") private var panelView(default, null):IGamePanel;
|
||||
|
||||
override private function get_render():Render {
|
||||
return renderView;
|
||||
}
|
||||
|
||||
/*override private function get_panel():IGamePanel {
|
||||
return panelView;
|
||||
}*/
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
skinId: container
|
||||
views:
|
||||
- $type: haxework.view.VGroupView
|
||||
layout.margin: 5
|
||||
views:
|
||||
- id: render
|
||||
$type: ru.m.tankz.render.Render
|
||||
37
src/client/haxe/ru/m/tankz/view/death/DeathLevelFrame.hx
Normal file
37
src/client/haxe/ru/m/tankz/view/death/DeathLevelFrame.hx
Normal file
@@ -0,0 +1,37 @@
|
||||
package ru.m.tankz.view.death;
|
||||
|
||||
import haxework.view.ButtonView;
|
||||
import haxework.view.DataView;
|
||||
import haxework.view.frame.FrameSwitcher;
|
||||
import ru.m.tankz.game.GameState;
|
||||
import ru.m.tankz.preset.DeathGame;
|
||||
import ru.m.tankz.view.common.LevelFrame;
|
||||
import ru.m.tankz.view.common.PlayerView;
|
||||
|
||||
@:template class DeathLevelFrame extends LevelFrame {
|
||||
public static inline var ID = "death.level";
|
||||
|
||||
@:view var levels(default, null):DataView<Int, ButtonView>;
|
||||
@:view var players(default, null):DataView<Array<PlayerState>, PlayerView>;
|
||||
|
||||
@:provide var frames:FrameSwitcher;
|
||||
|
||||
private function onShow():Void {
|
||||
gameType = DeathGame.TYPE;
|
||||
levels.data = [for (i in 0...config.game.levels) i];
|
||||
players.data = [for (i in 0...2) state.players];
|
||||
}
|
||||
|
||||
private function playerViewFactory(index:Int, data:Array<PlayerState>):PlayerView {
|
||||
var view = new PlayerView();
|
||||
view.item_index = index;
|
||||
view.data = data;
|
||||
return view;
|
||||
}
|
||||
|
||||
override private function set_level(value:Int):Int {
|
||||
var result = super.set_level(value);
|
||||
frames.change(DeathGameFrame.ID);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
24
src/client/haxe/ru/m/tankz/view/death/DeathLevelFrame.yaml
Normal file
24
src/client/haxe/ru/m/tankz/view/death/DeathLevelFrame.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
skinId: container
|
||||
layout:
|
||||
$type: haxework.view.layout.VerticalLayout
|
||||
views:
|
||||
- $type: haxework.view.LabelView
|
||||
skinId: text.header
|
||||
text: DeathMatch
|
||||
- id: players
|
||||
$type: haxework.view.DataView
|
||||
layout:
|
||||
$type: haxework.view.layout.VerticalLayout
|
||||
hAlign: right
|
||||
factory: $this:playerViewFactory
|
||||
geometry.padding: 10
|
||||
- id: levels
|
||||
$type: haxework.view.DataView
|
||||
layout:
|
||||
$type: haxework.view.layout.TailLayout
|
||||
rowSize: 5
|
||||
margin: 5
|
||||
factory: $this:levelViewFactory
|
||||
+onDataSelect: $code:function(value) level = value
|
||||
geometry.padding: 10
|
||||
Reference in New Issue
Block a user