overlay match zones on jigsawpiece bubbles. close #96
This commit is contained in:
@@ -264,9 +264,11 @@
|
|||||||
(set s.cameras [pieceCamera])
|
(set s.cameras [pieceCamera])
|
||||||
|
|
||||||
(#when debug
|
(#when debug
|
||||||
(let [matchZones [(matchZoneLeft s) (matchZoneRight s)(matchZoneUp s)(matchZoneDown s)]]
|
// Uncomment for debugging match zones:
|
||||||
|
**(let [matchZones [(matchZoneLeft s) (matchZoneRight s)(matchZoneUp s)(matchZoneDown s)]]
|
||||||
(doFor z matchZones
|
(doFor z matchZones
|
||||||
(FlxSpriteUtil.drawRect s (- z.x s.x) (- z.y s.y) z.width z.height FlxColor.TRANSPARENT (object thickness 1 color FlxColor.RED)))))
|
(unless z.isEmpty
|
||||||
|
(FlxSpriteUtil.drawRect s (- z.x s.x) (- z.y s.y) z.width z.height FlxColor.TRANSPARENT (object thickness 1 color FlxColor.RED))))))
|
||||||
|
|
||||||
(rewardSprites.add s)))
|
(rewardSprites.add s)))
|
||||||
(doFor row (range PUZZLE_HEIGHT)
|
(doFor row (range PUZZLE_HEIGHT)
|
||||||
@@ -378,14 +380,29 @@
|
|||||||
(logTexts.add text))))
|
(logTexts.add text))))
|
||||||
|
|
||||||
// TODO properly tune the match zones to bubbles
|
// TODO properly tune the match zones to bubbles
|
||||||
|
(method :FlxRect matchZone [:FlxExtendedSprite s compass]
|
||||||
|
(let [bubblePoints (dictGet .bubblePoints (dictGet pieceData (dictGet indexMap s)) compass)]
|
||||||
|
(unless bubblePoints
|
||||||
|
(return (new FlxRect 0 0 0 0)))
|
||||||
|
(let [pointsX (for point bubblePoints point.x)
|
||||||
|
pointsY (for point bubblePoints point.y)
|
||||||
|
minX (apply min pointsX)
|
||||||
|
minY (apply min pointsY)
|
||||||
|
maxX (apply max pointsX)
|
||||||
|
maxY (apply max pointsY)
|
||||||
|
rect (.fromTwoPoints (new FlxRect) (new FlxPoint minX minY) (new FlxPoint maxX maxY))]
|
||||||
|
(+= rect.x s.x)
|
||||||
|
(+= rect.y s.y)
|
||||||
|
rect)))
|
||||||
|
|
||||||
(method :FlxRect matchZoneLeft [:FlxExtendedSprite s]
|
(method :FlxRect matchZoneLeft [:FlxExtendedSprite s]
|
||||||
(new FlxRect s.x (+ s.y s.origin.y) EDGE_LEEWAY EDGE_LEEWAY))
|
(matchZone s WEST))
|
||||||
(method :FlxRect matchZoneRight [:FlxExtendedSprite s]
|
(method :FlxRect matchZoneRight [:FlxExtendedSprite s]
|
||||||
(new FlxRect (- (+ s.x s.width) EDGE_LEEWAY) (+ s.y s.origin.y) EDGE_LEEWAY EDGE_LEEWAY))
|
(matchZone s EAST))
|
||||||
(method :FlxRect matchZoneUp [:FlxExtendedSprite s]
|
(method :FlxRect matchZoneUp [:FlxExtendedSprite s]
|
||||||
(new FlxRect (+ s.x s.origin.x) s.y EDGE_LEEWAY EDGE_LEEWAY))
|
(matchZone s NORTH))
|
||||||
(method :FlxRect matchZoneDown [:FlxExtendedSprite s]
|
(method :FlxRect matchZoneDown [:FlxExtendedSprite s]
|
||||||
(new FlxRect (+ s.x s.origin.x) (- (+ s.y s.height) EDGE_LEEWAY) EDGE_LEEWAY EDGE_LEEWAY))
|
(matchZone s SOUTH))
|
||||||
|
|
||||||
(prop &mut c 0)
|
(prop &mut c 0)
|
||||||
(method :Void connectPiece [id self toSprite]
|
(method :Void connectPiece [id self toSprite]
|
||||||
|
@@ -91,6 +91,8 @@ class JigsawPiece{
|
|||||||
, compass
|
, compass
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public var bubblePoints:Map<Compass,Array<Vec2>> = [];
|
||||||
private function drawSide( dx: Float, dy: Float, bubbleSize:Float, sideData: JigsawSideData, compass: Compass ){
|
private function drawSide( dx: Float, dy: Float, bubbleSize:Float, sideData: JigsawSideData, compass: Compass ){
|
||||||
var halfPI = Math.PI/2;
|
var halfPI = Math.PI/2;
|
||||||
var dimensions = new Vec2();
|
var dimensions = new Vec2();
|
||||||
@@ -202,6 +204,9 @@ class JigsawPiece{
|
|||||||
points.pop();
|
points.pop();
|
||||||
points.pop();
|
points.pop();
|
||||||
points.pop();
|
points.pop();
|
||||||
|
|
||||||
|
bubblePoints[compass] = secondPoints;
|
||||||
|
|
||||||
points = points.concat( thirdPoints );
|
points = points.concat( thirdPoints );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user