[add] PresetFrame
This commit is contained in:
44
package-lock.json
generated
44
package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "puzzlez",
|
||||
"version": "0.0.1",
|
||||
"version": "0.1.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -124,9 +124,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
@@ -480,9 +480,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
@@ -1078,9 +1078,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
@@ -2836,9 +2836,9 @@
|
||||
}
|
||||
},
|
||||
"gulp-haxetool": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/gulp-haxetool/-/gulp-haxetool-0.1.3.tgz",
|
||||
"integrity": "sha512-oaJIOHc1TGBsFEjuVV6ON1050umCZbpy61ph1Qt6/p+f5NO2WWnbVFhoH+0dL2GedCHEiuihbzpVzV1DT9jsXg==",
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/gulp-haxetool/-/gulp-haxetool-0.1.4.tgz",
|
||||
"integrity": "sha512-/GAw7E6wwaB4jI+o7HqM0/TXJhbW5BqzuktJpUZJukfKn60n9tx3fpem/jABe4tYmNNRrt716hnbcRFXJKKjfQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-colors": "^1.1.0",
|
||||
@@ -4627,9 +4627,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
@@ -5475,9 +5475,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
@@ -6164,9 +6164,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
|
||||
@@ -63,15 +63,15 @@ class BoundsMap {
|
||||
|
||||
class GameUtil {
|
||||
|
||||
public static function buildPreset(image:ImageId):GamePreset {
|
||||
var size = 8;
|
||||
public static function buildPreset(image:ImageId, width:Int = 8, height:Int = 8):GamePreset {
|
||||
var offsetX = 500;
|
||||
var offsetY = 200;
|
||||
var imageRect = new Rectangle(offsetX, offsetY, 1024, 1024);
|
||||
var s = width / height;
|
||||
var imageRect = new Rectangle(offsetX, offsetY, 1024, 1024 / s);
|
||||
var tableRect = new Rectangle(0, 0, imageRect.width + offsetX * 2, imageRect.height + offsetY * 2);
|
||||
return {
|
||||
image:image,
|
||||
grid: {width: size, height: size},
|
||||
grid: {width: width, height: height},
|
||||
tableRect: tableRect,
|
||||
imageRect: imageRect,
|
||||
}
|
||||
|
||||
@@ -79,6 +79,7 @@ class Render extends SpriteView implements IRender {
|
||||
table.addChild(partView);
|
||||
}
|
||||
|
||||
table.graphics.clear();
|
||||
table.graphics.lineStyle(2, 0xCCCCCC);
|
||||
table.graphics.beginFill(0x555555);
|
||||
table.graphics.drawRect(state.preset.imageRect.x, state.preset.imageRect.y, state.preset.imageRect.width, state.preset.imageRect.height);
|
||||
|
||||
@@ -3,12 +3,11 @@ package ru.m.puzzlez.view;
|
||||
import haxework.view.frame.FrameSwitcher;
|
||||
import haxework.view.frame.FrameView;
|
||||
import ru.m.puzzlez.core.Game;
|
||||
import ru.m.puzzlez.core.GameUtil;
|
||||
import ru.m.puzzlez.core.Id;
|
||||
import ru.m.puzzlez.core.GamePreset;
|
||||
import ru.m.puzzlez.core.IGame;
|
||||
import ru.m.puzzlez.render.IRender;
|
||||
|
||||
@:template class GameFrame extends FrameView<ImageId> {
|
||||
@:template class GameFrame extends FrameView<GamePreset> {
|
||||
public static var ID = "game";
|
||||
|
||||
@:view private var render:IRender;
|
||||
@@ -19,9 +18,9 @@ import ru.m.puzzlez.render.IRender;
|
||||
super(ID);
|
||||
}
|
||||
|
||||
override public function onShow(image:ImageId):Void {
|
||||
override public function onShow(preset:GamePreset):Void {
|
||||
onHide();
|
||||
game = new Game(GameUtil.buildPreset(image));
|
||||
game = new Game(preset);
|
||||
game.signal.connect(render.onGameEvent);
|
||||
render.signal.connect(game.signal.emit);
|
||||
game.start();
|
||||
|
||||
@@ -46,7 +46,9 @@ import ru.m.puzzlez.storage.ImageStorage;
|
||||
result.fillType = FillType.COVER;
|
||||
result.setSize(192, 128);
|
||||
result.image = Assets.getBitmapData("resources/icon.png");
|
||||
imageStorage.resolve(image, true).then(function(image) result.image = image);
|
||||
imageStorage.resolve(image, true)
|
||||
.then(function(image) result.image = image)
|
||||
.catchError(function(error) L.e("ImageStorage", "", error));
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -60,7 +62,7 @@ import ru.m.puzzlez.storage.ImageStorage;
|
||||
}
|
||||
|
||||
private function start(image:ImageId):Void {
|
||||
switcher.change(GameFrame.ID, image);
|
||||
switcher.change(PresetFrame.ID, image);
|
||||
}
|
||||
|
||||
private function back():Void {
|
||||
|
||||
44
src/haxe/ru/m/puzzlez/view/PresetFrame.hx
Normal file
44
src/haxe/ru/m/puzzlez/view/PresetFrame.hx
Normal file
@@ -0,0 +1,44 @@
|
||||
package ru.m.puzzlez.view;
|
||||
import haxework.view.form.InputView;
|
||||
import openfl.Assets;
|
||||
import haxework.view.ImageView;
|
||||
import haxework.view.frame.FrameSwitcher;
|
||||
import haxework.view.frame.FrameView;
|
||||
import ru.m.puzzlez.core.GameUtil;
|
||||
import ru.m.puzzlez.core.Id;
|
||||
import ru.m.puzzlez.storage.ImageStorage;
|
||||
|
||||
@:template class PresetFrame extends FrameView<ImageId> {
|
||||
public static var ID = "preset";
|
||||
|
||||
@:view("image") var imageView:ImageView;
|
||||
@:view("width") var widthView:InputView;
|
||||
@:view("height") var heightView:InputView;
|
||||
|
||||
@:provide var imageStorage:ImageStorage;
|
||||
@:provide var switcher:FrameSwitcher;
|
||||
|
||||
private var imageId:ImageId;
|
||||
|
||||
public function new() {
|
||||
super(ID);
|
||||
widthView.text = "8";
|
||||
heightView.text = "8";
|
||||
}
|
||||
|
||||
override public function onShow(data:ImageId):Void {
|
||||
super.onShow(data);
|
||||
imageId = data;
|
||||
imageView.image = Assets.getBitmapData("resources/icon.png");
|
||||
imageStorage.resolve(imageId).then(function(image) imageView.image = image);
|
||||
}
|
||||
|
||||
private function start():Void {
|
||||
var preset = GameUtil.buildPreset(imageId, Std.parseInt(widthView.text), Std.parseInt(heightView.text));
|
||||
switcher.change(GameFrame.ID, preset);
|
||||
}
|
||||
|
||||
private function back():Void {
|
||||
switcher.change(ImagesFrame.ID);
|
||||
}
|
||||
}
|
||||
23
src/haxe/ru/m/puzzlez/view/PresetFrame.yaml
Normal file
23
src/haxe/ru/m/puzzlez/view/PresetFrame.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
style: frame
|
||||
views:
|
||||
- id: image
|
||||
$type: haxework.view.ImageView
|
||||
stretch: false
|
||||
fillType: cover
|
||||
geometry.stretch: true
|
||||
- id: width
|
||||
$type: haxework.view.form.InputView
|
||||
geometry.width: 100
|
||||
- id: height
|
||||
$type: haxework.view.form.InputView
|
||||
geometry.width: 100
|
||||
- $type: haxework.view.form.ButtonView
|
||||
text: Start
|
||||
+onPress: ~start()
|
||||
- $type: haxework.view.form.ButtonView
|
||||
text: Back
|
||||
geometry.position: absolute
|
||||
geometry.hAlign: right
|
||||
geometry.vAlign: top
|
||||
+onPress: ~back()
|
||||
@@ -7,4 +7,5 @@ views:
|
||||
factory:
|
||||
_start_: {$class: ru.m.puzzlez.view.StartFrame}
|
||||
_images_: {$class: ru.m.puzzlez.view.ImagesFrame}
|
||||
_preset_: {$class: ru.m.puzzlez.view.PresetFrame}
|
||||
_game_: {$class: ru.m.puzzlez.view.GameFrame}
|
||||
|
||||
Reference in New Issue
Block a user