-
Notifications
You must be signed in to change notification settings - Fork 0
Game Scene Control
Song edited this page Jul 12, 2021
·
2 revisions
by Song
- 새로운 게임 / 현재 게임 재개 시 ViewController가 취해야하는 동작이 다름
- 예컨대, 새로운 게임이라면 ImageView로 이뤄진 UnitStack의 이미지들을 리셋시켜야 한다.
- 그러나 이미 진행되고 있던 게임이라면 리셋할 필요가 없다.
- 일시정지 화면에선 유저가 두 경우 모두를 선택할 수 있으므로 판단할 수 있는 로직이 필요하다.
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가 알맞게 동작한다
created by 우송