mirror of
https://gitlab.com/lecarore/breakout71.git
synced 2025-04-21 12:36:15 -04:00
wip
This commit is contained in:
parent
1ba55bf2a6
commit
4d7d57f17f
15 changed files with 165 additions and 120 deletions
|
@ -24,10 +24,10 @@ Other translation are very welcome, contact me if you'd like to submit one.
|
|||
## To do
|
||||
|
||||
- in apk, video download doesnt work
|
||||
-
|
||||
|
||||
## Done
|
||||
|
||||
- ask for permanent storage
|
||||
- option: reuse past frame's light in new frame lighting computation when there are 150+ coins on screen, to limit the performance impact of rendering lots of lights
|
||||
|
||||
## 29084606
|
||||
|
@ -423,7 +423,6 @@ Other translation are very welcome, contact me if you'd like to submit one.
|
|||
## Game engine features ideas
|
||||
- add a clickable button to allow sound to play in chrome android
|
||||
- save state in localstorage for easy resume of a game in progress
|
||||
- ask for permanent storage
|
||||
- handle back bouton in menu
|
||||
- Offline mode web for iphone
|
||||
- controller support on web/mobile
|
||||
|
|
120
dist/index.html
vendored
120
dist/index.html
vendored
File diff suppressed because one or more lines are too long
|
@ -109,7 +109,7 @@ body:not(.has-alert-open) #popup {
|
|||
|
||||
#popup {
|
||||
&::before {
|
||||
z-index: 10;
|
||||
z-index: 4;
|
||||
content: "";
|
||||
display: block;
|
||||
position: fixed;
|
||||
|
@ -121,7 +121,7 @@ body:not(.has-alert-open) #popup {
|
|||
overflow: auto;
|
||||
|
||||
& > div {
|
||||
z-index: 11;
|
||||
z-index: 5;
|
||||
position: relative;
|
||||
margin: auto;
|
||||
padding: 20px 10px;
|
||||
|
@ -224,7 +224,7 @@ body:not(.has-alert-open) #popup {
|
|||
border: none;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
z-index: 12;
|
||||
z-index: 6;
|
||||
|
||||
&:before {
|
||||
content: "+";
|
||||
|
@ -269,45 +269,6 @@ body:not(.has-alert-open) #popup {
|
|||
}
|
||||
}
|
||||
|
||||
/*Unlocks progress bar*/
|
||||
.progress {
|
||||
display: block;
|
||||
padding: 5px 10px;
|
||||
background: #1c1c2f;
|
||||
color: #fff;
|
||||
box-shadow: inset 3px 3px 5px rgba(0, 0, 0, 0.5);
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
& > .progress_bar_part {
|
||||
display: block;
|
||||
background: #4049ca;
|
||||
box-shadow: inset 3px 3px 5px rgba(0, 0, 0, 0.5);
|
||||
left: 0;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
transform-origin: top left;
|
||||
animation: grow 1s both ease-out;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
& > span {
|
||||
display: block;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
@keyframes grow {
|
||||
0% {
|
||||
transform: scale(0, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#level-recording-container {
|
||||
max-width: 400px;
|
||||
text-align: center;
|
||||
|
@ -462,7 +423,7 @@ h2.histogram-title strong {
|
|||
background: black;
|
||||
color: white;
|
||||
padding: 10px;
|
||||
z-index: 11;
|
||||
z-index: 5;
|
||||
|
||||
border-radius: 2px;
|
||||
pointer-events: none;
|
||||
|
@ -539,6 +500,7 @@ h2.histogram-title strong {
|
|||
transition:
|
||||
opacity 200ms,
|
||||
transform 200ms;
|
||||
z-index: 7;
|
||||
&.hidden {
|
||||
opacity: 0;
|
||||
transform: translate(-20px, -20px) scale(0.5);
|
||||
|
|
|
@ -74,7 +74,6 @@ import {
|
|||
requiredAsyncAlert,
|
||||
} from "./asyncAlert";
|
||||
import { isOptionOn, options, toggleOption } from "./options";
|
||||
import { hashCode } from "./getLevelBackground";
|
||||
import {
|
||||
catchRateBest,
|
||||
catchRateGood,
|
||||
|
@ -701,7 +700,7 @@ async function openSettingsMenu() {
|
|||
"precise_lighting",
|
||||
"probabilistic_lighting",
|
||||
].includes(key)) ||
|
||||
(isInWebView && key == "record") ||
|
||||
// (isInWebView && key == "record") ||
|
||||
false,
|
||||
value: () => {
|
||||
toggleOption(key);
|
||||
|
|
|
@ -9,7 +9,7 @@ import {
|
|||
pickedUpgradesHTMl,
|
||||
reasonLevelIsLocked,
|
||||
} from "./game_utils";
|
||||
import { getSettingValue, getTotalScore, setSettingValue } from "./settings";
|
||||
import {askForPersistentStorage, getSettingValue, getTotalScore, setSettingValue} from "./settings";
|
||||
import { stopRecording } from "./recording";
|
||||
import { asyncAlert } from "./asyncAlert";
|
||||
import { rawUpgrades } from "./upgrades";
|
||||
|
@ -30,6 +30,7 @@ export function gameOver(title: string, intro: string) {
|
|||
|
||||
gameState.isGameOver = true;
|
||||
pause(true);
|
||||
askForPersistentStorage()
|
||||
stopRecording();
|
||||
addToTotalPlayTime(gameState.runStatistics.runTime);
|
||||
|
||||
|
|
|
@ -218,6 +218,8 @@
|
|||
"settings.smooth_lighting_help": "",
|
||||
"settings.sounds": "أصوات اللعبة",
|
||||
"settings.sounds_help": "أصوات صفير وبلبل و برررر",
|
||||
"settings.storage_granted": "",
|
||||
"settings.storage_refused": "",
|
||||
"settings.stress_test": "",
|
||||
"settings.stress_test_help": "",
|
||||
"starting_perks.checked": "عند بدء لعبة جديدة، ستُمنح إحدى هذه المزايا. انقر على أي ميزة لاستبعادها.",
|
||||
|
|
|
@ -7767,6 +7767,76 @@
|
|||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>storage_granted</name>
|
||||
<description/>
|
||||
<comment/>
|
||||
<translations>
|
||||
<translation>
|
||||
<language>ar-LB</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>de-DE</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>en-US</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>es-CL</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>fr-FR</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>ru-RU</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>tr-TR</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>storage_refused</name>
|
||||
<description/>
|
||||
<comment/>
|
||||
<translations>
|
||||
<translation>
|
||||
<language>ar-LB</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>de-DE</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>en-US</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>es-CL</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>fr-FR</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>ru-RU</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>tr-TR</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>stress_test</name>
|
||||
<description/>
|
||||
|
|
|
@ -218,6 +218,8 @@
|
|||
"settings.smooth_lighting_help": "",
|
||||
"settings.sounds": "Spiel-Sounds",
|
||||
"settings.sounds_help": "Piepsen, Bloops und Brrrr",
|
||||
"settings.storage_granted": "",
|
||||
"settings.storage_refused": "",
|
||||
"settings.stress_test": "",
|
||||
"settings.stress_test_help": "",
|
||||
"starting_perks.checked": "Wenn Sie ein neues Spiel beginnen, wird Ihnen eine dieser Vergünstigungen angeboten. Klicken Sie auf eine Vergünstigung, um sie auszuschließen.",
|
||||
|
|
|
@ -218,6 +218,8 @@
|
|||
"settings.smooth_lighting_help": "Blur the background light effects to make them look less square. Increases lag.",
|
||||
"settings.sounds": "Game sounds",
|
||||
"settings.sounds_help": "Beeps, bloops and brrrr",
|
||||
"settings.storage_granted": "Your high scores should now be saved permanently",
|
||||
"settings.storage_refused": "Storage access refused, your high scores and unlocks might get lost",
|
||||
"settings.stress_test": "Stress test",
|
||||
"settings.stress_test_help": "Start a bot controlled game with a very high number of coins, to test the performance limits of your device.",
|
||||
"starting_perks.checked": "When you start a new game, one of those perks will be given to you. Click a perk to exclude it. ",
|
||||
|
|
|
@ -218,6 +218,8 @@
|
|||
"settings.smooth_lighting_help": "",
|
||||
"settings.sounds": "Sonidos del juego",
|
||||
"settings.sounds_help": "Pitidos, bloops y brrrr",
|
||||
"settings.storage_granted": "",
|
||||
"settings.storage_refused": "",
|
||||
"settings.stress_test": "",
|
||||
"settings.stress_test_help": "",
|
||||
"starting_perks.checked": "Al empezar una partida nueva, recibirás una de esas ventajas. Haz clic en una ventaja para excluirla.",
|
||||
|
|
|
@ -218,6 +218,8 @@
|
|||
"settings.smooth_lighting_help": "",
|
||||
"settings.sounds": "Sons du jeu",
|
||||
"settings.sounds_help": "Bips, bloops et brrrr",
|
||||
"settings.storage_granted": "",
|
||||
"settings.storage_refused": "",
|
||||
"settings.stress_test": "",
|
||||
"settings.stress_test_help": "",
|
||||
"starting_perks.checked": "Lorsque vous démarrez une nouvelle partie, l'un de ces avantages vous sera attribué. Cliquez sur un avantage pour l'exclure.",
|
||||
|
|
|
@ -218,6 +218,8 @@
|
|||
"settings.smooth_lighting_help": "",
|
||||
"settings.sounds": "Звуки игры",
|
||||
"settings.sounds_help": "Бипы, блепы и брррр",
|
||||
"settings.storage_granted": "",
|
||||
"settings.storage_refused": "",
|
||||
"settings.stress_test": "",
|
||||
"settings.stress_test_help": "",
|
||||
"starting_perks.checked": "Когда вы начнете новую игру, вам будет дано одно из этих преимуществ. Щелкните по перку, чтобы исключить его.",
|
||||
|
|
|
@ -218,6 +218,8 @@
|
|||
"settings.smooth_lighting_help": "",
|
||||
"settings.sounds": "Oyun sesleri",
|
||||
"settings.sounds_help": "Bipler, blooplar ve brrrr",
|
||||
"settings.storage_granted": "",
|
||||
"settings.storage_refused": "",
|
||||
"settings.stress_test": "",
|
||||
"settings.stress_test_help": "",
|
||||
"starting_perks.checked": "Yeni bir oyuna başladığınızda, bu avantajlardan biri size verilecektir. Bir avantajı hariç tutmak için tıklayın.",
|
||||
|
|
|
@ -12,7 +12,7 @@ let mediaRecorder: MediaRecorder | null,
|
|||
recordCanvasCtx: CanvasRenderingContext2D;
|
||||
|
||||
export function recordOneFrame(gameState: GameState) {
|
||||
if (!isOptionOn("record") || isInWebView) {
|
||||
if (!isOptionOn("record") ) {
|
||||
return;
|
||||
}
|
||||
// if (!gameState.running) return;
|
||||
|
@ -59,7 +59,7 @@ export function drawMainCanvasOnSmallCanvas(gameState: GameState) {
|
|||
}
|
||||
|
||||
export function startRecordingGame(gameState: GameState) {
|
||||
if (!isOptionOn("record") || isInWebView) {
|
||||
if (!isOptionOn("record") ) {
|
||||
return;
|
||||
}
|
||||
if (mediaRecorder) return;
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
// Settings
|
||||
|
||||
import {toast} from "./toast";
|
||||
import {t} from "./i18n/i18n";
|
||||
|
||||
let cachedSettings: { [key: string]: unknown } = {};
|
||||
|
||||
try {
|
||||
|
@ -24,6 +27,7 @@ export function setSettingValue<T>(key: string, value: T) {
|
|||
needsSaving.add(key);
|
||||
cachedSettings[key] = value;
|
||||
}
|
||||
|
||||
export function commitSettingsChangesToLocalStorage() {
|
||||
try {
|
||||
for (let key of needsSaving) {
|
||||
|
@ -49,3 +53,19 @@ export function getCurrentMaxParticles() {
|
|||
export function cycleMaxCoins() {
|
||||
setSettingValue("max_coins", (getSettingValue("max_coins", 2) + 1) % 7);
|
||||
}
|
||||
|
||||
let asked=false
|
||||
export function askForPersistentStorage(){
|
||||
if(asked) return
|
||||
asked=true
|
||||
if (navigator.storage && navigator.storage.persist) {
|
||||
navigator.storage.persist().then((persistent) => {
|
||||
if (persistent) {
|
||||
toast(t('settings.storage_granted'))
|
||||
} else {
|
||||
toast(t('settings.storage_refused'))
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue