mirror of
https://gitlab.com/lecarore/breakout71.git
synced 2025-04-22 13:06:15 -04:00
wip
This commit is contained in:
parent
8099ced71b
commit
a8e9fc6cb6
13 changed files with 2879 additions and 2783 deletions
|
@ -868,7 +868,7 @@
|
|||
{
|
||||
"name": "icon:unbounded",
|
||||
"size": 9,
|
||||
"bricks": "rrWWWWWrrrr_____rrrrtttttrrrrttt__rrrr____yrrrr_____rrrr___y_yWrr_____rrrrWWW__ry",
|
||||
"bricks": "WWWWWWWWWW_r_r_r_WWrtttttrWW_ttttt_WWr_____rWW_______WWr___W_rWW_______WWrWWW__rW",
|
||||
"svg": null,
|
||||
"color": ""
|
||||
},
|
||||
|
@ -1404,5 +1404,12 @@
|
|||
"bricks": "WrrrrrrrWrWWWWWrWrWrrrWrWrWrWrWrWrWWWrWrWrrrrrWrWWWWWWWrrrrrrrrr",
|
||||
"svg": null,
|
||||
"color": ""
|
||||
},
|
||||
{
|
||||
"name": "icon:bricks_attract_ball",
|
||||
"size": 8,
|
||||
"bricks": "llW_____ll_v________p________bll____t_ll___G____lly_____ll_r____",
|
||||
"svg": null,
|
||||
"color": ""
|
||||
}
|
||||
]
|
||||
]
|
52
src/game.ts
52
src/game.ts
|
@ -134,39 +134,40 @@ export function pause(playerAskedForPause: boolean) {
|
|||
}
|
||||
}
|
||||
|
||||
export const fitSize = () => {
|
||||
export const fitSize = (gameState:GameState) => {
|
||||
if(!gameState) throw new Error("Missign game state")
|
||||
const past_off = gameState.offsetXRoundedDown,
|
||||
past_width = gameState.gameZoneWidthRoundedUp,
|
||||
past_heigh = gameState.gameZoneHeight;
|
||||
|
||||
const { width, height } = gameCanvas.getBoundingClientRect();
|
||||
const width= window.innerWidth, height=window.innerHeight
|
||||
|
||||
console.log('fitSize',width, height)
|
||||
gameState.canvasWidth = width;
|
||||
gameState.canvasHeight = height;
|
||||
gameCanvas.width = width;
|
||||
gameCanvas.height = height;
|
||||
// ctx.fillStyle = currentLevelInfo(gameState)?.color || "black";
|
||||
// ctx.globalAlpha = 1;
|
||||
// ctx.fillRect(0, 0, width, height);
|
||||
backgroundCanvas.width = width;
|
||||
backgroundCanvas.height = height;
|
||||
|
||||
haloCanvas.width = width / haloScale;
|
||||
haloCanvas.height = height / haloScale;
|
||||
|
||||
gameState.gameZoneHeight = isOptionOn("mobile-mode")
|
||||
? (height * 80) / 100
|
||||
: height;
|
||||
? Math.floor(height * .80) : height;
|
||||
|
||||
const baseWidth = Math.round(
|
||||
Math.min(gameState.canvasWidth, gameState.gameZoneHeight * 0.73),
|
||||
Math.min(gameState.canvasWidth , gameState.gameZoneHeight * (0.73 )* (gameState.gridSize+gameState.perks.unbounded*2 ) / gameState.gridSize),
|
||||
);
|
||||
gameState.brickWidth = Math.floor(baseWidth / gameState.gridSize / 2) * 2;
|
||||
|
||||
gameState.brickWidth = Math.floor(baseWidth / (gameState.gridSize+gameState.perks.unbounded*2) / 2) * 2;
|
||||
|
||||
gameState.gameZoneWidth = gameState.brickWidth * gameState.gridSize;
|
||||
gameState.offsetX = Math.floor(
|
||||
(gameState.canvasWidth - gameState.gameZoneWidth) / 2,
|
||||
);
|
||||
gameState.offsetXRoundedDown = gameState.offsetX;
|
||||
if (gameState.offsetX < gameState.ballSize) gameState.offsetXRoundedDown = 0;
|
||||
// Space between left side and border
|
||||
gameState.offsetXRoundedDown = gameState.offsetX - gameState.perks.unbounded*gameState.brickWidth;
|
||||
if (gameState.offsetX < gameState.ballSize+gameState.perks.unbounded*2*gameState.brickWidth) gameState.offsetXRoundedDown = 0;
|
||||
gameState.gameZoneWidthRoundedUp = width - 2 * gameState.offsetXRoundedDown;
|
||||
backgroundCanvas.title = "resized";
|
||||
// Ensure puck stays within bounds
|
||||
|
@ -200,14 +201,14 @@ export const fitSize = () => {
|
|||
`${window.innerHeight * 0.01}px`,
|
||||
);
|
||||
};
|
||||
window.addEventListener("resize", fitSize);
|
||||
window.addEventListener("fullscreenchange", fitSize);
|
||||
window.addEventListener("resize", ()=>fitSize(gameState));
|
||||
window.addEventListener("fullscreenchange", ()=>fitSize(gameState));
|
||||
|
||||
setInterval(() => {
|
||||
// Sometimes, the page changes size without triggering the event (when switching to fullscreen, closing debug panel...)
|
||||
const { width, height } = gameCanvas.getBoundingClientRect();
|
||||
if (width !== gameState.canvasWidth || height !== gameState.canvasHeight)
|
||||
fitSize();
|
||||
fitSize(gameState);
|
||||
}, 1000);
|
||||
|
||||
export async function openUpgradesPicker(gameState: GameState) {
|
||||
|
@ -416,8 +417,8 @@ export function tick() {
|
|||
normalizeGameState(gameState);
|
||||
|
||||
if (gameState.running) {
|
||||
gameState.levelTime += timeDeltaMs;
|
||||
gameState.runStatistics.runTime += timeDeltaMs;
|
||||
gameState.levelTime += timeDeltaMs*frames;
|
||||
gameState.runStatistics.runTime += timeDeltaMs*frames;
|
||||
gameStateTick(gameState, frames);
|
||||
}
|
||||
if (gameState.running || gameState.needsRender) {
|
||||
|
@ -599,7 +600,7 @@ async function openSettingsMenu() {
|
|||
help: options[key].help,
|
||||
value: () => {
|
||||
toggleOption(key);
|
||||
fitSize();
|
||||
fitSize(gameState);
|
||||
applyFullScreenChoice();
|
||||
openSettingsMenu();
|
||||
},
|
||||
|
@ -978,15 +979,24 @@ document.addEventListener("keyup", async (e) => {
|
|||
export const gameState = newGameState({});
|
||||
|
||||
export function restart(params: RunParams) {
|
||||
// fitSize();
|
||||
Object.assign(gameState, newGameState(params));
|
||||
// Recompute brick size according to level
|
||||
fitSize();
|
||||
fitSize(gameState);
|
||||
pauseRecording();
|
||||
setLevel(gameState, 0);
|
||||
}
|
||||
|
||||
restart({});
|
||||
restart(window.location.search.includes('stress')?{
|
||||
|
||||
perks:{
|
||||
bricks_attract_ball:2,
|
||||
superhot:1,
|
||||
bricks_attract_coins:3,
|
||||
hot_start:3,
|
||||
pierce:3,
|
||||
rainbow:3
|
||||
}
|
||||
}:{});
|
||||
|
||||
tick();
|
||||
setupTooltips();
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -170,6 +170,9 @@
|
|||
"upgrades.bigger_puck.name": "مجداف أكبر",
|
||||
"upgrades.bigger_puck.tooltip": "احصل على المزيد من العملات المعدنية بسهولة.",
|
||||
"upgrades.bigger_puck.verbose_description": "يجعل المضرب الأكبر من السهل عدم تفويت الكرة والتقاط المزيد من العملات المعدنية، كما يساعد أيضًا على تحديد زاوية الارتدادات بدقة (تعتمد زاوية الكرة فقط على المكان الذي تصطدم فيه بالمضرب).",
|
||||
"upgrades.bricks_attract_ball.name": "الطوب يجذب الكرات",
|
||||
"upgrades.bricks_attract_ball.tooltip": "تتجه الكرة نحو أول {{count}} من الطوب التي ستصطدم بها.",
|
||||
"upgrades.bricks_attract_ball.verbose_description": "يكون التأثير أقوى في المستويات الأعلى. كما أن عدد الطوب الذي يمكن أن يصيب قبل توقف التأثير يكون أكبر. ويعود التأثير إلى قوته عندما تصطدم الكرة بالقرص.",
|
||||
"upgrades.bricks_attract_coins.name": "الطوب يجذب العملات المعدنية",
|
||||
"upgrades.bricks_attract_coins.tooltip": "يساعدهم على البقاء هناك",
|
||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||
|
@ -331,10 +334,9 @@
|
|||
"upgrades.trickledown.name": "اقتصاد التسرب",
|
||||
"upgrades.trickledown.tooltip": "تظهر العملات المعدنية في الجزء العلوي من الشاشة.",
|
||||
"upgrades.trickledown.verbose_description": "قد يساعدك هذا على وضع بعض العملات المعدنية جانبًا. ",
|
||||
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} مجموعة لكل لبنة، لا مزيد من الجوانب أو السقف",
|
||||
"upgrades.unbounded.name": "غير محدود",
|
||||
"upgrades.unbounded.tooltip": "+{{lvl}} مجموعة لكل لبنة، لا مزيد من الجوانب لإبقاء الكرة في اللعبة، خطر",
|
||||
"upgrades.unbounded.verbose_description": "آمل أن تكون قد وجدت طريقة لإبقاء الكرة على الشاشة. لم تعد تُطبق عقوبات ضرب الجوانب. في المستوى ٢+، سيختفي السقف أيضًا. هذه ميزة متقدمة.",
|
||||
"upgrades.unbounded.tooltip": "يضيف مساحة إلى يسار ويمين المستوى، ولكن مجدافك لا يمكنه الذهاب إلى هذا الحد.",
|
||||
"upgrades.unbounded.verbose_description": "قد يساعدك ترقية أخرى على توسيع مدى مجدافك.",
|
||||
"upgrades.viscosity.name": "اللزوجة",
|
||||
"upgrades.viscosity.tooltip": "انخفاض أبطأ في قيمة العملة",
|
||||
"upgrades.viscosity.verbose_description": "عادةً ما تتسارع العملات المعدنية بفعل الجاذبية والانفجارات إلى سرعات عالية جدًا.\n\nهذه الميزة تُبطئ سرعتها باستمرار، كما لو كانت في سائل لزج.\n\nهذا يُسهّل التقاطها، ويتكامل بشكل رائع مع الميزات التي تؤثر على حركة العملة.",
|
||||
|
|
|
@ -4080,6 +4080,80 @@
|
|||
</concept_node>
|
||||
</children>
|
||||
</folder_node>
|
||||
<folder_node>
|
||||
<name>bricks_attract_ball</name>
|
||||
<children>
|
||||
<concept_node>
|
||||
<name>name</name>
|
||||
<description/>
|
||||
<comment/>
|
||||
<translations>
|
||||
<translation>
|
||||
<language>ar-LB</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>en-US</language>
|
||||
<approved>true</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>fr-FR</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>ru-RU</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>tooltip</name>
|
||||
<description/>
|
||||
<comment/>
|
||||
<translations>
|
||||
<translation>
|
||||
<language>ar-LB</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>en-US</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>fr-FR</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>ru-RU</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>verbose_description</name>
|
||||
<description/>
|
||||
<comment/>
|
||||
<translations>
|
||||
<translation>
|
||||
<language>ar-LB</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>en-US</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>fr-FR</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>ru-RU</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
</children>
|
||||
</folder_node>
|
||||
<folder_node>
|
||||
<name>bricks_attract_coins</name>
|
||||
<children>
|
||||
|
@ -8041,29 +8115,6 @@
|
|||
<folder_node>
|
||||
<name>unbounded</name>
|
||||
<children>
|
||||
<concept_node>
|
||||
<name>help_no_ceiling</name>
|
||||
<description/>
|
||||
<comment/>
|
||||
<translations>
|
||||
<translation>
|
||||
<language>ar-LB</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>en-US</language>
|
||||
<approved>true</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>fr-FR</language>
|
||||
<approved>true</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>ru-RU</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>name</name>
|
||||
<description/>
|
||||
|
@ -8102,7 +8153,7 @@
|
|||
</translation>
|
||||
<translation>
|
||||
<language>fr-FR</language>
|
||||
<approved>true</approved>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>ru-RU</language>
|
||||
|
@ -8125,7 +8176,7 @@
|
|||
</translation>
|
||||
<translation>
|
||||
<language>fr-FR</language>
|
||||
<approved>true</approved>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>ru-RU</language>
|
||||
|
|
|
@ -170,6 +170,9 @@
|
|||
"upgrades.bigger_puck.name": "Bigger paddle",
|
||||
"upgrades.bigger_puck.tooltip": "Easily catch more coins.",
|
||||
"upgrades.bigger_puck.verbose_description": "A bigger paddle makes it easier to never miss the ball and to catch more coins, and also to precisely angle the bounces (the ball's angle only depends on where it hits the paddle). ",
|
||||
"upgrades.bricks_attract_ball.name": "Bricks attract balls",
|
||||
"upgrades.bricks_attract_ball.tooltip": "Ball goes toward the first {{count}} bricks it will hit.",
|
||||
"upgrades.bricks_attract_ball.verbose_description": "The effect is stronger at higher levels. The number of bricks that can hit before the effect stops is also higher. The effect rearms when the ball hits the puck.",
|
||||
"upgrades.bricks_attract_coins.name": "Bricks attract coins",
|
||||
"upgrades.bricks_attract_coins.tooltip": "Helps them stay up there",
|
||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||
|
@ -331,10 +334,9 @@
|
|||
"upgrades.trickledown.name": "Trickle down economics",
|
||||
"upgrades.trickledown.tooltip": "The coins appear at the top of the screen.",
|
||||
"upgrades.trickledown.verbose_description": "It might help you put some coins aside.",
|
||||
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} combo per brick, no more sides or ceiling",
|
||||
"upgrades.unbounded.name": "Unbounded",
|
||||
"upgrades.unbounded.tooltip": "+{{lvl}} combo per brick, no more sides to keep the ball in game, danger",
|
||||
"upgrades.unbounded.verbose_description": "I hope you've found a way to keep your ball on screen. Penalties for hitting the sides no longer apply. At level 2+, the ceiling will also disappear. This is an advanced perk. ",
|
||||
"upgrades.unbounded.name": "Padding",
|
||||
"upgrades.unbounded.tooltip": "Adds space left and right of the level, but your paddle can't go that far. ",
|
||||
"upgrades.unbounded.verbose_description": "Another upgrade might help you extends the reach of your paddle. ",
|
||||
"upgrades.viscosity.name": "Viscosity",
|
||||
"upgrades.viscosity.tooltip": "Slower coin fall",
|
||||
"upgrades.viscosity.verbose_description": "Coins normally accelerate with gravity and explosions to pretty high speeds. \n\nThis perk constantly makes them slow down, as if they were in some sort of viscous liquid. \n\nThis makes catching them easier, and combines nicely with perks that influence the coin's movement.",
|
||||
|
|
|
@ -170,6 +170,9 @@
|
|||
"upgrades.bigger_puck.name": "Raquette plus grande",
|
||||
"upgrades.bigger_puck.tooltip": "Attrapez facilement plus de pièces.",
|
||||
"upgrades.bigger_puck.verbose_description": "Une grande raquette permet de ne jamais rater la balle et d'attraper plus de pièces, ainsi que d'orienter précisément les rebonds. Cependant, une grande raquette est plus difficile à utiliser sur les côtés du niveau.",
|
||||
"upgrades.bricks_attract_ball.name": "Les briques attirent les balles",
|
||||
"upgrades.bricks_attract_ball.tooltip": "La balle se dirige vers les {{count}} premières briques qu'elle touchera.",
|
||||
"upgrades.bricks_attract_ball.verbose_description": "L'effet est plus fort à des niveaux plus élevés. Le nombre de briques pouvant être touchées avant que l'effet ne s'arrête est également plus élevé. L'effet se réarme lorsque la balle touche le palet.",
|
||||
"upgrades.bricks_attract_coins.name": "Briques attirent les pièces",
|
||||
"upgrades.bricks_attract_coins.tooltip": "Aide à garder les pièces en suspension",
|
||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||
|
@ -331,10 +334,9 @@
|
|||
"upgrades.trickledown.name": "Ruissellement",
|
||||
"upgrades.trickledown.tooltip": "Les pièces apparaissent en haut de l'écran.",
|
||||
"upgrades.trickledown.verbose_description": "Ça pourrait vous aider à mettre des pièces de coté. ",
|
||||
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} combo par brique, plus de cotés ou de plafond",
|
||||
"upgrades.unbounded.name": "Libérée, délivrée",
|
||||
"upgrades.unbounded.tooltip": "+{{lvl}} combo par brique, plus de cotés pour garder la balle en jeu, danger",
|
||||
"upgrades.unbounded.verbose_description": "J'espère que vous avez trouvé un moyen de garder votre balle à l'écran. Au niveau 2+, le plafond disparaîtra également. Il s'agit d'un avantage avancé.",
|
||||
"upgrades.unbounded.name": "Besoin d'espace",
|
||||
"upgrades.unbounded.tooltip": "Plus d'espace autour des briques, mais la raquette ne peut pas aller aussi loin.",
|
||||
"upgrades.unbounded.verbose_description": "Une autre amélioration pourrait vous permettre d'étendre la portée de votre raquette.",
|
||||
"upgrades.viscosity.name": "Fluide visqueux ",
|
||||
"upgrades.viscosity.tooltip": "Chute plus lente des pièces",
|
||||
"upgrades.viscosity.verbose_description": "Les pièces accélèrent normalement avec la gravité et les explosions pour atteindre des vitesses assez élevées. \n\nCette compétence les ralentit constamment, comme si elles se trouvaient dans une sorte de liquide visqueux.\n\nCela permet de les attraper plus facilement et se combine bien avec les améliorations qui influencent le mouvement de la pièce.",
|
||||
|
|
|
@ -170,6 +170,9 @@
|
|||
"upgrades.bigger_puck.name": "Большое весло",
|
||||
"upgrades.bigger_puck.tooltip": "Легко поймать больше монет.",
|
||||
"upgrades.bigger_puck.verbose_description": "Большее весло позволяет никогда не промахиваться по мячу и ловить больше монет, а также точно определять угол отскока (угол наклона мяча зависит только от того, куда он попадает при ударе о весло).",
|
||||
"upgrades.bricks_attract_ball.name": "Кирпичи притягивают мячи",
|
||||
"upgrades.bricks_attract_ball.tooltip": "Мяч летит к первым {{count}} кирпичам, которых он коснется.",
|
||||
"upgrades.bricks_attract_ball.verbose_description": "Эффект сильнее на более высоких уровнях. Количество кирпичей, которые могут ударить до того, как эффект прекратится, также больше. Эффект возобновляется, когда мяч касается шайбы.",
|
||||
"upgrades.bricks_attract_coins.name": "Кирпичи притягивают монеты",
|
||||
"upgrades.bricks_attract_coins.tooltip": "Помогает им оставаться на вершине",
|
||||
"upgrades.bricks_attract_coins.verbose_description": "",
|
||||
|
@ -331,10 +334,9 @@
|
|||
"upgrades.trickledown.name": "Экономика по принципу \"копеечной монеты",
|
||||
"upgrades.trickledown.tooltip": "Монеты появляются в верхней части экрана.",
|
||||
"upgrades.trickledown.verbose_description": "Это может помочь вам отложить несколько монет.",
|
||||
"upgrades.unbounded.help_no_ceiling": "+{{lvl}} комбо на кирпич, не больше сторон или потолка",
|
||||
"upgrades.unbounded.name": "Без ограничений",
|
||||
"upgrades.unbounded.tooltip": "+{{lvl}} комбо за кирпич, больше нет сторон, чтобы держать мяч в игре, опасность",
|
||||
"upgrades.unbounded.verbose_description": "Надеюсь, вы нашли способ держать мяч на экране. Штрафы за удары по бокам больше не применяются. На уровне 2+ потолок также исчезнет. Это продвинутый перк.",
|
||||
"upgrades.unbounded.name": "Набивка",
|
||||
"upgrades.unbounded.tooltip": "Добавляет пространство слева и справа от уровня, но ваше весло не может пройти так далеко.",
|
||||
"upgrades.unbounded.verbose_description": "Еще одна модернизация может помочь вам увеличить радиус действия весла.",
|
||||
"upgrades.viscosity.name": "Вязкость",
|
||||
"upgrades.viscosity.tooltip": "Медленное падение монет",
|
||||
"upgrades.viscosity.verbose_description": "Монеты обычно разгоняются с помощью гравитации и взрывов до довольно высоких скоростей.\n\nЭтот перк постоянно заставляет их замедляться, как будто они находятся в какой-то вязкой жидкости.\n\nЭто облегчает их поимку и отлично сочетается с перками, влияющими на движение монет.",
|
||||
|
|
|
@ -138,7 +138,7 @@ export function newGameState(params: RunParams): GameState {
|
|||
rerolls: 0,
|
||||
creative:
|
||||
sumOfValues(params.perks) > 1 ||
|
||||
(params.level && params.level !== "icon:" + randomGift),
|
||||
(params.level && !params.level.startsWith("icon:")),
|
||||
};
|
||||
resetBalls(gameState);
|
||||
|
||||
|
|
|
@ -329,11 +329,9 @@ export function render(gameState: GameState) {
|
|||
ctx.fillStyle = gameState.puckColor;
|
||||
for (let i = 0; i < gameState.perks.extra_life; i++) {
|
||||
ctx.fillRect(
|
||||
gameState.perks.unbounded ? 0 : gameState.offsetXRoundedDown,
|
||||
gameState.offsetXRoundedDown,
|
||||
gameState.gameZoneHeight - gameState.puckHeight / 2 + 2 * i,
|
||||
gameState.perks.unbounded
|
||||
? gameState.canvasWidth
|
||||
: gameState.gameZoneWidthRoundedUp,
|
||||
gameState.gameZoneWidthRoundedUp,
|
||||
1,
|
||||
);
|
||||
}
|
||||
|
@ -446,43 +444,40 @@ export function render(gameState: GameState) {
|
|||
// Borders
|
||||
|
||||
ctx.globalCompositeOperation = "source-over";
|
||||
ctx.globalAlpha = gameState.perks.unbounded ? 0.1 : 1;
|
||||
ctx.globalAlpha = 1;
|
||||
|
||||
let redLeftSide =
|
||||
hasCombo &&
|
||||
!gameState.perks.unbounded &&
|
||||
(gameState.perks.left_is_lava || gameState.perks.trampoline);
|
||||
let redRightSide =
|
||||
hasCombo &&
|
||||
!gameState.perks.unbounded &&
|
||||
(gameState.perks.right_is_lava || gameState.perks.trampoline);
|
||||
let redTop =
|
||||
hasCombo &&
|
||||
gameState.perks.unbounded <= 2 &&
|
||||
(gameState.perks.top_is_lava || gameState.perks.trampoline);
|
||||
|
||||
|
||||
if (gameState.offsetXRoundedDown) {
|
||||
// draw outside of gaming area to avoid capturing borders in recordings
|
||||
drawStraightLine(
|
||||
ctx,
|
||||
gameState,
|
||||
(redLeftSide && "#FF0000") || "#FFFFFF",
|
||||
gameState.offsetX - 1,
|
||||
gameState.offsetXRoundedDown - 1,
|
||||
0,
|
||||
gameState.offsetX - 1,
|
||||
height,
|
||||
gameState.perks.unbounded ? 0.1 : 1,
|
||||
gameState.offsetXRoundedDown - 1,
|
||||
height, 1,
|
||||
);
|
||||
|
||||
drawStraightLine(
|
||||
ctx,
|
||||
gameState,
|
||||
(redRightSide && "#FF0000") || "#FFFFFF",
|
||||
width - gameState.offsetX + 1,
|
||||
width - gameState.offsetXRoundedDown + 1,
|
||||
0,
|
||||
width - gameState.offsetX + 1,
|
||||
width - gameState.offsetXRoundedDown + 1,
|
||||
height,
|
||||
gameState.perks.unbounded ? 0.1 : 1,
|
||||
1,
|
||||
);
|
||||
} else {
|
||||
drawStraightLine(
|
||||
|
@ -512,9 +507,9 @@ export function render(gameState: GameState) {
|
|||
ctx,
|
||||
gameState,
|
||||
"#FF0000",
|
||||
gameState.perks.unbounded ? 0 : gameState.offsetXRoundedDown,
|
||||
gameState.offsetXRoundedDown,
|
||||
1,
|
||||
gameState.perks.unbounded ? width : width - gameState.offsetXRoundedDown,
|
||||
width - gameState.offsetXRoundedDown,
|
||||
1,
|
||||
1,
|
||||
);
|
||||
|
|
1625
src/upgrades.ts
1625
src/upgrades.ts
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue