[add] (render) add CompleteView
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "puzzlez",
|
"name": "puzzlez",
|
||||||
"version": "0.4.1",
|
"version": "0.4.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"dateformat": "^3.0.3",
|
"dateformat": "^3.0.3",
|
||||||
|
|||||||
68
src/haxe/ru/m/puzzlez/render/CompleteView.hx
Normal file
68
src/haxe/ru/m/puzzlez/render/CompleteView.hx
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
package ru.m.puzzlez.render;
|
||||||
|
|
||||||
|
import flash.display.Shape;
|
||||||
|
import flash.geom.Matrix;
|
||||||
|
import ru.m.puzzlez.core.GamePreset;
|
||||||
|
|
||||||
|
class CompleteView extends Shape {
|
||||||
|
|
||||||
|
public var parts:Array<PartView>;
|
||||||
|
public var preset:GamePreset;
|
||||||
|
|
||||||
|
public function new() {
|
||||||
|
super();
|
||||||
|
parts = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addChild(part:PartView):Void {
|
||||||
|
if (part.parent != null) {
|
||||||
|
part.parent.removeChild(part);
|
||||||
|
}
|
||||||
|
parts.push(part);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function redraw():Void {
|
||||||
|
if (preset == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var partWidth = preset.imageRect.width / preset.grid.width;
|
||||||
|
var partHeight = preset.imageRect.height / preset.grid.height;
|
||||||
|
|
||||||
|
graphics.clear();
|
||||||
|
graphics.lineStyle(2, 0xCCCCCC);
|
||||||
|
graphics.beginFill(0x555555, 0.4);
|
||||||
|
graphics.drawRect(0, 0, preset.imageRect.width, preset.imageRect.height);
|
||||||
|
graphics.endFill();
|
||||||
|
graphics.lineStyle();
|
||||||
|
|
||||||
|
for (partView in parts) {
|
||||||
|
var part = partView.part;
|
||||||
|
|
||||||
|
if (partView.currentImage != null) {
|
||||||
|
var image = partView.currentImage;
|
||||||
|
var m = new Matrix();
|
||||||
|
m.translate(partView.x, partView.y);
|
||||||
|
graphics.beginBitmapFill(image, m, false, true);
|
||||||
|
graphics.drawRect(m.tx, m.ty, image.width, image.height);
|
||||||
|
graphics.endFill();
|
||||||
|
}
|
||||||
|
|
||||||
|
var rect = part.rect.clone();
|
||||||
|
rect.x = part.gridX * part.rect.width;
|
||||||
|
rect.y = part.gridY * part.rect.height;
|
||||||
|
var path = RenderUtil.builder.build(rect, part.bounds);
|
||||||
|
for (value in RenderUtil.borderSettings) {
|
||||||
|
graphics.lineStyle(1, value.color, value.opacity);
|
||||||
|
path.move(value.offset.x, value.offset.y).draw(graphics);
|
||||||
|
graphics.lineStyle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function clean():Void {
|
||||||
|
preset = null;
|
||||||
|
parts = [];
|
||||||
|
graphics.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package ru.m.puzzlez.render;
|
package ru.m.puzzlez.render;
|
||||||
|
|
||||||
|
import flash.display.BitmapData;
|
||||||
import flash.display.Bitmap;
|
import flash.display.Bitmap;
|
||||||
import flash.display.PixelSnapping;
|
import flash.display.PixelSnapping;
|
||||||
import flash.display.Sprite;
|
import flash.display.Sprite;
|
||||||
@@ -10,6 +11,7 @@ import ru.m.puzzlez.render.RenderUtil;
|
|||||||
class PartView extends Sprite {
|
class PartView extends Sprite {
|
||||||
|
|
||||||
public var id(default, null):Int;
|
public var id(default, null):Int;
|
||||||
|
public var part(default, null):Part;
|
||||||
public var position(default, set):Point;
|
public var position(default, set):Point;
|
||||||
public var completed(default, default):Bool;
|
public var completed(default, default):Bool;
|
||||||
public var target(default, null):Point;
|
public var target(default, null):Point;
|
||||||
@@ -29,11 +31,21 @@ class PartView extends Sprite {
|
|||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
private var size:Point;
|
public var currentImage(get, never):BitmapData;
|
||||||
|
|
||||||
|
private function get_currentImage():BitmapData {
|
||||||
|
if (image == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return completed ? image.borderedImage : image.shadedImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public var size(default, null):Point;
|
||||||
|
|
||||||
public function new(part:Part) {
|
public function new(part:Part) {
|
||||||
super();
|
super();
|
||||||
this.id = part.id;
|
this.id = part.id;
|
||||||
|
this.part = part;
|
||||||
this.size = part.rect.size.clone();
|
this.size = part.rect.size.clone();
|
||||||
this.target = new Point(part.gridX * size.x, part.gridY * size.y);
|
this.target = new Point(part.gridX * size.x, part.gridY * size.y);
|
||||||
}
|
}
|
||||||
@@ -52,6 +64,7 @@ class PartView extends Sprite {
|
|||||||
public function complete():Void {
|
public function complete():Void {
|
||||||
position = target;
|
position = target;
|
||||||
completed = true;
|
completed = true;
|
||||||
|
refresh();
|
||||||
redraw();
|
redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +79,7 @@ class SpritePartView extends PartView {
|
|||||||
if (image == null) {
|
if (image == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var image = completed ? image.borderedImage : image.shadedImage;
|
var image = currentImage;
|
||||||
graphics.clear();
|
graphics.clear();
|
||||||
graphics.beginBitmapFill(image, null, false, true);
|
graphics.beginBitmapFill(image, null, false, true);
|
||||||
graphics.drawRect(0, 0, image.width, image.height);
|
graphics.drawRect(0, 0, image.width, image.height);
|
||||||
@@ -84,6 +97,6 @@ class BitmapPartView extends PartView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override private function redraw():Void {
|
override private function redraw():Void {
|
||||||
bitmap.bitmapData = completed ? image.borderedImage : image.shadedImage;
|
bitmap.bitmapData = currentImage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ class Render extends SpriteView implements IRender {
|
|||||||
private var progress:ProgressView;
|
private var progress:ProgressView;
|
||||||
private var container:Sprite;
|
private var container:Sprite;
|
||||||
private var tableView:Sprite;
|
private var tableView:Sprite;
|
||||||
private var imageView:Sprite;
|
private var imageView:CompleteView;
|
||||||
private var parts:Map<Int, PartView>;
|
private var parts:Map<Int, PartView>;
|
||||||
private var activePart:PartView;
|
private var activePart:PartView;
|
||||||
private var activePoint:Point;
|
private var activePoint:Point;
|
||||||
@@ -63,7 +63,7 @@ class Render extends SpriteView implements IRender {
|
|||||||
signal = new Signal();
|
signal = new Signal();
|
||||||
tableView = new Sprite();
|
tableView = new Sprite();
|
||||||
tableView.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
|
tableView.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
|
||||||
imageView = new Sprite();
|
imageView = new CompleteView();
|
||||||
tableView.addChild(imageView);
|
tableView.addChild(imageView);
|
||||||
container.addChild(tableView);
|
container.addChild(tableView);
|
||||||
parts = new Map();
|
parts = new Map();
|
||||||
@@ -80,6 +80,7 @@ class Render extends SpriteView implements IRender {
|
|||||||
var part:PartView = parts[id];
|
var part:PartView = parts[id];
|
||||||
part.complete();
|
part.complete();
|
||||||
imageView.addChild(part);
|
imageView.addChild(part);
|
||||||
|
imageView.redraw();
|
||||||
case COMPLETE:
|
case COMPLETE:
|
||||||
AlertView.alert("Complete!");
|
AlertView.alert("Complete!");
|
||||||
case _:
|
case _:
|
||||||
@@ -105,12 +106,8 @@ class Render extends SpriteView implements IRender {
|
|||||||
|
|
||||||
imageView.x = state.preset.imageRect.x;
|
imageView.x = state.preset.imageRect.x;
|
||||||
imageView.y = state.preset.imageRect.y;
|
imageView.y = state.preset.imageRect.y;
|
||||||
imageView.graphics.clear();
|
imageView.preset = state.preset;
|
||||||
imageView.graphics.lineStyle(2, 0xCCCCCC);
|
imageView.redraw();
|
||||||
imageView.graphics.beginFill(0x555555, 0.4);
|
|
||||||
imageView.graphics.drawRect(0, 0, state.preset.imageRect.width, state.preset.imageRect.height);
|
|
||||||
imageView.graphics.endFill();
|
|
||||||
imageView.graphics.lineStyle();
|
|
||||||
progress.text = "Loading image";
|
progress.text = "Loading image";
|
||||||
content.addChild(progress.content);
|
content.addChild(progress.content);
|
||||||
imageStorage.resolve(state.preset.imageId).then(onImageResolved);
|
imageStorage.resolve(state.preset.imageId).then(onImageResolved);
|
||||||
@@ -128,6 +125,7 @@ class Render extends SpriteView implements IRender {
|
|||||||
if (progress.content.parent != null) {
|
if (progress.content.parent != null) {
|
||||||
progress.content.parent.removeChild(progress.content);
|
progress.content.parent.removeChild(progress.content);
|
||||||
}
|
}
|
||||||
|
imageView.redraw();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -227,5 +225,6 @@ class Render extends SpriteView implements IRender {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
parts = new Map();
|
parts = new Map();
|
||||||
|
imageView.clean();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,8 +106,8 @@ class RenderUtil {
|
|||||||
var image = new BitmapData(Std.int(geometry.rect.width), Std.int(geometry.rect.height), true, 0x00000000);
|
var image = new BitmapData(Std.int(geometry.rect.width), Std.int(geometry.rect.height), true, 0x00000000);
|
||||||
image.draw(canvas, null, null, null, null, true);
|
image.draw(canvas, null, null, null, null, true);
|
||||||
var shadedImage = drawShadow(image, path, shadowSettings);
|
var shadedImage = drawShadow(image, path, shadowSettings);
|
||||||
var borderedImage = drawBorder(image, path, borderSettings);
|
//var borderedImage = drawBorder(image, path, borderSettings);
|
||||||
return {borderedImage: borderedImage, shadedImage: shadedImage};
|
return {borderedImage: image, shadedImage: shadedImage};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function containRectangle(source:Rectangle, target:Rectangle):Rectangle {
|
public static function containRectangle(source:Rectangle, target:Rectangle):Rectangle {
|
||||||
|
|||||||
@@ -95,7 +95,11 @@ import ru.m.puzzlez.view.popup.PreviewPopup;
|
|||||||
ConfirmView.confirm("Exit?");
|
ConfirmView.confirm("Exit?");
|
||||||
}).then(result -> {
|
}).then(result -> {
|
||||||
if (result) {
|
if (result) {
|
||||||
switcher.change(StartFrame.ID);
|
if (game.state.status == COMPLETE) {
|
||||||
|
switcher.change(GameListFrame.ID, COMPLETE);
|
||||||
|
} else {
|
||||||
|
switcher.back();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,12 +65,6 @@ import ru.m.puzzlez.view.PuzzleImageView;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function refresh():Void {
|
private function refresh():Void {
|
||||||
data = {
|
|
||||||
page: page,
|
|
||||||
total: data != null ? data.total : 0,
|
|
||||||
data: [],
|
|
||||||
};
|
|
||||||
data.data = [];
|
|
||||||
loading.promise = storage.getIndexPage(page).then(data -> this.data = data);
|
loading.promise = storage.getIndexPage(page).then(data -> this.data = data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,11 +95,6 @@ import ru.m.puzzlez.view.PuzzleImageView;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function refresh():Void {
|
private function refresh():Void {
|
||||||
data = {
|
|
||||||
page: page,
|
|
||||||
total: data != null ? data.total : 0,
|
|
||||||
data: [],
|
|
||||||
};
|
|
||||||
loading.promise = source.source.getIndexPage(page).then(data -> this.data = data);
|
loading.promise = source.source.getIndexPage(page).then(data -> this.data = data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user