Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Game Scene Control

Song edited this page Jul 12, 2021 · 2 revisions

2021-07-12

by Song

ViewController 흐름도

게임 씬 흐름도
  • 새로운 게임 / 현재 게임 재개 시 ViewController가 취해야하는 동작이 다름
    • 예컨대, 새로운 게임이라면 ImageView로 이뤄진 UnitStack의 이미지들을 리셋시켜야 한다.
    • 그러나 이미 진행되고 있던 게임이라면 리셋할 필요가 없다.
  • 일시정지 화면에선 유저가 두 경우 모두를 선택할 수 있으므로 판단할 수 있는 로직이 필요하다.

GameStatus 타입 생성

enum GameStatus {
    case new
    case pause
    case resume
}
  • 상태들을 나열한 GameStatus 생성
  • 게임오버의 경우 new와 동작 차이가 없으므로 따로 생성하지 않았다
private(set) var newGameStatus = BehaviorRelay<GameStatus>(value: .new)
  • GameViewModel은 GameStatus 값을 방출하는 BehaviorRelay를 가지고 있다
  • 그리고 PauseViewModel과 GameOverViewModel을 초기화할 때 이 릴레이를 넘겨주도록 했다
viewModel.newGameStatus
    .subscribe(onNext: { [weak self] gameStatus in
        guard let self = self else { return }
        switch gameStatus {
        case .new:
            // view 리셋
        case .pause:
            // view 리셋하지 않음
        case .resume:
            // view 리셋하지 않음
        }
}).disposed(by: rx.disposeBag)
  • 각 GameViewController의 버튼을 누르게 되면 릴레이로 GameStatus를 보내어 GameViewController가 알맞게 동작한다

Clone this wiki locally

Morty Proxy This is a proxified and sanitized view of the page, visit original site.