Files
Sun1602/Tools/WiseClient/Include/LogicFlowDef.h
T
2022-10-26 12:25:11 +08:00

165 lines
6.1 KiB
C

#pragma once
// 5씩 증가시킬 것, 필요한 플로가 중간에 삽입될 수 있으므로...
enum LF_DEFINE
{
#define LF_DEFINE_T(type) type ,
//# include "Logic.Internal.Definition.hxx" 을 include하는 대신 직접 Copy&Paste 했다.
// 이유? VS.Net이나, Visual Assist가 분석하지 못하므로...
// 이후, 타입이 추가될 경우 "Logic.Internal.Definition.hxx"에서 작업된 것 그대로 복사해서
// 여기에 붙여넣을 것
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
// <CONTROLLER BASE LOGIC FLOW>
LF_DEFINE_T(S_000000_START_MARK_LF)
LF_DEFINE_T(S_000010_START_CONNECTION_LF)
LF_DEFINE_T(S_000012_WAIT_NEXT_ACTION_LF)
LF_DEFINE_T(S_000020_START_ZONE_LF)
LF_DEFINE_T(S_000022_WAIT_NEXT_ACTION_LF)
LF_DEFINE_T(S_000026_START_MOVE_LF)
LF_DEFINE_T(S_000028_WAIT_NEXT_ACTION_LF)
LF_DEFINE_T(S_000030_START_BATTLE_LF)
LF_DEFINE_T(S_000032_WAIT_NEXT_ACTION_LF)
LF_DEFINE_T(S_000040_START_AI_LF)
LF_DEFINE_T(S_000042_WAIT_NEXT_ACTION_LF)
LF_DEFINE_T(S_000050_START_CHAT_LF)
LF_DEFINE_T(S_000052_WAIT_NEXT_ACTION_LF)
LF_DEFINE_T(S_000080_UPDATE_LOOP_LF)
LF_DEFINE_T(S_000085_EOL_FLOW_CONTROL_LF)
LF_DEFINE_T(S_000090_CLOSURE_EXCEPTION_LF)
LF_DEFINE_T(S_000099_CLOSURE_MARK_LF)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
// <CONNECTION LOGIC FLOW>
LF_DEFINE_T(S_000100_START_MARK_LF)
LF_DEFINE_T(S_000200_WISEUSER_CREATE_LF)
LF_DEFINE_T(S_000300_CREATE_LOGIN_FRONT_SESSION_LF)
LF_DEFINE_T(S_000310_CONNECT_TO_LOGIN_FRONT_LF)
LF_DEFINE_T(S_000320_WAIT_CONNECT_TO_LOGIN_FRONT_LF)
LF_DEFINE_T(S_000330_WAIT_MSG_S2C_READY_LF)
LF_DEFINE_T(S_000340_SEND_FC_AUTH_VERIFY_LF)
LF_DEFINE_T(S_000350_WAIT_FC_AUTH_VERIFY_LF)
LF_DEFINE_T(S_000360_SEND_CF_AUTH_ID_PASSWORD_CHECK_LF)
LF_DEFINE_T(S_000370_WAIT_CF_AUTH_ID_PASSWORD_CHECK_LF)
LF_DEFINE_T(S_000380_SEND_FC_AUTH_SERVER_LIST_LF)
LF_DEFINE_T(S_000390_WAIT_FC_AUTH_SERVER_LIST_LF)
LF_DEFINE_T(S_000400_SEND_FC_AUTH_SERVER_SELECT_LF)
LF_DEFINE_T(S_000410_WAIT_FC_AUTH_SERVER_SELECT_LF)
LF_DEFINE_T(S_000490_REGISTER_PERIODIC_WORKLOAD_LF)
// 게임서버 접속
LF_DEFINE_T(S_000500_CREATE_AGENT_SESSION_LF)
LF_DEFINE_T(S_000510_CONNECT_TO_AGENT_SESSION_LF)
LF_DEFINE_T(S_000520_WAIT_CONNECT_TO_AGENT_SESSION_LF)
LF_DEFINE_T(S_000530_SEND_CG_CONNECTION_ENTERSERVER_SYN_LF)
LF_DEFINE_T(S_000540_WAIT_CG_CRYPTOGRAPHY_KEY_LF)
LF_DEFINE_T(S_000560_WAIT_CG_CRYPTOGRAPHY_CMD_LF)
LF_DEFINE_T(S_000570_WAIT_CG_CONNECTION_ENTERSERVER_ACK_LF)
//
LF_DEFINE_T(S_000900_CREATE_ZONE_WORK_LOAD_LF)
LF_DEFINE_T(S_000910_EOL_FLOW_CONTROL_LF)
LF_DEFINE_T(S_000920_CLOSURE_EXCEPTION_LF)
LF_DEFINE_T(S_000999_CLOSURE_MARK_LF)
//
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
// <ZONE LOGIC FLOW>
LF_DEFINE_T(S_001000_START_MARK_LF)
LF_DEFINE_T(S_001010_DECIDE_SELECT_CHARACTER_LF)
LF_DEFINE_T(S_001020_DECIDE_ACTION_PLAY_LF)
LF_DEFINE_T(S_001030_CHECK_CURRENT_ZONE_LF)
// 캐릭터 선택창->마을
LF_DEFINE_T(S_001040_SEND_ENTERVILLAGE_REQ_LF)
LF_DEFINE_T(S_001050_WAIT_ENTERVILLAGE_REQ_ACK_LF)
LF_DEFINE_T(S_001100_CHECK_CURRENT_ZONE_LF)
LF_DEFINE_T(S_001110_SEND_CG_SYNC_PLAYER_ENTER_SYN_LF)
LF_DEFINE_T(S_001120_WAIT_CG_SYNC_PLAYER_ENTER_ACK_LF)
LF_DEFINE_T(S_001130_EOL_FLOW_CONTROL_LF)
//S_001030_SEND 필드<->필드이동관련 처리
LF_DEFINE_T(S_001500_START_MARK_VILLAGE_LF)
LF_DEFINE_T(S_001590_CLOSURE_MARK_VILLAGE_LF)
LF_DEFINE_T(S_001600_START_MARK_HUNTING_FIELD_LF)
LF_DEFINE_T(S_001690_CLOSURE_MARK_HUNTING_FIELD_LF)
LF_DEFINE_T(S_001700_START_MARK_TUTORIAL_FIELD_LF)
LF_DEFINE_T(S_001710_SEND_CG_MISSION_TUTORIAL_WINDOW_RET_ACCEPT_SYN)
LF_DEFINE_T(S_001720_WAIT_CG_MISSION_TUTORIAL_WINDOW_RET_ACCEPT_ACK)
LF_DEFINE_T(S_001730_SEND_CG_ZONE_PORTAL_FIELD_MOVE_SYN)
LF_DEFINE_T(S_001740_WAIT_CG_ZONE_PORTAL_FIELD_MOVE_ACK)
LF_DEFINE_T(S_001750_JUMP_PLAYER_ENTER)
LF_DEFINE_T(S_001760_EOL_FLOW_CONTROL_LF) // 튜토리얼 필드에서 유지상태
LF_DEFINE_T(S_001790_CLOSURE_MARK_TUTORIAL_FIELD_LF)
LF_DEFINE_T(S_001800_START_MARK_LF)
LF_DEFINE_T(S_001810_MOVING_LF)
LF_DEFINE_T(S_001820_MOVING_CONTROL_LF)
LF_DEFINE_T(S_001830_KBMOVING_LF)
LF_DEFINE_T(S_001840_KBMOVING_CONTROL_LF)
LF_DEFINE_T(S_001900_EOL_FLOW_CONTROL_LF)
LF_DEFINE_T(S_002950_CLOSURE_EXCEPTION_LF)
LF_DEFINE_T(S_002999_CLOSURE_MARK_LF)
//
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
// <MOVE LOGIC FLOW>
LF_DEFINE_T(S_003000_START_MARK_LF)
LF_DEFINE_T(S_003010_CHECK_MOVING_POLICY_LF)
// Moving test LF
LF_DEFINE_T(S_003100_START_MARK_LF)
LF_DEFINE_T(S_003110_PRECHECK_CURRENT_POS_FOR_KBMOVE_LF)
LF_DEFINE_T(S_003120_SEND_CG_SYNC_KBMOVE_SYN_LF)
LF_DEFINE_T(S_003130_POSTCHECK_CURRENT_POS_FOR_KBMOVE_LF)
LF_DEFINE_T(S_003140_FAULT_TOLERENCE_POSITION_LF)
//
LF_DEFINE_T(S_003900_EOL_FLOW_CONTROL_LF)
LF_DEFINE_T(S_003999_CLOSURE_MARK_LF)
//
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
LF_DEFINE_T(S_990100_PLAYER_RELEASE_LF)
LF_DEFINE_T(S_990105_USER_RELEASE_LF)
LF_DEFINE_T(S_999999_LF_EOL_MARK_LF)
//LF_DEFINE_T(S_990100_PLAYER_RELEASE_LF)
//LF_DEFINE_T(S_990105_USER_RELEASE_LF)
#undef LF_DEFINE_T
};
enum LF_RESULT
{
LFRET_FAIL , // 이 WorkLoad는 제거되어야 한다.
LFRET_SUCCESS_DEFAULT , // 기본 성공, 다음 로직으로 넘어가야 한다.
LFRET_SUCCESS_LOOP , // 성공, 해당 로직의 루프를 설정한다.
LFRET_SUCCESS_JUMP , // 성공, 다음 로직은 이미 설정된 값으로 점프한다.
LFRET_PENDING_UNTIL_PASSIVE , // 성공했는지의 여부를 떠나 누군가가 활성화 시켜야 움직인다.
};
enum LF_EXECUTE_POLICY
{
LFEXE_BASE , // 기본 핸들러만 실행한다.
LFEXE_REDIRECT , // 재설정한 핸들러만 실행한다.
LFEXE_BASE_N_REDIRECT , // 기본 핸들러 실행 후 재설정한 핸들러를 실행시킨다.
LFEXE_REDIRECT_N_BASE , // 재설정한 핸들러를 실행 후 기본 핸들러를 실행시킨다.
LFEXE_NO_ACTION , // 핸들러 정의되지 않았다. 문제 발생한디야~
};
//////////////////////////////////////////////////////////////////////////
// LogicFlow Groups
enum LF_GROUP_DEFINE
{
LFG_CONNECTION ,
LFG_ZONE ,
LFG_MOVE ,
LFG_BATTLE ,
LFG_AI ,
LFG_CHAT ,
LFG_MAX ,
};