void game_cl_Deathmatch::OnRender () { game_PlayerState* lookat_player = Game().lookat_player(); if (m_bDamageBlockIndicators && local_player && (local_player == lookat_player)) { PLAYERS_MAP_IT it = players.begin(); for(;it!=players.end();++it) { game_PlayerState* ps = it->second; u16 id = ps->GameID; if (ps->testFlag(GAME_PLAYER_FLAG_VERY_VERY_DEAD)) continue; if (!ps->testFlag(GAME_PLAYER_FLAG_INVINCIBLE)) continue; CObject* pObject = Level().Objects.net_Find(id); if (!pObject) continue; if (!pObject || !smart_cast<CActor*>(pObject)) continue; if (ps == local_player) continue; if (!IsEnemy(ps)) continue; cl_TeamStruct *pTS = &TeamList[ModifyTeam(ps->team)]; VERIFY(pObject); CActor* pActor = smart_cast<CActor*>(pObject); VERIFY(pActor); pActor->RenderIndicator(pTS->IndicatorPos, pTS->Indicator_r1, pTS->Indicator_r2, pTS->InvincibleShader); } }; }
CUISkinSelectorWnd* game_cl_Deathmatch::InitSkinMenu (s16 Team) { if (Team == -1) { Team = local_player->team; }; cl_TeamStruct *pTeamSect = &TeamList[ModifyTeam(Team)]; CUISkinSelectorWnd* pMenu = xr_new<CUISkinSelectorWnd> ((char*)pTeamSect->caSection.c_str(), Team); return pMenu; };
IBuyWnd* game_cl_Deathmatch::InitBuyMenu (const shared_str& BasePriceSection, s16 Team) { if (Team == -1) { Team = local_player->team; }; cl_TeamStruct *pTeamSect = &TeamList[ModifyTeam(Team)]; IBuyWnd* pMenu = xr_new<BUY_WND_TYPE>(); pMenu->Init (pTeamSect->caSection, BasePriceSection); return pMenu; };
BOOL game_cl_TeamDeathmatch::CanCallTeamSelectMenu () { if (Phase()!=GAME_PHASE_INPROGRESS) return false; if (!local_player) return false; if (m_game_ui->m_pInventoryMenu && m_game_ui->m_pInventoryMenu->IsShown()) { return FALSE; }; if (pCurBuyMenu && pCurBuyMenu->IsShown()) { return FALSE; }; if (pCurSkinMenu && pCurSkinMenu->IsShown()) { return FALSE; }; m_game_ui->m_pUITeamSelectWnd->SetCurTeam(ModifyTeam(local_player->team)); return TRUE; };
void game_cl_TeamDeathmatch::OnRender () { if (local_player) { cl_TeamStruct *pTS = &TeamList[ModifyTeam(local_player->team)]; PLAYERS_MAP_IT it = players.begin(); for(;it!=players.end();++it) { game_PlayerState* ps = it->second; u16 id = ps->GameID; if (ps->testFlag(GAME_PLAYER_FLAG_VERY_VERY_DEAD)) continue; CObject* pObject = Level().Objects.net_Find(id); if (!pObject) continue; if (!pObject || pObject->CLS_ID != CLSID_OBJECT_ACTOR) continue; if (IsEnemy(ps)) continue; if (ps == local_player) continue; float dup = 0.0f; if (/*m_bFriendlyNames &&*/ m_bShowPlayersNames) { VERIFY(pObject); CActor* pActor = smart_cast<CActor*>(pObject); VERIFY(pActor); Fvector IPos = pTS->IndicatorPos; IPos.y -= pTS->Indicator_r2; pActor->RenderText(ps->getName(), IPos, &dup, PLAYER_NAME_COLOR); } if (m_bFriendlyIndicators) { VERIFY(pObject); CActor* pActor = smart_cast<CActor*>(pObject); VERIFY(pActor); Fvector IPos = pTS->IndicatorPos; IPos.y += dup; pActor->RenderIndicator(IPos, pTS->Indicator_r1, pTS->Indicator_r2, pTS->IndicatorShader); }; } }; inherited::OnRender(); }
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); } }