This commit is contained in:
Renan LE CARO 2025-04-23 11:16:52 +02:00
parent 0ec9cdf798
commit 1d71af35c9
7 changed files with 357 additions and 469 deletions

View file

@ -14,6 +14,7 @@ Break colourful bricks, catch bouncing coins and select powerful upgrades !
# Changelog
## To do
- wording of combo per brick *broken*
- rename hypnosis
- more icons
- save global stats locally (sum of broken bricks, paddle hits, misses,)

301
dist/index.html vendored

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -12198,7 +12198,7 @@
</translation>
<translation>
<language>fr-FR</language>
<approved>true</approved>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>

View file

@ -241,10 +241,10 @@
"unlocks.title_upgrades": "You unlocked {{unlocked}} upgrades out of {{out_of}}",
"unlocks.upgrades": "Unlocked upgrades",
"upgrades.addiction.name": "Addiction",
"upgrades.addiction.tooltip": "+{{lvl}} combo / brick, combo resets {{delay}}s after breaking a brick. ",
"upgrades.addiction.tooltip": "+{{lvl}} combo / brick broken, combo resets {{delay}}s after breaking a brick. ",
"upgrades.addiction.verbose_description": "The countdown only starts after breaking the first brick of each level. It stops as soon as all bricks are destroyed.",
"upgrades.asceticism.name": "Asceticism",
"upgrades.asceticism.tooltip": "+{{combo}} combo / brick, - {{combo}} on coin catch",
"upgrades.asceticism.tooltip": "+{{combo}} combo / brick broken, - {{combo}} on coin catch",
"upgrades.asceticism.verbose_description": "You'll need to store the coins somewhere while your combo climbs. ",
"upgrades.ball_attract_ball.help_plural": "Stronger attraction force",
"upgrades.ball_attract_ball.name": "Gravity",
@ -314,7 +314,7 @@
"upgrades.ghost_coins.tooltip": "Coins slowly pass through bricks",
"upgrades.ghost_coins.verbose_description": "It's not a bug, it's a feature ! Coins fly through bricks slowly. Higher levels let them move faster. ",
"upgrades.happy_family.name": "Happy family",
"upgrades.happy_family.tooltip": "+1 combo per extra ball for each paddle bounce. Combo resets when a ball is lost. ",
"upgrades.happy_family.tooltip": "+1 combo per extra ball per paddle bounce. Combo resets when a ball is lost. ",
"upgrades.happy_family.verbose_description": "Only the ball above 1 give combo.",
"upgrades.helium.name": "Helium",
"upgrades.helium.tooltip": "Gravity limited left and right of paddle",
@ -339,7 +339,7 @@
"upgrades.metamorphosis.verbose_description": "With this perk, coins will be of the color of the brick they come from, and will color the first brick they touch in the same color. Coins spawn with the speed of the ball that broke them, which means you can aim a bit in the direction of the bricks you want to \"paint\". At level 1, each coin can color 1 bricks before it is \"spent\" and appears hollow. ",
"upgrades.minefield.name": "Minefield",
"upgrades.minefield.tooltip": "+{{lvl}} combo per bomb brick on screen",
"upgrades.minefield.verbose_description": "Adds +lvl to the combo when a brick is place, -lvl when it is destroyed, and raises the base combo by the number of bricks times lvl",
"upgrades.minefield.verbose_description": "Adds +1 to the combo when a bomb brick is place, -1 when it is destroyed, and raises the base combo by the number of bomb bricks",
"upgrades.multiball.name": "Multi ball",
"upgrades.multiball.tooltip": "Start every levels with {{count}} balls.",
"upgrades.multiball.verbose_description": "As soon as you drop the ball in Breakout 71, you lose. \n\nWith this perk, you get two balls, and so you can afford to lose one. \n\nThe lost balls come back on the next level. \n\nHaving more than one balls makes some further perks available, and of course clears the level faster.",
@ -353,7 +353,7 @@
"upgrades.ottawa_treaty.tooltip": "Breaking a brick near a bomb disarms it",
"upgrades.ottawa_treaty.verbose_description": "The nearby bomb will be replaced by a colored block. If you have sapper, the ball will loose its sapper effect until next bounce. Only one bomb can be replaced at a time.",
"upgrades.passive_income.name": "Passive income",
"upgrades.passive_income.tooltip": "+{{lvl}} combo / brick, paddle is immaterial {{time}}s after moving",
"upgrades.passive_income.tooltip": "+{{lvl}} combo / brick broken, paddle is immaterial {{time}}s after moving",
"upgrades.passive_income.verbose_description": "Some perks can help the balls do what you want without needing to do anything.",
"upgrades.picky_eater.name": "Picky eater",
"upgrades.picky_eater.tooltip": "+{{lvl}} combo per brick broken, resets on ball color change",

View file

