* Event
Event는 객체와 객체 간에 주고 받는 형식
Entity Event System은 MOD에서 이벤트 시스템을 쉽게 활용할 수 있도록 기본적으로 제공하는 API입니다.
- Event : 로직 상에서 사건의 발생을 의미 (Event의 종류의 식별 정보, 추가 정보 소유)
- Handler : 해당 Event를 받았을 때 처리하는 행동의 주체
- Sender : 해당 이벤트를 발송하는 객체
* Log Event 생성
1. 로그 이벤트 생성
2. LogEvent에 message property
3. MyComponent 생성 및 logEvent , handler 생성
4. Function 추가
5. property 에 MyComponent 추가 후 실행
* Log 로 Event 를 주고받는 과정
1. 자기가 엔티티쪽으로 이벤트를 보냄
2. 로그 이벤트를 받겠다는 핸들러 -> 자신의 엔티티쪽으로 등록
* 이벤트를 주고 받을 때
- 같은 엔티티에서 이벤트를 주고 받을 때
Ex) component1에서 이벤트 발생 시, component3의 이벤트를 실행시키고 싶을 때를 가정합니다. 두 component간에 연관이 없기 때문에 component에서 바로 호출하지 않고 엔티티를 통해 호출하는 구조입니다.
- component1이 특정 타이밍에 의해 엔티티로 발송
- 로그 이벤트를 수신하겠다고 등록한 컴포넌트들에게 이벤트 발송
- 해당 컴포넌트들은 이벤트를 받아서 처리
- 다른 엔티티에서 이벤트를 주고 받을 때
rabbitEntity쪽으로 이벤트를 쏘면 rabbitComponent가 수신해서 rabbitComponent 안의 로그 메시지가 출력 되는 구조입니다.
- 신호를 보내는 엔티티 쪽에서 component들이 이벤트 발송
- 받는 엔티티 쪽에서 신호를 받고 이벤트 수행
- 방법 1
1. RabbitComponent에서 로그 이벤트 등록
2. MyComponent에서 rabbitEntity쪽으로 로그 이벤트 발송 등록
- 방법 2
1.RabbitComponent에서 로그 메시지 핸들 이벤트와 출력 등록(이 때 BeerEntity로 이벤트 발송 등록x)
2.BeerComponent에서 등록한 로그 이벤트를 RabbitEntity로 보내 로그 출력
* 이벤트 처리
* HandleKeyDownEvent
self 가 아닌 service - inputSevice 중에서 keyDownEvent
leftcontral 를 누를 때 이벤트 발생시키는 코드
* HandleFootholdCollisionEvent
얘는 이제 FootholdCollisionEvent
즉 발이 바닥에 닿을 때 event 생성 .
얘는 self
* HandleTouchEvent
터치(마우스 클릭)을 하면 발생하는 event
TouchReceiveComponent 를 꼭 추가 해주어야 돌아간다.
* HandleTouchEvent
스크린을 터치할 때 발생하는 event
이 코드에서는 터치한 스크린의 x , y 값을 Log
'MapleStory Worlds Super Hackathon > 기본 개념' 카테고리의 다른 글
MapelStory World - 네트워크 (0) | 2022.09.23 |
---|---|
MapleStory World - 기본 문법 (1) | 2022.09.23 |
Maple Story World - Component (1) | 2022.09.21 |