ServerBrowserDetailsContainer.c
class ServerBrowserDetailsContainer extends ScriptedWidgetEventHandler
{
protected ServerBrowserTab m_Tab;
protected Widget m_Root;
protected TextWidget m_ServerNameText;
protected TextWidget m_ServerTypeResult;
protected TextWidget m_ServerModeResult;
protected TextWidget m_LastCharacterResult;
protected TextWidget m_ServerIP;
#ifdef PLATFORM_WINDOWS
#ifndef PLATFORM_CONSOLE
protected GridSpacerWidget m_FriendsContainer;
protected TextWidget m_FriendsResult;
#endif
#endif
protected TextWidget m_TimeAccelerationResult;
protected ImageWidget m_TimeIcon;
protected TextWidget m_BattleyeResult;
protected WrapSpacerWidget m_VersionContainer;
protected TextWidget m_VersionResult;
protected GridSpacerWidget m_ServerDecContainer;
protected MultilineTextWidget m_ServerDesc;
protected WrapSpacerWidget m_DetailsContainerRight;
protected ImageWidget m_MapImage;
protected ButtonWidget m_BtnShowFilters;
protected ButtonWidget m_RefreshList;
protected bool m_IsOnline;
void ServerBrowserDetailsContainer(Widget root, ServerBrowserTab parent)
{
m_Root = root;
m_Tab = parent;
m_ServerNameText = TextWidget.Cast(root.FindAnyWidget("details_servername_label"));
m_ServerTypeResult = TextWidget.Cast(root.FindAnyWidget("details_servertype_result_label"));
m_ServerModeResult = TextWidget.Cast(root.FindAnyWidget("details_mode_result_label"));
m_LastCharacterResult = TextWidget.Cast(root.FindAnyWidget("details_character_result_label"));
m_ServerIP = TextWidget.Cast(root.FindAnyWidget("details_ip_result_label"));
#ifdef PLATFORM_WINDOWS
#ifndef PLATFORM_CONSOLE
m_FriendsContainer = GridSpacerWidget.Cast(root.FindAnyWidget("details_friends_container"));
m_FriendsResult = TextWidget.Cast(root.FindAnyWidget("details_friends_result_label"));
#endif
#endif
m_TimeAccelerationResult = TextWidget.Cast(root.FindAnyWidget("details_time_result_label"));
m_TimeIcon = ImageWidget.Cast(root.FindAnyWidget("detail_time_img"));
m_BattleyeResult = TextWidget.Cast(root.FindAnyWidget("details_battleye_result_label"));
m_VersionContainer = WrapSpacerWidget.Cast(root.FindAnyWidget("details_version_container"));
m_VersionResult = TextWidget.Cast(root.FindAnyWidget("details_version_result_label"));
m_ServerDecContainer = GridSpacerWidget.Cast(root.FindAnyWidget("details_description_container"));
m_ServerDesc = MultilineTextWidget.Cast(root.FindAnyWidget("details_description_label"));
m_DetailsContainerRight = WrapSpacerWidget.Cast(root.FindAnyWidget("details_container_right"));
m_MapImage = ImageWidget.Cast(root.FindAnyWidget("map_image"));
m_TimeIcon.LoadImageFile(0, "set:dayz_gui image:icon_sun");
m_TimeIcon.LoadImageFile(1, "set:dayz_gui image:icon_sun_accel");
m_TimeIcon.LoadImageFile(2, "set:dayz_gui image:icon_moon");
m_TimeIcon.LoadImageFile(3, "set:dayz_gui image:icon_moon_accel");
m_BtnShowFilters = ButtonWidget.Cast(parent.GetDetailsRoot().FindAnyWidget("show_filters_button"));
m_RefreshList = ButtonWidget.Cast(parent.GetFilterRoot().FindAnyWidget("refresh_list_button"));
}
void SetDetails(GetServersResultRow serverInfo, bool online = false)
{
if (!online)
{
ClearDetails();
return;
}
if (serverInfo)
{
SetName(serverInfo.m_Name);
#ifdef PLATFORM_WINDOWS
#ifndef PLATFORM_CONSOLE
SetType(serverInfo.m_ShardId);
SetMode(serverInfo.m_Disable3rdPerson);
#endif
#endif
#ifdef PLATFORM_CONSOLE
SetMode(serverInfo.m_ModeId);
SetConsoleType(serverInfo.m_Official);
#endif
SetServerIP(serverInfo.GetIpPort());
//! Server time acceleration text version is hidden for now
/*
SetTimeAcceleration(serverInfo.m_EnvironmentTimeMul, serverInfo.m_EnvironmentNightTimeMul);
*/
SetTimeIcon(serverInfo.m_TimeOfDay, serverInfo.m_EnvironmentTimeMul);
#ifdef PLATFORM_WINDOWS
#ifndef PLATFORM_CONSOLE
SetCharacter(serverInfo.m_CharactersAlive);
SetFriends(serverInfo.m_SteamFriends);
#endif
#endif
//! Server anticheat text is hidden for now
/*
SetBattleyeState(serverInfo.m_AntiCheat);
*/
//! Server version text is hidden for now
/*
SetVersion(serverInfo.m_GameVersion);
*/
SetServerDesc(serverInfo.m_Description);
}
//! Map image container and handling is hidden/disabled for now
m_DetailsContainerRight.Show(false);
//SetServerMap();
}
void ClearDetails()
{
m_ServerNameText.SetText("#STR_server_browser_details_no_server_selected");
m_ServerTypeResult.SetText("-");
m_ServerModeResult.SetText("-");
m_ServerIP.SetText("-");
m_TimeIcon.Show(false);
m_TimeAccelerationResult.Show(true);
m_TimeAccelerationResult.SetText("-");
}
protected void SetName(string name)
{
m_ServerNameText.SetText(name);
m_ServerNameText.Update();
}
protected void SetType(string shardId)
{
string result = "#server_browser_tab_community";
if (shardId.Length() == 3 && shardId.ToInt() < 200)
result = "#server_browser_entry_official";
m_ServerTypeResult.SetText(result);
}
#ifdef PLATFORM_CONSOLE
protected void SetConsoleType(bool offical)
{
string result = "#server_browser_tab_community";
if (offical)
result = "#server_browser_entry_official";
m_ServerTypeResult.SetText(result);
}
#endif
protected void SetMode(int mode)
{
string result = "#STR_server_browser_no_server_selected";
switch (mode)
{
case 0:
{
result = "#STR_server_browser_details_third_person";
break;
}
case 1:
{
result = "#STR_server_browser_details_first_person";
break;
}
}
m_ServerModeResult.SetText(result);
}
protected void SetServerIP(string ip)
{
m_ServerIP.SetText(ip);
}
#ifdef PLATFORM_WINDOWS
#ifndef PLATFORM_CONSOLE
protected void SetCharacter(string characterName)
{
string result = "#STR_server_browser_char_not_alive";
if (characterName != "")
result = characterName;
m_LastCharacterResult.SetText(result);
}
protected void SetFriends(string steamFriends = "")
{
string result = "-";
if (steamFriends != "")
result = steamFriends;
m_FriendsResult.SetText(result);
m_FriendsResult.Update();
}
#endif
#endif
protected void SetTimeAcceleration(float timeMul, float nightTimeMul)
{
m_TimeAccelerationResult.SetText(timeMul.ToString() + "/" + nightTimeMul.ToString());
}
void SetTimeIcon(string time, float multiplier)
{
if (time != "")
{
TStringArray arr = new TStringArray;
time.Split(":", arr);
if (arr.Count() == 2)
{
int hour = arr.Get(0).ToInt();
int minute = arr.Get(1).ToInt();
if (hour >= 19 || hour <= 5) //Night
{
if (multiplier > 1)
m_TimeIcon.SetImage(3);
else
m_TimeIcon.SetImage(2);
}
else //Day
{
if (multiplier > 1)
m_TimeIcon.SetImage(1);
else
m_TimeIcon.SetImage(0);
}
m_TimeIcon.Show(true);
m_TimeAccelerationResult.Show(false);
}
}
else
{
m_TimeIcon.Show(false);
m_TimeAccelerationResult.Show(true);
m_TimeAccelerationResult.SetText("-");
}
}
protected void SetBattleyeState(int enabled = -1)
{
string result = "#STR_server_browser_no_server_selected";
int color = ARGB(255, 255, 255, 255);
switch (enabled)
{
case 0:
{
result = "#server_browser_entry_disabled";
color = ARGB(255, 255, 0, 0);
break;
}
case 1:
{
result = "#server_browser_entry_enabled";
color = ARGB(255, 0, 255, 0);
break;
}
}
m_BattleyeResult.SetText(result);
m_BattleyeResult.SetColor(color);
}
protected void SetVersion(string version)
{
m_VersionResult.SetText(version);
}
protected void SetServerDesc(string desc)
{
m_ServerDesc.SetText(desc);
m_ServerDesc.Update();
}
protected void SetServerMap(GetServersResultRow serverInfo)
{
string mapImagePath = ServerBrowserHelperFunctions.GetServerMapImagePath(serverInfo.m_MapNameToRun);
m_MapImage.LoadImageFile(0, mapImagePath);
m_DetailsContainerRight.Show(true);
}
void Focus()
{
#ifdef PLATFORM_CONSOLE
if (m_Tab.GetTabType() == TabType.FAVORITE)
{
SetFocus(m_RefreshList);
}
else
{
SetFocus(m_BtnShowFilters);
}
#endif
}
override bool OnFocus(Widget w, int x, int y)
{
m_Tab.OnDetailsFocus(w);
return false;
}
override bool OnMouseEnter(Widget w, int x, int y)
{
return m_Tab.OnMouseEnter(w, x, y);
}
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
{
return m_Tab.OnMouseLeave(w, enterW, x, y);
}
}