Ice Craft 팀 프로젝트의 대대적인 socket IO 메서드 개편 2편
1. Event명 변경 및 통합
기존 어색한 부분
- Modal 관련 Event명: 접미사 부분에 “Modal” 이라는 단어로 끝나는 걸 볼 수 있다.
ex) showModal, showCitizenModal
이유
- 위의 Event를 제외하고도 “Modal” 관련된 Event가 다수 존재
ex) showVoteResult, showVoteDeadOrLive, showDeadUser, victoryUser
생각한 방법
- “showModal”을 제외한 event Name의 접미사에 “Modal” 제거
- “showCitizenModal” ⇒ “showCitizen”으로 변경
2. 최후의 투표
기존 어색한 부분
- 시나리오 순서)
- [UI(모든 유저) : 찬성/반대 투표를 해주세요.] : showModal // 메세지 / 3초**
- **2. 투표 중 : inVote // 10초 (최후의 투표)
이유
- 최후의 투표는 캠 클릭 이벤트가 아닌 클라이언트 측에서 갖고있는 “YES/ No 모달창”으로 구성
자세한 이유
- 앞) 시나리오 로직에서 일반 투표의 ”InVote” 기능은 캠 클릭 이벤트 활성화 및 타이머 기능을 제공
- 현) 시나리오 로직에서 최후 투표의 “inVote” 기능은 캠 클릭이 아닌 “Yes/ NO 모달창”으로 구성
생각한 방법
- 두개의 Event를 “showModal”로 합치기
- 구성 요소: Event명, 메세지, timer(number)
참고 사항
- 이후 진행되는 “voteYesOrNo” Event에 필요한 userId 값은 이전의 “showVoteResult”(투표 결과)에서 userId값을 리스트로 전달 받기 때문에 userId 값이 필요없다.
- 최후의 투표 모달창 로직: 한 번 클릭 시 서버에 값 전달후 투표 버튼 비활성화 ==> “투표 중입니다” 라는 문구로 변경
기존 어색한 부분
- “마피아 유저들의 컴퓨터에는 마피아 유저들의 카메라 킴”
- “ A 유저 카메라 및 마이크 켬(최후 변론)”
이유
- useMediaStatus” 에서 구성 요소 중 위의 2곳에서만 timer가 존재하며, 다른 곳에서는 필요 x
- 가독성 및 통일성있는 로직을 위해 “userMediaStatus” Event에서는 카메라, 마이크 제어 기능만 구성
- 구성 요소: Event명, userIdList[ ], 카메라(boolean), 마이크(boolean)
생각한 방법
- “useMediaStatus”에서 timer 기능을 갖고 있는 Logic
1) 마피아 user끼리 서로 확인 중 : 5초
2) A 유저 카메라 및 마이크 켬(최후 변론): 10초
- 기존 Timer 기능만 갖고 있는 시나리오 Logic
1) 토론 중: inDiscuss // 60초
결과
- 위의 Logic 2개를 합쳐 하나의 socket Event로 생성
1) “inTimer” 구성요소: Event명, Timer(number)
4. 캠 클릭 이벤트 및 직업 별 이벤트 수정
기존 어색한 부분
- 투표 중 : inVote // 10초
- 최후의 투표 중 : inVote // 10초
- 마피아 선택 중 : inSelect // 10초
- 의사 선택 중: inSelect // 10초
- 경찰 선택 중: inSelect // 10초
이유
- 위의 5가지 Event의 공통 기능: 캠 클릭 이벤트 활성화, 비활성화 및 timer 기능을 담당
생각한 방법
- 가독성 및 통일성있는 로직을 위해 “userCamClickStatus” 새로운 socket Event 생성
- 구성 요소: Event명, message, timer
참고 사항
직업별 클릭 이벤트의 비활성화 타이밍이 다르기 때문이다.
- 마피아 시간 : 주어진 시간동안 계속 클릭이벤트 활성화
- 의사 시간 : 주어진 시간동안 계속 클릭이벤트 활성화
- 경찰 시간 : 주어진 시간동안 한 번만 클릭이벤트 활성화
팀 프로젝트의 대대적인 socket IO 메서드 개편 1편
socket IO 정의