diff --git a/src/app/haxe/ru/m/puzzlez/PuzzlezApp.hx b/src/app/haxe/ru/m/puzzlez/PuzzlezApp.hx index f7081f1..ceaf41f 100644 --- a/src/app/haxe/ru/m/puzzlez/PuzzlezApp.hx +++ b/src/app/haxe/ru/m/puzzlez/PuzzlezApp.hx @@ -9,6 +9,7 @@ import ru.m.puzzlez.settings.Settings; import ru.m.puzzlez.source.AssetImageSource; import ru.m.puzzlez.source.FileImageSource; import ru.m.puzzlez.source.PixabayImageSource; +import ru.m.puzzlez.storage.GameStorage; import ru.m.puzzlez.view.PuzzlezAppView; import ru.m.update.Updater; @@ -21,6 +22,7 @@ class PuzzlezApp { // ToDo: fix @:provide macro Settings; IPartBuilder; + GameStorage; sourceBundle.register(new AssetImageSource()); sourceBundle.register(new FileImageSource()); sourceBundle.register(new PixabayImageSource()); diff --git a/src/app/haxe/ru/m/puzzlez/render/Render.hx b/src/app/haxe/ru/m/puzzlez/render/Render.hx index 2b9bad9..8f8ad0e 100644 --- a/src/app/haxe/ru/m/puzzlez/render/Render.hx +++ b/src/app/haxe/ru/m/puzzlez/render/Render.hx @@ -160,12 +160,12 @@ class Render extends SpriteView implements IRender { content.graphics.drawRect(0, 0, width, height); content.graphics.endFill(); case Background.IMAGE(id): - /*imageStorage.resolve(id).then(result -> { + ImageData.fromImageId(id).resolve().then(result -> { content.graphics.clear(); content.graphics.beginBitmapFill(result); content.graphics.drawRect(0, 0, width, height); content.graphics.endFill(); - });*/ + }); } } diff --git a/src/app/haxe/ru/m/puzzlez/view/GameFrame.hx b/src/app/haxe/ru/m/puzzlez/view/GameFrame.hx index f5b0f07..ea6511f 100644 --- a/src/app/haxe/ru/m/puzzlez/view/GameFrame.hx +++ b/src/app/haxe/ru/m/puzzlez/view/GameFrame.hx @@ -7,12 +7,12 @@ import hw.view.popup.ConfirmView; import promhx.Promise; import ru.m.puzzlez.image.Game; import ru.m.puzzlez.image.IGame; -//import ru.m.puzzlez.net.NetworkGame; import ru.m.puzzlez.proto.event.GameEvent; import ru.m.puzzlez.proto.game.GameState; import ru.m.puzzlez.proto.game.GameStatus; import ru.m.puzzlez.render.IRender; import ru.m.puzzlez.settings.Settings; +import ru.m.puzzlez.storage.GameStorage; import ru.m.puzzlez.view.popup.BackgroundPopup; import ru.m.puzzlez.view.popup.PreviewPopup; @@ -22,7 +22,7 @@ import ru.m.puzzlez.view.popup.PreviewPopup; @:view private var render:IRender; private var game:IGame; @:provide var switcher:FrameSwitcher; - // @:provide var storage:GameStorage; + @:provide var storage:GameStorage; @:provide var settings:Settings; private var saveTimer:Timer; @@ -68,7 +68,7 @@ import ru.m.puzzlez.view.popup.PreviewPopup; saveTimer = null; } if (game != null) { - // storage.save(game.state); + storage.save(game.state); } } @@ -96,7 +96,6 @@ import ru.m.puzzlez.view.popup.PreviewPopup; .then(result -> { if (result) { switcher.change(StartFrame.ID); - // switcher.change(ImageListFrame.ID, storage.statusSource(game.state.status)); } }); } diff --git a/src/app/haxe/ru/m/puzzlez/view/ImageSourceFrame.hx b/src/app/haxe/ru/m/puzzlez/view/ImageSourceFrame.hx index 5f140df..1a8b12f 100644 --- a/src/app/haxe/ru/m/puzzlez/view/ImageSourceFrame.hx +++ b/src/app/haxe/ru/m/puzzlez/view/ImageSourceFrame.hx @@ -1,5 +1,6 @@ package ru.m.puzzlez.view; +import ru.m.puzzlez.storage.GameStorage; import hw.view.form.LabelView; import hw.view.frame.FrameSwitcher; import hw.view.frame.FrameView; @@ -21,6 +22,7 @@ typedef ImageSourceConfig = { @:view var images:ImageDataList; @:provide var switcher:FrameSwitcher; @:provide var sourceBundle:ImageSourceBundle; + @:provide var gameStorage:GameStorage; public function new() { super(ID); @@ -37,7 +39,13 @@ typedef ImageSourceConfig = { } private function start(imageId:ImageId):Void { - switcher.change(PresetFrame.ID, imageId); + gameStorage.get(imageId).then(state -> { + if (state != null) { + switcher.change(GameFrame.ID, state); + } else { + switcher.change(PresetFrame.ID, imageId); + } + }); } private function back():Void { diff --git a/src/app/haxe/ru/m/puzzlez/view/common/ImageIdView.hx b/src/app/haxe/ru/m/puzzlez/view/common/ImageIdView.hx index ca4d396..0c453d8 100644 --- a/src/app/haxe/ru/m/puzzlez/view/common/ImageIdView.hx +++ b/src/app/haxe/ru/m/puzzlez/view/common/ImageIdView.hx @@ -1,24 +1,24 @@ package ru.m.puzzlez.view.common; -import hw.view.utils.DrawUtil; +import hw.view.group.GroupView; import hw.view.ImageView; import ru.m.puzzlez.image.ImageData; import ru.m.puzzlez.proto.game.ImageId; -class ImageIdView extends ImageView { +@:template class ImageIdView extends GroupView { public var imageId(default, set):ImageId; - private function set_imageId(value:ImageId):ImageId { imageId = value; - ImageData.fromImageId(imageId).resolve().then(data -> this.image = data); + loading.promise = ImageData.fromImageId(imageId).resolve().then(data -> this.imageView.image = data); return imageId; } + @:view("image") var imageView:ImageView; + private var loading:LoadingWrapper; + public function new(imageId:ImageId = null) { super(); - style = "view"; - stretch = false; - fillType = FillType.COVER; + loading = new LoadingWrapper(this); if (imageId != null) { this.imageId = imageId; } diff --git a/src/app/haxe/ru/m/storage/SharedObjectDataStorage.hx b/src/app/haxe/ru/m/storage/SharedObjectDataStorage.hx index 0b2ab99..e454966 100644 --- a/src/app/haxe/ru/m/storage/SharedObjectDataStorage.hx +++ b/src/app/haxe/ru/m/storage/SharedObjectDataStorage.hx @@ -55,7 +55,7 @@ class DefaultHelper implements DataHelper { } public function dataMeta(data:Bytes):DataMeta { - return ["date" => Date.now().toString()]; + return ["date" => Date.now()]; } }