Build 29067292

This commit is contained in:
Renan LE CARO 2025-04-07 16:52:42 +02:00
parent eb846327e5
commit 8eb2e049c8
9 changed files with 35 additions and 17 deletions

View file

@ -37,8 +37,12 @@ Some upgrades currently are not really useful
## Done ## Done
- reduce resolution of lights even more (1/16)
## 29067205
- tooltip isn't readable at bottom of screen - tooltip isn't readable at bottom of screen
- added levels as tributes to game players : Hemiola's red light, Obigre's accordeon - added levels as tributes to game players
- display closest unlock with current perks in score and gameover screens - display closest unlock with current perks in score and gameover screens
- initial perk icon = first level - initial perk icon = first level
- fix starting perk option not working - fix starting perk option not working

View file

@ -29,8 +29,8 @@ android {
applicationId = "me.lecaro.breakout" applicationId = "me.lecaro.breakout"
minSdk = 21 minSdk = 21
targetSdk = 34 targetSdk = 34
versionCode = 29067205 versionCode = 29067292
versionName = "29067205" versionName = "29067292"
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

17
dist/index.html vendored

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
// The version of the cache. // The version of the cache.
const VERSION = "29067205"; const VERSION = "29067292";
// The name of the cache // The name of the cache
const CACHE_NAME = `breakout-71-${VERSION}`; const CACHE_NAME = `breakout-71-${VERSION}`;

View file

@ -1 +1 @@
"29067205" "29067292"

View file

@ -291,5 +291,5 @@ export function getHistograms(gameState: GameState) {
} catch (e) { } catch (e) {
console.warn(e); console.warn(e);
} }
return runStats + unlockedLevels; return unlockedLevels + runStats;
} }

View file

@ -37,7 +37,7 @@ const haloCanvasCtx = haloCanvas.getContext("2d", {
alpha: false, alpha: false,
}) as CanvasRenderingContext2D; }) as CanvasRenderingContext2D;
export const haloScale = 8; export const haloScale = 16;
export function render(gameState: GameState) { export function render(gameState: GameState) {
const level = currentLevelInfo(gameState); const level = currentLevelInfo(gameState);
@ -129,18 +129,19 @@ export function render(gameState: GameState) {
drawFuzzyBall( drawFuzzyBall(
haloCanvasCtx, haloCanvasCtx,
color == "black" ? "#666666" : color, color == "black" ? "#666666" : color,
(gameState.brickWidth * 2 * brightness) / haloScale, // Perf could really go down there because of the size of the halo
Math.min(200, gameState.brickWidth * 1.5 * brightness) / haloScale,
x / haloScale, x / haloScale,
y / haloScale, y / haloScale,
); );
}); });
haloCanvasCtx.globalCompositeOperation = "screen"; haloCanvasCtx.globalCompositeOperation = "screen";
haloCanvasCtx.globalAlpha = 0.3;
forEachLiveOne(gameState.particles, (flash) => { forEachLiveOne(gameState.particles, (flash) => {
const { x, y, time, color, size, duration } = flash; const { x, y, time, color, size, duration } = flash;
const elapsed = gameState.levelTime - time; const elapsed = gameState.levelTime - time;
// haloCanvasCtx.globalAlpha = Math.min(1, 2 - (elapsed / duration) * 2); haloCanvasCtx.globalAlpha =
0.1 * Math.min(1, 2 - (elapsed / duration) * 2);
drawFuzzyBall( drawFuzzyBall(
haloCanvasCtx, haloCanvasCtx,
color, color,
@ -152,7 +153,11 @@ export function render(gameState: GameState) {
ctx.globalAlpha = 1; ctx.globalAlpha = 1;
ctx.globalCompositeOperation = "source-over"; ctx.globalCompositeOperation = "source-over";
ctx.imageSmoothingEnabled = true;
ctx.imageSmoothingQuality = "high";
ctx.drawImage(haloCanvas, 0, 0, width, height); ctx.drawImage(haloCanvas, 0, 0, width, height);
ctx.imageSmoothingEnabled = false;
ctx.globalAlpha = 1; ctx.globalAlpha = 1;
ctx.globalCompositeOperation = "multiply"; ctx.globalCompositeOperation = "multiply";
@ -516,6 +521,7 @@ export function render(gameState: GameState) {
level.svg && level.svg &&
level.color === "#000000" level.color === "#000000"
) { ) {
ctx.imageSmoothingEnabled = true;
// haloCanvasCtx.globalCompositeOperation = 'multiply'; // haloCanvasCtx.globalCompositeOperation = 'multiply';
// haloCanvasCtx.fillRect(0,0,haloCanvas.width,haloCanvas.height) // haloCanvasCtx.fillRect(0,0,haloCanvas.width,haloCanvas.height)
haloCanvasCtx.fillStyle = "#FFFFFF"; haloCanvasCtx.fillStyle = "#FFFFFF";
@ -525,6 +531,8 @@ export function render(gameState: GameState) {
ctx.globalAlpha = 1; ctx.globalAlpha = 1;
ctx.globalCompositeOperation = "overlay"; ctx.globalCompositeOperation = "overlay";
ctx.drawImage(haloCanvas, 0, 0, width, height); ctx.drawImage(haloCanvas, 0, 0, width, height);
ctx.imageSmoothingEnabled = false;
} }
ctx.globalCompositeOperation = "source-over"; ctx.globalCompositeOperation = "source-over";

1
src/types.d.ts vendored
View file

@ -285,6 +285,7 @@ export type GameState = {
export type RunParams = { export type RunParams = {
level?: string; level?: string;
levelToAvoid?: string; levelToAvoid?: string;
perkToAvoid?: PerkId;
perks?: Partial<PerksMap>; perks?: Partial<PerksMap>;
}; };
export type OptionDef = { export type OptionDef = {