Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/game/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export const HEIGHTS = {

// Constantes de gameplay
export const GAMEPLAY = {
BASE_GAME_SPEED: 0.7, // Velocidade base inicial (70% da velocidade)
BASE_GAME_SPEED: 1.5, // Velocidade base inicial (100% da velocidade)
SPEED_INCREASE: 0.02, // Aumento de velocidade por milestone
SPEED_MILESTONE: 100, // A cada quantos pontos aumenta a velocidade
BUG_SPEED: 2, // Velocidade dos bugs
Expand All @@ -21,4 +21,9 @@ export const GAMEPLAY = {
BUG_SPACING_MAX: 2000, // Espaçamento máximo entre bugs
INITIAL_BUG_DISTANCE: 600, // Distância inicial dos bugs
INITIAL_BUG_SPACING: 600, // Espaçamento inicial entre bugs - reduzido
TARGET_FPS: 60, // FPS alvo para normalização (60fps padrão)
};

export const getDeltaMultiplier = (delta) => {
return delta / (1000 / GAMEPLAY.TARGET_FPS);
};
8 changes: 4 additions & 4 deletions src/game/gameobjects/Beetle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ export default class Beetle extends Phaser.GameObjects.Image {
this.move();
}

updateWithSpeed(gameSpeed: number) {
this.moveWithSpeed(gameSpeed);
updateWithSpeed(gameSpeed: number, deltaMultiplier: number = 1) {
this.moveWithSpeed(gameSpeed, deltaMultiplier);
}

recycleBug() {
Expand All @@ -51,7 +51,7 @@ export default class Beetle extends Phaser.GameObjects.Image {
this.x -= this.speed * GAMEPLAY.BASE_GAME_SPEED;
}

moveWithSpeed(gameSpeed: number) {
this.x -= this.speed * gameSpeed;
moveWithSpeed(gameSpeed: number, deltaMultiplier: number = 1) {
this.x -= this.speed * gameSpeed * deltaMultiplier;
}
}
8 changes: 4 additions & 4 deletions src/game/gameobjects/Cloud.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ export default class Cloud extends Phaser.GameObjects.Image {
}
}

updateWithSpeed(gameSpeed) {
this.moveWithSpeed(gameSpeed);
updateWithSpeed(gameSpeed, deltaMultiplier = 1) {
this.moveWithSpeed(gameSpeed, deltaMultiplier);

if (this.x < -this.width) {
this.recycleCloud();
Expand All @@ -42,7 +42,7 @@ export default class Cloud extends Phaser.GameObjects.Image {
this.x -= this.speed * GAMEPLAY.BASE_GAME_SPEED;
}

moveWithSpeed(gameSpeed) {
this.x -= this.speed * gameSpeed;
moveWithSpeed(gameSpeed, deltaMultiplier = 1) {
this.x -= this.speed * gameSpeed * deltaMultiplier;
}
}
8 changes: 4 additions & 4 deletions src/game/gameobjects/Cockroach.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ export default class Cockroach extends Phaser.GameObjects.Image {
this.move();
}

updateWithSpeed(gameSpeed: number) {
this.moveWithSpeed(gameSpeed);
updateWithSpeed(gameSpeed: number, deltaMultiplier: number = 1) {
this.moveWithSpeed(gameSpeed, deltaMultiplier);
}

recycleBug() {
Expand All @@ -51,7 +51,7 @@ export default class Cockroach extends Phaser.GameObjects.Image {
this.x -= this.speed * GAMEPLAY.BASE_GAME_SPEED; // Usa velocidade base
}

moveWithSpeed(gameSpeed: number) {
this.x -= this.speed * gameSpeed;
moveWithSpeed(gameSpeed: number, deltaMultiplier: number = 1) {
this.x -= this.speed * gameSpeed * deltaMultiplier;
}
}
8 changes: 4 additions & 4 deletions src/game/gameobjects/Duck.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@ export default class Duck extends Phaser.GameObjects.Image {
this.move();
}

updateWithSpeed(gameSpeed) {
this.moveWithSpeed(gameSpeed);
updateWithSpeed(gameSpeed, deltaMultiplier = 1) {
this.moveWithSpeed(gameSpeed, deltaMultiplier);
}

move() {
this.x -= this.speed * GAMEPLAY.BASE_GAME_SPEED;
}

moveWithSpeed(gameSpeed) {
this.x -= this.speed * gameSpeed;
moveWithSpeed(gameSpeed, deltaMultiplier = 1) {
this.x -= this.speed * gameSpeed * deltaMultiplier;
}

collect() {
Expand Down
8 changes: 4 additions & 4 deletions src/game/gameobjects/LadyBug.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ export default class LadyBug extends Phaser.GameObjects.Image {
// Remoção controlada pela cena Game
}

updateWithSpeed(gameSpeed: number) {
this.moveWithSpeed(gameSpeed);
updateWithSpeed(gameSpeed: number, deltaMultiplier: number = 1) {
this.moveWithSpeed(gameSpeed, deltaMultiplier);
}

recycleBug() {
Expand All @@ -53,7 +53,7 @@ export default class LadyBug extends Phaser.GameObjects.Image {
this.x -= this.speed * GAMEPLAY.BASE_GAME_SPEED; // Usa velocidade base
}

moveWithSpeed(gameSpeed: number) {
this.x -= this.speed * gameSpeed;
moveWithSpeed(gameSpeed: number, deltaMultiplier: number = 1) {
this.x -= this.speed * gameSpeed * deltaMultiplier;
}
}
8 changes: 4 additions & 4 deletions src/game/gameobjects/Moth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ export default class Moth extends Phaser.GameObjects.Sprite {
this.move();
}

updateWithSpeed(gameSpeed: number) {
this.moveWithSpeed(gameSpeed);
updateWithSpeed(gameSpeed: number, deltaMultiplier: number = 1) {
this.moveWithSpeed(gameSpeed, deltaMultiplier);
}

recycleBug() {
Expand All @@ -54,7 +54,7 @@ export default class Moth extends Phaser.GameObjects.Sprite {
this.x -= this.speed * GAMEPLAY.BASE_GAME_SPEED; // Usa velocidade base
}

moveWithSpeed(gameSpeed: number) {
this.x -= this.speed * gameSpeed;
moveWithSpeed(gameSpeed: number, deltaMultiplier: number = 1) {
this.x -= this.speed * gameSpeed * deltaMultiplier;
}
}
2 changes: 1 addition & 1 deletion src/game/gameobjects/Player.js
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ export default class Player extends Phaser.Physics.Arcade.Sprite {
}
}

update() {
update(delta, deltaMultiplier) {
if (this.isHit) {
// Após 1 segundo de hit, muda para animação de morto
const hitElapsed = this.scene.time.now - this.hitTimer;
Expand Down
4 changes: 4 additions & 0 deletions src/game/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ const config: Phaser.Types.Core.GameConfig = {
height: 500,
parent: "game-container",
backgroundColor: "#000000",
fps: {
target: 60,
forceSetTimeOut: false,
},
physics: {
default: "arcade",
arcade: {
Expand Down
14 changes: 8 additions & 6 deletions src/game/scenes/Game.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Scene } from "phaser";

import { EventBus } from "./../EventBus";
import { HEIGHTS, GAMEPLAY } from "./../constants";
import { HEIGHTS, GAMEPLAY, getDeltaMultiplier } from "./../constants";

import Player from "./../gameobjects/Player";
import Cloud from "./../gameobjects/Cloud";
Expand Down Expand Up @@ -365,23 +365,25 @@ export class Game extends Scene {
}

update(time, delta) {
const deltaMultiplier = getDeltaMultiplier(delta);

// Se o player foi atingido, para tudo
if (!this.playerHit) {
this.clouds.forEach((cloud) =>
cloud.updateWithSpeed(this.getCurrentGameSpeed())
cloud.updateWithSpeed(this.getCurrentGameSpeed(), deltaMultiplier)
);

// Atualizar bugs e reciclar quando saem da tela
this.bugs.forEach((bug) => {
bug.updateWithSpeed(this.getCurrentGameSpeed());
bug.updateWithSpeed(this.getCurrentGameSpeed(), deltaMultiplier);
if (bug.x < -50) {
this.recycleBug(bug);
}
});

// Atualizar patos e remover quando saem da tela
this.ducks.forEach((duck, index) => {
duck.updateWithSpeed(this.getCurrentGameSpeed());
duck.updateWithSpeed(this.getCurrentGameSpeed(), deltaMultiplier);
if (duck.x < -50) {
duck.destroy();
this.ducks.splice(index, 1);
Expand All @@ -390,7 +392,7 @@ export class Game extends Scene {

if (this.roadSprite) {
this.roadSprite.tilePositionX +=
GAMEPLAY.BACKGROUND_SPEED * this.getCurrentGameSpeed(); // Aplica velocidade dinâmica
GAMEPLAY.BACKGROUND_SPEED * this.getCurrentGameSpeed() * deltaMultiplier; // Aplica velocidade dinâmica normalizada
}

// Pontuação por passos (a cada 100ms = 1 ponto)
Expand All @@ -410,7 +412,7 @@ export class Game extends Scene {
}

if (this.player) {
this.player.update();
this.player.update(delta, deltaMultiplier);
// Atualiza framerate da animação de corrida baseado na velocidade
this.player.updateRunningSpeed(this.getCurrentGameSpeed());
}
Expand Down