diff --git a/Readme.md b/Readme.md index e10f3de..954f406 100644 --- a/Readme.md +++ b/Readme.md @@ -13,23 +13,20 @@ Break colourful bricks, catch bouncing coins and select powerful upgrades ! # Changelog ## To do -- instead of bouncing the ball,loosing a life pauses the game (with coins still in the air) +- +1 upgrade per gold medal, but they are all applied to the selected perk + ## Done -- rewoked perks choices to limit perk fatigue, avoid wall of texts, allow users to skip -- removed rerolls -- offer to pick 1 upgrade out of 3 choices -- playing well adds 1 upgrade and 1 choice -- playing even better adds 1 choice -- "more choices" perk adds 1 choice -- you can skip the upgrades and they'll be saved for later as extra lives -- you can pick an upgrade multiple time to level it up + +- when you earn multiple upgrade points, they all need to be put on the same perk +- wait for bricks to respawn before leveling up +- creative mode : removed tooltips for perks as they were getting in the way on mobile +- unlocked upgrades and levels : split item description (with tooltip) and "try" button +- unlocked level: removed progress bars as there's no real progress - bigger "level X of Y cleared" -- continue to level X/Y as button -- lives = upgrade points -- clarify challenges -- removed the "sides bounce" challenge +- clarify challenges but only show them when you pass one of them +- removed the "sides bounce" challenge, bouncing on sides shouldn't be punished - upgrades list now uses numbers instead of bars, looks better with limitless - somehow score clicks didn't register while the game was playing, that's solved - Fix : click tooltip to open on mobile, click anywhere to close @@ -396,6 +393,7 @@ Break colourful bricks, catch bouncing coins and select powerful upgrades ! ## Easy perk ideas +- chill : no perks gain, no level limit,+20 base combo - when the ball teleport, probability that it's duplicated instead - combo resets on teleport - combo resets when hitting puck without a teleport @@ -501,12 +499,6 @@ Break colourful bricks, catch bouncing coins and select powerful upgrades ! ## UX / gameplay - make menu and score button more "button like" when you just installed the game. -- chill game mode, to just relax your mind : - - no 7 levels limit - - no upgrades offered at the end of the level - - get a random perk - - every 7 level it's replaced by another random perk - - every 7 levels, +10 base combo and +1 piece - avoid showing a +1 and -1 at the same time when a combo increase is reset - explain to iOS users how to add the app to home screen to get fullscreen - delayed start on mobile to let users place the puck where they want diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5e6626e..329633b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { applicationId = "me.lecaro.breakout" minSdk = 21 targetSdk = 34 - versionCode = 29100389 - versionName = "29100389" + versionCode = 29103645 + versionName = "29103645" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true diff --git a/app/src/main/assets/index.html b/app/src/main/assets/index.html index d6f57f9..05d99e3 100644 --- a/app/src/main/assets/index.html +++ b/app/src/main/assets/index.html @@ -1 +1 @@ -
+
${u.name} ${upgradeLevelAndMaxDisplay(u, gameState)} - ${u.help(Math.max(1, gameState.perks[u.id]))} + ${u.help(gameState.perks[u.id] || 1)} +
` @@ -4251,7 +4267,7 @@ frames = 1) { } else gameState.winAt = 0; if (// Delayed win when coins are still flying gameState.winAt && gameState.levelTime > gameState.winAt || // instant win condition - gameState.levelTime && !remainingBricks && !liveCount(gameState.coins)) { + gameState.levelTime && !remainingBricks && !hasPendingBricks && !liveCount(gameState.coins)) { if (gameState.startParams.computer_controlled) (0, _game.startComputerControlledGame)(gameState.startParams.stress); else if (gameState.currentLevel + 1 < (0, _gameUtils.max_levels)(gameState)) setLevel(gameState, gameState.currentLevel + 1); else (0, _gameOver.gameOver)((0, _i18N.t)("gameOver.win.title"), (0, _i18N.t)("gameOver.win.summary", { @@ -4634,7 +4650,7 @@ function ballTick(gameState, ball, frames) { if (!(0, _options.isOptionOn)("basic") && (0, _pureFunctions.ballTransparency)(ball, gameState) < Math.random()) { const remainingPierce = ball.piercePoints; const remainingSapper = ball.sapperUses < gameState.perks.sapper; - const willMiss = (0, _options.isOptionOn)("red_miss") && ball.vy > 0 && !ball.hitSinceBounce; + const willMiss = ball.vy > 0 && !ball.hitSinceBounce; const extraCombo = gameState.combo - 1; if (willMiss || extraCombo && Math.random() > 0.1 / (1 + extraCombo) || remainingSapper && Math.random() > 0.1 / (1 + remainingSapper) || extraCombo && Math.random() > 0.1 / (1 + extraCombo)) { const color = remainingSapper && (Math.random() > 0.5 ? "#ffb92a" : "#FF0000") || willMiss && "#FF0000" || gameState.ballsColor; @@ -5767,7 +5783,6 @@ parcelHelpers.export(exports, "closeModal", ()=>closeModal); parcelHelpers.export(exports, "requiredAsyncAlert", ()=>requiredAsyncAlert); parcelHelpers.export(exports, "asyncAlert", ()=>asyncAlert); var _i18N = require("./i18n/i18n"); -var _options = require("./options"); var _tooltip = require("./tooltip"); let alertsOpen = 0, closeModal = null; const popupWrap = document.getElementById("popup"); @@ -5825,34 +5840,7 @@ async function asyncAlert({ title, content = [], allowClose = true, className = addto.className = "actions"; popup.appendChild(addto); } - const buttonWrap = document.createElement("div"); - addto.appendChild(buttonWrap); - const { text, value, help, disabled, className = "", icon = "", tooltip } = entry; - const button = document.createElement("button"); - button.innerHTML = ` -${icon} -
${name}
- ${{
- gold: (0, _i18N.t)("level_up.gold"),
- silver: (0, _i18N.t)("level_up.silver"),
- no: (0, _i18N.t)("level_up.no")
- }[medal]}
+ ${up || choices ? (0, _i18N.t)("level_up.challenges.gain", {
+ up,
+ choices
+ }) : (0, _i18N.t)("level_up.challenges.no_gain")}
+
+
${u.name} ${upgradeLevelAndMaxDisplay(u, gameState)} - ${u.help(Math.max(1, gameState.perks[u.id]))} + ${u.help(gameState.perks[u.id] || 1)} +
${name}
- ${{gold: t("level_up.gold"), silver: t("level_up.silver"), no: t("level_up.no")}[medal]}
+ ${
+ up || choices
+ ? t("level_up.challenges.gain", { up, choices })
+ : t("level_up.challenges.no_gain")
+ }
+