Fix with explosions

This commit is contained in:
Renan LE CARO 2025-03-25 08:47:24 +01:00
parent 3a72ae005b
commit 35ea8e952a
4 changed files with 14 additions and 13 deletions

View file

@ -22,7 +22,6 @@ If the app stutters, turn on "fast mode" in the settings to render a simplified
There's also an easy mode for kids (slower ball).
# Todo
- ascetism red coins
- strict sample size red borders ?
- zen : red border on bombs
- add marching ants effect + disable animation toggle

11
dist/index.html vendored
View file

@ -2689,7 +2689,7 @@ function explosionAt(gameState, index, x, y, ball) {
if (gameState.bricks[i] && i !== -1) {
// Study bricks resist explosions too
gameState.brickHP[i]--;
if (gameState.brickHP <= 0) explodeBrick(gameState, i, ball, true);
if (gameState.brickHP[i] <= 0) explodeBrick(gameState, i, ball, true);
}
}
}
@ -3629,10 +3629,11 @@ let cachedBricksRender = document.createElement("canvas");
let cachedBricksRenderKey = "";
function renderAllBricks() {
ctx.globalAlpha = 1;
const redBorderOnBricksWithWrongColor = (0, _game.gameState).combo > (0, _gameStateMutators.baseCombo)((0, _game.gameState)) && (0, _game.gameState).perks.picky_eater && !(0, _options.isOptionOn)("basic");
const redColorOnAllBricks = !!((0, _game.gameState).lastPuckMove && (0, _game.gameState).perks.passive_income && (0, _game.gameState).combo > (0, _gameStateMutators.baseCombo)((0, _game.gameState)) && (0, _game.gameState).lastPuckMove > (0, _game.gameState).levelTime - 250 * (0, _game.gameState).perks.passive_income);
const hasCombo = (0, _game.gameState).combo > (0, _gameStateMutators.baseCombo)((0, _game.gameState));
const redBorderOnBricksWithWrongColor = hasCombo && (0, _game.gameState).perks.picky_eater && !(0, _options.isOptionOn)("basic");
const redColorOnAllBricks = !!((0, _game.gameState).lastPuckMove && (0, _game.gameState).perks.passive_income && hasCombo && (0, _game.gameState).lastPuckMove > (0, _game.gameState).levelTime - 250 * (0, _game.gameState).perks.passive_income);
let offset = getDashOffset((0, _game.gameState));
if (!(redBorderOnBricksWithWrongColor || redColorOnAllBricks || (0, _game.gameState).perks.reach)) offset = 0;
if (!(redBorderOnBricksWithWrongColor || redColorOnAllBricks || (0, _game.gameState).perks.reach || (0, _game.gameState).perks.zen)) offset = 0;
const clairVoyance = (0, _game.gameState).perks.clairvoyant && (0, _game.gameState).brickHP.reduce((a, b)=>a + b, 0);
const newKey = (0, _game.gameState).gameZoneWidth + "_" + (0, _game.gameState).bricks.join("_") + bombSVG.complete + "_" + redBorderOnBricksWithWrongColor + "_" + redColorOnAllBricks + "_" + (0, _game.gameState).ballsColor + "_" + (0, _game.gameState).perks.pierce_color + "_" + clairVoyance + '_' + offset;
if (newKey !== cachedBricksRenderKey) {
@ -3648,7 +3649,7 @@ function renderAllBricks() {
const x = (0, _gameUtils.brickCenterX)((0, _game.gameState), index), y = (0, _gameUtils.brickCenterY)((0, _game.gameState), index);
if (!color) return;
let redBecauseOfReach = (0, _game.gameState).perks.reach && (0, _gameUtils.countBricksAbove)((0, _game.gameState), index) && !(0, _gameUtils.countBricksBelow)((0, _game.gameState), index);
let redBorder = (0, _game.gameState).ballsColor !== color && color !== "black" && redBorderOnBricksWithWrongColor || redBecauseOfReach || redColorOnAllBricks;
let redBorder = (0, _game.gameState).ballsColor !== color && color !== "black" && redBorderOnBricksWithWrongColor || hasCombo && (0, _game.gameState).perks.zen && color === 'black' || redBecauseOfReach || redColorOnAllBricks;
canctx.globalCompositeOperation = "source-over";
drawBrick(canctx, color, x, y, redBorder ? offset : -1);
if ((0, _game.gameState).brickHP[index] > 1 && (0, _game.gameState).perks.clairvoyant) {

View file

@ -284,7 +284,7 @@ export function explosionAt(
if (gameState.bricks[i] && i !== -1) {
// Study bricks resist explosions too
gameState.brickHP[i]--;
if (gameState.brickHP <= 0) {
if (gameState.brickHP[i] <= 0) {
explodeBrick(gameState, i, ball, true);
}
}

View file

@ -406,19 +406,20 @@ let cachedBricksRenderKey = "";
export function renderAllBricks() {
ctx.globalAlpha = 1;
const hasCombo=gameState.combo > baseCombo(gameState)
const redBorderOnBricksWithWrongColor =
gameState.combo > baseCombo(gameState) &&
hasCombo &&
gameState.perks.picky_eater &&
!isOptionOn("basic");
const redColorOnAllBricks = !!(gameState.lastPuckMove &&
gameState.perks.passive_income &&
gameState.combo > baseCombo(gameState) &&
hasCombo &&
gameState.lastPuckMove >
gameState.levelTime - 250 * gameState.perks.passive_income)
let offset = getDashOffset(gameState)
if (!(redBorderOnBricksWithWrongColor || redColorOnAllBricks || gameState.perks.reach)) {
if (!(redBorderOnBricksWithWrongColor || redColorOnAllBricks || gameState.perks.reach || gameState.perks.zen)) {
offset = 0
}
@ -468,7 +469,7 @@ export function renderAllBricks() {
let redBorder =
(gameState.ballsColor !== color &&
color !== "black" &&
redBorderOnBricksWithWrongColor) ||
redBorderOnBricksWithWrongColor) || (hasCombo && gameState.perks.zen && color==='black')||
redBecauseOfReach || redColorOnAllBricks;
canctx.globalCompositeOperation = "source-over";