Esempio n. 1
0
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);
	}
}
Esempio n. 2
0
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();
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}
Esempio n. 6
0
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;
	};

}
Esempio n. 10
0
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);
	};
}
Esempio n. 11
0
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;
	};

}
Esempio n. 12
0
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);
}
Esempio n. 13
0
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);
}
Esempio n. 14
0
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("- --------------------------------");
};
Esempio n. 15
0
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());
};
Esempio n. 16
0
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);
	}
}
Esempio n. 18
0
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);
		}		
	}
};
Esempio n. 19
0
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);
}
Esempio n. 20
0
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);
	};
};
Esempio n. 21
0
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();
	}
}
Esempio n. 22
0
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();	
}
Esempio n. 23
0
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
}
Esempio n. 24
0
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;
}
Esempio n. 25
0
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);
}
Esempio n. 26
0
/*********************************************************************\
	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;
}
Esempio n. 27
0
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;
}
Esempio n. 28
0
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;
}
Esempio n. 29
0
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();
		};
	};
	//-------------------------------------------

}