public void applyGravity() {
		// Basically, this function is going to see if there are any empty blocks
		// in the grid. If there are, then we check the block above it to see if
		// that is empty.
		//		If it is empty: We do nothing :)
		//		If it is NOT empty: We drag the block above it down, and set the old
		//		one in its place to being empty. This way, we can check that block
		//		space on clock turn later and keep a continuous stream of blocks
		//		falling, instead of having to wait for the first block to swap,
		//		and so on.
		// Block must not be in animation for this to happen. 
		// animation.currentState holds this information for us :)
		
		// The grid can exceed GRID_HEIGHT for various reasons (garbage blocks),
		// so we're checking each row in the grid so that nothing is left up top.
		
		for (Vector<Block> row : gridLayout) {
			if (gridLayout.lastElement() == row) { break; }			// Because if its the very top of the stack there should be noting falling from above :P
			for (Block b : row) {
				if (b.isEmptyBlock()) {
					int aboveY = b.grid_y + 1;
					int thisX = b.grid_x;
					if (!getBlockColour(thisX, aboveY).equals("emptyBlock")) {
						Block blockAbove = gridLayout.get(aboveY).get(thisX);
						if (!blockAbove.associatedGraphic.animation.isPlaying() && blockAbove.isActive()) {
							blockAbove.setFalling(true);
							if (blockAbove.isFalling()) {
								animateSwap(b, blockAbove, "square_drop");
							}
						}
					}
				}
			}
		}
		
	}