mirror of
https://gitlab.com/lecarore/breakout71.git
synced 2025-04-22 04:56:15 -04:00
Build
This commit is contained in:
parent
a4e24fd397
commit
27a2cd686e
16 changed files with 3396 additions and 3332 deletions
|
@ -1,5 +1,5 @@
|
|||
// The version of the cache.
|
||||
const VERSION = "29053158";
|
||||
const VERSION = "29054664";
|
||||
|
||||
// The name of the cache
|
||||
const CACHE_NAME = `breakout-71-${VERSION}`;
|
||||
|
|
|
@ -82,7 +82,7 @@ export async function asyncAlert<t>({
|
|||
content
|
||||
?.filter((i) => i)
|
||||
.forEach((entry, index) => {
|
||||
if(!entry) return;
|
||||
if (!entry) return;
|
||||
if (typeof entry == "string") {
|
||||
const p = document.createElement("div");
|
||||
p.innerHTML = entry;
|
||||
|
|
|
@ -1 +1 @@
|
|||
"29053158"
|
||||
"29054664"
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
* {
|
||||
font-family: Courier New,
|
||||
Courier,
|
||||
Lucida Sans Typewriter,
|
||||
Lucida Typewriter,
|
||||
monospace;
|
||||
font-family:
|
||||
Courier New,
|
||||
Courier,
|
||||
Lucida Sans Typewriter,
|
||||
Lucida Typewriter,
|
||||
monospace;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
@ -372,4 +373,4 @@ h2.histogram-title strong {
|
|||
// transform-origin: top left;
|
||||
// transform: rotate(-90deg);
|
||||
//
|
||||
//}
|
||||
//}
|
||||
|
|
1675
src/game.ts
1675
src/game.ts
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
import {Ball, GameState, PerkId, PerksMap} from "./types";
|
||||
import {icons, upgrades} from "./loadGameData";
|
||||
import {t} from "./i18n/i18n";
|
||||
import { Ball, GameState, PerkId, PerksMap } from "./types";
|
||||
import { icons, upgrades } from "./loadGameData";
|
||||
import { t } from "./i18n/i18n";
|
||||
|
||||
export function getMajorityValue(arr: string[]): string {
|
||||
const count: { [k: string]: number } = {};
|
||||
|
@ -14,10 +14,8 @@ export function sample<T>(arr: T[]): T {
|
|||
return arr[Math.floor(arr.length * Math.random())];
|
||||
}
|
||||
|
||||
export function sampleN<T>(arr: T[],n:number): T[] {
|
||||
|
||||
return [...arr].sort(()=>Math.random()-0.5)
|
||||
.slice(0,n)
|
||||
export function sampleN<T>(arr: T[], n: number): T[] {
|
||||
return [...arr].sort(() => Math.random() - 0.5).slice(0, n);
|
||||
}
|
||||
|
||||
export function sumOfValues(obj: { [key: string]: number } | undefined | null) {
|
||||
|
@ -55,7 +53,10 @@ export function getRowColIndex(gameState: GameState, row: number, col: number) {
|
|||
|
||||
export function getPossibleUpgrades(gameState: GameState) {
|
||||
return upgrades
|
||||
.filter((u) => gameState.totalScoreAtRunStart >= u.threshold || gameState.loop>0)
|
||||
.filter(
|
||||
(u) =>
|
||||
gameState.totalScoreAtRunStart >= u.threshold || gameState.loop > 0,
|
||||
)
|
||||
.filter((u) => !u?.requires || gameState.perks[u?.requires]);
|
||||
}
|
||||
|
||||
|
@ -186,4 +187,3 @@ export function countBricksBelow(gameState: GameState, index: number) {
|
|||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { GameState, RunParams } from "./types";
|
||||
import { GameState, RunParams } from "./types";
|
||||
import { getTotalScore } from "./settings";
|
||||
import { allLevels, upgrades } from "./loadGameData";
|
||||
import {
|
||||
|
@ -129,5 +129,3 @@ export function newGameState(params: RunParams): GameState {
|
|||
}
|
||||
return gameState;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -115,7 +115,6 @@ export function premiumMenuEntry(gameState: GameState) {
|
|||
text = t("premium.per_hours", args);
|
||||
help = t("premium.per_hours_help", args);
|
||||
}
|
||||
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn(e);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
export function clamp(value: number, min: number, max: number) {
|
||||
return Math.max(min, Math.min(value, max));
|
||||
return Math.max(min, Math.min(value, max));
|
||||
}
|
||||
|
||||
export function comboKeepingRate(level: number) {
|
||||
return clamp(1 - 1 / (1 + level) * 1.5, 0, 1)
|
||||
}
|
||||
return clamp(1 - (1 / (1 + level)) * 1.5, 0, 1);
|
||||
}
|
||||
|
|
1736
src/render.ts
1736
src/render.ts
File diff suppressed because it is too large
Load diff
14
src/types.d.ts
vendored
14
src/types.d.ts
vendored
|
@ -83,7 +83,7 @@ export type Coin = {
|
|||
weight: number;
|
||||
destroyed?: boolean;
|
||||
collidedLastFrame?: boolean;
|
||||
metamorphosisPoints:number;
|
||||
metamorphosisPoints: number;
|
||||
};
|
||||
export type Ball = {
|
||||
x: number;
|
||||
|
@ -238,8 +238,12 @@ export type GameState = {
|
|||
coins: ReusableArray<Coin>;
|
||||
|
||||
// Bricks that should respawn destroyed
|
||||
respawns: ReusableArray<{ index: number; color: string ; time:number;
|
||||
destroyed?: boolean;}>;
|
||||
respawns: ReusableArray<{
|
||||
index: number;
|
||||
color: string;
|
||||
time: number;
|
||||
destroyed?: boolean;
|
||||
}>;
|
||||
|
||||
levelStartScore: number;
|
||||
levelMisses: number;
|
||||
|
@ -280,14 +284,14 @@ export type GameState = {
|
|||
rerolls: number;
|
||||
loop: number;
|
||||
baseCombo: number;
|
||||
levelsPerLoop:number;
|
||||
levelsPerLoop: number;
|
||||
};
|
||||
|
||||
export type RunParams = {
|
||||
level?: string;
|
||||
levelToAvoid?: string;
|
||||
perks?: Partial<PerksMap>;
|
||||
levelsPerLoop?:number;
|
||||
levelsPerLoop?: number;
|
||||
};
|
||||
export type OptionDef = {
|
||||
default: boolean;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { t } from "./i18n/i18n";
|
||||
|
||||
import {comboKeepingRate} from "./pure_functions";
|
||||
import { comboKeepingRate } from "./pure_functions";
|
||||
|
||||
export const rawUpgrades = [
|
||||
{
|
||||
|
@ -49,7 +49,7 @@ export const rawUpgrades = [
|
|||
id: "slow_down",
|
||||
max: 2,
|
||||
name: t("upgrades.slow_down.name"),
|
||||
help: (lvl:number) => t("upgrades.slow_down.help",{ lvl }),
|
||||
help: (lvl: number) => t("upgrades.slow_down.help", { lvl }),
|
||||
fullHelp: t("upgrades.slow_down.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -84,7 +84,7 @@ export const rawUpgrades = [
|
|||
max: 1,
|
||||
|
||||
name: t("upgrades.left_is_lava.name"),
|
||||
help: (lvl:number) => t("upgrades.left_is_lava.help",{ lvl }),
|
||||
help: (lvl: number) => t("upgrades.left_is_lava.help", { lvl }),
|
||||
fullHelp: t("upgrades.left_is_lava.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -95,7 +95,7 @@ export const rawUpgrades = [
|
|||
giftable: true,
|
||||
max: 1,
|
||||
name: t("upgrades.right_is_lava.name"),
|
||||
help: (lvl:number) => t("upgrades.right_is_lava.help",{ lvl }),
|
||||
help: (lvl: number) => t("upgrades.right_is_lava.help", { lvl }),
|
||||
fullHelp: t("upgrades.right_is_lava.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -106,7 +106,7 @@ export const rawUpgrades = [
|
|||
giftable: true,
|
||||
max: 1,
|
||||
name: t("upgrades.top_is_lava.name"),
|
||||
help: (lvl:number) => t("upgrades.top_is_lava.help",{ lvl }),
|
||||
help: (lvl: number) => t("upgrades.top_is_lava.help", { lvl }),
|
||||
fullHelp: t("upgrades.top_is_lava.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -195,7 +195,7 @@ export const rawUpgrades = [
|
|||
giftable: true,
|
||||
max: 1,
|
||||
name: t("upgrades.picky_eater.name"),
|
||||
help: (lvl: number) => t("upgrades.picky_eater.help",{lvl}),
|
||||
help: (lvl: number) => t("upgrades.picky_eater.help", { lvl }),
|
||||
fullHelp: t("upgrades.picky_eater.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -206,7 +206,7 @@ export const rawUpgrades = [
|
|||
id: "metamorphosis",
|
||||
max: 1,
|
||||
name: t("upgrades.metamorphosis.name"),
|
||||
help: (lvl: number) => t("upgrades.metamorphosis.help",{lvl}),
|
||||
help: (lvl: number) => t("upgrades.metamorphosis.help", { lvl }),
|
||||
fullHelp: t("upgrades.metamorphosis.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -217,7 +217,7 @@ export const rawUpgrades = [
|
|||
giftable: true,
|
||||
max: 1,
|
||||
name: t("upgrades.compound_interest.name"),
|
||||
help: (lvl: number) => t("upgrades.compound_interest.help",{lvl}),
|
||||
help: (lvl: number) => t("upgrades.compound_interest.help", { lvl }),
|
||||
fullHelp: t("upgrades.compound_interest.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -289,7 +289,10 @@ export const rawUpgrades = [
|
|||
id: "soft_reset",
|
||||
max: 3,
|
||||
name: t("upgrades.soft_reset.name"),
|
||||
help: (lvl: number) => t("upgrades.soft_reset.help", { percent: Math.round(comboKeepingRate(lvl) * 100)}),
|
||||
help: (lvl: number) =>
|
||||
t("upgrades.soft_reset.help", {
|
||||
percent: Math.round(comboKeepingRate(lvl) * 100),
|
||||
}),
|
||||
fullHelp: t("upgrades.soft_reset.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -354,9 +357,9 @@ export const rawUpgrades = [
|
|||
name: t("upgrades.sturdy_bricks.name"),
|
||||
help: (lvl: number) =>
|
||||
// lvl == 1
|
||||
t("upgrades.sturdy_bricks.help",{lvl, percent:lvl*10}),
|
||||
// ?
|
||||
// : t("upgrades.sturdy_bricks.help_plural"),
|
||||
t("upgrades.sturdy_bricks.help", { lvl, percent: lvl * 10 }),
|
||||
// ?
|
||||
// : t("upgrades.sturdy_bricks.help_plural"),
|
||||
fullHelp: t("upgrades.sturdy_bricks.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -368,7 +371,10 @@ export const rawUpgrades = [
|
|||
max: 4,
|
||||
name: t("upgrades.respawn.name"),
|
||||
help: (lvl: number) =>
|
||||
t("upgrades.respawn.help",{percent:Math.floor(100*comboKeepingRate(lvl)),delay:(3/lvl).toFixed(2)}),
|
||||
t("upgrades.respawn.help", {
|
||||
percent: Math.floor(100 * comboKeepingRate(lvl)),
|
||||
delay: (3 / lvl).toFixed(2),
|
||||
}),
|
||||
fullHelp: t("upgrades.respawn.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -378,7 +384,7 @@ export const rawUpgrades = [
|
|||
id: "one_more_choice",
|
||||
max: 3,
|
||||
name: t("upgrades.one_more_choice.name"),
|
||||
help: (lvl: number) => t("upgrades.one_more_choice.help", {lvl}),
|
||||
help: (lvl: number) => t("upgrades.one_more_choice.help", { lvl }),
|
||||
fullHelp: t("upgrades.one_more_choice.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -390,7 +396,7 @@ export const rawUpgrades = [
|
|||
max: 2,
|
||||
adventure: false,
|
||||
name: t("upgrades.instant_upgrade.name"),
|
||||
help: (lvl: number) => t("upgrades.instant_upgrade.help",{lvl}),
|
||||
help: (lvl: number) => t("upgrades.instant_upgrade.help", { lvl }),
|
||||
fullHelp: t("upgrades.instant_upgrade.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -422,7 +428,7 @@ export const rawUpgrades = [
|
|||
id: "asceticism",
|
||||
max: 1,
|
||||
name: t("upgrades.asceticism.name"),
|
||||
help: (lvl: number) => t("upgrades.asceticism.help",{combo:lvl*3}),
|
||||
help: (lvl: number) => t("upgrades.asceticism.help", { combo: lvl * 3 }),
|
||||
fullHelp: t("upgrades.asceticism.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -433,9 +439,10 @@ export const rawUpgrades = [
|
|||
id: "unbounded",
|
||||
max: 1,
|
||||
name: t("upgrades.unbounded.name"),
|
||||
help: (lvl: number) => lvl > 1 ?
|
||||
t("upgrades.unbounded.help_no_ceiling",{lvl}):
|
||||
t("upgrades.unbounded.help",{lvl}),
|
||||
help: (lvl: number) =>
|
||||
lvl > 1
|
||||
? t("upgrades.unbounded.help_no_ceiling", { lvl })
|
||||
: t("upgrades.unbounded.help", { lvl }),
|
||||
fullHelp: t("upgrades.unbounded.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -446,7 +453,10 @@ export const rawUpgrades = [
|
|||
id: "shunt",
|
||||
max: 3,
|
||||
name: t("upgrades.shunt.name"),
|
||||
help: (lvl: number) => t("upgrades.shunt.help", { percent: Math.round(comboKeepingRate(lvl) * 100) }),
|
||||
help: (lvl: number) =>
|
||||
t("upgrades.shunt.help", {
|
||||
percent: Math.round(comboKeepingRate(lvl) * 100),
|
||||
}),
|
||||
fullHelp: t("upgrades.shunt.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -499,7 +509,7 @@ export const rawUpgrades = [
|
|||
id: "zen",
|
||||
max: 1,
|
||||
name: t("upgrades.zen.name"),
|
||||
help: (lvl: number) => t("upgrades.zen.help",{lvl}),
|
||||
help: (lvl: number) => t("upgrades.zen.help", { lvl }),
|
||||
fullHelp: t("upgrades.zen.fullHelp"),
|
||||
},
|
||||
{
|
||||
|
@ -510,9 +520,9 @@ export const rawUpgrades = [
|
|||
max: 1,
|
||||
name: t("upgrades.sacrifice.name"),
|
||||
help: (lvl: number) =>
|
||||
lvl==1 ?
|
||||
t("upgrades.sacrifice.help_l1"):
|
||||
t("upgrades.sacrifice.help_over",{lvl}),
|
||||
lvl == 1
|
||||
? t("upgrades.sacrifice.help_l1")
|
||||
: t("upgrades.sacrifice.help_over", { lvl }),
|
||||
fullHelp: t("upgrades.sacrifice.fullHelp"),
|
||||
},
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue