void UIPlayerItem::GetTextParamValue(game_PlayerState const * ps, shared_str const & param_name, buffer_vector<char> & dest) { VERIFY(ps); if (param_name.equal("mp_name")) { strcpy_s(dest.begin(), dest.size(), ps->name); } else if (param_name.equal("mp_frags")) { sprintf_s(dest.begin(), dest.size(), "%d", ps->m_iRivalKills - ps->m_iSelfKills); } else if (param_name.equal("mp_deaths")) { sprintf_s(dest.begin(), dest.size(), "%d", ps->m_iDeaths); } else if (param_name.equal("mp_artefacts")) { sprintf_s(dest.begin(), dest.size(), "%d", ps->af_count); } else if (param_name.equal("mp_spots")) { sprintf_s(dest.begin(), dest.size(), "%d", m_checkPoints); }else if (param_name.equal("mp_status")) { CStringTable st; if (ps->testFlag(GAME_PLAYER_FLAG_READY)) strcpy_s(dest.begin(), dest.size(), st.translate("st_mp_ready").c_str()); } else if (param_name.equal("mp_ping")) { sprintf_s(dest.begin(), dest.size(), "%d", ps->ping); } }
std::string CWorldFile::areaName(const CUniqueID& assetId, CPakFile* pak) { std::vector<SWorldArea>::iterator iter = std::find_if(m_areas.begin(), m_areas.end(), [&assetId](const SWorldArea r)->bool{return r.mreaID == assetId; }); if (iter == m_areas.end()) return std::string(); SWorldArea area = (SWorldArea)(*iter); if (area.nameID != CUniqueID::InvalidAsset) { CStringTable* table; if (pak != nullptr) table = dynamic_cast<CStringTable*>(CResourceManager::instance()->loadResourceFromPak(pak, area.nameID, "STRG")); else table = dynamic_cast<CStringTable*>(CResourceManager::instance()->loadResource(area.nameID, "STRG")); if (table) { std::string ret = table->string(); table->destroy(); return ret; } } if (area.internalName != std::string()) return std::string("!!") + area.internalName; return std::string(); }
bool CMimeParser::ProcessMultipart(CString RawData, const CString& Boundary, CVectorTable<CStringTable>& Fields) { //cout << "expected boundary: [" << "--" + Boundary << "]" << endl; CString OneLine; RawData.ExtractLine(&OneLine); //cout << " found boundary: [" << OneLine << "]" << endl; CString PrefixedBoundary; while (OneLine.GetLength()) { //cout << OneLine << endl; PrefixedBoundary = g_strDashDash; PrefixedBoundary.Append(Boundary); if (OneLine == PrefixedBoundary) { CStringTable Table; CString Name, Value; RawData.ExtractLine(&OneLine); while (OneLine.GetLength()) { if (ParseLine(OneLine, Name, Value, Table)) { //Fields.Add(Name, Table); // _L_DEBUG(3, cout << "---------------------" << endl); // _L_DEBUG(3, cout << "Content disposition: " << Table.GetValue("Content-Disposition") << endl); // _L_DEBUG(3, cout << " Name: " << Table.GetValue("name") << endl); // _L_DEBUG(3, cout << " Content type: " << Table.GetValue("Content-type") << endl); // _L_DEBUG(3, cout << " Filename: " << Table.GetValue("Filename") << endl); } else return false; RawData.ExtractLine(&OneLine); } int NextBoundaryPosition = RawData.Pos(PrefixedBoundary); if (NextBoundaryPosition == -1) NextBoundaryPosition = RawData.GetLength(); Table.Add(g_strValue, CString(RawData.GetBuffer(), NextBoundaryPosition-2)); Fields.Add(Table.GetValue(g_strName), Table); RawData.Delete(0, NextBoundaryPosition); // _L_DEBUG(3, cout << " Value: " << Table.GetValue(g_strValue) << endl); RawData.ExtractLine(&OneLine); } else return false; } return true; }
void CUIGameCTA::ShowBuySpawn(s32 spawn_cost) { VERIFY (m_pBuySpawnMsgBox); VERIFY (Game().local_player); if (m_pBuySpawnMsgBox->IsShown()) return; CStringTable st; LPCSTR format_str = st.translate("mp_press_yes2pay").c_str(); VERIFY(format_str); size_t pay_frm_size = xr_strlen(format_str)*sizeof(char) + 64; PSTR pay_frm_str = static_cast<char*>(_alloca(pay_frm_size)); xr_sprintf( pay_frm_str, pay_frm_size, format_str, abs(Game().local_player->money_for_round), abs(spawn_cost) ); m_pBuySpawnMsgBox->SetText(pay_frm_str); m_pBuySpawnMsgBox->ShowDialog(true); }
bool game_cl_ArtefactHunt::NeedToSendReady_Spectator(int key, game_PlayerState* ps) { CStringTable st; bool res = ( GAME_PHASE_PENDING == Phase() && kWPN_FIRE == key) || ( (kJUMP == key) && GAME_PHASE_INPROGRESS==Phase() && CanBeReady()); if ((Phase() == GAME_PHASE_INPROGRESS) && (kJUMP==key) && m_cl_dwWarmUp_Time) { return res; } if ((GAME_PHASE_INPROGRESS==Phase()) && (kJUMP==key) && (iReinforcementTime!=0) && (!m_game_ui->m_pBuySpawnMsgBox->IsShown()) && local_player && (local_player->money_for_round+m_iSpawn_Cost)>=0) { string1024 BuySpawnText; xr_sprintf (BuySpawnText, *st.translate("mp_press_yes2pay"), abs(local_player->money_for_round), abs(m_iSpawn_Cost)); m_game_ui->m_pBuySpawnMsgBox->SetText(BuySpawnText); if (m_bTeamSelected && m_bSkinSelected) m_game_ui->m_pBuySpawnMsgBox->ShowDialog(true); return false; }; return res; }
void CHttpRequest::SetRField(const CString& Name, const CString& Value) { CStringTable Table = m_RFields.FindElement(Name); // Table.Set(g_strName, Name); // Table.Set(g_strValue, Value); Table.Set(Name, Value); m_RFields.Set(Name, Table); }
BOOL CDialogOptionLanguage::CheckSetting() { // 取出当前选中的语言,判断该语言是否可用 int iItemNum = m_listLanguages.GetItemCount(); for (int iItemLoop = 0; iItemLoop < iItemNum; iItemLoop++) { if (TRUE == m_listLanguages.GetCheck(iItemLoop)) { if ("*" == m_listLanguages.GetItemText(iItemLoop, 2)) { m_strLanguageId = m_listLanguages.GetItemText(iItemLoop, 0); } else { CStringTable *pst = &(m_pdlgMain->m_str); MessageBox(pst->GetStr(OPTION_LANGUAGE_CHECK_FAIL_UNAVAILABLE), pst->GetStr(OPTION_CHECK_FAIL_CAPTION), MB_ICONSTOP); return FALSE; } break; } } return TRUE; }
void CDialogOptionLanguage::LoadLanguageStrings() { CStringTable *pst; pst = &(m_pdlgMain->m_str); SetDlgItemText(IDC_STATIC_LANGUAGE_SELECT, pst->GetStr(OPTION_LANGUAGE_SELECT)); SetDlgItemText(IDC_STATIC_TIPS, pst->GetStr(OPTION_LANGUAGE_TIPS)); Invalidate(TRUE); }
void game_cl_TeamDeathmatch::shedule_Update (u32 dt) { CStringTable st; string512 msg; if(!m_game_ui && HUD().GetUI() ) m_game_ui = smart_cast<CUIGameTDM*>( HUD().GetUI()->UIGame() ); inherited::shedule_Update(dt); if (!m_game_ui) return; //--------------------------------------------------------- if (m_game_ui->m_pUITeamSelectWnd && m_game_ui->m_pUITeamSelectWnd->IsShown() && !CanCallTeamSelectMenu()) StartStopMenu(m_game_ui->m_pUITeamSelectWnd,true); //--------------------------------------------------------- switch (m_phase) { case GAME_PHASE_TEAM1_SCORES: { sprintf_s(msg, /*team %s wins*/ *st.translate("mp_team_wins"), CTeamInfo::GetTeam_name(1)); m_game_ui->SetRoundResultCaption(msg); SetScore(); }break; case GAME_PHASE_TEAM2_SCORES: { sprintf_s(msg, /*team %s wins*/ *st.translate("mp_team_wins"), CTeamInfo::GetTeam_name(2)); m_game_ui->SetRoundResultCaption(msg); SetScore(); }break; case GAME_PHASE_INPROGRESS: { if (local_player && !local_player->IsSkip()) { if (Level().CurrentEntity() && Level().CurrentEntity()->CLS_ID == CLSID_SPECTATOR) { if (!(pCurBuyMenu && pCurBuyMenu->IsShown()) && !(pCurSkinMenu && pCurSkinMenu->IsShown()) && !(m_game_ui->m_pMapDesc && m_game_ui->m_pMapDesc->IsShown()) && (HUD().GetUI() && HUD().GetUI()->GameIndicatorsShown()) ) { if (!m_bTeamSelected) m_game_ui->SetPressJumpMsgCaption("mp_press_jump2select_team"); }; }; SetScore(); }; }break; default: { }break; }; }
void game_cl_TeamDeathmatch::TranslateGameMessage (u32 msg, NET_Packet& P) { CStringTable st; string512 Text; // LPSTR Color_Teams[3] = {"%c[255,255,255,255]", "%c[255,64,255,64]", "%c[255,64,64,255]"}; char Color_Main[] = "%c[255,192,192,192]"; // LPSTR TeamsNames[3] = {"Zero Team", "Team Green", "Team Blue"}; switch(msg) { case GAME_EVENT_PLAYER_JOIN_TEAM: //tdm { string64 PlayerName; P.r_stringZ (PlayerName); u16 Team; P.r_u16 (Team); sprintf_s(Text, "%s%s %s%s %s%s", "",//no color PlayerName, Color_Main, *st.translate("mp_joined"), CTeamInfo::GetTeam_color_tag(int(Team)), CTeamInfo::GetTeam_name(int(Team))); CommonMessageOut(Text); //--------------------------------------- Msg("%s %s %s", PlayerName, *st.translate("mp_joined"), CTeamInfo::GetTeam_name(int(Team))); }break; case PLAYER_CHANGE_TEAM://tdm { u16 PlayerID, OldTeam, NewTeam; P.r_u16 (PlayerID); P.r_u16 (OldTeam); P.r_u16 (NewTeam); game_PlayerState* pPlayer = GetPlayerByGameID(PlayerID); if (!pPlayer) break; sprintf_s(Text, "%s%s %s%s %s%s", CTeamInfo::GetTeam_color_tag(int(OldTeam)), pPlayer->name, Color_Main, *st.translate("mp_switched_to"), CTeamInfo::GetTeam_color_tag(int(NewTeam)), CTeamInfo::GetTeam_name(int(NewTeam))); CommonMessageOut(Text); //--------------------------------------- Msg("%s *s %s", pPlayer->name, *st.translate("mp_switched_to"), CTeamInfo::GetTeam_name(int(NewTeam))); }break; default: inherited::TranslateGameMessage(msg,P); }; }
void game_cl_GameState::TranslateGameMessage (u32 msg, NET_Packet& P) { CStringTable st; string512 Text; char Color_Main[] = "%c[255,192,192,192]"; LPSTR Color_Teams[3] = {"%c[255,255,240,190]", "%c[255,64,255,64]", "%c[255,64,64,255]"}; switch (msg) { case GAME_EVENT_PLAYER_CONNECTED: { #ifdef BATTLEYE if ( g_pGameLevel && Level().battleye_system.GetTestClient() ) { bool res_battleye = Level().battleye_system.LoadClient(); VERIFY( res_battleye ); } #endif // BATTLEYE string64 PlayerName; P.r_stringZ(PlayerName); sprintf_s(Text, "%s%s %s%s",Color_Teams[0],PlayerName,Color_Main,*st.translate("mp_connected")); CommonMessageOut(Text); //--------------------------------------- Msg("%s connected", PlayerName); }break; case GAME_EVENT_PLAYER_DISCONNECTED: { string64 PlayerName; P.r_stringZ(PlayerName); sprintf_s(Text, "%s%s %s%s",Color_Teams[0],PlayerName,Color_Main,*st.translate("mp_disconnected")); CommonMessageOut(Text); //--------------------------------------- Msg("%s disconnected", PlayerName); }break; case GAME_EVENT_PLAYER_ENTERED_GAME: { string64 PlayerName; P.r_stringZ(PlayerName); sprintf_s(Text, "%s%s %s%s",Color_Teams[0],PlayerName,Color_Main,*st.translate("mp_entered_game")); CommonMessageOut(Text); }break; default: { R_ASSERT2(0,"Unknown Game Message"); }break; }; }
void CVersionInfo::WriteVarInfo(CVersionInfoBuffer & viBuf) { //Check string tables if (m_stringFileInfo.IsEmpty()) return; //Prepare to write VarFileInfo DWORD posVarInfo = viBuf.PadToDWORD(); //Skip size of VarFileInfo for now; viBuf.Pad(sizeof WORD); //Write wValueLength viBuf.WriteWord(0); //Write type viBuf.WriteWord(1); viBuf.WriteString(L"VarFileInfo"); //Save offset of Var structure (Translation) DWORD posTranslation = viBuf.PadToDWORD(); viBuf.Pad(sizeof WORD); //Write size of translation, that is number of string tables * size of DWORD DWORD dwTableCount = m_stringFileInfo.GetStringTableCount(); viBuf.WriteWord(LOWORD(dwTableCount * sizeof DWORD)); //Write type viBuf.WriteWord(0); //Write key (Translation) viBuf.WriteString(L"Translation"); //Pad for value viBuf.PadToDWORD(); //Collect all id's in one DWORD array DWORD *pTranslationBuf = (DWORD*)_alloca(dwTableCount * sizeof DWORD); DWORD *pTranslation = pTranslationBuf; POSITION posTable = m_stringFileInfo.GetFirstStringTablePosition(); while (posTable) { CStringTable * pStringTable = m_stringFileInfo.GetNextStringTable(posTable); TCHAR* pchEnding = NULL; DWORD dwKey = _tcstol(pStringTable->GetKey(),&pchEnding, 16); *pTranslation = (LOWORD(dwKey) << 16) | (HIWORD(dwKey)); pTranslation++; } viBuf.Write(pTranslationBuf, dwTableCount * sizeof DWORD); //Write structure sizes viBuf.WriteStructSize(posTranslation); viBuf.WriteStructSize(posVarInfo); }
void CHttpRequest::MakeRequestString(const float HttpVersion, CString * pRequest) { pRequest->SetSize(128 + m_HttpFields.GetSize() * 32); (* pRequest) = CHttpIo::HTTPIoTypeToStr(m_RequestMethod) + ' '; CString HostString = m_Url.GetHost(); int DefaultPortValue = 80; if (m_Url.GetScheme().Same(g_strProto_HTTPS)) DefaultPortValue = 443; if (m_Url.GetPortValue() != DefaultPortValue) { HostString.Append(':'); HostString.Append(m_Url.GetPort()); } if (m_Proxy.GetValid() || (HttpVersion < 1)) { pRequest->Append(m_Url.GetScheme()); pRequest->Append(g_strColSlashSlash); pRequest->Append(HostString); } CString UrlPath = m_Url.GetUrlPath(); CHtmlParser::TranslateQuotes(UrlPath); pRequest->Append(CUrl::Escape(UrlPath, false)); if (HttpVersion >= 1.0) { pRequest->Append(g_strHttpSpaceOneZero); CStringTable Table; Table.Set(g_strName, g_strHttpHost); Table.Set(g_strValue, HostString); m_HttpFields.Set(g_strHttpHost, Table); } else m_HttpFields.Remove(g_strHttpHost); pRequest->Append(g_strCrLf); for (register int i=0;i<(int) m_HttpFields.GetSize();i++) { pRequest->Append(m_HttpFields.GetKeyAt(i)); pRequest->Append(g_strColSpace); pRequest->Append(m_HttpFields[i].GetValue(g_strValue)); for (register int j=0;j<(int)m_HttpFields[i].GetSize();j++) { if ((!m_HttpFields[i].GetNameAt(j).Same(g_strName)) && (!m_HttpFields[i].GetNameAt(j).Same(g_strValue))) { pRequest->Append(g_strSemiColSpace); pRequest->Append(m_HttpFields[i].GetNameAt(j)); pRequest->Append('='); pRequest->Append(m_HttpFields[i].GetValueAt(j)); } } pRequest->Append(g_strCrLf); } pRequest->Append(g_strCrLf); }
void game_sv_GameState::MapRotation_ListMaps () { if (m_pMapRotation_List.empty()) { Msg ("- Currently there are no any maps in list."); return; } CStringTable st; Msg("- ----------- Maps ---------------"); for (u32 i=0; i<m_pMapRotation_List.size(); i++) { SMapRot& R = m_pMapRotation_List[i]; if (i==0) Msg("~ %d. %s (%s) (current)", i+1, st.translate(R.map_name).c_str(), R.map_name.c_str()); else Msg(" %d. %s (%s)", i+1, st.translate(R.map_name).c_str(), R.map_name.c_str()); } Msg("- --------------------------------"); };
void CSpectator::GetSpectatorString (string1024& pStr) { if (!pStr) return; if (GameID() == GAME_SINGLE) return; xr_string SpectatorMsg; CStringTable st; switch (cam_active) { case eacFreeFly: { SpectatorMsg = *st.translate("mp_spectator"); SpectatorMsg += " "; SpectatorMsg += *st.translate("mp_free_fly"); }break; case eacFirstEye: { SpectatorMsg = *st.translate("mp_spectator"); SpectatorMsg += " "; SpectatorMsg += *st.translate("mp_first_eye"); SpectatorMsg += " "; // SpectatorMsg = "SPECTATOR (First-Eye): "; SpectatorMsg += m_pActorToLookAt->Name(); }break; case eacFreeLook: { SpectatorMsg = *st.translate("mp_spectator"); SpectatorMsg += " "; SpectatorMsg += *st.translate("mp_free_look"); SpectatorMsg += " "; // SpectatorMsg = "SPECTATOR (Free-Look):"; SpectatorMsg += m_pActorToLookAt->Name(); }break; case eacLookAt: { SpectatorMsg = *st.translate("mp_spectator"); SpectatorMsg += " "; SpectatorMsg += *st.translate("mp_look_at"); SpectatorMsg += " "; // SpectatorMsg = "SPECTATOR (Look-At):"; SpectatorMsg += m_pActorToLookAt->Name(); }break; }; strcpy_s(pStr, SpectatorMsg.c_str()); };
void CMainMenu::OnSessionTerminate (LPCSTR reason) { if ( m_NeedErrDialog == SessionTerminate && (Device.dwTimeGlobal - m_start_time) < 8000 ) return; m_start_time = Device.dwTimeGlobal; CStringTable st; LPCSTR str = st.translate("ui_st_kicked_by_server").c_str(); LPSTR text; if ( reason && xr_strlen(reason) && reason[0] == '@' ) { STRCONCAT( text, reason + 1 ); } else { STRCONCAT( text, str, " ", reason ); } m_pMB_ErrDlgs[SessionTerminate]->SetText(st.translate(text).c_str()); SetErrorDialog(CMainMenu::SessionTerminate); }
void game_cl_ArtefactHunt::TranslateGameMessage (u32 msg, NET_Packet& P) { CStringTable st; string512 Text; string512 tmp; // LPSTR Color_Teams[3] = {"%c[255,255,255,255]", "%c[255,64,255,64]", "%c[255,64,64,255]"}; char Color_Main[] = "%c[255,192,192,192]"; char Color_Artefact[] = "%c[255,255,255,0]"; // LPSTR TeamsNames[3] = {"Zero Team", "Team Green", "Team Blue"}; switch(msg) { //-------------------UI MESSAGES case GAME_EVENT_ARTEFACT_TAKEN: //ahunt { u16 PlayerID, Team; P.r_u16 (PlayerID); P.r_u16 (Team); game_PlayerState* pPlayer = GetPlayerByGameID(PlayerID); if (!pPlayer) break; if (m_reward_generator) m_reward_generator->OnPlayerTakeArtefact(pPlayer); xr_sprintf(tmp, "%s%s", "%s%s %s", *st.translate("mp_has_tak_art")); xr_sprintf(Text, tmp, CTeamInfo::GetTeam_color_tag(int(Team)), pPlayer->getName(), Color_Main, Color_Artefact); if(CurrentGameUI()) CurrentGameUI()->CommonMessageOut(Text); if (!Game().local_player) break; if (Game().local_player->GameID == PlayerID) PlaySndMessage(ID_AF_TEAM1_TAKE + ModifyTeam(Game().local_player->team)); else if (Game().local_player->team == Team) PlaySndMessage(ID_AF_TEAM1_TAKE_R + ModifyTeam(Game().local_player->team)); else PlaySndMessage(ID_AF_TEAM1_TAKE_ENEMY + ModifyTeam(Game().local_player->team)); }break; case GAME_EVENT_ARTEFACT_DROPPED: //ahunt { u16 PlayerID, Team; P.r_u16 (PlayerID); P.r_u16 (Team); game_PlayerState* pPlayer = GetPlayerByGameID(PlayerID); if (!pPlayer) break; if (m_reward_generator) m_reward_generator->OnPlayerDropArtefact(pPlayer); xr_sprintf(tmp, "%s%s", "%s%s %s", *st.translate("mp_has_drop_art")); xr_sprintf(Text, tmp, CTeamInfo::GetTeam_color_tag(int(Team)), pPlayer->getName(), Color_Main, Color_Artefact); if(CurrentGameUI()) CurrentGameUI()->CommonMessageOut(Text); // pMessageSounds[0].play_at_pos(NULL, Fvector().set(0,0,0), sm_2D, 0); PlaySndMessage(ID_AF_LOST); }break; case GAME_EVENT_ARTEFACT_ONBASE: //ahunt { u16 PlayerID, Team; P.r_u16 (PlayerID); P.r_u16 (Team); game_PlayerState* pPlayer = GetPlayerByGameID(PlayerID); if (!pPlayer) break; if (m_reward_generator) m_reward_generator->OnPlayerBringArtefact(pPlayer); xr_sprintf(tmp, "%s%s", "%s%s %s", *st.translate("mp_scores")); xr_sprintf(Text, tmp, CTeamInfo::GetTeam_color_tag(int(Team)), CTeamInfo::GetTeam_name(int(Team)), Color_Main); if(CurrentGameUI()) CurrentGameUI()->CommonMessageOut(Text); if (!Game().local_player) break; if (Game().local_player->GameID == PlayerID) PlaySndMessage(ID_AF_TEAM1_ONBASE + ModifyTeam(Game().local_player->team)); else if (Game().local_player->team == Team) PlaySndMessage(ID_AF_TEAM1_ONBASE_R + ModifyTeam(Game().local_player->team)); else PlaySndMessage(ID_AF_TEAM1_ONBASE_ENEMY + ModifyTeam(Game().local_player->team)); }break; case GAME_EVENT_ARTEFACT_SPAWNED: //ahunt { xr_sprintf(Text, "%s%s", Color_Main, *st.translate("mp_art_spowned")); if(CurrentGameUI()) CurrentGameUI()->CommonMessageOut(Text); if (m_reward_generator) m_reward_generator->OnArtefactSpawned(); PlaySndMessage(ID_NEW_AF); }break; case GAME_EVENT_ARTEFACT_DESTROYED: //ahunt { xr_sprintf(Text, "%s%s", Color_Main, *st.translate("mp_art_destroyed")); u16 ArtefactID = P.r_u16(); //------------------------------------------- CObject* pObj = Level().Objects.net_Find(ArtefactID); if (pObj && xr_strlen(m_Eff_Af_Disappear)) PlayParticleEffect(m_Eff_Af_Disappear.c_str(), pObj->Position()); //------------------------------------------- if(CurrentGameUI()) CurrentGameUI()->CommonMessageOut(Text); }break; default: inherited::TranslateGameMessage(msg,P); } }
void CGameSpy_Browser::ReadServerInfo (ServerInfo* pServerInfo, void* pServer) { CStringTable st; if (!pServer || !pServerInfo) return; sprintf_s(pServerInfo->m_Address, "%s:%d", xrGS_SBServerGetPublicAddress(pServer), xrGS_SBServerGetPublicQueryPort(pServer)); sprintf_s(pServerInfo->m_HostName, "%s", xrGS_SBServerGetPublicAddress(pServer)); sprintf_s(pServerInfo->m_ServerName, "%s", xrGS_SBServerGetStringValue(pServer, m_pQR2->xrGS_RegisteredKey(HOSTNAME_KEY), pServerInfo->m_HostName)); sprintf_s(pServerInfo->m_SessionName, "%s", xrGS_SBServerGetStringValue(pServer, m_pQR2->xrGS_RegisteredKey(MAPNAME_KEY), "Unknown")); sprintf_s(pServerInfo->m_ServerGameType, "%s", xrGS_SBServerGetStringValue(pServer, m_pQR2->xrGS_RegisteredKey(GAMETYPE_KEY), "Unknown")); pServerInfo->m_bPassword = xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(PASSWORD_KEY), SBFalse) == SBTrue; pServerInfo->m_bUserPass = xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(G_USER_PASSWORD_KEY), SBFalse) == SBTrue; #ifdef BATTLEYE pServerInfo->m_bBattlEye = xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(G_BATTLEYE_KEY), SBFalse) == SBTrue; #endif // BATTLEYE pServerInfo->m_Ping = (s16)(xrGS_SBServerGetPing(pServer) & 0xffff); pServerInfo->m_ServerNumPlayers = (s16)xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(NUMPLAYERS_KEY), 0); pServerInfo->m_ServerMaxPlayers = (s16)xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(MAXPLAYERS_KEY), 32); pServerInfo->m_ServerNumTeams = (s16)xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(NUMTEAMS_KEY), 0); pServerInfo->m_Port = (s16)xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(HOSTPORT_KEY), 0); pServerInfo->m_HPort = (s16)xrGS_SBServerGetPublicQueryPort(pServer); pServerInfo->m_bDedicated = (xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(DEDICATED_KEY), SBFalse)) == SBTrue; pServerInfo->m_GameType = (u8)xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(GAMETYPE_NAME_KEY), 0); if (pServerInfo->m_GameType == 0) { if (!xr_strcmp(pServerInfo->m_ServerGameType, "deathmatch")) pServerInfo->m_GameType = GAME_DEATHMATCH; else if (!xr_strcmp(pServerInfo->m_ServerGameType, "teamdeathmatch")) pServerInfo->m_GameType = GAME_TEAMDEATHMATCH; else if (!xr_strcmp(pServerInfo->m_ServerGameType, "artefacthunt")) pServerInfo->m_GameType = GAME_ARTEFACTHUNT; } sprintf_s(pServerInfo->m_ServerVersion, "%s", xrGS_SBServerGetStringValue(pServer, m_pQR2->xrGS_RegisteredKey(GAMEVER_KEY), "--")); //--------- Read Game Infos ---------------------------// pServerInfo->m_aInfos.clear(); pServerInfo->m_aPlayers.clear(); pServerInfo->m_aTeams.clear(); //-------------------------------------------------------// if (xrGS_SBServerHasFullKeys(pServer) == SBFalse) return; // pServerInfo->m_aInfos.push_back(GameInfo("Version:", pServerInfo->m_ServerVersion)); pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_servername"), pServerInfo->m_ServerName)); pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_version"), pServerInfo->m_ServerVersion)); #ifdef BATTLEYE ADD_BOOL_INFO(pServerInfo, pServer, "BattlEye", G_BATTLEYE_KEY); #endif // BATTLEYE ADD_INT_INFO_N (pServerInfo, pServer, 1, "Max ping", "", G_MAX_PING_KEY); ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_maprotation"), G_MAP_ROTATION_KEY); pServerInfo->m_aInfos.push_back( GameInfo(*st.translate("mp_si_voting"), (xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(G_VOTING_ENABLED_KEY), SBFalse) == SBTrue) ? *st.translate("mp_si_enabled") : *st.translate("mp_si_disabled"))); // ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_voting"), G_VOTING_ENABLED_KEY); //----------------------------------------------------------------------- pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_spectatormodes"), "")); int SpectrModes = xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(G_SPECTATOR_MODES_KEY), 0); pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_free_fly"), ((SpectrModes & (1<<CSpectator::eacFreeFly )) != 0) ? *st.translate("mp_si_yes") : *st.translate("mp_si_no"))); pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_first_eye"), ((SpectrModes & (1<<CSpectator::eacFirstEye )) != 0) ? *st.translate("mp_si_yes") : *st.translate("mp_si_no"))); pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_look_at"), ((SpectrModes & (1<<CSpectator::eacLookAt )) != 0) ? *st.translate("mp_si_yes") : *st.translate("mp_si_no"))); pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_free_look"), ((SpectrModes & (1<<CSpectator::eacFreeLook )) != 0) ? *st.translate("mp_si_yes") : *st.translate("mp_si_no"))); if (pServerInfo->m_GameType != GAME_DEATHMATCH) pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_team_only"), ((SpectrModes & (1<<CSpectator::eacMaxCam )) != 0) ? *st.translate("mp_si_yes") : *st.translate("mp_si_no"))); //----------------------------------------------------------------------- if (pServerInfo->m_GameType == GAME_DEATHMATCH || pServerInfo->m_GameType == GAME_TEAMDEATHMATCH) { ADD_INT_INFO_N (pServerInfo, pServer, 1, *st.translate("mp_si_fraglimit"), "", G_FRAG_LIMIT_KEY); } ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_time_limit"), "%.0f %s",*st.translate("mp_si_min"), G_TIME_LIMIT_KEY); if (xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(G_DAMAGE_BLOCK_TIME_KEY), 0) != 0) { pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_invinsibility"), "")); ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_invinsibility_indicators"), G_DAMAGE_BLOCK_INDICATOR_KEY); ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_invinsibility_time"), "%.f %s",*st.translate("mp_si_sec"), G_DAMAGE_BLOCK_TIME_KEY); } ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_anomalies"), G_ANOMALIES_ENABLED_KEY); if ((xrGS_SBServerGetBoolValue(pServer, m_pQR2->xrGS_RegisteredKey(G_ANOMALIES_ENABLED_KEY), SBFalse)) == SBTrue) { if (xrGS_SBServerGetIntValue(pServer, m_pQR2->xrGS_RegisteredKey(G_ANOMALIES_TIME_KEY),0) != 0) { ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_anomalies_period"), "%.1f %s",*st.translate("mp_si_min"), G_ANOMALIES_TIME_KEY); } else pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_anomalies_period"), *st.translate("mp_si_infinite"))); } ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_forcerespawn"), "%.f %s",*st.translate("mp_si_sec"), G_FORCE_RESPAWN_KEY); ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_warmuptime"), "%.0f %s",*st.translate("mp_si_sec"), G_WARM_UP_TIME_KEY); if (pServerInfo->m_GameType == GAME_TEAMDEATHMATCH || pServerInfo->m_GameType == GAME_ARTEFACTHUNT) { ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_autoteam_balance"), G_AUTO_TEAM_BALANCE_KEY); ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_autoteam_swap"), G_AUTO_TEAM_SWAP_KEY); ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_friendly_indicators"), G_FRIENDLY_INDICATORS_KEY); ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_friendly_names"), G_FRIENDLY_NAMES_KEY); ADD_INT_INFO_N (pServerInfo, pServer, 1/100.0f, *st.translate("mp_si_friendly_fire"), " %%", G_FRIENDLY_FIRE_KEY); }; if (pServerInfo->m_GameType == GAME_ARTEFACTHUNT) { pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_artefacts"), "")); ADD_INT_INFO(pServerInfo, pServer, *st.translate("mp_si_afcount"), G_ARTEFACTS_COUNT_KEY ); ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_afstaytime"), "%.2f %s",*st.translate("mp_si_min"), G_ARTEFACT_STAY_TIME_KEY); ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_afrespawntime"), "%.0f %s",*st.translate("mp_si_sec"), G_ARTEFACT_RESPAWN_TIME_KEY); int Reinforcement = atoi(xrGS_SBServerGetStringValue(pServer, m_pQR2->xrGS_RegisteredKey(G_REINFORCEMENT_KEY), "0")); switch (Reinforcement) { case -1: pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_players_respawn"), *st.translate("mp_si_artefact_captured"))); break; case 0: pServerInfo->m_aInfos.push_back(GameInfo(*st.translate("mp_si_players_respawn"), *st.translate("mp_si_any_time"))); break; default: ADD_TIME_INFO(pServerInfo, pServer, 1.0f, *st.translate("mp_si_players_respawn"), "%.0f %s",*st.translate("mp_si_sec"), G_REINFORCEMENT_KEY); break; } ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_shielded_bases"), G_SHIELDED_BASES_KEY ); ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_return_players"), G_RETURN_PLAYERS_KEY ); ADD_BOOL_INFO(pServerInfo, pServer, *st.translate("mp_si_afbearer_cant_sprint"), G_BEARER_CANT_SPRINT_KEY); } //--------- Read Players Info -------------------------// for (int i=0; i<pServerInfo->m_ServerNumPlayers; i++) { PlayerInfo PInfo; sprintf_s(PInfo.Name, "%s", xrGS_SBServerGetPlayerStringValue(pServer, i, "player", "Unknown")); PInfo.Frags = s16(xrGS_SBServerGetPlayerIntValue(pServer, i, "score", 0)); PInfo.Deaths = u16(xrGS_SBServerGetPlayerIntValue(pServer, i, "deaths", 0)); PInfo.Rank = u8(xrGS_SBServerGetPlayerIntValue(pServer, i, "skill", 0)); PInfo.Team = u8(xrGS_SBServerGetPlayerIntValue(pServer, i, "team", 0)); PInfo.Spectator = (xrGS_SBServerGetPlayerIntValue(pServer, i, "spectator", 1)) != 0; PInfo.Artefacts = u8(xrGS_SBServerGetPlayerIntValue(pServer, i, "artefacts", 0)); pServerInfo->m_aPlayers.push_back(PInfo); }; //----------- Read Team Info ---------------------------// if (pServerInfo->m_GameType == GAME_TEAMDEATHMATCH || pServerInfo->m_GameType == GAME_ARTEFACTHUNT) { for (int i=0; i<pServerInfo->m_ServerNumTeams; i++) { TeamInfo TI; TI.Score = u8(xrGS_SBServerGetTeamIntValue(pServer, i, "t_score", 0)); pServerInfo->m_aTeams.push_back(TI); } } };
void CDialogOption::LoadLanguageStrings() { CStringTable *pst = &(m_pdlgMain->m_str); SetWindowText(pst->GetStr(OPTION_CAPTION)); SetDlgItemText(IDC_RADIO_OPTION_TIME, pst->GetStr(OPTION_PAGE_TIME)); SetDlgItemText(IDC_RADIO_OPTION_NOTIFY, pst->GetStr(OPTION_PAGE_NOTIFY)); SetDlgItemText(IDC_RADIO_OPTION_AUTO_AWAY, pst->GetStr(OPTION_PAGE_AUTO_AWAY)); SetDlgItemText(IDC_RADIO_OPTION_LANGUAGE, pst->GetStr(OPTION_PAGE_LANGUAGE)); SetDlgItemText(IDC_RADIO_OPTION_MISC, pst->GetStr(OPTION_PAGE_MISC)); SetDlgItemText(IDC_BUTTON_RESET, pst->GetStr(OPTION_BUTTON_RESET)); SetDlgItemText(IDC_BUTTON_APPLY, pst->GetStr(OPTION_BUTTON_APPLY)); SetDlgItemText(IDC_BUTTON_SAVE, pst->GetStr(OPTION_BUTTON_SAVE)); m_tooltip.UpdateTipText(pst->GetStr(OPTION_BUTTON_RESET_TIP), GetDlgItem(IDC_BUTTON_RESET)); m_tooltip.UpdateTipText(pst->GetStr(OPTION_BUTTON_APPLY_TIP), GetDlgItem(IDC_BUTTON_APPLY)); m_tooltip.UpdateTipText(pst->GetStr(OPTION_BUTTON_SAVE_TIP), GetDlgItem(IDC_BUTTON_SAVE)); Invalidate(TRUE); }
void game_cl_Deathmatch::OnVoteStart(NET_Packet& P) { CStringTable st; inherited::OnVoteStart(P); string1024 Command = ""; string64 Player = ""; P.r_stringZ(Command); P.r_stringZ(Player); m_dwVoteEndTime = Level().timeServer() + P.r_u32(); if(m_game_ui) { string4096 CmdName = ""; string1024 NewCmd; xr_strcpy(NewCmd, Command); string1024 CmdParams[MAX_VOTE_PARAMS] = {"", "", "", "", ""}; sscanf (Command,"%s %s %s %s %s %s", CmdName, CmdParams[0], CmdParams[1], CmdParams[2], CmdParams[3], CmdParams[4]); if (!xr_strcmp(CmdName, "restart")) { xr_sprintf(NewCmd, "%s", *st.translate("mp_restart") ); } else if (!xr_strcmp(CmdName, "restart_fast")) { xr_sprintf(NewCmd, "%s", *st.translate("mp_restart_fast") ); } else if (!xr_strcmp(CmdName, "kick")) { xr_sprintf(NewCmd, "%s %s", *st.translate("mp_kick"), CmdParams[0] ); for (int i=1; i<MAX_VOTE_PARAMS; i++) { if (xr_strlen(CmdParams[i])) { xr_strcat(NewCmd, " "); xr_strcat(NewCmd, CmdParams[i]); } } } else if (!xr_strcmp(CmdName, "ban")) { xr_sprintf(NewCmd, "%s %s", *st.translate("mp_ban"), CmdParams[0] ); for (int i=1; i<MAX_VOTE_PARAMS; i++) { if (xr_strlen(CmdParams[i])) { xr_strcat(NewCmd, " "); xr_strcat(NewCmd, CmdParams[i]); } } } else if (!xr_strcmp(CmdName, "changemap")) { xr_sprintf(NewCmd, "%s %s", *st.translate("mp_change_map"), *st.translate(CmdParams[0]) ); } else if (!xr_strcmp(CmdName, "changeweather")) { xr_sprintf(NewCmd, "%s %s", *st.translate("mp_change_weather"), *st.translate(CmdParams[0]) ); } string1024 VoteStr; xr_sprintf(VoteStr, *st.translate("mp_voting_started"), NewCmd, Player); m_game_ui->SetVoteMessage(VoteStr); m_game_ui->SetVoteTimeResultMsg(""); if (!m_pVoteRespondWindow) m_pVoteRespondWindow = xr_new<CUIVote>(); m_pVoteRespondWindow->SetVoting(VoteStr); }; };
void game_cl_Deathmatch::shedule_Update (u32 dt) { CStringTable st; inherited::shedule_Update(dt); if(g_dedicated_server) return; //fake if(m_game_ui) { m_game_ui->SetTimeMsgCaption (NULL); m_game_ui->SetRoundResultCaption (NULL); m_game_ui->SetSpectatorMsgCaption (NULL); m_game_ui->SetPressJumpMsgCaption (NULL); m_game_ui->SetPressBuyMsgCaption (NULL); m_game_ui->SetForceRespawnTimeCaption(NULL); m_game_ui->SetWarmUpCaption (NULL); }; // if (CurrentGameUI() && CurrentGameUI()->UIMainIngameWnd) // CurrentGameUI()->UIMainIngameWnd->ZoneCounter().SetText(""); switch (Phase()) { case GAME_PHASE_INPROGRESS: { //m_game_ui->ShowPlayersList(false); Check_Invincible_Players(); if (!m_game_ui) break; if (m_s32TimeLimit && m_cl_dwWarmUp_Time == 0) { if (Level().timeServer()<(m_start_time + m_s32TimeLimit)) { u32 lts = Level().timeServer(); u32 Rest = (m_start_time + m_s32TimeLimit) - lts; string64 S; ConvertTime2String(&S, Rest); m_game_ui->SetTimeMsgCaption(S); } else { m_game_ui->SetTimeMsgCaption("00:00:00"); } }; game_PlayerState* lookat_player = Game().lookat_player(); if(local_player && !local_player->IsSkip()) { if (m_bFirstRun) { m_bFirstRun = FALSE; if (!Level().IsDemoPlayStarted() && Level().CurrentEntity()) { VERIFY( m_game_ui ); m_bFirstRun = m_game_ui->ShowServerInfo() ? FALSE : TRUE; } GetActiveVoting(); }; if (lookat_player) { string256 MoneyStr; xr_sprintf(MoneyStr, "%d", lookat_player->money_for_round); m_game_ui->ChangeTotalMoneyIndicator(MoneyStr); } m_game_ui->SetPressJumpMsgCaption(NULL); m_game_ui->SetPressBuyMsgCaption(NULL); if (m_cl_dwWarmUp_Time > Level().timeServer()) { u32 TimeRemains = m_cl_dwWarmUp_Time - Level().timeServer(); string64 S; ConvertTime2String(&S, TimeRemains); string1024 tmpStr = ""; if (TimeRemains > 10000) strconcat(sizeof(tmpStr),tmpStr, *st.translate("mp_time2start"), " ", S); else { if (TimeRemains < 1000) strconcat(sizeof(tmpStr),tmpStr, *st.translate("mp_go"), ""); else { static u32 dwLastTimeRemains = 10; u32 dwCurTimeRemains = TimeRemains/1000; if (dwLastTimeRemains != dwCurTimeRemains) { if (dwCurTimeRemains > 0 && dwCurTimeRemains <= 5) PlaySndMessage(ID_COUNTDOWN_1 + dwCurTimeRemains - 1); } dwLastTimeRemains = dwCurTimeRemains; _itoa(dwCurTimeRemains, S, 10); strconcat(sizeof(tmpStr),tmpStr, *st.translate("mp_ready"), "...", S); } }; m_game_ui->SetWarmUpCaption(tmpStr); } if (Level().CurrentEntity() && smart_cast<CSpectator*>(Level().CurrentEntity())) { if (!(pCurBuyMenu && pCurBuyMenu->IsShown()) && !(pCurSkinMenu && pCurSkinMenu->IsShown()) && !m_game_ui->IsServerInfoShown() && (CurrentGameUI() && CurrentGameUI()->GameIndicatorsShown()) ) { if (!m_bSkinSelected) m_game_ui->SetPressJumpMsgCaption("mp_press_jump2select_skin"); else m_game_ui->SetPressJumpMsgCaption("mp_press_jump2start"); if (CanCallBuyMenu()) m_game_ui->SetPressBuyMsgCaption("mp_press_to_buy"); }; }; if (Level().CurrentControlEntity() && smart_cast<CSpectator*>(Level().CurrentControlEntity()) && (CurrentGameUI()->GameIndicatorsShown()) ) { CSpectator* pSpectator = smart_cast<CSpectator*>(Level().CurrentControlEntity()); if (pSpectator) { string1024 SpectatorStr = ""; pSpectator->GetSpectatorString(SpectatorStr); m_game_ui->SetSpectatorMsgCaption(SpectatorStr); } } u32 CurTime = Level().timeServer(); if (IsVotingEnabled() && IsVotingActive() && m_dwVoteEndTime>=CurTime) { u32 TimeLeft = m_dwVoteEndTime - Level().timeServer(); string1024 VoteTimeResStr; u32 SecsLeft = (TimeLeft % 60000) / 1000; u32 MinitsLeft = (TimeLeft - SecsLeft) / 60000; u32 NumAgreed = 0; PLAYERS_MAP_IT I; I = players.begin(); for(;I!=players.end(); ++I) { game_PlayerState* ps = I->second; if (ps->m_bCurrentVoteAgreed == 1) NumAgreed++; } xr_sprintf (VoteTimeResStr, st.translate("mp_timeleft").c_str(), MinitsLeft, SecsLeft, float(NumAgreed)/players.size()); m_game_ui->SetVoteTimeResultMsg(VoteTimeResStr); }; if ( local_player->testFlag(GAME_PLAYER_FLAG_VERY_VERY_DEAD) && m_u32ForceRespawn && !local_player->testFlag(GAME_PLAYER_FLAG_SPECTATOR) ) { u32 Rest = m_u32ForceRespawn - local_player->DeathTime; string64 S; ConvertTime2String (&S, Rest); string128 FullS; xr_sprintf (FullS, "%s : %s", *st.translate("mp_time2respawn"), S); m_game_ui->SetForceRespawnTimeCaption(FullS); }; if (Level().CurrentViewEntity()) { game_PlayerState* ps = GetPlayerByGameID(Level().CurrentViewEntity()->ID()); if (ps && m_game_ui) m_game_ui->SetRank(ps->team, ps->rank); if (ps && m_game_ui) m_game_ui->SetFraglimit(ps->frags(), m_s32FragLimit); } }; }break; case GAME_PHASE_PENDING: { if (!m_game_ui) break; m_game_ui->UpdateTeamPanels(); m_game_ui->ShowPlayersList(true); }break; case GAME_PHASE_PLAYER_SCORES: { if (!m_game_ui) break; string128 resstring; xr_sprintf(resstring, st.translate("mp_player_wins").c_str(), WinnerName); m_game_ui->SetRoundResultCaption(resstring); SetScore(); m_game_ui->UpdateTeamPanels(); m_game_ui->ShowPlayersList(true); }break; }; //----------------------------------------- if (!CanCallBuyMenu()) HideBuyMenu(); if (pCurSkinMenu && pCurSkinMenu->IsShown() && !CanCallSkinMenu()) pCurSkinMenu->HideDialog(); //----------------------------------------------- //----------------------------------------------- //if (m_game_ui->m_pInventoryMenu && m_game_ui->m_pInventoryMenu->IsShown() && !CanCallInventoryMenu()) // StartStopMenu(m_game_ui->m_pInventoryMenu,true); if ( m_game_ui && m_game_ui->ActorMenu().IsShown() && !CanCallInventoryMenu() ) { m_game_ui->HideActorMenu(); } //----------------------------------------- u32 cur_game_state = Phase(); //if(m_game_ui->m_pMapDesc && m_game_ui->m_pMapDesc->IsShown() && cur_game_state!=GAME_PHASE_INPROGRESS) //{ // m_game_ui->m_pMapDesc->HideDialog(); //} if(pCurSkinMenu && pCurSkinMenu->IsShown() && cur_game_state!=GAME_PHASE_INPROGRESS) { pCurSkinMenu->HideDialog(); } }
void CUIStatsPlayerList::Update() { static string512 teaminfo; if (m_prev_upd_time > Device.dwTimeContinual - 100) return; DEFINE_VECTOR (game_PlayerState*,ItemVec,ItemIt); ItemVec items; m_prev_upd_time = Device.dwTimeContinual; game_cl_GameState::PLAYERS_MAP_IT I=Game().players.begin(); game_cl_GameState::PLAYERS_MAP_IT E=Game().players.end(); items.clear (); u32 pl_count = 0; int pl_frags = 0; u32 pl_artefacts = 0; for (;I!=E;++I) { game_PlayerState* p = (game_PlayerState*) I->second; if (!p || p->team != m_CurTeam) continue; if (m_bStatus_mode || m_bSpectator && p->testFlag(GAME_PLAYER_FLAG_SPECTATOR) || !m_bSpectator && !p->testFlag(GAME_PLAYER_FLAG_SPECTATOR)) { items.push_back(I->second); // add to team info pl_frags+=p->frags(); } }; pl_count = items.size(); CStringTable st; if (GameID() == eGameIDArtefactHunt && !m_bSpectator) { game_cl_ArtefactHunt* game = static_cast<game_cl_ArtefactHunt*>(&Game()); pl_artefacts = game->teams[m_CurTeam - 1].score; sprintf_s(teaminfo, "%s: %u, %s: %u, %s: %d",*st.translate("mp_artefacts_upcase"),pl_artefacts, *st.translate("mp_players"), pl_count, *st.translate("mp_frags_upcase"),pl_frags ); m_header_text->SetText(teaminfo); } else if (GameID() == eGameIDTeamDeathmatch && !m_bSpectator) { game_cl_TeamDeathmatch* game = static_cast<game_cl_TeamDeathmatch*>(&Game()); pl_frags = game->teams[m_CurTeam - 1].score; sprintf_s(teaminfo, "%s: %d, %s: %u", *st.translate("mp_frags_upcase"), pl_frags, *st.translate("mp_players"), pl_count); m_header_text->SetText(teaminfo); } if (m_bSpectator) { if(items.empty()) { Clear(); ShowHeader(false); return; } else ShowHeader(true); } std::sort(items.begin(), items.end(), DM_Compare_Players); int n = (int)items.size(); n -= m_pad->GetChildWndList().size(); if (n<0) { n = abs(n); for (int i = 0; i<n; i++) m_pad->DetachChild(*(m_pad->GetChildWndList().begin())); m_flags.set (eNeedRecalc,TRUE); } else { for (int i = 0; i<n; i++) { CUIStatsPlayerInfo* pi = new CUIStatsPlayerInfo(&m_field_info, m_i.f, m_i.c); pi->InitPlayerInfo( Fvector2().set(0,0), Fvector2().set(this->GetDesiredChildWidth(),m_i.h) ); CUIScrollView::AddWindow(pi, true); m_flags.set (eNeedRecalc,TRUE); } } R_ASSERT(items.size() == m_pad->GetChildWndList().size()); WINDOW_LIST_it it = m_pad->GetChildWndList().begin(); ItemIt itit = items.begin(); for (; it != m_pad->GetChildWndList().end(); it++, itit++) { CUIStatsPlayerInfo* pi = smart_cast<CUIStatsPlayerInfo*>(*it); R_ASSERT(pi); game_PlayerState* ps = static_cast<game_PlayerState*>(*itit); pi->SetInfo(ps); } // update player info CUIScrollView::Update(); }
BOOL CDialogOption::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here CenterWindow(GetDesktopWindow()); // 设置窗口指针 ASSERT(m_pdlgMain != NULL); m_dlgTime.m_pdlgMain = m_pdlgMain; m_dlgTime.m_pdlgOption = this; m_dlgNotify.m_pdlgMain = m_pdlgMain; m_dlgNotify.m_pdlgOption = this; m_dlgAutoAway.m_pdlgMain = m_pdlgMain; m_dlgAutoAway.m_pdlgOption = this; m_dlgLanguage.m_pdlgMain = m_pdlgMain; m_dlgLanguage.m_pdlgOption = this; m_dlgMisc.m_pdlgMain = m_pdlgMain; m_dlgMisc.m_pdlgOption = this; // 创建子对话框 m_dlgTime.Create(IDD_DIALOG_OPTION_TIME, this); m_dlgNotify.Create(IDD_DIALOG_OPTION_NOTIFY, this); m_dlgAutoAway.Create(IDD_DIALOG_OPTION_AUTO_AWAY, this); m_dlgLanguage.Create(IDD_DIALOG_OPTION_LANGUAGE, this); m_dlgMisc.Create(IDD_DIALOG_OPTION_MISC, this); // 调整子对话框在父窗口中的位置 CRect rs; GetDlgItem(IDC_STATIC_PLAT)->GetClientRect(rs); GetDlgItem(IDC_STATIC_PLAT)->ClientToScreen(rs); ScreenToClient(rs); // 设置子对话框尺寸并移动到指定位置 m_dlgTime.MoveWindow(rs); m_dlgNotify.MoveWindow(rs); m_dlgAutoAway.MoveWindow(rs); m_dlgLanguage.MoveWindow(rs); m_dlgMisc.MoveWindow(rs); // 设置页面按钮字体 m_fontPageButtonNormal.CreateFont(13,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE, ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,"Tahoma"); m_fontPageButtonPressed.CreateFont(16,0,0,0,FW_BOLD,FALSE,FALSE,FALSE, ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,"Tahoma"); // 显示第一页tab内容 ((CButton*)GetDlgItem(IDC_RADIO_OPTION_TIME))->SetCheck(TRUE); PageSelect(PAGE_OPTION_TIME); // 初始化时,配置状态为未更改 ChangeButtonStatus(OPTION_SETTING_UNCHANGED); // CG: The following block was added by the ToolTips component. { // Create the ToolTip control. m_tooltip.Create(this); m_tooltip.SetDelayTime(TTDT_AUTOPOP, 20000); m_tooltip.SetMaxTipWidth(270); m_tooltip.Activate(TRUE); // TODO: Use one of the following forms to add controls: CStringTable *pst = &(m_pdlgMain->m_str); m_tooltip.AddTool(GetDlgItem(IDC_BUTTON_RESET), pst->GetStr(OPTION_BUTTON_RESET_TIP)); m_tooltip.AddTool(GetDlgItem(IDC_BUTTON_APPLY), pst->GetStr(OPTION_BUTTON_APPLY_TIP)); m_tooltip.AddTool(GetDlgItem(IDC_BUTTON_SAVE), pst->GetStr(OPTION_BUTTON_SAVE_TIP)); } LoadLanguageStrings(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
bool CHttpRequest::GetHTTP(float HTTPVersion) { /* HTTP request */ CString Request; MakeRequestString(HTTPVersion, &Request); Trace(tagHttp, levInfo, ("CHttpRequest - Request {\n%s}", Request.GetBuffer())); if (m_Dump) { cout << "-=-=-=-=-=-=-=-=- Request -=-=-=-=-=-=-=-=-" << endl << Request << "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" << endl; } if (!m_ClientSocket.Write(Request)) return false; /* HTTP response, header */ m_ClientSocket.ReadLine(&m_RStatusString); Trace(tagHttp, levInfo, ("CHttpRequest - StatusString {%s}", m_RStatusString.GetBuffer())); if (! ParseStatusString()) { m_RData = m_RStatusString; } if (m_RStatusValue > 0) { // finish reading headers CString OneLine; m_ClientSocket.ReadLine(&OneLine); if (m_Dump) { cout << "-=-=-=-=-=-=-=-=- Response -=-=-=-=-=-=-=-" << endl << m_RStatusString << endl; } Trace(tagHttp, levInfo, ("CHttpRequest - Response (start) : %s", m_RStatusString.GetBuffer())); while (OneLine.GetLength()) { if (m_Dump) { cout << OneLine << endl; } CStringTable Table; CString Name, Value; if (CMimeParser::ParseLine(OneLine, Name, Value, Table)) { Trace(tagHttp, levInfo, ("CHttpRequest - Response (continued): %d | %s <table> (%d)", OneLine.GetLength(), Name.GetBuffer(), Table.GetSize())); Trace(tagHttp, levInfo, ("CHttpRequest - %s", OneLine.GetBuffer())); m_RFields.Add(Name, Table); m_RPairFields.Add(CStringPair(Name, Value)); } else { Trace(tagHttp, levInfo, ("CHttpRequest - Response (continued): %s (parser failed, ignoring)", OneLine.GetBuffer())); // ignore malformed lines // $(TODO): support P3P, which looks like P3P CP= ... // m_RStatusValue = 400 // return false; } m_ClientSocket.ReadLine(&OneLine); } if (m_Dump) { cout << "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" << endl; } Trace(tagHttp, levInfo, ("CHttpRequest - Response (done)")); } if ((m_RequestMethod != htGet)&&(m_RequestMethod != htPost)) return true; CString ContentLengthString = m_RFields.FindElement(g_strHttpContentLength).GetValue(g_strHttpContentLength); int ContentLengthExpected = 0; if (! ContentLengthString.IsInt(& ContentLengthExpected)) ContentLengthExpected = -1; Trace(tagHttp, levInfo, ("CHttpRequest::GetHTTP() - expected content-length: %s {%d}", ContentLengthString.GetBuffer(), ContentLengthExpected)); m_RData.Empty(); // document is going to be larger than the current maximum document size limit if ((ContentLengthExpected > 0) && (m_RequestSizeLimit > 0) && (m_RequestSizeLimit < ContentLengthExpected)) { m_RStatusValue = 206; // partial content } else { if (ContentLengthExpected > 0) { m_ClientSocket.Read(& m_RData, ContentLengthExpected); if (ContentLengthExpected != (int) m_RData.GetLength()) { Trace(tagHttp, levInfo, ("CHttpRequest::GetHTTP() - expected %d bytes, read %d. (207 Partial Content)", ContentLengthExpected, m_RData.GetLength())); m_RStatusValue = 207; // partial Content-Length return false; } } else if ((ContentLengthExpected < 0) && (m_RStatusValue == 200)) { // content-length was not explicitly zero and the status value says that data should be available m_ClientSocket.Read(& m_RData, m_RequestSizeLimit); } if (m_RStatusValue <= 0) { m_RStatusValue = (m_RData.GetLength() > 0) ? 200 : 204; if (!m_RData.GetLength()) return false; } } Trace(tagHttp, levInfo, ("CHttpRequest::GetHTTP() - m_RStatusValue {%d}", m_RStatusValue)); Trace(tagHttp, levInfo, ("CHttpRequest::GetHTTP() - m_RData.Length {%d}", m_RData.GetLength())); return true; }
void CHttpRequest::SetPostField(const CString& Group, const CString& Name, const CString& Value) { CStringTable Table = m_PostFields.FindElement(Group); Table.Set(Name, Value); m_PostFields.Set(Group, Table); }
/*********************************************************************\ Function name : CCompareTableDialog::InitValues Description : Created at : 09.10.01, @ 21:07:22 Created by : Thomas Kunert Modified by : \*********************************************************************/ Bool CCompareTableDialog::InitValues(void) { BaseContainer bcLayout; Int32 a, b; bcLayout.SetInt32(COMPARE_LIST_NAME, LV_COLUMN_TEXT); bcLayout.SetInt32(COMPARE_LIST_DATA, LV_COLUMN_TEXT); m_wndOutputList.SetLayout(2, bcLayout); // the tbles are loaded, so write some important information Int32 lItemCount = 0; BaseContainer data; CStringTable* pTable; StringTableType stt; for (b = 0; b < 2; b++) { if (b == 0) { data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_ORIGINAL_FILE)); data.SetString(COMPARE_LIST_DATA, m_fnOriginal.GetString()); m_wndOutputList.SetItem(lItemCount++, data); pTable = m_pOriginalTable; stt = m_OriginalDoc.m_StringTableType; } else { data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_NEW_FILE)); data.SetString(COMPARE_LIST_DATA, m_fnNew.GetString()); m_wndOutputList.SetItem(lItemCount++, data); pTable = m_pNewTable; stt = m_NewDoc.m_StringTableType; } data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_STT)); if (stt == typeDialogStrings) data.SetString(COMPARE_LIST_DATA, GeLoadString(IDS_COMPARE_TYPE_DLG)); else if (stt == typeStringTable) data.SetString(COMPARE_LIST_DATA, GeLoadString(IDS_COMPARE_TYPE_STT)); else if (stt == typeCommandStrings) data.SetString(COMPARE_LIST_DATA, GeLoadString(IDS_COMPARE_TYE_COMMAND)); m_wndOutputList.SetItem(lItemCount++, data); data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_NUM_LANG)); data.SetString(COMPARE_LIST_DATA, String::IntToString(pTable->GetUsedLanguages())); m_wndOutputList.SetItem(lItemCount++, data); for (a = 0; a < pTable->GetUsedLanguages(); a++) { if (a == 0) { data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_LANGUAGES)); } else { data.SetString(COMPARE_LIST_NAME, ""); } String strSuffix = pTable->GetSuffix(a); data.SetString(COMPARE_LIST_DATA, String("") + g_LanguageList.GetName(strSuffix) + String("(") + strSuffix + String(")")); m_wndOutputList.SetItem(lItemCount++, data); } data.SetString(COMPARE_LIST_DATA, String("")); data.SetString(COMPARE_LIST_NAME, String("")); m_wndOutputList.SetItem(lItemCount++, data); } // search all strings that are in the original table, but not in the new table data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_REMOVED_ITEMS)); data.SetString(COMPARE_LIST_DATA, String("")); m_wndOutputList.SetItem(lItemCount++, data); data.SetString(COMPARE_LIST_NAME, String("")); for (a = 0; a < m_pOriginalTable->GetNumElements(); a++) { String strID = m_pOriginalTable->GetElementID(a); if (!m_pNewTable->ContainsElement(strID)) { data.SetString(COMPARE_LIST_DATA, strID); m_wndOutputList.SetItem(lItemCount++, data); } } // now, find all items that were added in the new table data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_ADDED_ITEMS)); data.SetString(COMPARE_LIST_DATA, String("")); m_wndOutputList.SetItem(lItemCount++, data); data.SetString(COMPARE_LIST_NAME, String("")); for (a = 0; a < m_pNewTable->GetNumElements(); a++) { String strID = m_pNewTable->GetElementID(a); if (!m_pOriginalTable->ContainsElement(strID)) { data.SetString(COMPARE_LIST_DATA, strID); m_wndOutputList.SetItem(lItemCount++, data); } } // search for all modified languages data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_MODIFIED_ITEMS)); data.SetString(COMPARE_LIST_DATA, String("")); m_wndOutputList.SetItem(lItemCount++, data); data.SetString(COMPARE_LIST_NAME, String("")); Int32 lLanguages = m_pOriginalTable->GetUsedLanguages(); Int32 lBothLang = 0; Int32 *plLangIDO = bNewDeprecatedUseArraysInstead<Int32>(lLanguages); Int32 *plLangIDN = bNewDeprecatedUseArraysInstead<Int32>(lLanguages); Bool *pbChanged = bNewDeprecatedUseArraysInstead<Bool>(lLanguages); // check for all languages that are available in both tables for (a = 0; a < lLanguages; a++) { String strLangID = m_pOriginalTable->GetSuffix(a); Int32 lLangID = m_pNewTable->GetLanguageID(strLangID); if (lLangID < 0) continue; plLangIDO[lBothLang] = a; plLangIDN[lBothLang] = lLangID; lBothLang++; } for (a = 0; a < m_pOriginalTable->GetNumElements(); a++) { String strID = m_pOriginalTable->GetElementID(a); if (m_pNewTable->ContainsElement(strID)) { Bool bChanged = false; ClearMemType(pbChanged, lLanguages); for (b = 0; b < lBothLang; b++) { if (m_bIsCommandTable) { String str1, str2, strCommand1, strCommand2; Bool bFound; str1 = m_pOriginalTable->GetString(a, plLangIDO[b], &strCommand1); str2 = m_pNewTable->GetString(m_pOriginalTable->GetElementID(a), plLangIDN[b], bFound, &strCommand2); if ((str1 != str2) || (strCommand1 != strCommand2)) { pbChanged[b] = true; bChanged = true; } } else { String str = m_pOriginalTable->GetString(a, plLangIDO[b]); Bool bFound; if (str != m_pNewTable->GetString(m_pOriginalTable->GetElementID(a), plLangIDN[b], bFound)) { pbChanged[b] = true; bChanged = true; } } } if (bChanged) { String str = m_pOriginalTable->GetElementID(a); for (b = 0; b < lBothLang; b++) { if (pbChanged[b]) str += String(" ") + m_pOriginalTable->GetSuffix(plLangIDO[b]); } data.SetString(COMPARE_LIST_DATA, str); m_wndOutputList.SetItem(lItemCount++, data); } } } bDelete(plLangIDO); bDelete(plLangIDN); bDelete(pbChanged); m_wndOutputList.DataChanged(); return true; }
int CHttpRequest::ExecuteGet(bool Recurse) { bool bContinueExecuteGet = false; bool bKeepAlive = false; Trace(tagHttp, levInfo, ("CHttpRequest - ExecuteGet")); unsigned int nCredentialsIndex = 0; bool Result; do { if (! bKeepAlive) { Result = CreateSocket(); if (! Result) { return -1; } } bContinueExecuteGet = false; // process authentication CString AuthHeader; switch(m_ServerAuthState.GetLeg()) { case AUTHENTICATION_STATE_NONE: break; case AUTHENTICATION_STATE_PRECHALENGE: case AUTHENTICATION_STATE_CHALENGE: if (! m_ServerAuthState.GetNextHeader(& AuthHeader, nCredentialsIndex)) return m_RStatusValue; break; } ClearResults(false); // add the auth header if (AuthHeader.GetLength()) SetHttpField(g_strHttpAuthorization, AuthHeader); /* create socket and get results */ CStringTable Connection; if (!m_HttpFields.FindAndCopy(g_strHttpConnection, Connection) || ! Connection.GetValue(g_strHttpConnection).GetLength()) { SetHttpField(g_strHttpConnection, "Keep-Alive"); } Result = GetHTTP((float) 1.0); // 406: no acceptable objects found (NT4/ISM) // if (!Result || (m_RStatusValue == 406)) { // ClearResults(false); // Result = CreateSocket() && GetHTTP((float) 0.9); // if (! Result) { // return -1; // } // } Trace(tagHttp, levInfo, ("CHttpRequest - ExecuteGet {%d/%d}", Result, m_RStatusValue)); if (! Result) { return -1; } CString l_RedirectLoc; CUrl ResolvedUrl; switch(m_RStatusValue) { case 407: // $(TODO) break; case 401: // any valid authentication stage if (m_ServerAuthState.GetLeg() == AUTHENTICATION_STATE_NONE) { // we need to send credentials m_ServerAuthState.SetLeg(AUTHENTICATION_STATE_PRECHALENGE); bContinueExecuteGet = true; } else if (m_ServerAuthState.GetLeg() == AUTHENTICATION_STATE_CHALENGE) { nCredentialsIndex ++; // equal, because we do want to run once without username/password credentials if (nCredentialsIndex <= m_ServerAuthState.GetSize()) { bContinueExecuteGet = true; } m_ServerAuthState.SetLeg(AUTHENTICATION_STATE_PRECHALENGE); bKeepAlive = false; } else if (m_ServerAuthState.GetLeg() == AUTHENTICATION_STATE_PRECHALENGE) { m_ServerAuthState.SetLeg(AUTHENTICATION_STATE_CHALENGE); bContinueExecuteGet = true; bKeepAlive = true; } break; case 301: /* redirections */ case 302: case 303: case 307: l_RedirectLoc = m_RFields.FindElement(g_strHttpLocation).GetValue(g_strHttpLocation); if (! l_RedirectLoc.GetLength()) { Trace(tagHttp, levInfo, ("CHttpRequest - GetHTTP - %d redirection without a Location: header.", m_RStatusValue)); break; } // HTTP 1.1 - Temporary Redirect is 302 and 307 // m_RRedirections is relevant for final URL address // that could be retrieved ResolvedUrl = m_Url.Resolve(l_RedirectLoc); l_RedirectLoc = ResolvedUrl.GetHttpAll(); if (m_FollowRedirections && m_RRedirections.Contains(l_RedirectLoc)) { // avoid circular redirections Trace(tagHttp, levInfo, ("CHttpRequest - GetHTTP - circular redirection %s", l_RedirectLoc.GetBuffer())); return m_RStatusValue; } else m_RRedirections.Add(l_RedirectLoc); if (!m_FollowRedirections) return m_RStatusValue; if (m_ClientSocket.GetVerbose()) cout << "\n\t[" << l_RedirectLoc << "]"; ClearResults(false); m_Url.SetUrl(l_RedirectLoc); bContinueExecuteGet = true; break; case 305: /* use proxy */ l_RedirectLoc = m_RFields.FindElement(g_strHttpLocation).GetValue(g_strHttpLocation); if (! l_RedirectLoc.GetLength()) break; // HTTP 1.1 - Temporary Redirect is 302 and 307 // m_RRedirections is relevant for final URL address // that could be retrieved ClearResults(false); m_Proxy.SetUrl(l_RedirectLoc); bContinueExecuteGet = true; break; }; Trace(tagHttp, levInfo, ("CHttpRequest - GetHTTP - %d", m_RStatusValue)); } while (bContinueExecuteGet); return m_RStatusValue; }
bool CMimeParser::ParseLine(const CString& CommandLine, CString& Name, CString& Value, CStringTable& Result) { int sPos = CommandLine.Pos(':'); if (sPos > 0) { CommandLine.Mid(0, sPos, &Name); Name.Trim(); CommandLine.Mid(sPos+1, CommandLine.GetLength(), &Value); Value.Trim(); if (Name.Same("Authorization") || Name.Same("Location")) { Result.Add(Name, Value); return true; } int CurPos = 0; int PrevPos = 0; CString ParameterName = Name; CString ParameterValue; bool Comment = false; while (CurPos < (int) Value.GetLength()) { switch(Value[CurPos]) { case '(': if (!Comment) Comment = true; break; case ')': Comment = false; break; case '=': // double ==, Base64 encoded for example if ((CurPos + 1) < (int) Value.GetLength()) { if (Value[CurPos + 1] == '=') { CurPos++; break; } } if (!Comment) { Value.Mid(PrevPos, CurPos - PrevPos, &ParameterName); ParameterName.Trim(); PrevPos = CurPos+1; } break; case ';': if (!Comment) { Value.Mid(PrevPos, CurPos - PrevPos, &ParameterValue); ParameterValue.Trim(); PrevPos = CurPos+1; ParameterName.Dequote(); ParameterValue.Dequote(); Result.Add(ParameterName, ParameterValue); /* CVector<CString> ParameterValueVector = CString::StrToVector(ParameterValue, ','); for (register int i=0;i<(int)ParameterValueVector.GetSize();i++) { _L_DEBUG(3, cout << "adding [" << ParameterName << "][" << ParameterValueVector[i].Trim() << "]" << endl); Result.Add(ParameterName, ParameterValueVector[i].Trim().Dequote()); } */ } break; default: break; }; CurPos++; } if (PrevPos != (int) Value.GetLength()) { Value.Mid(PrevPos, Value.GetLength(), &ParameterValue); ParameterValue.Trim(); /* CVector<CString> ParameterValueVector = CString::StrToVector(ParameterValue, ','); for (register int i=0;i<(int)ParameterValueVector.GetSize();i++) { _L_DEBUG(3, cout << "adding [" << ParameterName << "][" << ParameterValueVector[i].Trim() << "]" << endl); Result.Add(ParameterName, ParameterValueVector[i].Trim().Dequote()); } */ ParameterName.Dequote(); ParameterValue.Dequote(); Result.Add(ParameterName, ParameterValue); } return true; } else return false; }
void CHUDTarget::Render() { VERIFY (g_bRendering); CObject* O = Level().CurrentEntity(); if (0==O) return; CEntity* E = smart_cast<CEntity*>(O); if (0==E) return; Fvector p1 = Device.vCameraPosition; Fvector dir = Device.vCameraDirection; // Render cursor u32 C = C_DEFAULT; FVF::TL PT; Fvector p2; p2.mad (p1,dir,RQ.range); PT.transform (p2,Device.mFullTransform); float di_size = C_SIZE/powf(PT.p.w,.2f); CGameFont* F = HUD().Font().pFontGraffiti19Russian; F->SetAligment (CGameFont::alCenter); F->OutSetI (0.f,0.05f); if (psHUD_Flags.test(HUD_CROSSHAIR_DIST)){ F->SetColor (C); F->OutNext ("%4.1f",RQ.range); } if (psHUD_Flags.test(HUD_INFO)){ if (RQ.O){ CEntityAlive* E = smart_cast<CEntityAlive*> (RQ.O); CEntityAlive* pCurEnt = smart_cast<CEntityAlive*> (Level().CurrentEntity()); PIItem l_pI = smart_cast<PIItem> (RQ.O); if (IsGameTypeSingle()) { CInventoryOwner* our_inv_owner = smart_cast<CInventoryOwner*>(pCurEnt); if (E && E->g_Alive() && !E->cast_base_monster()) { //. CInventoryOwner* our_inv_owner = smart_cast<CInventoryOwner*>(pCurEnt); CInventoryOwner* others_inv_owner = smart_cast<CInventoryOwner*>(E); if(our_inv_owner && others_inv_owner){ switch(RELATION_REGISTRY().GetRelationType(others_inv_owner, our_inv_owner)) { case ALife::eRelationTypeEnemy: C = C_ON_ENEMY; break; case ALife::eRelationTypeNeutral: C = C_ON_NEUTRAL; break; case ALife::eRelationTypeFriend: C = C_ON_FRIEND; break; } if (fuzzyShowInfo>0.5f){ CStringTable strtbl ; F->SetColor (subst_alpha(C,u8(iFloor(255.f*(fuzzyShowInfo-0.5f)*2.f)))); F->OutNext ("%s", *strtbl.translate(others_inv_owner->Name()) ); F->OutNext ("%s", *strtbl.translate(others_inv_owner->CharacterInfo().Community().id()) ); } } fuzzyShowInfo += SHOW_INFO_SPEED*Device.fTimeDelta; } else if (l_pI && our_inv_owner && RQ.range < 2.0f*our_inv_owner->inventory().GetTakeDist()) { if (fuzzyShowInfo>0.5f){ F->SetColor (subst_alpha(C,u8(iFloor(255.f*(fuzzyShowInfo-0.5f)*2.f)))); F->OutNext ("%s",l_pI->Name/*Complex*/()); } fuzzyShowInfo += SHOW_INFO_SPEED*Device.fTimeDelta; } } else { if (E && (E->GetfHealth()>0)) { if (pCurEnt && GameID() == GAME_SINGLE){ if (GameID() == GAME_DEATHMATCH) C = C_ON_ENEMY; else{ if (E->g_Team() != pCurEnt->g_Team()) C = C_ON_ENEMY; else C = C_ON_FRIEND; }; if (RQ.range >= recon_mindist() && RQ.range <= recon_maxdist()){ float ddist = (RQ.range - recon_mindist())/(recon_maxdist() - recon_mindist()); float dspeed = recon_minspeed() + (recon_maxspeed() - recon_minspeed())*ddist; fuzzyShowInfo += Device.fTimeDelta/dspeed; }else{ if (RQ.range < recon_mindist()) fuzzyShowInfo += recon_minspeed()*Device.fTimeDelta; else fuzzyShowInfo = 0; }; if (fuzzyShowInfo>0.5f){ clamp(fuzzyShowInfo,0.f,1.f); int alpha_C = iFloor(255.f*(fuzzyShowInfo-0.5f)*2.f); u8 alpha_b = u8(alpha_C & 0x00ff); F->SetColor (subst_alpha(C,alpha_b)); F->OutNext ("%s",*RQ.O->cName()); } } }; }; }else{ fuzzyShowInfo -= HIDE_INFO_SPEED*Device.fTimeDelta; } clamp(fuzzyShowInfo,0.f,1.f); } //отрендерить кружочек или крестик if(!m_bShowCrosshair){ // actual rendering u32 vOffset; FVF::TL* pv = (FVF::TL*)RCache.Vertex.Lock(4,hGeom.stride(),vOffset); float size_x = float(Device.dwWidth) * di_size; float size_y = float(Device.dwHeight) * di_size; size_y = size_x; float w_2 = Device.fWidth_2; float h_2 = Device.fHeight_2; // Convert to screen coords float cx = (PT.p.x+1)*w_2; float cy = (PT.p.y+1)*h_2; pv->set (cx - size_x, cy + size_y, C, 0, 1); ++pv; pv->set (cx - size_x, cy - size_y, C, 0, 0); ++pv; pv->set (cx + size_x, cy + size_y, C, 1, 1); ++pv; pv->set (cx + size_x, cy - size_y, C, 1, 0); ++pv; // unlock VB and Render it as triangle LIST RCache.Vertex.Unlock(4,hGeom.stride()); RCache.set_Shader (hShader); RCache.set_Geometry (hGeom); RCache.Render (D3DPT_TRIANGLELIST,vOffset,0,4,0,2); }else{ //отрендерить прицел HUDCrosshair.cross_color = C; HUDCrosshair.OnRender (); } }
void game_cl_ArtefactHunt::shedule_Update (u32 dt) { CStringTable st; string1024 msg; inherited::shedule_Update (dt); if (g_dedicated_server) return; if (!m_game_ui) return; //out game information m_game_ui->SetBuyMsgCaption (NULL); m_game_ui->SetPressBuyMsgCaption (NULL); switch (m_phase) { case GAME_PHASE_INPROGRESS: { if (local_player) { if (local_player->testFlag(GAME_PLAYER_FLAG_ONBASE) && !local_player->testFlag(GAME_PLAYER_FLAG_VERY_VERY_DEAD)) { m_bBuyEnabled = TRUE; } else { m_bBuyEnabled = FALSE; }; }; if (local_player && Level().CurrentControlEntity()) { if (smart_cast<CActor*>(Level().CurrentControlEntity())) { if(m_game_ui) m_game_ui->SetBuyMsgCaption(""); if (m_bBuyEnabled) { if (!(pCurBuyMenu && pCurBuyMenu->IsShown()) && !(pCurSkinMenu && pCurSkinMenu->IsShown())) { xr_sprintf(msg, *st.translate("mp_press_to_buy"), "B"); if(m_game_ui) m_game_ui->SetBuyMsgCaption(msg); }; } if (m_game_ui) { if (local_player->testFlag(GAME_PLAYER_FLAG_VERY_VERY_DEAD)) m_game_ui->SetPressJumpMsgCaption("mp_press_fire2spectator"); else m_game_ui->SetPressJumpMsgCaption(NULL); }; } else { if(m_game_ui) m_game_ui->SetBuyMsgCaption(NULL); if (m_bTeamSelected && m_bSkinSelected) { if (iReinforcementTime != 0) { if (!m_game_ui->m_pBuySpawnMsgBox->IsShown() && (local_player->money_for_round+m_iSpawn_Cost)>=0) { if (m_game_ui) m_game_ui->SetPressJumpMsgCaption("mp_press_jump2pay_spaw"); } else { if (m_game_ui) m_game_ui->SetPressJumpMsgCaption(NULL); } } else { if (m_game_ui) m_game_ui->SetPressJumpMsgCaption("mp_press_jump2spawn"); }; } else { if (!m_bTeamSelected) if (m_game_ui) m_game_ui->SetPressJumpMsgCaption("mp_press_jump2select_team"); else if (!m_bSkinSelected) if (m_game_ui) m_game_ui->SetPressJumpMsgCaption("mp_press_jump2select_skin"); } }; } if (local_player) { game_TeamState team0 = teams[0]; game_TeamState team1 = teams[1]; if (dReinforcementTime > 0 && Level().CurrentViewEntity() && m_cl_dwWarmUp_Time == 0) { u32 CurTime = Level().timeServer(); u32 dTime; if (s32(CurTime) > dReinforcementTime) dTime = 0; else dTime = iCeil(float(dReinforcementTime - CurTime) / 1000); string128 _buff; m_game_ui->m_pReinforcementInidcator->SetText(itoa(dTime,_buff,10)); }else m_game_ui->m_pReinforcementInidcator->SetText("0"); s16 lt = local_player->team; if (lt>=0) { // if(m_game_ui) m_game_ui->SetScoreCaption (teams[0].score, teams[1].score); }; }; SetScore(); }break; case GAME_PHASE_TEAM1_ELIMINATED: { m_game_ui->SetRoundResultCaption("Team Green ELIMINATED!"); SetScore(); }break; case GAME_PHASE_TEAM2_ELIMINATED: { m_game_ui->SetRoundResultCaption("Team Blue ELIMINATED!"); SetScore(); }break; default: { }break; }; if (m_game_ui->m_pBuySpawnMsgBox->IsShown()) { if (m_phase != GAME_PHASE_INPROGRESS || (!local_player || !local_player->testFlag(GAME_PLAYER_FLAG_VERY_VERY_DEAD))) { m_game_ui->m_pBuySpawnMsgBox->HideDialog(); }; }; //------------------------------------------- }