snack-game / front

스낵게임! 선택한 스낵 숫자합을 10을 만들면 점수를 얻는 게임입니다!
https://snackga.me
14 stars 0 forks source link

Feat: 황금사과 기능 추가 #224

Closed dev-dong-su closed 4 months ago

dev-dong-su commented 4 months ago

💻 개요

📋 변경 및 추가 사항

황금 사과 제거 로직이 추가되었습니다.

May-28-2024 20-11-10 이에 따라 SnackGameAction에 황금사과 처리용 로직이 추가되었는데요. 아직 특수 기물이 황금사과 하나여서 확장성은 고려하지 않고 SnackType 검사 후 황금사과 관련한 로직만 수행하도록 간단하게 만들었습니다.

  if (sum === 10) {
      sfx.play('common/sfx-match.mp3', { speed: 1.2, volume: 0.5 });
      this.snackGame.board.popAllSelectedSnacks();

      // TODO: 지금은 특수 기물이 황금사과 하나지만 나중에 확장 될 경우 opens-games처럼 특수 기물을 따로 관리해주어야함.
      this.snackGame.board.selectedSnacks.forEach((snack) => {
        if (snack.type === 2) {
          this.snackGame.board.reset();
          this.snackGame.board.setup(this.snackGame.config);
          this.snackGame.onSnackGameBoardReset?.();
        }
      });

      this.snackGame.board.clearAllSelectedSnacks();
    }

특수효과를 처리하는 GameEffect 객체는 Screen객체에 존재하는데 여기에 존재하는 이유가 화면에 보여지는 요소와는 독립적으로 게임 효과를 보여주기 위함 입니다. 그런 이유로 특수 효과를 하위 컴포넌트에서 호출하기 위해서는 GameScreen 객체에서 onSnackGameBoardReset를 SnackGame컴포넌트에 넘길 때 GameScreen의 this를 바인딩 해주고 SnackGame 객체에 넘겨주어야 합니다.

 this.snackGame.onSnackGameBoardReset = this.onSnackGameBoardReset.bind(this);

이렇게 넘겨받은 onSnackGameBoardReset을 snackGameAction이 조건에 맞으면 Snackgmae 인스턴스를 참조해 호출합니다.

💬 To. 리뷰어

지금 한 가지 개선할 사항이 있는데 황금 사과 제거시 사과가 튀어나는 이펙트가 조금 눈이 아픈 것 같습니다. 연속적으로 터트리면 상당히 눈에 피로를 줄 수 있을 것 같은데 눈에 피로가 없으면서 황금사과를 터트렸다는 만족감을 줄 수 있는 효과를 고민해 봐야 할 것 같습니당. 다음 회의 안건에 들고가볼게요!