Skip to content

feat(entities): add steel box entity with specyfic push and laser blocking logic#100

Open
Oskipol wants to merge 3 commits into
mainfrom
feat/steel-box
Open

feat(entities): add steel box entity with specyfic push and laser blocking logic#100
Oskipol wants to merge 3 commits into
mainfrom
feat/steel-box

Conversation

@Oskipol

@Oskipol Oskipol commented May 22, 2026

Copy link
Copy Markdown

Ogólnie głównie przekopiowałem logikę i strukturę cratea ze zmienionymi nazwami na "SteelCrate" oraz dodałem logikę odróżniającą steelcratea od zwykłego cratea (blokowanie laserów oraz to że może pchać cratey ale nie może >1 steel cratea) oraz podmieniłem capybara-tileset

@Oskipol Oskipol requested a review from bnszky May 22, 2026 20:56

@bnszky bnszky left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zauważyłem, że rzeczywiście jest tutaj sporo kodu, który mógłby się nie powtarzać. Często też zdarza się, że pojawiają się literówki, co oznaczyłem w review.

Wykryłem kilka błędów, które w sumie polegają na tym, że mamy w kilku miejscach sprawdzenie czy znajduje się crate, ale nie zostało dodane sprawdzenie czy znajduje się steelBox

przykładowo w isWalkableForCapybara jest:

 if (this.crateState.getCrateAt(x, y)) return false;

Nie ma natomiast sprawdzenia dla SteelBox.

Mam dwa rozwiązania tego problemu:

  1. Dodanie pola isSteel do obiektu crate i wtedy:

a) dla isSteel = true wyświetlamy stalowy box i aplikujemy logikę dla stalowego, czyli nie przesuwa żadnych innych cratów i steelBoxów

b) dla isSteel = false wyświetlamy crate i zostawiamy drugą logikę

Skróci to i tak już długi kod i unikniemy tej redundancji.

  1. Drugie podejście polegałoby na zmianie wszystkiego zawsze ręcznie, więc odradzam
    I uwaga na koniec: pamiętaj, żeby testować działanie, bo aktualnie masz literówkę w kodzie i wizualnie w phaserze ten steel box nie renderuje się poprawnie po przesunięciu

Comment thread server/src/rooms/GameRoom.ts Outdated
positionsToCheck.add(`${newX}_${newY}`);

this.broadcast("cratesUpdate", { crates: movedCrates });
this.broadcast("steelBoxesUpdate", { steelBoxes: movedSteelBoxes });

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
this.broadcast("steelBoxesUpdate", { steelBoxes: movedSteelBoxes });
this.broadcast("steelBoxUpdate", { steelBoxes: movedSteelBoxes });

Tutaj literówka, która powoduje brak renderowania

@pull-request-size pull-request-size Bot added size/M and removed size/L labels Jun 9, 2026
@Oskipol

Oskipol commented Jun 9, 2026

Copy link
Copy Markdown
Author

Tak jak zasugerowałeś dodałem pole isSteel(boolian) i metodę createSteelBox do samego CrateState, ujednoliciłem jego logikę tak aby w zależności od tego pola inaczej się zachowywał

@Oskipol Oskipol requested a review from bnszky June 9, 2026 22:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants