From 5645fb6d0f41b041a99d1b64b490dc15ec4f5d7d Mon Sep 17 00:00:00 2001 From: shmyga Date: Wed, 11 Sep 2019 17:52:09 +0300 Subject: [PATCH] [client] add PackView --- src/client/haxe/ru/m/tankz/AppTheme.hx | 4 +++ src/client/haxe/ru/m/tankz/view/MenuFrame.hx | 3 +- .../haxe/ru/m/tankz/view/MenuFrame.yaml | 7 +++-- src/client/haxe/ru/m/tankz/view/ViewUtil.hx | 4 +-- .../haxe/ru/m/tankz/view/common/PackView.hx | 28 ++++++++++++++++++ .../haxe/ru/m/tankz/view/common/PackView.yaml | 12 ++++++++ src/common/resources/level/classic_modern.zip | Bin 4391 -> 5382 bytes .../haxe/ru/m/tankz/editor/view/PackFrame.hx | 1 + .../ru/m/tankz/editor/view/PackListFrame.hx | 12 ++++---- .../ru/m/tankz/editor/view/PackListFrame.yaml | 2 +- .../haxe/ru/m/tankz/editor/view/PackView.hx | 18 +++++++---- 11 files changed, 73 insertions(+), 18 deletions(-) create mode 100644 src/client/haxe/ru/m/tankz/view/common/PackView.hx create mode 100644 src/client/haxe/ru/m/tankz/view/common/PackView.yaml diff --git a/src/client/haxe/ru/m/tankz/AppTheme.hx b/src/client/haxe/ru/m/tankz/AppTheme.hx index 95d37b5..eb8c788 100644 --- a/src/client/haxe/ru/m/tankz/AppTheme.hx +++ b/src/client/haxe/ru/m/tankz/AppTheme.hx @@ -129,6 +129,10 @@ class AppTheme extends Theme { "skin.background.color" => red, ])); + register(new Style("button.menu", [ + "_" => null, + ], ["border", "light"])); + registerButton("settings", "cog-solid.svg"); registerButton("close", "times-circle-solid.svg"); registerButton("next", "arrow-alt-circle-right-solid.svg"); diff --git a/src/client/haxe/ru/m/tankz/view/MenuFrame.hx b/src/client/haxe/ru/m/tankz/view/MenuFrame.hx index 2d31faf..6642bfb 100644 --- a/src/client/haxe/ru/m/tankz/view/MenuFrame.hx +++ b/src/client/haxe/ru/m/tankz/view/MenuFrame.hx @@ -10,6 +10,7 @@ import ru.m.tankz.game.GameInit; import ru.m.tankz.game.GameState; import ru.m.tankz.network.NetworkManager; import ru.m.tankz.Type; +import ru.m.tankz.view.common.PackView; import ru.m.tankz.view.network.RoomFrame; import ru.m.tankz.view.network.RoomListFrame; import ru.m.tankz.view.popup.LoginPopup; @@ -26,7 +27,7 @@ using ru.m.tankz.view.ViewUtil; @:provide static var appUpdater:Updater; @:provide static var levelBundle:ILevelBundle; - @:view var packs:DataView; + @:view var packs:DataView; @:view var username:LabelView; @:view("login") var loginButton:ButtonView; @:view("logout") var logoutButton:ButtonView; diff --git a/src/client/haxe/ru/m/tankz/view/MenuFrame.yaml b/src/client/haxe/ru/m/tankz/view/MenuFrame.yaml index d4b4572..e74a131 100644 --- a/src/client/haxe/ru/m/tankz/view/MenuFrame.yaml +++ b/src/client/haxe/ru/m/tankz/view/MenuFrame.yaml @@ -5,6 +5,7 @@ views: overflow.y: scroll views: - $type: haxework.view.group.VGroupView + geometry.width: 100% layout.margin: 10 layout.hAlign: center views: @@ -15,10 +16,12 @@ views: geometry.margin.bottom: 30 - id: packs $type: haxework.view.data.DataView + geometry.width: 100% layout: - $type: haxework.view.layout.VerticalLayout + $type: haxework.view.layout.TailLayout + rowSize: 3 margin: 10 - factory: ~packButtonFactory + factory: ~ru.m.tankz.view.common.PackView.factory +onDataSelect: ~startGame - $type: haxework.view.SpriteView style: line diff --git a/src/client/haxe/ru/m/tankz/view/ViewUtil.hx b/src/client/haxe/ru/m/tankz/view/ViewUtil.hx index fe9ff25..cae7b56 100644 --- a/src/client/haxe/ru/m/tankz/view/ViewUtil.hx +++ b/src/client/haxe/ru/m/tankz/view/ViewUtil.hx @@ -41,8 +41,8 @@ class ViewUtil { return result.join(oneline ? " " : "\n"); } - public static function toPackLabel(packId:PackId):String { - return packId.name != PackId.DEFAULT ? '${packId.type} #${packId.name}' : packId.type; + public static function toPackLabel(packId:PackId, separator=" #"):String { + return packId.name != PackId.DEFAULT ? '${packId.type}${separator}${packId.name}' : packId.type; } public static function toActionLabel(action:TankAction):String { diff --git a/src/client/haxe/ru/m/tankz/view/common/PackView.hx b/src/client/haxe/ru/m/tankz/view/common/PackView.hx new file mode 100644 index 0000000..744e29f --- /dev/null +++ b/src/client/haxe/ru/m/tankz/view/common/PackView.hx @@ -0,0 +1,28 @@ +package ru.m.tankz.view.common; + +import haxework.view.form.LabelView; +import haxework.view.group.VGroupView; +import ru.m.tankz.Type; + +using ru.m.tankz.view.ViewUtil; + +@:template class PackView extends VGroupView { + + public var data(default, set):PackId; + + @:view var label:LabelView; + + private function set_data(value:PackId):PackId { + if (data != value) { + data = value; + label.text = data.toPackLabel("\n"); + } + return data; + } + + public static function factory(index:Int, value:PackId):PackView { + var result = new PackView(); + result.data = value; + return result; + } +} diff --git a/src/client/haxe/ru/m/tankz/view/common/PackView.yaml b/src/client/haxe/ru/m/tankz/view/common/PackView.yaml new file mode 100644 index 0000000..bafd08e --- /dev/null +++ b/src/client/haxe/ru/m/tankz/view/common/PackView.yaml @@ -0,0 +1,12 @@ +--- +style: button.menu +geometry.width: 200 +geometry.height: 150 +geometry.padding: 5 +layout.hAlign: center +content.buttonMode: true +content.mouseChildren: false +views: + - id: label + $type: haxework.view.form.LabelView + font.size: 22 diff --git a/src/common/resources/level/classic_modern.zip b/src/common/resources/level/classic_modern.zip index 3876e21d3678feb30f5e2a1dc49b5671abae6b55..bb1a6638301f2a9e9aff18303553fd63bb6c6ec5 100644 GIT binary patch literal 5382 zcmZ{oWmpq#--gGi(OsiKN@^e=-3;k;C@+q1VtqWA}x)C zfV3mtfzR{j&yMG1pV)DnU(Q|k@4kMwp$;w{EdT%j0iMMQ8ch8>L@M9_0KRwt03qgE z2m~VH_0TH`(XHPOA^o@>NbIu6A?zfV(+HS(kMk^2ExRAAf^sH-i>*yOKm^rYkB+!r zSaZ@N>O)-&7M|Wbp8h3JoM=KVHRdhYKVWsJ+PHCS2y>bwuDWBrY-5_N@tK_~6iUag z3IF6twaE&&tmIOGZ8+6X>9VD8BlCp=ovb>U$- z^dR87L|gY`kkh*O=t(nVBh@mkB2(qom_|4wrT)lXR;xP-6r^yMWxm?mB`kYxlvmu? z@)gsJ5@~|{+_0Ecg|*=Y!|bpXZz+u7NB?;r{;~i!L^p9YHT0% z(jqUhOlF7EhG}b5M>`W%`r}E_N+!%8KPb1w(rJD{m3z3BwbtfcUzKed2LVrPmy%A( z4cLrHS$tWBR*b#7($bVd^GMGg@qW?c$?tmW?T3S|nk$D^ZS9+uIKSx|`@`VJ-hD{? z6Sg9FF|h8fqm^9Qs+t!TBhYZ9z%*=eEzi7rq#*A2@2iy|f`5s+}JAxXrqvlPM-M zJY_2%uahVnRvo@tAd zD2PD^m-1b|(FLf*du2%Ibaa?(3UwNT>^B~Ze~J&GYqaHv;~B3N2x_BHnt`^uD9$8%ah1PG6A&7n@>Q#ODp)ZeU3E2p3BAfee$%Ap znZ!4IC~IA3|1Q1kWQvSW7yCtFF*qTz8<=V6^^Y)#vtSJvxrcF35^ne^b#yo+1BUFU zi-r8NpPNU3QirDuyrh=8CN=GLSvmyJU!NXd0lj@Sh z+H?myqEbmR2cE8bje`qrzq`_AD(Qv}ZFfp-Cj@lv?f&i>HTfmE`&)}M!@oQe34eur zcB~t`Hs9|1ow?5fr)dk#<`+=XxrEC`CU2=o#xD%WWF_5R4~ zF-mXv;P6p{NAH8Xe0@$9kib+wT|tk~+brv#s_7jI!!e1R&qOjL4Uz9CazL{XCh?)i z`rtoGor7ZrHYWD+W>|ylu_A;G2a}?6DUyFroBOGh&MCBjNV9#EtSh)#8^z#?(1x`Q zTGSwa`m%qDM6n%d&dEP~_OciM>1tw#d@nd^fTzPG52?1jPMNP@9_6VOm6S-$x5zmg zP^2eFb2av4y9&`$D&RRP%(K7a)-H<-&@rD8sd)aALE(bQS6jL<6n#p+3^F|=7s1;omy%d=y!udXbFD!XU&AKh~!jL zqs+vtyz&yDPEl;L8JiQsQc__f)Z6cs!fB7U^OR3DRS01;krmb2G0kXZptrbe>-`kJ z&Kty1H#ih&X&ppteSgN&v(+uw%cS#Q2i5IjEut-9yKnZp`|DIz^Q{P*va23?H(7S# z#;S)a-OA`%oq;6-WAsP+ux%K#Jn;?d7JNe}AZZn^DqkNA#CVxF$;QKYu|D&HBD$5) zIuWk39>7!U@6G+=#dY&SC}{MUJ#=987qA3{muX;Xv|p9#Pi2;~1~+;QYeNwDcY<8} zCFr+e^)^W^TG^@0sMNfWovWu-k`QC3H6vmjO>0ydmdLvk{^xRJjB=hNoUIDKEp_+T z-1sXp$2r~_m*C?yubI3hLrXISvs=t_>$u^D%etOn6ed8x%`6`$#4ClsMkcDs?rvqE zi}FmpF}OjtsKj$Z>dBk?YgHvWVbTEU%n>`gC*ZsF=roAvDvY`VIqOIBt?8j4(Fe&< z3Ff_YEtn4A_dM<#xOF~UqqS&Y%uA0nP*rA3m&&p;zy=j3c9O>Xeqd2pKFCSViT1Z` zNC9LycO`k(db_Z=^6*>m+K$Pt^Ae@PZ3&PcOJceEkoXs^Ou22Zqh&)iF=KcfD_9Y# zc;`~S)zZFNn31T#%=Iq6<-V>&8?XLw7{e|4Zid5s5jRGruQo4K#Us;F$W%9fcGIM( zG4+qfafEJ&7f%uNzZ{e|ClDyi)*v{dXm=jF@;xwiahdR<>l#Y_heQ`#OaDEm|4e(D z(wlI{^v7m5eN^}gZE1As%VJ%w|p_(<(BD_f^I12 zQ3*}aH?5-mePodzS%_y^Y#Y%~K>q&rK|Kj|nw{3ZYA}}(+=(lD{n9Z~y$nLn$JpS6 zs42O$M3`b5Pj;zh;@QEGLln8FD%mCZTC23Vk^YP$YySg?q!jgsWR<+`=C+{VZdnH* zHXh7OE8X`+9T!5R3C8KEhX#`%1~*J@&M3^>?Jb0-WG|OveC6kLp+)Y1#_hj%igiw!Aj6 z{N~4p$RNN)Uv@bu@=X8sC3dzjWFqu1b(Rvkr`Yky*?z6 z{M%Y$!-lF{J7=%TD{?cBT*mRs8XC|#Q9dbWv`O4*e)}hNzn*J$NjD;BjJ_ViT$;1k z45M2#VcxT_9h1tcClU>6hlZs0 zT3d?XXiIY=d1UtUJMI(To;;j$9g}msjISg6-I^t^#$WRwbygCMbJ1SXAzi$Vz zvt^(O(MAr3kSebSXtewBk`joa>1OYI=8CDHDm1!u+<-e+K&nA5CFdHrU1HhCmBJD* zrGro0K*X!Tay151b@s0v+t|ECUkXz9z3ZA9u)fx0Px?Z<_j$>%=1bjo4xi;&0|FC8 zatjPxf4vyD@QL?%%F%3ARC(mGlBX>;OUa8TUMR&Rg^n>}d|f_QR$##5cn$FSlZ@?? zTaG~O{DB3BMCGDgkEfp<$Y82sMe4-Pc0dj5ti!pFI zy!ZTYSFr=KOT-y`^6?#Ou)|VRTT+SLc$~q|)r(>IICI-|1>?s1zb#bkthP@eddc5& zkan*7N83B-5~O!-T<*k`t)OBRGM{bP{{ezedCW=_t{t9XbhMgZK{#)=m&m<9 zRiZg(zTtw{g)+}IydJ&wcQpY5(It&k_frobJU>iy ztNTo|6396iS#8VMAp?}{Q^Bgq{j3*#To)zq!MiYe{AmB(um(}RY%%{PjoG*1fdEQrf2c<5cPJVq>dHY0Db*srj6MLU44-K9$%Wp7 zalheRQs2Lys<5u$H4&M;sjwh@-21~9y5uUXM!McXXQ+b%qy_x{&pMbC{p;^Pk385A z_DjV%aTjA90y!I1*bw#(ehxJOPocBpj16Hgr038)?kRMZb8HBEDLaSg@lT<%FknO2 zOUpSVNN@_BtuWXSc85QQj4*Fx5Xf1h$A+*g?m6TDI)%;(FE)hT)y^Rl(J6G++^`|+ z%5o0jkeoti1qK_!zPHaIF;Wcl_ZG*7u&=9g$ervI`k#rw9_i;$2>B`WKNEpH>&~GJ lic{!+CIWjPoI`IZPoe)L0w42B0{|454>KlRLsX~#{U5|pxp@Ep literal 4391 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 AoB#j- diff --git a/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.hx b/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.hx index a969ab8..a7738d9 100644 --- a/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.hx +++ b/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.hx @@ -117,6 +117,7 @@ using ru.m.tankz.view.ViewUtil; data.name = levelName.text; pack.data[data.id] = data; levels.data = pack.data; + level = data; storage.write(pack.id, pack); } diff --git a/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.hx b/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.hx index ff3fd2d..70cae0a 100644 --- a/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.hx +++ b/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.hx @@ -6,6 +6,7 @@ import haxework.view.frame.FrameView; import ru.m.tankz.bundle.ILevelBundle; import ru.m.tankz.config.Config; import ru.m.tankz.editor.FileUtil; +import ru.m.tankz.editor.view.PackView; import ru.m.tankz.editor.view.popup.PackPopup; import ru.m.tankz.Type; import ru.m.tankz.util.LevelUtil; @@ -13,7 +14,7 @@ import ru.m.tankz.util.LevelUtil; @:template class PackListFrame extends FrameView { public static inline var ID = "pack_list"; - @:view("packs") var packView:DataView; + @:view("packs") var packView:ActionDataView; @:provide static var levelBundle:ILevelBundle; @:provide static var switcher:FrameSwitcher; @@ -28,20 +29,19 @@ import ru.m.tankz.util.LevelUtil; packView.data = storage.packList(); } - private function onPackAction(value:PackId, action:String):Void { + private function onPackAction(value:PackId, action:PackAction):Void { switch action { - case "export": + case EXPORT: var pack:LevelPack = storage.read(value); FileUtil.save({ name: '${value}.zip', content: LevelUtil.pack(pack.data), }); - case "edit": + case EDIT: switcher.change(PackFrame.ID, storage.read(value)); - case "delete": + case DELETE: storage.delete(value); packView.data = storage.packList(); - case _: } } diff --git a/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.yaml b/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.yaml index 392020e..40cdc47 100644 --- a/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.yaml +++ b/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.yaml @@ -8,7 +8,7 @@ views: text: New +onPress: ~create() - id: packs - $type: haxework.view.data.DataView + $type: haxework.view.data.ActionDataView layout: $type: haxework.view.layout.VerticalLayout margin: 5 diff --git a/src/editor/haxe/ru/m/tankz/editor/view/PackView.hx b/src/editor/haxe/ru/m/tankz/editor/view/PackView.hx index c77490a..bb2591a 100644 --- a/src/editor/haxe/ru/m/tankz/editor/view/PackView.hx +++ b/src/editor/haxe/ru/m/tankz/editor/view/PackView.hx @@ -9,12 +9,18 @@ import ru.m.tankz.Type; using ru.m.tankz.view.ViewUtil; +enum PackAction { + EXPORT; + EDIT; + DELETE; +} + @:template class PackView extends HGroupView implements IListItemView { public var item_index(default, default):Int; public var data(default, set):PackId; - private var actionSignal(get, null):Signal2; + private var actionSignal(get, null):Signal2; @:view var label:ButtonView; @@ -24,21 +30,21 @@ using ru.m.tankz.view.ViewUtil; return data; } - private function get_actionSignal():Signal2 { - var dataView:DataView = cast parent; + private function get_actionSignal():Signal2 { + var dataView:ActionDataView = cast parent; return dataView.onDataAction; } private function export():Void { - actionSignal.emit(data, "export"); + actionSignal.emit(data, EXPORT); } private function edit():Void { - actionSignal.emit(data, "edit"); + actionSignal.emit(data, EDIT); } private function delete():Void { - actionSignal.emit(data, "delete"); + actionSignal.emit(data, DELETE); } public static function factory(index:Int, value:PackId):PackView {