Files
Leviathan/Client/Game/game/Interface/Arena/ArenaUtility.cpp
T
2026-06-01 12:46:52 +02:00

191 lines
4.5 KiB
C++

#include "stdafx.h"
//#include "SGameMessageUI.h"
#include "SGameMessage.h"
#include "SBattleArenaDB.h"
#include "ArenaUtility.h"
#include "SStringDB.h"
void sArenaUtility::calcBattleArenaJoinMemberCount(int memberType, int& minMember, int& maxMember)
{
if (sArenaUtility::MEMBER_2_BY_2 == memberType)
{
maxMember = MAX_MEMBER_4;
}
else if (sArenaUtility::MEMBER_4_BY_4 == memberType)
{
maxMember = MAX_MEMBER_8;
}
else if (sArenaUtility::MEMBER_8_BY_8 == memberType)
{
maxMember = MAX_MEMBER_16;
}
else if (sArenaUtility::MEMBER_16_BY_16 == memberType)
{
maxMember = MAX_MEMBER_32;
}
minMember = getBattleArenaJoinMinMemberCount(maxMember);
}
int sArenaUtility::getBattleArenaJoinMinMemberCount(int maxMember)
{
if (4 == maxMember)
return 4;
int minMember = (maxMember * sArenaUtility::JOIN_MIN_MEMBER_COUNT_RATE)/100;
return minMember;
}
bool sArenaUtility::isValidBattleArenaMinMemberCount(int curMember, int maxMember)
{
int minMember = getBattleArenaJoinMinMemberCount(maxMember);
return minMember <= curMember;
}
char const* sArenaUtility::getMinMemberCountColor(int curMember, int maxMember)
{
if (isValidBattleArenaMinMemberCount(curMember, maxMember))
{
return "<#00a651>";
}
else
{
return "<#ffffff>";
}
}
char const* sArenaUtility::modeToStr(int mode)
{
int stringId;
switch (mode)
{
case MODE_CLASSIC: stringId = 2314; break;
case MODE_BINGO: stringId = 2316; break;
case MODE_SLAUGHTER: stringId = 2315; break;
default: return "";
}
return S(stringId);
}
char const* sArenaUtility::teamToStr(int team)
{
int stringId;
switch (team)
{
case TEAM_ALLIANCE: stringId = 2382; break;
case TEAM_WITCH: stringId = 2383; break;
default: return "";
}
return S(stringId);
}
char const* sArenaUtility::teamToPartyTitleAniName(int team)
{
switch (team)
{
case sArenaUtility::TEAM_ALLIANCE: return "game_panel_arena_titlebar_party_bg_alliance";
case sArenaUtility::TEAM_WITCH: return "game_panel_arena_titlebar_party_bg_witch";
case sArenaUtility::TEAM_NONE: return "common_titlebar_trim_beamblue_party_bg";
default: return "common_titlebar_trim_beamblue_party_bg";
}
}
char const* sArenaUtility::maxMemberToMemberStr(int maxMember)
{
int stringId;
switch (maxMember)
{
case MAX_MEMBER_4: stringId = 2327; break;
case MAX_MEMBER_8: stringId = 2328; break;
case MAX_MEMBER_16: stringId = 2329; break;
case MAX_MEMBER_32: stringId = 2330; break;
default: return "";
}
return S(stringId);
}
char const* sArenaUtility::getMenuRankBgAniName(int team)
{
switch (team)
{
case TEAM_ALLIANCE: return "game_panel_titanium_arena_alliance_team";
case TEAM_WITCH: return "game_panel_titanium_arena_witch_team";
default: return "game_panel_titanium_arena_default";
}
}
char const* sArenaUtility::getMenuTitleBgAniName(int team)
{
switch (team)
{
case TEAM_ALLIANCE: return "game_panel_arena_titlebar_bg_alliance_team";
case TEAM_WITCH: return "game_panel_arena_titlebar_bg_witch_team";
default: return "game_panel_arena_titlebar_bg_default";
}
}
char const* sArenaUtility::getSlaughterPropIconAniName(int status)
{
switch (status)
{
case _PROP_STATE::PS_OWNED_BY_TEAM_0: return "game_panel_arena_mode_slaughter_alliance";
case _PROP_STATE::PS_OWNED_BY_TEAM_1: return "game_panel_arena_mode_slaughter_witch";
default: return "game_panel_arena_mode_slaughter_default";
}
}
int sArenaUtility::convertOpponentTeam(int team)
{
switch (team)
{
case TEAM_ALLIANCE: return TEAM_WITCH;
case TEAM_WITCH: return TEAM_ALLIANCE;
default: return TEAM_NONE;
}
}
int sArenaUtility::getArenaGameWindowId(int arenaId)
{
if (EXERCISE_ARENA_ID == arenaId)
return SIMSG_TOGGLE_UIWINDOW::UIWINDOW_ARENA_GAME_SLAUGHTER_PRACTICE;
BattleArenaBase* data = GetBattleArenaDB().getData(arenaId);
if (!data)
return 0;
int wndId;
switch (data->eType)
{
case BAT_CLASSIC: wndId = SIMSG_TOGGLE_UIWINDOW::UIWINDOW_ARENA_GAME_CLASSIC; break;
case BAT_BINGO: wndId = SIMSG_TOGGLE_UIWINDOW::UIWINDOW_ARENA_GAME_BINGO; break;
case BAT_SLAUGHTER: wndId = SIMSG_TOGGLE_UIWINDOW::UIWINDOW_ARENA_GAME_SLAUGHTER; break;
}
return wndId;
}
float sArenaUtility::getMinimumPlayTime(int maxMember)
{
float m;
switch (maxMember)
{
case MAX_MEMBER_4: m = 5.0f; break;
case MAX_MEMBER_8: m = 8.0f; break;
case MAX_MEMBER_16: m = 8.0f; break;
case MAX_MEMBER_32: m = 10.0f; break;
default: m = 0.0f; break;
}
return m * 60.0f;
}
bool sArenaUtility::isValidTeam(int team) const
{
if (TEAM_NONE == team)
return false;
if (MAX_TEAM_NUM <= team)
return false;
return true;
}