public AdapterResultType Dispatch(Session s, string arg) { AdapterResultType result = AdapterResultType.Progress; switch (state) { case AuthPromptState.Ready: if (arg == "손님") { s.Send("만드실 계정을 입력하세요 : "); state = AuthPromptState.CreateAccount; } else { s.Send("비밀번호를 입력하세요 : "); cmd.Add(state, arg); state = AuthPromptState.Password; } break; case AuthPromptState.CreateAccount: cmd.Add(state, arg); s.Send("비밀번호를 입력하세요: "); state = AuthPromptState.MakePassword; break; case AuthPromptState.MakePassword: cmd.Add(state, arg); s.Send("비밀번호를 다시 입력하세요: "); state = AuthPromptState.MakePassword2; break; case AuthPromptState.MakePassword2: cmd.Add(state, arg); state = AuthPromptState.End; CreateAccount(s); break; case AuthPromptState.Password: cmd.Add(state, arg); state = AuthPromptState.End; if (Login(s)) { result = AdapterResultType.Next; } break; } return(result); }
private void SessionPacket(Session s, string arg) { IPrompt prompt = (IPrompt)s.tag; AdapterResultType result = prompt.Dispatch(s, arg); if (result == AdapterResultType.Next) { switch (GetPromptType(prompt)) { case PromptType.Auth: s.tag = new GamePrompt(owner, zone, s); break; case PromptType.Game: break; } } }