@ -241,7 +241,7 @@
"unlocks.title_upgrades": "Vous avez débloqué {{unlocked}} améliorations sur {{out_of}}",
"unlocks.upgrades": "",
"upgrades.addiction.name": "Addiction",
"upgrades.addiction.tooltip": "+{{lvl}} combo / brique, combo perdu après {{delay}}s sans casser de briques",
"upgrades.addiction.tooltip": "+{{lvl}} combo / brique cassée, combo perdu après {{delay}}s sans casser de briques",
"upgrades.addiction.verbose_description": "Le décompte ne commence qu'à parti de la destruction de la première brique du niveau, et s'arrête dès qu'il n'y a plus de briques. ",
"upgrades.asceticism.name": "Ascétisme",
"upgrades.asceticism.tooltip": "+{{combo}} combo par brique cassée, - {{combo}} quand une pièce est attrapée",
@ -339,7 +339,7 @@
"upgrades.metamorphosis.verbose_description": "Avec cette amélioration, les pièces seront de la couleur de la brique d'où elles proviennent et coloreront la première brique qu'elles toucheront. Les pièces apparaissent à la vitesse de la balle qui les a cassées, ce qui signifie que vous pouvez viser un peu dans la direction des briques que vous voulez \"peindre\". Au à chaque niveau, chaque pièce peut colorier une brique de plus avant d'être \"épuisée\" et d'apparaître vide.",
"upgrades.minefield.name": "Terrain miné",
"upgrades.minefield.tooltip": "+{{lvl}} combo par brique explosive à l'écran",
"upgrades.minefield.verbose_description": "Ajoute +lvl au combo lorsqu'une brique est placée, -lvl lorsqu'elle est détruite et augmente le combo de base du nombre de briques multiplié par le niveau",
"upgrades.minefield.verbose_description": "Ajoute +1 au combo lorsqu'une brique explosive est placée, -1 lorsqu'elle est détruite et augmente le combo de base du nombre de briques explosives",
"upgrades.multiball.name": "Multi balle",
"upgrades.multiball.tooltip": "Chaque niveau commence avec {{count}} balles.",
"upgrades.multiball.verbose_description": "Dès que vous laissez tomber la balle dans Breakout 71, vous perdez. \n\nAvec cet avantage, vous obtenez deux balles, et vous pouvez donc vous permettre d'en perdre une.\n\nLes balles perdues reviennent au niveau suivant. \n\nLe fait d'avoir plus d'une balle permet d'obtenir d'autres avantages et, bien sûr, de franchir le niveau plus rapidement.",
@ -353,7 +353,7 @@
"upgrades.ottawa_treaty.tooltip": "Casser une brique près d'une bombe la désamorce",
"upgrades.ottawa_treaty.verbose_description": "La bombe à proximité sera remplacée par un bloc coloré. Si vous possédez un sapeur, la balle perdra son effet sapeur jusqu'au prochain rebond. Une seule bombe peut être remplacée à la fois.",
"upgrades.passive_income.name": "Revenu passif",
"upgrades.passive_income.tooltip": "+{{lvl}} combo / brique, la raquette est immatérielle {{time}}s après le déplacement",
"upgrades.passive_income.tooltip": "+{{lvl}} combo / brique cassée, la raquette est immatérielle {{time}}s après le déplacement",
"upgrades.passive_income.verbose_description": "Certaines amélioration font bouger les balles sans avoir besoin de mettre la raquette en mouvement.",
"upgrades.picky_eater.name": "Mangeur par couleur",
"upgrades.picky_eater.tooltip": "+{{lvl}} combo par brique cassée la couleur de la balle, combo perdu sinon",

View file

@ -1,21 +1,17 @@
import { Level, Palette, RawLevel } from "../types";
import _backgrounds from "../data/backgrounds.json";
import _palette from "../data/palette.json";
// import _allLevels from "../data/levels.json";
import { getLevelBackground, hashCode } from "../getLevelBackground";
import { createRoot } from "react-dom/client";
import { useCallback, useEffect, useState } from "react";
import { useEffect, useState } from "react";
import { moveLevel, resizeLevel, setBrick } from "./levels_editor_util";
import {
automaticBackgroundColor,
levelCodeToRawLevel,
} from "../pure_functions";
const backgrounds = _backgrounds as string[];
const palette = _palette as Palette;
// let allLevels = _allLevels ;
let allLevels = null;
function App() {
@ -25,9 +21,15 @@ function App() {
useEffect(() => {
fetch("http://localhost:4400/src/data/levels.json")
.then((r) => r.json())
.then((list) => {
setLevels(list as RawLevel[]);
allLevels = list;
.then((lvls) => {
const cleaned = lvls.map(l=>({name:l.name, size:l.size, bricks:(l.bricks+'_'.repeat(l.size*l.size)).slice(0,l.size*l.size), credit:l.credit||''}))
const sorted = [
...cleaned.filter(l=>l.name.match('icon:')).sort((a,b)=>a.name>b.name ? 1:-1),
...cleaned.filter(l=>!l.name.match('icon:'))
]
setLevels(sorted as RawLevel[])
allLevels = sorted;
});
}, []);