Automatic deploy 29010156

This commit is contained in:
Renan LE CARO 2025-02-26 23:36:08 +01:00
parent 1eae36efcb
commit e8071637a3
4 changed files with 16 additions and 14 deletions

View file

@ -7,6 +7,7 @@ Break colourful bricks, catch bouncing coins and select powerful upgrades !
[Google Play](https://play.google.com/store/apps/details?id=me.lecaro.breakout) - [Google Play](https://play.google.com/store/apps/details?id=me.lecaro.breakout) -
[itch.io](https://renanlecaro.itch.io/breakout71) - [itch.io](https://renanlecaro.itch.io/breakout71) -
[GitLab](https://gitlab.com/lecarore/breakout71) - [GitLab](https://gitlab.com/lecarore/breakout71) -
[HackerNews](https://news.ycombinator.com/item?id=43183131) -
[Donate](https://github.com/sponsors/renanlecaro) [Donate](https://github.com/sponsors/renanlecaro)
@ -163,6 +164,7 @@ There are many possible perks left to implement :
The "engine" could be better The "engine" could be better
- on mobile, add an element that feels like it can be "grabbed" and make it shine while writing "Push here to play"
- add pointer lock when game is running (lock to play area )https://mdn.github.io/dom-examples/pointer-lock/ - add pointer lock when game is running (lock to play area )https://mdn.github.io/dom-examples/pointer-lock/
- hide cursor options - hide cursor options
- offline mode with service worker - offline mode with service worker
@ -175,7 +177,7 @@ The "engine" could be better
- escape to close menu - escape to close menu
- see how to do fullscreen on ios, or at least explain to do aA/hide toolbars - see how to do fullscreen on ios, or at least explain to do aA/hide toolbars
- experiment with showing the combo somewhere else, maybe top center, maybe instead of score. - experiment with showing the combo somewhere else, maybe top center, maybe instead of score.
- make coins look,sound and roll like coins. Back to colored when coins stain bricks is active
- limit GC by reusing coins and particles - limit GC by reusing coins and particles
- convert captures to mp4 unsing ffmpeg wasm because reddit refuses webm files - convert captures to mp4 unsing ffmpeg wasm because reddit refuses webm files
- few puck bounces = more choices / upgrades - few puck bounces = more choices / upgrades

View file

@ -11,8 +11,8 @@ android {
applicationId = "me.lecaro.breakout" applicationId = "me.lecaro.breakout"
minSdk = 21 minSdk = 21
targetSdk = 34 targetSdk = 34
versionCode = 29010123 versionCode = 29010156
versionName = "29010123" versionName = "29010156"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables { vectorDrawables {
useSupportLibrary = true useSupportLibrary = true

View file

@ -197,7 +197,7 @@ function getRowColIndex(row, col) {
return row * gridSize + col; return row * gridSize + col;
} }
setInterval(()=>console.log(flashes.length),1000)
function spawnExplosion(count, x, y, color, duration = 150, size = coinSize) { function spawnExplosion(count, x, y, color, duration = 150, size = coinSize) {
if (!!isSettingOn("basic")) return; if (!!isSettingOn("basic")) return;
if(flashes.length>MAX_PARTICLES) { if(flashes.length>MAX_PARTICLES) {
@ -820,7 +820,6 @@ let nextRunOverrides = {level: null, perks: null}
let hadOverrides = false let hadOverrides = false
function restart() { function restart() {
console.log("restart")
hadOverrides = !!(nextRunOverrides.level || nextRunOverrides.perks) hadOverrides = !!(nextRunOverrides.level || nextRunOverrides.perks)
// When restarting, we want to avoid restarting with the same level we're on, so we exclude from the next // When restarting, we want to avoid restarting with the same level we're on, so we exclude from the next
// run's level list // run's level list
@ -1230,7 +1229,7 @@ function ballTick(ball, delta) {
} }
if (perks.respawn) { if (perks.respawn) {
console.log(ball.hitItem,perks.respawn)
ball.hitItem.slice(0, -1).slice(0, perks.respawn) ball.hitItem.slice(0, -1).slice(0, perks.respawn)
.forEach(({index, color}) => bricks[index] = bricks[index] || color) .forEach(({index, color}) => bricks[index] = bricks[index] || color)
} }
@ -1997,7 +1996,7 @@ function drawBall(ctx, color, width, x, y) {
function drawCoin(ctx, color, size, x,y, bg,rawAngle) { function drawCoin(ctx, color, size, x,y, bg,rawAngle) {
if(isNaN(rawAngle)) debugger if(isNaN(rawAngle)) debugger
const angle= Math.round(((rawAngle%(Math.PI*2))+Math.PI*2 )% Math.PI*2 * 16) / 16 const angle= (Math.round(rawAngle/Math.PI*2 * 16 ) % 16 + 16 ) % 16
const key = "coin with halo" + "_" + color + "_" + size + '_' + bg + '_'+angle; const key = "coin with halo" + "_" + color + "_" + size + '_' + bg + '_'+angle;
if (!cachedGraphics[key]) { if (!cachedGraphics[key]) {
@ -2023,12 +2022,12 @@ if(isNaN(rawAngle)) debugger
canctx.translate(size / 2, size / 2); canctx.translate(size / 2, size / 2);
canctx.rotate(angle); canctx.rotate(angle/ 16);
canctx.translate(-size / 2, -size / 2); canctx.translate(-size / 2, -size / 2);
canctx.globalCompositeOperation='multiply' canctx.globalCompositeOperation='multiply'
drawText(canctx, '$', color, size-2,size / 2, size / 2) drawText(canctx, '$', color, size-2,size / 2, size / 2+1)
drawText(canctx, '$', color, size-2,size / 2, size / 2) drawText(canctx, '$', color, size-2,size / 2, size / 2+1)
cachedGraphics[key] = can; cachedGraphics[key] = can;
} }
ctx.drawImage(cachedGraphics[key], Math.round(x - size / 2), Math.round(y - size / 2)); ctx.drawImage(cachedGraphics[key], Math.round(x - size / 2), Math.round(y - size / 2));
@ -2696,6 +2695,7 @@ Click an item above to start a test run with it.
<a href="https://renanlecaro.itch.io/breakout71" target="_blank">itch.io</a> <a href="https://renanlecaro.itch.io/breakout71" target="_blank">itch.io</a>
<a href="https://gitlab.com/lecarore/breakout71" target="_blank">Gitlab</a> <a href="https://gitlab.com/lecarore/breakout71" target="_blank">Gitlab</a>
<a href="https://breakout.lecaro.me/" target="_blank">Web version</a> <a href="https://breakout.lecaro.me/" target="_blank">Web version</a>
<a href="https://news.ycombinator.com/item?id=43183131" target="_blank">HackerNews</a>
<span>v.${window.appVersion}</span> <span>v.${window.appVersion}</span>
</p> </p>
` `

View file

@ -8,17 +8,17 @@
/> />
<meta http-equiv="X-UA-Compatible" content="ie=edge" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Breakout 71</title> <title>Breakout 71</title>
<link rel="stylesheet" href="style.css?v=29010123" /> <link rel="stylesheet" href="style.css?v=29010156" />
<link rel="icon" href="./icon.svg" /> <link rel="icon" href="./icon.svg" />
</head> </head>
<body> <body>
<button id="menu"><span> menu</span></button> <button id="menu"><span> menu</span></button>
<button id="score"></button> <button id="score"></button>
<canvas id="game"></canvas> <canvas id="game"></canvas>
<script>window.appVersion="?v=29010123".slice(3)</script> <script>window.appVersion="?v=29010156".slice(3)</script>
<script src="gif.js"></script> <script src="gif.js"></script>
<script src="levels.js?v=29010123"></script> <script src="levels.js?v=29010156"></script>
<script src="game.js?v=29010123"></script> <script src="game.js?v=29010156"></script>
</body> </body>