mirror of
https://gitlab.com/lecarore/breakout71.git
synced 2025-04-20 12:15:06 -04:00
Build 29060255
This commit is contained in:
parent
5ce309d59f
commit
b7dacaba0a
11 changed files with 143 additions and 184 deletions
|
@ -17,11 +17,11 @@ Break colourful bricks, catch bouncing coins and select powerful upgrades !
|
||||||
|
|
||||||
## Todo
|
## Todo
|
||||||
|
|
||||||
- build an apk every time
|
|
||||||
- ./gradlew tasks
|
|
||||||
|
|
||||||
## Next release
|
## Next release
|
||||||
|
|
||||||
|
- publish an apk to itch.io with every build
|
||||||
|
- Strict sample size : count hits, not destroyed bricks
|
||||||
|
- passive_income : lastPuckMove was not cleared between levels
|
||||||
- simple game data migration system
|
- simple game data migration system
|
||||||
- high score issues
|
- high score issues
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,8 @@ android {
|
||||||
applicationId = "me.lecaro.breakout"
|
applicationId = "me.lecaro.breakout"
|
||||||
minSdk = 21
|
minSdk = 21
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 29060245
|
versionCode = 29060255
|
||||||
versionName = "29060245"
|
versionName = "29060255"
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables {
|
vectorDrawables {
|
||||||
useSupportLibrary = true
|
useSupportLibrary = true
|
||||||
|
|
File diff suppressed because one or more lines are too long
252
dist/index.html
vendored
252
dist/index.html
vendored
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
||||||
// The version of the cache.
|
// The version of the cache.
|
||||||
const VERSION = "29060245";
|
const VERSION = "29060255";
|
||||||
|
|
||||||
// The name of the cache
|
// The name of the cache
|
||||||
const CACHE_NAME = `breakout-71-${VERSION}`;
|
const CACHE_NAME = `breakout-71-${VERSION}`;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
"29060245"
|
"29060255"
|
||||||
|
|
|
@ -22,6 +22,7 @@ import {
|
||||||
getMajorityValue,
|
getMajorityValue,
|
||||||
getPossibleUpgrades,
|
getPossibleUpgrades,
|
||||||
getRowColIndex,
|
getRowColIndex,
|
||||||
|
isMovingWhilePassiveIncome,
|
||||||
isPickyEatingPossible,
|
isPickyEatingPossible,
|
||||||
isTelekinesisActive,
|
isTelekinesisActive,
|
||||||
isYoyoActive,
|
isYoyoActive,
|
||||||
|
@ -451,18 +452,13 @@ export function explodeBrick(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (isMovingWhilePassiveIncome(gameState)) {
|
||||||
gameState.lastPuckMove &&
|
|
||||||
gameState.perks.passive_income &&
|
|
||||||
gameState.lastPuckMove >
|
|
||||||
gameState.levelTime - 250 * gameState.perks.passive_income
|
|
||||||
) {
|
|
||||||
resetCombo(gameState, x, y);
|
resetCombo(gameState, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
gameState.perks.nbricks &&
|
gameState.perks.nbricks &&
|
||||||
ball.brokenSinceBounce > gameState.perks.nbricks
|
ball.hitSinceBounce > gameState.perks.nbricks
|
||||||
) {
|
) {
|
||||||
// We need to reset at each hit, otherwise it's just an OP version of single puck hit streak
|
// We need to reset at each hit, otherwise it's just an OP version of single puck hit streak
|
||||||
resetCombo(gameState, ball.x, ball.y);
|
resetCombo(gameState, ball.x, ball.y);
|
||||||
|
@ -685,6 +681,7 @@ export async function setLevel(gameState: GameState, l: number) {
|
||||||
gameState.levelTime = 0;
|
gameState.levelTime = 0;
|
||||||
gameState.winAt = 0;
|
gameState.winAt = 0;
|
||||||
gameState.levelWallBounces = 0;
|
gameState.levelWallBounces = 0;
|
||||||
|
gameState.lastPuckMove = 0;
|
||||||
gameState.autoCleanUses = 0;
|
gameState.autoCleanUses = 0;
|
||||||
gameState.lastTickDown = gameState.levelTime;
|
gameState.lastTickDown = gameState.levelTime;
|
||||||
gameState.levelStartScore = gameState.score;
|
gameState.levelStartScore = gameState.score;
|
||||||
|
@ -1544,7 +1541,7 @@ export function ballTick(gameState: GameState, ball: Ball, delta: number) {
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
gameState.perks.nbricks &&
|
gameState.perks.nbricks &&
|
||||||
ball.brokenSinceBounce < gameState.perks.nbricks
|
ball.hitSinceBounce < gameState.perks.nbricks
|
||||||
) {
|
) {
|
||||||
resetCombo(gameState, ball.x, ball.y);
|
resetCombo(gameState, ball.x, ball.y);
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,28 +234,15 @@ export function shouldPierceByColor(
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// export function countBricksAbove(gameState: GameState, index: number) {
|
export function isMovingWhilePassiveIncome(gameState: GameState) {
|
||||||
// const col = index % gameState.gridSize;
|
return !!(
|
||||||
// const row = Math.floor(index / gameState.gridSize);
|
gameState.lastPuckMove &&
|
||||||
// let count = 0;
|
gameState.perks.passive_income &&
|
||||||
// for (let y = 0; y < row; y++) {
|
gameState.lastPuckMove >
|
||||||
// if (gameState.bricks[col + y * gameState.gridSize]) {
|
gameState.levelTime - 250 * gameState.perks.passive_income
|
||||||
// count++;
|
);
|
||||||
// }
|
}
|
||||||
// }
|
|
||||||
// return count;
|
|
||||||
// }
|
|
||||||
// export function countBricksBelow(gameState: GameState, index: number) {
|
|
||||||
// const col = index % gameState.gridSize;
|
|
||||||
// const row = Math.floor(index / gameState.gridSize);
|
|
||||||
// let count = 0;
|
|
||||||
// for (let y = row + 1; y < gameState.gridSize; y++) {
|
|
||||||
// if (gameState.bricks[col + y * gameState.gridSize]) {
|
|
||||||
// count++;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return count;
|
|
||||||
// }
|
|
||||||
export function highScoreForMode(mode: GameState["mode"]) {
|
export function highScoreForMode(mode: GameState["mode"]) {
|
||||||
try {
|
try {
|
||||||
const score = parseInt(
|
const score = parseInt(
|
||||||
|
|
|
@ -219,7 +219,7 @@
|
||||||
"upgrades.multiball.help": "Start every levels with {{count}} balls.",
|
"upgrades.multiball.help": "Start every levels with {{count}} balls.",
|
||||||
"upgrades.multiball.name": "+1 ball",
|
"upgrades.multiball.name": "+1 ball",
|
||||||
"upgrades.nbricks.fullHelp": "You don't necessarily need to destroy those bricks, but you need to hit them. Bricks destroyed by explosions don't count",
|
"upgrades.nbricks.fullHelp": "You don't necessarily need to destroy those bricks, but you need to hit them. Bricks destroyed by explosions don't count",
|
||||||
"upgrades.nbricks.help": "Destroy exactly {{lvl}} bricks per puck bounce for +{{lvl}} combo, otherwise it resets",
|
"upgrades.nbricks.help": "Hit exactly {{lvl}} bricks per puck bounce for +{{lvl}} combo, otherwise it resets",
|
||||||
"upgrades.nbricks.name": "Strict sample size",
|
"upgrades.nbricks.name": "Strict sample size",
|
||||||
"upgrades.one_more_choice.fullHelp": "Every upgrade menu will have one more option. Doesn't increase the number of upgrades you can pick.",
|
"upgrades.one_more_choice.fullHelp": "Every upgrade menu will have one more option. Doesn't increase the number of upgrades you can pick.",
|
||||||
"upgrades.one_more_choice.help": "Further level ups will offer {{lvl}} more option(s) in the list",
|
"upgrades.one_more_choice.help": "Further level ups will offer {{lvl}} more option(s) in the list",
|
||||||
|
|
|
@ -219,7 +219,7 @@
|
||||||
"upgrades.multiball.help": "Chaque niveau commence avec {{count}} balles.",
|
"upgrades.multiball.help": "Chaque niveau commence avec {{count}} balles.",
|
||||||
"upgrades.multiball.name": "+1 balle",
|
"upgrades.multiball.name": "+1 balle",
|
||||||
"upgrades.nbricks.fullHelp": "Si votre balle rebondis sans casser une brique, ça compte quand même comme une frappe. Les briques détruites par des explosions ne comptent pas.",
|
"upgrades.nbricks.fullHelp": "Si votre balle rebondis sans casser une brique, ça compte quand même comme une frappe. Les briques détruites par des explosions ne comptent pas.",
|
||||||
"upgrades.nbricks.help": "Détruisez exactement {{lvl}} briques par rebond pour +{{lvl}} combo, sinon RAZ",
|
"upgrades.nbricks.help": "Frappez exactement {{lvl}} briques par rebond pour +{{lvl}} combo, sinon RAZ",
|
||||||
"upgrades.nbricks.name": "Prélèvement",
|
"upgrades.nbricks.name": "Prélèvement",
|
||||||
"upgrades.one_more_choice.fullHelp": "Chaque menu d'amélioration comportera une option supplémentaire. Cela n'augmente pas le nombre d'améliorations que vous pouvez choisir, mais vous aide à créer le profile idéal. ",
|
"upgrades.one_more_choice.fullHelp": "Chaque menu d'amélioration comportera une option supplémentaire. Cela n'augmente pas le nombre d'améliorations que vous pouvez choisir, mais vous aide à créer le profile idéal. ",
|
||||||
"upgrades.one_more_choice.help": "Les niveaux suivants offriront {{lvl}} option(s) supplémentaire(s) dans la liste d'améliorations.",
|
"upgrades.one_more_choice.help": "Les niveaux suivants offriront {{lvl}} option(s) supplémentaire(s) dans la liste d'améliorations.",
|
||||||
|
|
|
@ -5,6 +5,7 @@ import {
|
||||||
// countBricksAbove,
|
// countBricksAbove,
|
||||||
// countBricksBelow,
|
// countBricksBelow,
|
||||||
currentLevelInfo,
|
currentLevelInfo,
|
||||||
|
isMovingWhilePassiveIncome,
|
||||||
isPickyEatingPossible,
|
isPickyEatingPossible,
|
||||||
isTelekinesisActive,
|
isTelekinesisActive,
|
||||||
isYoyoActive,
|
isYoyoActive,
|
||||||
|
@ -542,13 +543,7 @@ export function renderAllBricks() {
|
||||||
const redBorderOnBricksWithWrongColor =
|
const redBorderOnBricksWithWrongColor =
|
||||||
hasCombo && gameState.perks.picky_eater && isPickyEatingPossible(gameState);
|
hasCombo && gameState.perks.picky_eater && isPickyEatingPossible(gameState);
|
||||||
|
|
||||||
const redColorOnAllBricks = !!(
|
const redColorOnAllBricks = hasCombo && isMovingWhilePassiveIncome(gameState);
|
||||||
gameState.lastPuckMove &&
|
|
||||||
gameState.perks.passive_income &&
|
|
||||||
hasCombo &&
|
|
||||||
gameState.lastPuckMove >
|
|
||||||
gameState.levelTime - 250 * gameState.perks.passive_income
|
|
||||||
);
|
|
||||||
|
|
||||||
const redRowReach = reachRedRowIndex(gameState);
|
const redRowReach = reachRedRowIndex(gameState);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue