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 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 PUZZLE_HEIGHT PUZZLE_WIDTH r) j (new Jigsawx pieceAssetWidth pieceAssetHeight 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

View File

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

View File

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