test that habit puzzle geometry aligns with image corners
This commit is contained in:
@@ -197,7 +197,7 @@
|
|||||||
graphicHeight rewardSprite.pixels.height
|
graphicHeight rewardSprite.pixels.height
|
||||||
pieceAssetWidth (Std.int (/ graphicWidth PUZZLE_WIDTH))
|
pieceAssetWidth (Std.int (/ graphicWidth PUZZLE_WIDTH))
|
||||||
pieceAssetHeight (Std.int (/ graphicHeight PUZZLE_HEIGHT))
|
pieceAssetHeight (Std.int (/ graphicHeight PUZZLE_HEIGHT))
|
||||||
j (new Jigsawx pieceAssetWidth pieceAssetHeight EDGE_LEEWAY BUBBLE_SIZE PUZZLE_HEIGHT PUZZLE_WIDTH r)
|
j (new Jigsawx pieceAssetWidth pieceAssetHeight graphicWidth graphicHeight EDGE_LEEWAY BUBBLE_SIZE PUZZLE_HEIGHT PUZZLE_WIDTH r)
|
||||||
PIECE_WIDTH
|
PIECE_WIDTH
|
||||||
(/ rewardSprite.width PUZZLE_WIDTH)
|
(/ rewardSprite.width PUZZLE_WIDTH)
|
||||||
PIECE_HEIGHT
|
PIECE_HEIGHT
|
||||||
|
|||||||
@@ -3,11 +3,12 @@ import jigsawx.OpenEllipse ;
|
|||||||
import jigsawx.JigsawPiece ;
|
import jigsawx.JigsawPiece ;
|
||||||
import jigsawx.math.Vec2;
|
import jigsawx.math.Vec2;
|
||||||
import jigsawx.JigsawSideData;
|
import jigsawx.JigsawSideData;
|
||||||
|
import kiss.List;
|
||||||
import flixel.math.FlxRandom;
|
import flixel.math.FlxRandom;
|
||||||
class Jigsawx {
|
class Jigsawx {
|
||||||
private var rows: Int;
|
private var rows: Int;
|
||||||
private var cols: Int;
|
private var cols: Int;
|
||||||
private var pieces: Array<Array<JigsawPiece>>;
|
private var pieces: kiss.List<kiss.List<JigsawPiece>>;
|
||||||
public var jigs: Array<JigsawPiece>;
|
public var jigs: Array<JigsawPiece>;
|
||||||
private var sides: Array<Array<JigsawPieceData>>;
|
private var sides: Array<Array<JigsawPieceData>>;
|
||||||
private var lt: Float;
|
private var lt: Float;
|
||||||
@@ -19,6 +20,8 @@ class Jigsawx {
|
|||||||
private var length: Int;
|
private var length: Int;
|
||||||
public function new( pieceWidth: Float
|
public function new( pieceWidth: Float
|
||||||
, pieceHeight: Float
|
, pieceHeight: Float
|
||||||
|
, totalWidth: Float
|
||||||
|
, totalHeight: Float
|
||||||
, edgeLeeway: Float
|
, edgeLeeway: Float
|
||||||
, bubbleSize: Float
|
, bubbleSize: Float
|
||||||
, rows_: Int
|
, rows_: Int
|
||||||
@@ -72,5 +75,32 @@ class Jigsawx {
|
|||||||
xy.x = edgeLeeway;
|
xy.x = edgeLeeway;
|
||||||
xy.y += dy;
|
xy.y += dy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Assert that this puzzle's geometry contains the actual corners of the image:
|
||||||
|
var corners = ["top left", "top right", "bottom left", "bottom right"];
|
||||||
|
|
||||||
|
function contains(p:JigsawPiece, v:Vec2) {
|
||||||
|
for (pt in p.getPoints()) {
|
||||||
|
if (pt.x == v.x - p.xy.x && pt.y == v.y - p.xy.y)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var containsCorners = [
|
||||||
|
contains(pieces[0][0], new Vec2(0, 0)),
|
||||||
|
contains(pieces[0][-1], new Vec2(totalWidth, 0)),
|
||||||
|
contains(pieces[-1][0], new Vec2(0, totalHeight)),
|
||||||
|
contains(pieces[-1][-1], new Vec2(totalWidth, totalHeight))
|
||||||
|
];
|
||||||
|
var containsAllCorners = true;
|
||||||
|
for (i in 0...corners.length) {
|
||||||
|
if (!containsCorners[i]) {
|
||||||
|
trace('missing ${corners[i]} corner');
|
||||||
|
containsAllCorners = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!containsAllCorners) {
|
||||||
|
throw "jigsawX geometry doesn't cover the whole image dimensions!";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user