fiddle with bubbles

This commit is contained in:
2022-07-09 03:07:30 +00:00
parent f5b9ea3e59
commit 8ab22392b8
3 changed files with 17 additions and 11 deletions

View File

@@ -100,7 +100,7 @@
graphicHeight rewardSprite.pixels.height
pieceAssetWidth (Std.int (/ graphicWidth PUZZLE_WIDTH))
pieceAssetHeight (Std.int (/ graphicHeight PUZZLE_HEIGHT))
j (new Jigsawx pieceAssetWidth pieceAssetHeight EDGE_LEEWAY PUZZLE_HEIGHT PUZZLE_WIDTH r)
j (new Jigsawx pieceAssetWidth pieceAssetHeight EDGE_LEEWAY BUBBLE_SIZE PUZZLE_HEIGHT PUZZLE_WIDTH r)
PIECE_WIDTH
(/ rewardSprite.width PUZZLE_WIDTH)
PIECE_HEIGHT

View File

@@ -23,6 +23,7 @@ class JigsawPiece{
public function new( xy_: Vec2
, row: Int
, col: Int
, bubbleSize: Float
, lt: Vec2, rt: Vec2, rb: Vec2, lb: Vec2
, sideData_: JigsawPieceData
){
@@ -33,16 +34,16 @@ class JigsawPiece{
stepAngle = JigsawMagicNumbers.stepSize*Math.PI/180;
first = lt;
// NORTH side
if( sideData.north != null ) createVertSide( lt, rt, sideData.north, NORTH );
if( sideData.north != null ) createVertSide( lt, rt, bubbleSize, sideData.north, NORTH );
points.push( rt );
// EAST side
if( sideData.east != null ) createHoriSide( rt, rb, sideData.east, EAST );
if( sideData.east != null ) createHoriSide( rt, rb, bubbleSize, sideData.east, EAST );
points.push( rb );
// SOUTH side
if( sideData.south != null ) createVertSide( rb, lb, sideData.south, SOUTH );
if( sideData.south != null ) createVertSide( rb, lb, bubbleSize, sideData.south, SOUTH );
points.push( lb );
// WEST side
if( sideData.west != null ) createHoriSide( lb, lt, sideData.west, WEST );
if( sideData.west != null ) createHoriSide( lb, lt, bubbleSize, sideData.west, WEST );
points.push( lt );
var maxX = 0.0;
@@ -63,28 +64,32 @@ class JigsawPiece{
}
private function createVertSide( A: Vec2
, B: Vec2
, bubbleSize: Float
, side: JigsawSideData
, compass: Compass
){
drawSide( A.x + ( B.x - A.x )/2 + JigsawMagicNumbers.dMore/2 - side.squew*( JigsawMagicNumbers.dMore )
, A.y + ( B.y - A.y )/2 + JigsawMagicNumbers.dinout/2 - side.inout*( JigsawMagicNumbers.dinout )
, bubbleSize
, side
, compass
);
}
private function createHoriSide ( A: Vec2
, B: Vec2
, bubbleSize: Float
, side: JigsawSideData
, compass: Compass
){
drawSide( A.x + ( B.x - A.x )/2 + JigsawMagicNumbers.dinout/2 - side.inout*( JigsawMagicNumbers.dinout )
, A.y + ( B.y - A.y )/2 + JigsawMagicNumbers.dMore/2 - side.squew*( JigsawMagicNumbers.dMore )
, bubbleSize
, side
, compass
);
}
private function drawSide( dx: Float, dy: Float, sideData: JigsawSideData, compass: Compass ){
private function drawSide( dx: Float, dy: Float, bubbleSize:Float, sideData: JigsawSideData, compass: Compass ){
var halfPI = Math.PI/2;
var dimensions = new Vec2();
var offsetCentre = new Vec2();
@@ -92,10 +97,10 @@ class JigsawPiece{
centre =
switch( compass )
{
case NORTH: new Vec2( dx, dy + 6*switch bubble{ case IN: 1; case OUT: -1; } );
case EAST: new Vec2( dx - 6*switch bubble{ case IN: 1; case OUT: -1; }, dy );
case SOUTH: new Vec2( dx, dy - 6*switch bubble{ case IN: 1; case OUT: -1; } );
case WEST: new Vec2( dx + 6*switch bubble{ case IN: 1; case OUT: -1; }, dy );
case NORTH: new Vec2( dx, dy + bubbleSize*switch bubble{ case IN: 1; case OUT: -1; } );
case EAST: new Vec2( dx - bubbleSize*switch bubble{ case IN: 1; case OUT: -1; }, dy );
case SOUTH: new Vec2( dx, dy - bubbleSize*switch bubble{ case IN: 1; case OUT: -1; } );
case WEST: new Vec2( dx + bubbleSize*switch bubble{ case IN: 1; case OUT: -1; }, dy );
}
curveBuilder = new OpenEllipse();
curveBuilder.centre = centre;

View File

@@ -20,6 +20,7 @@ class Jigsawx {
public function new( pieceWidth: Float
, pieceHeight: Float
, edgeLeeway: Float
, bubbleSize: Float
, rows_: Int
, cols_: Int
, r: FlxRandom) {
@@ -63,7 +64,7 @@ class Jigsawx {
for( row in 0...rows ){
pieces.push( new Array() );
for( col in 0...cols ){
jig = new JigsawPiece( xy, row, col, lt, rt, rb, lb, sides[ row ][ col ] );
jig = new JigsawPiece( xy, row, col, bubbleSize, lt, rt, rb, lb, sides[ row ][ col ] );
pieces[ row ][ col ] = jig;
jigs.push( jig );
xy.x += dx;