From d622247868673dd05ce261af90dbe6cdd1718c99 Mon Sep 17 00:00:00 2001 From: shmyga Date: Fri, 28 Feb 2020 21:56:52 +0300 Subject: [PATCH] [add] image preview --- package.json | 2 +- src/haxe/ru/m/puzzlez/PuzzlezTheme.hx | 13 +++++---- src/haxe/ru/m/puzzlez/view/GameFrame.hx | 11 +++++-- src/haxe/ru/m/puzzlez/view/GameFrame.yaml | 25 +++++++++------- src/haxe/ru/m/puzzlez/view/PresetFrame.hx | 1 + src/haxe/ru/m/puzzlez/view/PresetFrame.yaml | 2 +- .../m/puzzlez/view/{ => common}/PresetView.hx | 2 +- .../view/{ => popup}/BackgroundPopup.hx | 2 +- .../view/{ => popup}/BackgroundPopup.yaml | 2 +- .../ru/m/puzzlez/view/popup/PreviewPopup.hx | 25 ++++++++++++++++ .../ru/m/puzzlez/view/popup/PreviewPopup.yaml | 29 +++++++++++++++++++ .../icon/arrow-alt-circle-left-solid.svg | 0 .../icon/arrow-alt-circle-right-solid.svg | 0 src/resources/{image => }/icon/bars-solid.svg | 0 src/resources/{image => }/icon/cog-solid.svg | 0 src/resources/icon/image-polaroid.svg | 6 ++++ src/resources/icon/image-solid.svg | 1 + .../{image => }/icon/times-circle-solid.svg | 0 .../{image => }/icon/window-close-solid.svg | 0 src/resources/image/icon/backspace-light.svg | 6 ---- work.md | 1 - 21 files changed, 97 insertions(+), 31 deletions(-) rename src/haxe/ru/m/puzzlez/view/{ => common}/PresetView.hx (98%) rename src/haxe/ru/m/puzzlez/view/{ => popup}/BackgroundPopup.hx (98%) rename src/haxe/ru/m/puzzlez/view/{ => popup}/BackgroundPopup.yaml (98%) create mode 100644 src/haxe/ru/m/puzzlez/view/popup/PreviewPopup.hx create mode 100644 src/haxe/ru/m/puzzlez/view/popup/PreviewPopup.yaml rename src/resources/{image => }/icon/arrow-alt-circle-left-solid.svg (100%) rename src/resources/{image => }/icon/arrow-alt-circle-right-solid.svg (100%) rename src/resources/{image => }/icon/bars-solid.svg (100%) rename src/resources/{image => }/icon/cog-solid.svg (100%) create mode 100644 src/resources/icon/image-polaroid.svg create mode 100644 src/resources/icon/image-solid.svg rename src/resources/{image => }/icon/times-circle-solid.svg (100%) rename src/resources/{image => }/icon/window-close-solid.svg (100%) delete mode 100644 src/resources/image/icon/backspace-light.svg diff --git a/package.json b/package.json index 9c18fe8..8b398ac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "puzzlez", - "version": "0.3.5", + "version": "0.3.6", "private": true, "devDependencies": { "dateformat": "^3.0.3", diff --git a/src/haxe/ru/m/puzzlez/PuzzlezTheme.hx b/src/haxe/ru/m/puzzlez/PuzzlezTheme.hx index 6650fe2..1dcdeb6 100644 --- a/src/haxe/ru/m/puzzlez/PuzzlezTheme.hx +++ b/src/haxe/ru/m/puzzlez/PuzzlezTheme.hx @@ -12,7 +12,7 @@ import ru.m.skin.ButtonSVGSkin; class PuzzlezTheme extends Theme { public function new() { - super({embed: true}, {light: "gray"}, {base: 22}); + super({embed: true}, {light: "gray"}, {base: Device.isMobile() ? 32 : 22}); register(new Style("frame", [ "geometry.padding" => Box.fromFloat(8), ])); @@ -27,8 +27,8 @@ class PuzzlezTheme extends Theme { "font.color" => Color.fromString("red"), ], "text")); - var size = Device.isMobile() ? 64 : 42; - var smallSize = Device.isMobile() ? 42 : 32; + var size = Device.isMobile() ? 72 : 42; + var smallSize = Device.isMobile() ? 64 : 32; register(new Style("icon", [ "geometry.width" => SizeValue.fromInt(size), "geometry.height" => SizeValue.fromInt(size), @@ -36,10 +36,13 @@ class PuzzlezTheme extends Theme { "skin.color" => colors.light, ])); register(new Style("icon.close", [ - "skin.svg" => Assets.getText("resources/image/icon/times-circle-solid.svg"), + "skin.svg" => Assets.getText("resources/icon/times-circle-solid.svg"), ])); register(new Style("icon.setting", [ - "skin.svg" => Assets.getText("resources/image/icon/cog-solid.svg"), + "skin.svg" => Assets.getText("resources/icon/cog-solid.svg"), + ])); + register(new Style("icon.image", [ + "skin.svg" => Assets.getText("resources/icon/image-polaroid.svg"), ])); register(new Style("icon.small", [ "geometry.width" => SizeValue.fromInt(smallSize), diff --git a/src/haxe/ru/m/puzzlez/view/GameFrame.hx b/src/haxe/ru/m/puzzlez/view/GameFrame.hx index 764437a..0662227 100644 --- a/src/haxe/ru/m/puzzlez/view/GameFrame.hx +++ b/src/haxe/ru/m/puzzlez/view/GameFrame.hx @@ -1,18 +1,19 @@ package ru.m.puzzlez.view; -import promhx.Promise; -import haxework.view.popup.ConfirmView; import haxe.Timer; import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameView; +import haxework.view.popup.ConfirmView; +import promhx.Promise; import ru.m.puzzlez.core.Game; import ru.m.puzzlez.core.GameEvent; import ru.m.puzzlez.core.GameState; import ru.m.puzzlez.core.IGame; -import ru.m.puzzlez.render.Background; import ru.m.puzzlez.render.IRender; import ru.m.puzzlez.storage.GameStorage; import ru.m.puzzlez.storage.SettingsStorage; +import ru.m.puzzlez.view.popup.BackgroundPopup; +import ru.m.puzzlez.view.popup.PreviewPopup; @:template class GameFrame extends FrameView { public static var ID = "game"; @@ -74,6 +75,10 @@ import ru.m.puzzlez.storage.SettingsStorage; } } + private function showPreview():Void { + PreviewPopup.showPreview(game.state); + } + private function choiseBackground():Void { BackgroundPopup.choise(settings.background).then(background -> { if (background != null) { diff --git a/src/haxe/ru/m/puzzlez/view/GameFrame.yaml b/src/haxe/ru/m/puzzlez/view/GameFrame.yaml index 0317401..8856931 100644 --- a/src/haxe/ru/m/puzzlez/view/GameFrame.yaml +++ b/src/haxe/ru/m/puzzlez/view/GameFrame.yaml @@ -1,21 +1,24 @@ --- style: frame -geometry.width: 100% -geometry.height: 100% -overflow.x: crop -overflow.y: crop +layout: + $type: haxework.view.layout.HorizontalLayout views: + - $type: haxework.view.group.VGroupView + geometry.height: 100% + geometry.padding: 5 + views: + - $type: haxework.view.form.ButtonView + style: icon.image + +onPress: ~showPreview() + - $type: haxework.view.SpriteView + geometry.stretch: true + - $type: haxework.view.form.ButtonView + style: icon.setting + +onPress: ~choiseBackground() - id: render $type: ru.m.puzzlez.render.Render geometry.width: 100% geometry.height: 100% - - $type: haxework.view.form.ButtonView - style: icon.setting - geometry.position: absolute - geometry.hAlign: left - geometry.vAlign: top - geometry.margin: [5, 0, 5, 0] - +onPress: ~choiseBackground() - $type: haxework.view.form.ButtonView style: icon.close geometry.position: absolute diff --git a/src/haxe/ru/m/puzzlez/view/PresetFrame.hx b/src/haxe/ru/m/puzzlez/view/PresetFrame.hx index 114fe4d..9271fdc 100644 --- a/src/haxe/ru/m/puzzlez/view/PresetFrame.hx +++ b/src/haxe/ru/m/puzzlez/view/PresetFrame.hx @@ -8,6 +8,7 @@ import haxework.view.frame.FrameView; import ru.m.puzzlez.core.GameUtil; import ru.m.puzzlez.core.Id; import ru.m.puzzlez.storage.ImageStorage; +import ru.m.puzzlez.view.common.PresetView; @:template class PresetFrame extends FrameView { public static var ID = "preset"; diff --git a/src/haxe/ru/m/puzzlez/view/PresetFrame.yaml b/src/haxe/ru/m/puzzlez/view/PresetFrame.yaml index 498bbe6..9a6b909 100644 --- a/src/haxe/ru/m/puzzlez/view/PresetFrame.yaml +++ b/src/haxe/ru/m/puzzlez/view/PresetFrame.yaml @@ -25,7 +25,7 @@ views: text: Start +onPress: ~start() - id: image - $type: ru.m.puzzlez.view.PresetView + $type: ru.m.puzzlez.view.common.PresetView geometry.stretch: true geometry.margin: 15 - $type: haxework.view.form.ButtonView diff --git a/src/haxe/ru/m/puzzlez/view/PresetView.hx b/src/haxe/ru/m/puzzlez/view/common/PresetView.hx similarity index 98% rename from src/haxe/ru/m/puzzlez/view/PresetView.hx rename to src/haxe/ru/m/puzzlez/view/common/PresetView.hx index 67b8ece..bd9a416 100644 --- a/src/haxe/ru/m/puzzlez/view/PresetView.hx +++ b/src/haxe/ru/m/puzzlez/view/common/PresetView.hx @@ -1,4 +1,4 @@ -package ru.m.puzzlez.view; +package ru.m.puzzlez.view.common; import flash.display.BitmapData; import flash.display.Graphics; diff --git a/src/haxe/ru/m/puzzlez/view/BackgroundPopup.hx b/src/haxe/ru/m/puzzlez/view/popup/BackgroundPopup.hx similarity index 98% rename from src/haxe/ru/m/puzzlez/view/BackgroundPopup.hx rename to src/haxe/ru/m/puzzlez/view/popup/BackgroundPopup.hx index 854579f..f0e54a1 100644 --- a/src/haxe/ru/m/puzzlez/view/BackgroundPopup.hx +++ b/src/haxe/ru/m/puzzlez/view/popup/BackgroundPopup.hx @@ -1,4 +1,4 @@ -package ru.m.puzzlez.view; +package ru.m.puzzlez.view.popup; import haxework.color.Color; import haxework.view.data.DataView; diff --git a/src/haxe/ru/m/puzzlez/view/BackgroundPopup.yaml b/src/haxe/ru/m/puzzlez/view/popup/BackgroundPopup.yaml similarity index 98% rename from src/haxe/ru/m/puzzlez/view/BackgroundPopup.yaml rename to src/haxe/ru/m/puzzlez/view/popup/BackgroundPopup.yaml index 4ee6e9b..08fac98 100644 --- a/src/haxe/ru/m/puzzlez/view/BackgroundPopup.yaml +++ b/src/haxe/ru/m/puzzlez/view/popup/BackgroundPopup.yaml @@ -1,7 +1,7 @@ --- view: $type: haxework.view.group.VGroupView - geometry.width: 640 + geometry.width: 660 geometry.height: 200 geometry.padding: 10 geometry.hAlign: center diff --git a/src/haxe/ru/m/puzzlez/view/popup/PreviewPopup.hx b/src/haxe/ru/m/puzzlez/view/popup/PreviewPopup.hx new file mode 100644 index 0000000..29bc719 --- /dev/null +++ b/src/haxe/ru/m/puzzlez/view/popup/PreviewPopup.hx @@ -0,0 +1,25 @@ +package ru.m.puzzlez.view.popup; + +import flash.events.MouseEvent; +import haxework.view.popup.PopupView; +import promhx.Promise; +import ru.m.puzzlez.core.GameState; +import ru.m.puzzlez.storage.ImageStorage; +import ru.m.puzzlez.view.common.PresetView; + +@:template class PreviewPopup extends PopupView { + + @:view("preview") var previewView:PresetView; + @:provide static var imageStorage:ImageStorage; + + public function new() { + super(); + content.addEventListener(MouseEvent.CLICK, _ -> close(null)); + } + + public static function showPreview(state:GameState):Promise { + var result = new PreviewPopup(); + result.previewView.state = state; + return result.show(); + } +} diff --git a/src/haxe/ru/m/puzzlez/view/popup/PreviewPopup.yaml b/src/haxe/ru/m/puzzlez/view/popup/PreviewPopup.yaml new file mode 100644 index 0000000..0f72223 --- /dev/null +++ b/src/haxe/ru/m/puzzlez/view/popup/PreviewPopup.yaml @@ -0,0 +1,29 @@ +--- +view: + $type: haxework.view.group.VGroupView + geometry.width: 100% + geometry.height: 100% + geometry.padding: 10 + geometry.hAlign: center + geometry.vAlign: middle + layout.margin: 10 + style: frame + views: + - $type: haxework.view.group.HGroupView + geometry.width: 100% + layout.margin: 10 + views: + - id: header + text: Image preview + $type: haxework.view.form.LabelView + - id: preview + $type: ru.m.puzzlez.view.common.PresetView + geometry.stretch: true + - $type: haxework.view.group.HGroupView + geometry.width: 100% + layout.hAlign: center + layout.margin: 10 + views: + - $type: haxework.view.form.ButtonView + text: OK + +onPress: ~close(null) diff --git a/src/resources/image/icon/arrow-alt-circle-left-solid.svg b/src/resources/icon/arrow-alt-circle-left-solid.svg similarity index 100% rename from src/resources/image/icon/arrow-alt-circle-left-solid.svg rename to src/resources/icon/arrow-alt-circle-left-solid.svg diff --git a/src/resources/image/icon/arrow-alt-circle-right-solid.svg b/src/resources/icon/arrow-alt-circle-right-solid.svg similarity index 100% rename from src/resources/image/icon/arrow-alt-circle-right-solid.svg rename to src/resources/icon/arrow-alt-circle-right-solid.svg diff --git a/src/resources/image/icon/bars-solid.svg b/src/resources/icon/bars-solid.svg similarity index 100% rename from src/resources/image/icon/bars-solid.svg rename to src/resources/icon/bars-solid.svg diff --git a/src/resources/image/icon/cog-solid.svg b/src/resources/icon/cog-solid.svg similarity index 100% rename from src/resources/image/icon/cog-solid.svg rename to src/resources/icon/cog-solid.svg diff --git a/src/resources/icon/image-polaroid.svg b/src/resources/icon/image-polaroid.svg new file mode 100644 index 0000000..3827f3f --- /dev/null +++ b/src/resources/icon/image-polaroid.svg @@ -0,0 +1,6 @@ + diff --git a/src/resources/icon/image-solid.svg b/src/resources/icon/image-solid.svg new file mode 100644 index 0000000..2f912f9 --- /dev/null +++ b/src/resources/icon/image-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/resources/image/icon/times-circle-solid.svg b/src/resources/icon/times-circle-solid.svg similarity index 100% rename from src/resources/image/icon/times-circle-solid.svg rename to src/resources/icon/times-circle-solid.svg diff --git a/src/resources/image/icon/window-close-solid.svg b/src/resources/icon/window-close-solid.svg similarity index 100% rename from src/resources/image/icon/window-close-solid.svg rename to src/resources/icon/window-close-solid.svg diff --git a/src/resources/image/icon/backspace-light.svg b/src/resources/image/icon/backspace-light.svg deleted file mode 100644 index 467fb78..0000000 --- a/src/resources/image/icon/backspace-light.svg +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/work.md b/work.md index c651593..6b68eaf 100644 --- a/work.md +++ b/work.md @@ -1,4 +1,3 @@ -* background settings * parts groups * navigation * render: table scale/move