public void StopListen(bool terminate = false) { if (terminate) { NetworkClientEventArgs args = new NetworkClientEventArgs(); args.CState = NetworkClientEventArgs.Callback.NETWORK_CLIENT_STOP; OnEvent(args); } base.StopListen(); }
void CryptoKeyResult(Socket client, byte[] pMsg) { _cryptyKeyInformLocl = BinaryStructConverter.FromByteArray <_crypty_key_inform_locl>(pMsg); NetworkClientEventArgs args = new NetworkClientEventArgs(); args.AccountSerial = 0; args.Servers = null; args.DefaultSet = new Default_Set(); args.SConnection = client; args.CState = NetworkClientEventArgs.Callback.CRYPTO_KEY_INFORM; OnEvent(args); }
void AfterLogin(Socket client, byte[] pMsg) { _login_account_result_locl loginAccountResultLocl = BinaryStructConverter.FromByteArray <_login_account_result_locl>(pMsg); // Fill in default set // _defaulSet.account_serial = loginAccountResultLocl.dwAccountSerial; _defaulSet.is_premium = loginAccountResultLocl.dwBillingType > 1 ? 0 : (uint)1; // EventArgs for callback NetworkClientEventArgs args = new NetworkClientEventArgs(); args.AccountSerial = loginAccountResultLocl.dwAccountSerial; args.Servers = null; args.DefaultSet = _defaulSet; args.SConnection = client; switch (loginAccountResultLocl.byRetCode) { case 0x00: // OK args.CState = NetworkClientEventArgs.Callback.NULL; WorldListRequest(client); break; case 48: // Server CLOSE args.CState = NetworkClientEventArgs.Callback.LOGIN_ACCOUNT_SERVER_CLOSED; break; case 0x05: // Account allready in game args.CState = NetworkClientEventArgs.Callback.LOGIN_ACCOUNT_ALREADY_IN_GAME; break; case 0x06: // Login Wrong args.CState = NetworkClientEventArgs.Callback.LOGIN_ACCOUNT_WRONG_LOGIN; break; case 0x07: // PW Wrong args.CState = NetworkClientEventArgs.Callback.LOGIN_ACCOUNT_WRONG_PW; break; case 0x28: // Account BLOCK args.CState = NetworkClientEventArgs.Callback.LOGIN_ACCOUNT_BANNED; args.ZBlockReason = loginAccountResultLocl.uszBlockReason; StopListen(true); break; default: args.CState = NetworkClientEventArgs.Callback.NULL; break; } OnEvent(args); }
private void SelectWorldResult(Socket client, byte[] pMsg) { _select_world_result_locl selectWorldResult = BinaryStructConverter.FromByteArray <_select_world_result_locl>(pMsg); if (selectWorldResult.byRetCode == 0) { // Fill in last data to defaultSet var serverCfg = LauncherConfig.GetInstance.ServerConfig; if (serverCfg.OverrideServerAddress) { _defaulSet.world_ipv4 = (uint)IPAddress.Parse(serverCfg.ServerAddress.Split(':')[0]).Address; _defaulSet.world_port = ushort.Parse(serverCfg.ServerAddress.Split(':')[1]); } else { _defaulSet.world_ipv4 = selectWorldResult.dwWorldGateIP; _defaulSet.world_port = selectWorldResult.wWorldGatePort; } _defaulSet.world_master_key = new uint[4]; for (int i = 0; i < 4; i++) { _defaulSet.world_master_key[i] = selectWorldResult.dwWorldMasterKey[i]; } _defaulSet.allow_alt_tab = selectWorldResult.bAllowAltTab; _defaulSet.reserved = 0; var nationCfg = LauncherConfig.GetInstance.NationalConfig; if (nationCfg.OverrideNationalCode) { _defaulSet.nation_code = (ushort)nationCfg.NationCode; } else { _defaulSet.nation_code = (ushort)e_nation_code.ru_ru; } StopListen(true); NetworkClientEventArgs args = new NetworkClientEventArgs(); args.Servers = _serverList; args.DefaultSet = _defaulSet; args.CState = NetworkClientEventArgs.Callback.SERVER_SESSION_RESULT; args.SConnection = client; OnEvent(args); } }
private void WorldListInform(Socket client, byte[] pMsg) { _world_user_inform_locl worldUserInform = BinaryStructConverter.FromByteArray <_world_user_inform_locl>(pMsg); for (int i = 0; i < worldUserInform.byServiceWorldNum; i++) { ServerState state = _serverList[i]; state.i_ServerLoad = worldUserInform.wUserNum[i]; } NetworkClientEventArgs args = new NetworkClientEventArgs(); args.Servers = _serverList; args.DefaultSet = _defaulSet; args.CState = NetworkClientEventArgs.Callback.SERVER_LIST_INFORM; args.SConnection = client; OnEvent(args); }
protected virtual void OnEvent(NetworkClientEventArgs e) { ClientEvents?.Invoke(this, e); }