[add] PresetFrame
This commit is contained in:
44
package-lock.json
generated
44
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "puzzlez",
|
"name": "puzzlez",
|
||||||
"version": "0.0.1",
|
"version": "0.1.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -124,9 +124,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"readable-stream": {
|
"readable-stream": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"inherits": "^2.0.3",
|
"inherits": "^2.0.3",
|
||||||
@@ -480,9 +480,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"readable-stream": {
|
"readable-stream": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"inherits": "^2.0.3",
|
"inherits": "^2.0.3",
|
||||||
@@ -1078,9 +1078,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"readable-stream": {
|
"readable-stream": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"inherits": "^2.0.3",
|
"inherits": "^2.0.3",
|
||||||
@@ -2836,9 +2836,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gulp-haxetool": {
|
"gulp-haxetool": {
|
||||||
"version": "0.1.3",
|
"version": "0.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/gulp-haxetool/-/gulp-haxetool-0.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/gulp-haxetool/-/gulp-haxetool-0.1.4.tgz",
|
||||||
"integrity": "sha512-oaJIOHc1TGBsFEjuVV6ON1050umCZbpy61ph1Qt6/p+f5NO2WWnbVFhoH+0dL2GedCHEiuihbzpVzV1DT9jsXg==",
|
"integrity": "sha512-/GAw7E6wwaB4jI+o7HqM0/TXJhbW5BqzuktJpUZJukfKn60n9tx3fpem/jABe4tYmNNRrt716hnbcRFXJKKjfQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-colors": "^1.1.0",
|
"ansi-colors": "^1.1.0",
|
||||||
@@ -4627,9 +4627,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"readable-stream": {
|
"readable-stream": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"inherits": "^2.0.3",
|
"inherits": "^2.0.3",
|
||||||
@@ -5475,9 +5475,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"readable-stream": {
|
"readable-stream": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"inherits": "^2.0.3",
|
"inherits": "^2.0.3",
|
||||||
@@ -6164,9 +6164,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"readable-stream": {
|
"readable-stream": {
|
||||||
"version": "3.4.0",
|
"version": "3.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
|
||||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"inherits": "^2.0.3",
|
"inherits": "^2.0.3",
|
||||||
|
|||||||
@@ -63,15 +63,15 @@ class BoundsMap {
|
|||||||
|
|
||||||
class GameUtil {
|
class GameUtil {
|
||||||
|
|
||||||
public static function buildPreset(image:ImageId):GamePreset {
|
public static function buildPreset(image:ImageId, width:Int = 8, height:Int = 8):GamePreset {
|
||||||
var size = 8;
|
|
||||||
var offsetX = 500;
|
var offsetX = 500;
|
||||||
var offsetY = 200;
|
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);
|
var tableRect = new Rectangle(0, 0, imageRect.width + offsetX * 2, imageRect.height + offsetY * 2);
|
||||||
return {
|
return {
|
||||||
image:image,
|
image:image,
|
||||||
grid: {width: size, height: size},
|
grid: {width: width, height: height},
|
||||||
tableRect: tableRect,
|
tableRect: tableRect,
|
||||||
imageRect: imageRect,
|
imageRect: imageRect,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ class Render extends SpriteView implements IRender {
|
|||||||
table.addChild(partView);
|
table.addChild(partView);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.graphics.clear();
|
||||||
table.graphics.lineStyle(2, 0xCCCCCC);
|
table.graphics.lineStyle(2, 0xCCCCCC);
|
||||||
table.graphics.beginFill(0x555555);
|
table.graphics.beginFill(0x555555);
|
||||||
table.graphics.drawRect(state.preset.imageRect.x, state.preset.imageRect.y, state.preset.imageRect.width, state.preset.imageRect.height);
|
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.FrameSwitcher;
|
||||||
import haxework.view.frame.FrameView;
|
import haxework.view.frame.FrameView;
|
||||||
import ru.m.puzzlez.core.Game;
|
import ru.m.puzzlez.core.Game;
|
||||||
import ru.m.puzzlez.core.GameUtil;
|
import ru.m.puzzlez.core.GamePreset;
|
||||||
import ru.m.puzzlez.core.Id;
|
|
||||||
import ru.m.puzzlez.core.IGame;
|
import ru.m.puzzlez.core.IGame;
|
||||||
import ru.m.puzzlez.render.IRender;
|
import ru.m.puzzlez.render.IRender;
|
||||||
|
|
||||||
@:template class GameFrame extends FrameView<ImageId> {
|
@:template class GameFrame extends FrameView<GamePreset> {
|
||||||
public static var ID = "game";
|
public static var ID = "game";
|
||||||
|
|
||||||
@:view private var render:IRender;
|
@:view private var render:IRender;
|
||||||
@@ -19,9 +18,9 @@ import ru.m.puzzlez.render.IRender;
|
|||||||
super(ID);
|
super(ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
override public function onShow(image:ImageId):Void {
|
override public function onShow(preset:GamePreset):Void {
|
||||||
onHide();
|
onHide();
|
||||||
game = new Game(GameUtil.buildPreset(image));
|
game = new Game(preset);
|
||||||
game.signal.connect(render.onGameEvent);
|
game.signal.connect(render.onGameEvent);
|
||||||
render.signal.connect(game.signal.emit);
|
render.signal.connect(game.signal.emit);
|
||||||
game.start();
|
game.start();
|
||||||
|
|||||||
@@ -46,7 +46,9 @@ import ru.m.puzzlez.storage.ImageStorage;
|
|||||||
result.fillType = FillType.COVER;
|
result.fillType = FillType.COVER;
|
||||||
result.setSize(192, 128);
|
result.setSize(192, 128);
|
||||||
result.image = Assets.getBitmapData("resources/icon.png");
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +62,7 @@ import ru.m.puzzlez.storage.ImageStorage;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function start(image:ImageId):Void {
|
private function start(image:ImageId):Void {
|
||||||
switcher.change(GameFrame.ID, image);
|
switcher.change(PresetFrame.ID, image);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function back():Void {
|
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:
|
factory:
|
||||||
_start_: {$class: ru.m.puzzlez.view.StartFrame}
|
_start_: {$class: ru.m.puzzlez.view.StartFrame}
|
||||||
_images_: {$class: ru.m.puzzlez.view.ImagesFrame}
|
_images_: {$class: ru.m.puzzlez.view.ImagesFrame}
|
||||||
|
_preset_: {$class: ru.m.puzzlez.view.PresetFrame}
|
||||||
_game_: {$class: ru.m.puzzlez.view.GameFrame}
|
_game_: {$class: ru.m.puzzlez.view.GameFrame}
|
||||||
|
|||||||
Reference in New Issue
Block a user