[client] update RecordFrame
This commit is contained in:
@@ -3,6 +3,7 @@ package ru.m.tankz;
|
|||||||
import flash.text.Font;
|
import flash.text.Font;
|
||||||
import flash.text.FontType;
|
import flash.text.FontType;
|
||||||
import haxework.color.ColorUtil;
|
import haxework.color.ColorUtil;
|
||||||
|
import haxework.resources.IResources;
|
||||||
import haxework.view.core.Geometry;
|
import haxework.view.core.Geometry;
|
||||||
import haxework.view.core.HAlign;
|
import haxework.view.core.HAlign;
|
||||||
import haxework.view.core.VAlign;
|
import haxework.view.core.VAlign;
|
||||||
@@ -10,7 +11,6 @@ import haxework.view.ITextView;
|
|||||||
import haxework.view.layout.Layout;
|
import haxework.view.layout.Layout;
|
||||||
import haxework.view.skin.ISkin;
|
import haxework.view.skin.ISkin;
|
||||||
import haxework.view.skin.Skin;
|
import haxework.view.skin.Skin;
|
||||||
import haxework.resources.IResources;
|
|
||||||
import openfl.Assets;
|
import openfl.Assets;
|
||||||
import ru.m.skin.ButtonSVGSkin;
|
import ru.m.skin.ButtonSVGSkin;
|
||||||
|
|
||||||
@@ -34,7 +34,18 @@ class Style {
|
|||||||
return Skin.text(color, baseFontSize, fontFamily, fontEmbed);
|
return Skin.text(color, baseFontSize, fontFamily, fontEmbed);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function register(font:Font = null) {
|
public static function registerButton(name:String, resource:String):Void {
|
||||||
|
resources.skin.put('button.$name', [
|
||||||
|
Skin.size(64, 64),
|
||||||
|
new ButtonSVGSkin(Assets.getText('resources/image/icon/$resource'), lightColor),
|
||||||
|
]);
|
||||||
|
resources.skin.put('button.$name.small', [
|
||||||
|
Skin.size(32, 32),
|
||||||
|
new ButtonSVGSkin(Assets.getText('resources/image/icon/$resource'), lightColor),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function register(font:Font = null):Void {
|
||||||
resources.color.put("light", lightColor);
|
resources.color.put("light", lightColor);
|
||||||
resources.color.put("dark", darkColor);
|
resources.color.put("dark", darkColor);
|
||||||
if (font == null) {
|
if (font == null) {
|
||||||
@@ -102,6 +113,9 @@ class Style {
|
|||||||
resources.skin.put("border", [
|
resources.skin.put("border", [
|
||||||
Skin.border(ColorUtil.multiply(lightColor, 1.5), 1, 2),
|
Skin.border(ColorUtil.multiply(lightColor, 1.5), 1, 2),
|
||||||
]);
|
]);
|
||||||
|
resources.skin.put("scroll", [
|
||||||
|
Skin.scrollVertical(lightColor, ColorUtil.diff(lightColor, 128)),
|
||||||
|
]);
|
||||||
resources.skin.put("button.level", [
|
resources.skin.put("button.level", [
|
||||||
Skin.buttonColor(lightColor),
|
Skin.buttonColor(lightColor),
|
||||||
Skin.text(textColor, veryBigFontSize, fontFamily, fontEmbed),
|
Skin.text(textColor, veryBigFontSize, fontFamily, fontEmbed),
|
||||||
@@ -128,21 +142,9 @@ class Style {
|
|||||||
new ButtonSVGSkin(Assets.getText("resources/image/icon/window-close-solid.svg"), lightColor),
|
new ButtonSVGSkin(Assets.getText("resources/image/icon/window-close-solid.svg"), lightColor),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
resources.skin.put("button.settings", [
|
registerButton("settings", "cog-solid.svg");
|
||||||
Skin.size(64, 64),
|
registerButton("close", "times-circle-solid.svg");
|
||||||
new ButtonSVGSkin(Assets.getText("resources/image/icon/cog-solid.svg"), lightColor),
|
registerButton("next", "arrow-alt-circle-right-solid.svg");
|
||||||
]);
|
registerButton("start", "play-circle-solid.svg");
|
||||||
resources.skin.put("button.close", [
|
|
||||||
Skin.size(64, 64),
|
|
||||||
new ButtonSVGSkin(Assets.getText("resources/image/icon/times-circle-solid.svg"), lightColor),
|
|
||||||
]);
|
|
||||||
resources.skin.put("button.next", [
|
|
||||||
Skin.size(64, 64),
|
|
||||||
new ButtonSVGSkin(Assets.getText("resources/image/icon/arrow-alt-circle-right-solid.svg"), lightColor),
|
|
||||||
]);
|
|
||||||
resources.skin.put("button.start", [
|
|
||||||
Skin.size(64, 64),
|
|
||||||
new ButtonSVGSkin(Assets.getText("resources/image/icon/play-circle-solid.svg"), lightColor),
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,12 +17,14 @@ import ru.m.tankz.storage.RecordStorage;
|
|||||||
@:provide var record:GameRecord;
|
@:provide var record:GameRecord;
|
||||||
|
|
||||||
public function onShow():Void {
|
public function onShow():Void {
|
||||||
data.data = Lambda.array(recordStorage);
|
var data = Lambda.array(recordStorage);
|
||||||
|
data.sort(function(a:GameRecord, b:GameRecord) return Std.int(a.date.getTime() - b.date.getTime()));
|
||||||
|
this.data.data = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function onRecordSelect(item:IListItemView<GameRecord>):Void {
|
private function onRecordSelect(item:IListItemView<GameRecord>):Void {
|
||||||
record = item.data;
|
//record = item.data;
|
||||||
switcher.change(GameFrame.ID);
|
//switcher.change(GameFrame.ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function close() {
|
private function close() {
|
||||||
|
|||||||
@@ -2,16 +2,20 @@
|
|||||||
views:
|
views:
|
||||||
- $type: haxework.view.VGroupView
|
- $type: haxework.view.VGroupView
|
||||||
skinId: container
|
skinId: container
|
||||||
|
geometry.padding: 20
|
||||||
views:
|
views:
|
||||||
- $type: haxework.view.LabelView
|
- $type: haxework.view.LabelView
|
||||||
skinId: text.header
|
skinId: text.header
|
||||||
text: Records
|
text: Records
|
||||||
- id: data
|
- id: data
|
||||||
$type: haxework.view.list.VListView
|
$type: haxework.view.list.VListView
|
||||||
factory: $code:function() return new haxework.view.list.LabelListItem()
|
factory: $code:function() return new ru.m.tankz.view.common.RecordView()
|
||||||
+onItemSelect: $this:onRecordSelect
|
+onItemSelect: $this:onRecordSelect
|
||||||
geometry.margin.top: 20
|
geometry.margin.top: 20
|
||||||
geometry.size.stretch: true
|
geometry.size.stretch: true
|
||||||
|
scroll:
|
||||||
|
$type: haxework.view.list.VScrollBarView
|
||||||
|
skinId: scroll
|
||||||
- $type: haxework.view.HGroupView
|
- $type: haxework.view.HGroupView
|
||||||
skinId: panel
|
skinId: panel
|
||||||
views:
|
views:
|
||||||
|
|||||||
46
src/client/haxe/ru/m/tankz/view/common/RecordView.hx
Normal file
46
src/client/haxe/ru/m/tankz/view/common/RecordView.hx
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
package ru.m.tankz.view.common;
|
||||||
|
|
||||||
|
import haxework.view.frame.FrameSwitcher;
|
||||||
|
import haxework.view.HGroupView;
|
||||||
|
import haxework.view.LabelView;
|
||||||
|
import haxework.view.list.ListView;
|
||||||
|
import ru.m.tankz.game.record.GameRecord;
|
||||||
|
import ru.m.tankz.storage.RecordStorage;
|
||||||
|
|
||||||
|
@:template class RecordView extends HGroupView implements IListItemView<GameRecord> {
|
||||||
|
@:view var date:LabelView;
|
||||||
|
@:view var type:LabelView;
|
||||||
|
@:view var level:LabelView;
|
||||||
|
@:view var preset:LabelView;
|
||||||
|
|
||||||
|
public var item_index(default, default):Int;
|
||||||
|
public var data(default, set):GameRecord;
|
||||||
|
|
||||||
|
@:provide var recordStorage:RecordStorage;
|
||||||
|
@:provide var switcher:FrameSwitcher;
|
||||||
|
@:provide var record:GameRecord;
|
||||||
|
|
||||||
|
private function set_data(value:GameRecord):GameRecord {
|
||||||
|
if (data != value) {
|
||||||
|
data = value;
|
||||||
|
date.text = data.date.toString();
|
||||||
|
type.text = data.type;
|
||||||
|
level.text = Std.string(data.levelId);
|
||||||
|
preset.text = Std.string(data.presetId);
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function play():Void {
|
||||||
|
record = data;
|
||||||
|
switcher.change(GameFrame.ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function delete():Void {
|
||||||
|
recordStorage.delete(data.id);
|
||||||
|
// ToDo:
|
||||||
|
var list = cast(parent.parent.parent, ListView<Dynamic>);
|
||||||
|
list.data.splice(item_index, 1);
|
||||||
|
list.toUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
29
src/client/haxe/ru/m/tankz/view/common/RecordView.yaml
Normal file
29
src/client/haxe/ru/m/tankz/view/common/RecordView.yaml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
geometry.size.height: 38
|
||||||
|
layout.margin: 5
|
||||||
|
layout.vAlign: middle
|
||||||
|
views:
|
||||||
|
- id: play
|
||||||
|
$type: haxework.view.ButtonView
|
||||||
|
skinId: button.start.small
|
||||||
|
+onPress: $code:play()
|
||||||
|
- id: date
|
||||||
|
$type: haxework.view.LabelView
|
||||||
|
skinId: text.box
|
||||||
|
geometry.size.fixed: [250, 38]
|
||||||
|
- id: type
|
||||||
|
$type: haxework.view.LabelView
|
||||||
|
skinId: text.box
|
||||||
|
geometry.size.fixed: [250, 38]
|
||||||
|
- id: level
|
||||||
|
$type: haxework.view.LabelView
|
||||||
|
skinId: text.box
|
||||||
|
geometry.size.fixed: [50, 38]
|
||||||
|
- id: preset
|
||||||
|
$type: haxework.view.LabelView
|
||||||
|
skinId: text.box
|
||||||
|
geometry.size.fixed: [50, 38]
|
||||||
|
- id: delete
|
||||||
|
$type: haxework.view.ButtonView
|
||||||
|
skinId: button.close.small
|
||||||
|
+onPress: $code:delete()
|
||||||
Reference in New Issue
Block a user