diff --git a/Meteo_Engine.jar b/Meteo_Engine.jar index e4c7433..da32060 100644 Binary files a/Meteo_Engine.jar and b/Meteo_Engine.jar differ diff --git a/src/sig/BlockClump.java b/src/sig/BlockClump.java index 862a1f0..fd02e05 100644 --- a/src/sig/BlockClump.java +++ b/src/sig/BlockClump.java @@ -10,7 +10,7 @@ public class BlockClump { double x,y; //the lower-left origin of this block clump. Every block positions relative to this. double yspd; int[][] collisionColumnRanges; - int launched = -1; /* + int launched = 120; /* Negative is for when block clumps are divided into smaller columns for re-sorting. Positive is used for how much landing launch time before being split and falling.*/ @@ -48,7 +48,10 @@ public class BlockClump { } } - private void updateBlockCollisionRangeWithBlock(Block b) { + public List getBlocks() { + return blocks; + } + private void updateBlockCollisionRangeWithBlock(Block b) { if (collisionColumnRanges[b.x][0]==-1||collisionColumnRanges[b.x][0]>b.y) { collisionColumnRanges[b.x][0]=b.y; } diff --git a/src/sig/Board.java b/src/sig/Board.java index 5544a28..bf00125 100644 --- a/src/sig/Board.java +++ b/src/sig/Board.java @@ -5,6 +5,7 @@ import java.awt.Color; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; public class Board { List blockData; @@ -18,6 +19,10 @@ public class Board { int x,y; int block_width,block_height; double vspeed; + + List blockClumpDeleteList = new ArrayList(); + List blockClumpAddList = new ArrayList(); + public Board(int centerX,int centerY,int block_width,int block_height,int boardWidth, int boardHeight, double gravity, double launch_power, double max_rise_spd, double max_fall_spd, double[] combo_power_bonus) { this.x=centerX; @@ -54,7 +59,6 @@ public class Board { blockData.add(defaultClump2); } public void run(long frames) { - if (frames%100==0) { blockData.add(new BlockClump(Arrays.asList(new Block((int)(Math.random()*width),0)),0,590,0,width)); } @@ -91,13 +95,36 @@ public class Board { } //System.out.println(blocks.y); } + if (blockClumpDeleteList.size()>0) { + blockData.removeAll(blockClumpDeleteList); + blockClumpDeleteList.clear(); + } + if (blockClumpAddList.size()>0) { + blockData.addAll(blockClumpAddList); + blockClumpAddList.clear(); + } } private void HandleBlockLand(BlockClump blocks, int x, double yset) { blocks.yspd=0; blocks.y=yset; - + if (blocks.launched--==-1) { + SplitBlockClump(blocks); + } + } + private void SplitBlockClump(BlockClump blocks) { + for (int x=0;xblock.x==column).collect(Collectors.toList()), + 0,blocks.y,blocks.yspd,width) + ); + } + } + blockClumpDeleteList.add(blocks); } - public void drawBoard(Graphics g) { + public void drawBoard(Graphics g) { final int DRAW_STARTX = (int)(x - block_width*((double)width/2)); final int DRAW_STARTY = (int)(y + block_height*((double)height/2)); final int DRAW_ENDX = (int)(x + block_width*((double)width/2)); diff --git a/src/sig/Meteo.java b/src/sig/Meteo.java index 3d7946b..a505a0d 100644 --- a/src/sig/Meteo.java +++ b/src/sig/Meteo.java @@ -1,5 +1,8 @@ package sig; +import java.util.ArrayList; +import java.util.List; + import javax.swing.JFrame; public class Meteo { @@ -18,7 +21,7 @@ public class Meteo { b.run(FRAMECOUNT); } - public static void main(String[] args) { + public static void main(String[] args) { double[] val = {0,0,}; b = new Board(SCREEN_WIDTH/2,SCREEN_HEIGHT/2,24,24,8,14,-0.065,1,4,-2,val);