[add] (render) add CompleteView
This commit is contained in:
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;
|
||||
|
||||
import flash.display.BitmapData;
|
||||
import flash.display.Bitmap;
|
||||
import flash.display.PixelSnapping;
|
||||
import flash.display.Sprite;
|
||||
@@ -10,6 +11,7 @@ import ru.m.puzzlez.render.RenderUtil;
|
||||
class PartView extends Sprite {
|
||||
|
||||
public var id(default, null):Int;
|
||||
public var part(default, null):Part;
|
||||
public var position(default, set):Point;
|
||||
public var completed(default, default):Bool;
|
||||
public var target(default, null):Point;
|
||||
@@ -29,11 +31,21 @@ class PartView extends Sprite {
|
||||
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) {
|
||||
super();
|
||||
this.id = part.id;
|
||||
this.part = part;
|
||||
this.size = part.rect.size.clone();
|
||||
this.target = new Point(part.gridX * size.x, part.gridY * size.y);
|
||||
}
|
||||
@@ -52,6 +64,7 @@ class PartView extends Sprite {
|
||||
public function complete():Void {
|
||||
position = target;
|
||||
completed = true;
|
||||
refresh();
|
||||
redraw();
|
||||
}
|
||||
|
||||
@@ -66,7 +79,7 @@ class SpritePartView extends PartView {
|
||||
if (image == null) {
|
||||
return;
|
||||
}
|
||||
var image = completed ? image.borderedImage : image.shadedImage;
|
||||
var image = currentImage;
|
||||
graphics.clear();
|
||||
graphics.beginBitmapFill(image, null, false, true);
|
||||
graphics.drawRect(0, 0, image.width, image.height);
|
||||
@@ -84,6 +97,6 @@ class BitmapPartView extends PartView {
|
||||
}
|
||||
|
||||
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 container:Sprite;
|
||||
private var tableView:Sprite;
|
||||
private var imageView:Sprite;
|
||||
private var imageView:CompleteView;
|
||||
private var parts:Map<Int, PartView>;
|
||||
private var activePart:PartView;
|
||||
private var activePoint:Point;
|
||||
@@ -63,7 +63,7 @@ class Render extends SpriteView implements IRender {
|
||||
signal = new Signal();
|
||||
tableView = new Sprite();
|
||||
tableView.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
|
||||
imageView = new Sprite();
|
||||
imageView = new CompleteView();
|
||||
tableView.addChild(imageView);
|
||||
container.addChild(tableView);
|
||||
parts = new Map();
|
||||
@@ -80,6 +80,7 @@ class Render extends SpriteView implements IRender {
|
||||
var part:PartView = parts[id];
|
||||
part.complete();
|
||||
imageView.addChild(part);
|
||||
imageView.redraw();
|
||||
case COMPLETE:
|
||||
AlertView.alert("Complete!");
|
||||
case _:
|
||||
@@ -105,12 +106,8 @@ class Render extends SpriteView implements IRender {
|
||||
|
||||
imageView.x = state.preset.imageRect.x;
|
||||
imageView.y = state.preset.imageRect.y;
|
||||
imageView.graphics.clear();
|
||||
imageView.graphics.lineStyle(2, 0xCCCCCC);
|
||||
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();
|
||||
imageView.preset = state.preset;
|
||||
imageView.redraw();
|
||||
progress.text = "Loading image";
|
||||
content.addChild(progress.content);
|
||||
imageStorage.resolve(state.preset.imageId).then(onImageResolved);
|
||||
@@ -128,6 +125,7 @@ class Render extends SpriteView implements IRender {
|
||||
if (progress.content.parent != null) {
|
||||
progress.content.parent.removeChild(progress.content);
|
||||
}
|
||||
imageView.redraw();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -227,5 +225,6 @@ class Render extends SpriteView implements IRender {
|
||||
}
|
||||
}
|
||||
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);
|
||||
image.draw(canvas, null, null, null, null, true);
|
||||
var shadedImage = drawShadow(image, path, shadowSettings);
|
||||
var borderedImage = drawBorder(image, path, borderSettings);
|
||||
return {borderedImage: borderedImage, shadedImage: shadedImage};
|
||||
//var borderedImage = drawBorder(image, path, borderSettings);
|
||||
return {borderedImage: image, shadedImage: shadedImage};
|
||||
}
|
||||
|
||||
public static function containRectangle(source:Rectangle, target:Rectangle):Rectangle {
|
||||
|
||||
@@ -95,7 +95,11 @@ import ru.m.puzzlez.view.popup.PreviewPopup;
|
||||
ConfirmView.confirm("Exit?");
|
||||
}).then(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 {
|
||||
data = {
|
||||
page: page,
|
||||
total: data != null ? data.total : 0,
|
||||
data: [],
|
||||
};
|
||||
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 {
|
||||
data = {
|
||||
page: page,
|
||||
total: data != null ? data.total : 0,
|
||||
data: [],
|
||||
};
|
||||
loading.promise = source.source.getIndexPage(page).then(data -> this.data = data);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user