Upload from upload_mods.ps1
This commit is contained in:
227
Harmony/Harmony_XUiC_PlayersList.cs
Normal file
227
Harmony/Harmony_XUiC_PlayersList.cs
Normal file
@@ -0,0 +1,227 @@
|
||||
using Platform;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Harmony.XUiC_PlayersListPatches
|
||||
{
|
||||
[HarmonyPatch(typeof(XUiC_PlayersList))]
|
||||
[HarmonyPatch("updatePlayersList")]
|
||||
public class updatePlayersListPatch
|
||||
{
|
||||
public static bool Prefix(XUiC_PlayersList __instance)
|
||||
{
|
||||
EntityPlayerLocal entityPlayer1 = __instance.xui.playerUI.entityPlayer;
|
||||
|
||||
bool hideGamestage = false;
|
||||
|
||||
if (RebirthVariables.customInfested == "hidesurprise"
|
||||
)
|
||||
{
|
||||
List<Quest> listCurrentQuests = entityPlayer1.QuestJournal.quests;
|
||||
|
||||
for (int index = 0; index < listCurrentQuests.Count; ++index)
|
||||
{
|
||||
if (listCurrentQuests[index].CurrentState == Quest.QuestState.InProgress && listCurrentQuests[index].RallyMarkerActivated)
|
||||
{
|
||||
hideGamestage = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<XUiC_PlayersList.SEntityIdRef> sentityIdRefList = new List<XUiC_PlayersList.SEntityIdRef>();
|
||||
for (int index = 0; index < GameManager.Instance.World.Players.list.Count; ++index)
|
||||
{
|
||||
EntityPlayer _Ref = GameManager.Instance.World.Players.list[index];
|
||||
sentityIdRefList.Add(new XUiC_PlayersList.SEntityIdRef(_Ref.entityId, _Ref));
|
||||
}
|
||||
__instance.numberOfPlayers.Text = sentityIdRefList.Count.ToString();
|
||||
__instance.playerPager.SetLastPageByElementsAndPageLength(sentityIdRefList.Count, __instance.playerList.Rows);
|
||||
if (GameManager.Instance.persistentLocalPlayer.ACL != null)
|
||||
{
|
||||
foreach (PlatformUserIdentifierAbs _userIdentifier in GameManager.Instance.persistentLocalPlayer.ACL)
|
||||
{
|
||||
PersistentPlayerData playerData = GameManager.Instance.persistentPlayers.GetPlayerData(_userIdentifier);
|
||||
if (playerData != null && !((UnityEngine.Object)GameManager.Instance.World.GetEntity(playerData.EntityId) != (UnityEngine.Object)null))
|
||||
sentityIdRefList.Add(new XUiC_PlayersList.SEntityIdRef(playerData));
|
||||
}
|
||||
}
|
||||
sentityIdRefList.Sort((IComparer<XUiC_PlayersList.SEntityIdRef>)new XUiC_PlayersList.PlayersSorter(entityPlayer1));
|
||||
GameServerInfo gameServerInfo = SingletonMonoBehaviour<ConnectionManager>.Instance.IsServer ? SingletonMonoBehaviour<ConnectionManager>.Instance.LocalServerInfo : SingletonMonoBehaviour<ConnectionManager>.Instance.LastGameServerInfo;
|
||||
bool _showCrossplay = gameServerInfo != null && gameServerInfo.AllowsCrossplay;
|
||||
if (!_showCrossplay)
|
||||
{
|
||||
EPlayGroup playGroup1 = DeviceFlags.Current.ToPlayGroup();
|
||||
for (int index = 0; index < sentityIdRefList.Count; ++index)
|
||||
{
|
||||
EPlayGroup playGroup2 = sentityIdRefList[index].PlayerData.PlayGroup;
|
||||
if (playGroup2 != EPlayGroup.Unknown && playGroup2 != playGroup1)
|
||||
{
|
||||
_showCrossplay = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
int index1;
|
||||
for (index1 = 0; index1 < __instance.playerList.Rows && index1 < sentityIdRefList.Count; ++index1)
|
||||
{
|
||||
int index2 = index1 + __instance.playerList.Rows * __instance.playerPager.GetPage();
|
||||
if (index2 < sentityIdRefList.Count)
|
||||
{
|
||||
XUiC_PlayersListEntry playerEntry = __instance.playerEntries[index1];
|
||||
if (playerEntry != null)
|
||||
{
|
||||
EntityPlayer entityPlayer2 = sentityIdRefList[index2].Ref;
|
||||
bool flag1 = (UnityEngine.Object)entityPlayer2 != (UnityEngine.Object)null && (UnityEngine.Object)entityPlayer2 != (UnityEngine.Object)entityPlayer1 && entityPlayer2.IsInPartyOfLocalPlayer;
|
||||
bool flag2 = (UnityEngine.Object)entityPlayer2 == (UnityEngine.Object)null || (UnityEngine.Object)entityPlayer2 != (UnityEngine.Object)entityPlayer1 && entityPlayer2.IsFriendOfLocalPlayer;
|
||||
if (!((UnityEngine.Object)entityPlayer2 == (UnityEngine.Object)null))
|
||||
{
|
||||
int entityId = entityPlayer2.entityId;
|
||||
}
|
||||
PersistentPlayerData persistentPlayerData = sentityIdRefList[index2].PlayerId != null ? GameManager.Instance.persistentPlayers.GetPlayerData(sentityIdRefList[index2].PlayerId) : GameManager.Instance.persistentPlayers.GetPlayerDataFromEntityID(entityPlayer2.entityId);
|
||||
if (persistentPlayerData != null)
|
||||
{
|
||||
foreach (EBlockType _blockType in (IEnumerable<EBlockType>)EnumUtils.Values<EBlockType>())
|
||||
playerEntry.playerBlockStateChanged(persistentPlayerData.PlatformData, _blockType, persistentPlayerData.PlatformData.Blocked[_blockType].State);
|
||||
if ((UnityEngine.Object)entityPlayer2 != (UnityEngine.Object)null)
|
||||
{
|
||||
playerEntry.IsOffline = false;
|
||||
playerEntry.EntityId = entityPlayer2.entityId;
|
||||
playerEntry.PlayerData = persistentPlayerData;
|
||||
playerEntry.ViewComponent.IsVisible = true;
|
||||
playerEntry.PlayerName.UpdatePlayerData(persistentPlayerData.PlayerData, _showCrossplay, persistentPlayerData.PlayerName.DisplayName);
|
||||
playerEntry.AdminSprite.IsVisible = entityPlayer2.IsAdmin;
|
||||
playerEntry.TwitchSprite.IsVisible = entityPlayer2.TwitchEnabled && entityPlayer2.TwitchActionsEnabled == EntityPlayer.TwitchActionsStates.Enabled;
|
||||
playerEntry.TwitchDisabledSprite.IsVisible = entityPlayer2.TwitchActionsEnabled != EntityPlayer.TwitchActionsStates.Enabled || entityPlayer2.TwitchSafe;
|
||||
playerEntry.TwitchDisabledSprite.SpriteName = entityPlayer2.TwitchActionsEnabled != EntityPlayer.TwitchActionsStates.Enabled ? "ui_game_symbol_twitch_action_disabled" : "ui_game_symbol_brick";
|
||||
playerEntry.TwitchDisabledSprite.ToolTip = entityPlayer2.TwitchActionsEnabled != EntityPlayer.TwitchActionsStates.Enabled ? XUiC_PlayersList.twitchDisabled : XUiC_PlayersList.twitchSafe;
|
||||
XUiV_Label zombieKillsText = playerEntry.ZombieKillsText;
|
||||
int num = entityPlayer2.KilledZombies;
|
||||
string str1 = num.ToString();
|
||||
zombieKillsText.Text = str1;
|
||||
XUiV_Label playerKillsText = playerEntry.PlayerKillsText;
|
||||
num = entityPlayer2.KilledPlayers;
|
||||
string str2 = num.ToString();
|
||||
playerKillsText.Text = str2;
|
||||
XUiV_Label deathsText = playerEntry.DeathsText;
|
||||
num = entityPlayer2.Died;
|
||||
string str3 = num.ToString();
|
||||
deathsText.Text = str3;
|
||||
XUiV_Label levelText = playerEntry.LevelText;
|
||||
num = entityPlayer2.Progression.GetLevel();
|
||||
string str4 = num.ToString();
|
||||
levelText.Text = str4;
|
||||
XUiV_Label gamestageText = playerEntry.GamestageText;
|
||||
num = entityPlayer2.gameStage;
|
||||
string str5 = num.ToString();
|
||||
gamestageText.Text = str5;
|
||||
|
||||
if (hideGamestage)
|
||||
{
|
||||
gamestageText.Text = "N/A";
|
||||
}
|
||||
|
||||
playerEntry.PingText.Text = !((UnityEngine.Object)entityPlayer2 == (UnityEngine.Object)entityPlayer1) || !SingletonMonoBehaviour<ConnectionManager>.Instance.IsServer ? (entityPlayer2.pingToServer < 0 ? "--" : entityPlayer2.pingToServer.ToString()) : "--";
|
||||
playerEntry.Voice.IsVisible = (UnityEngine.Object)entityPlayer2 != (UnityEngine.Object)entityPlayer1;
|
||||
playerEntry.Chat.IsVisible = (UnityEngine.Object)entityPlayer2 != (UnityEngine.Object)entityPlayer1;
|
||||
playerEntry.IsFriend = flag2;
|
||||
playerEntry.ShowOnMapEnabled = flag2 | flag1;
|
||||
if (flag2 | flag1)
|
||||
{
|
||||
float magnitude = (entityPlayer2.GetPosition() - entityPlayer1.GetPosition()).magnitude;
|
||||
playerEntry.DistanceToFriend.Text = ValueDisplayFormatters.Distance(magnitude);
|
||||
}
|
||||
else
|
||||
playerEntry.DistanceToFriend.Text = "--";
|
||||
playerEntry.buttonReportPlayer.IsVisible = PlatformManager.MultiPlatform.PlayerReporting != null && (UnityEngine.Object)entityPlayer2 != (UnityEngine.Object)entityPlayer1;
|
||||
playerEntry.AllyStatus = !((UnityEngine.Object)entityPlayer2 == (UnityEngine.Object)entityPlayer1) ? (!flag2 ? (!__instance.invitesReceivedList.Contains(persistentPlayerData.PrimaryId) ? (!__instance.invitesSentList.Contains(persistentPlayerData.PrimaryId) ? XUiC_PlayersListEntry.EnumAllyInviteStatus.NA : XUiC_PlayersListEntry.EnumAllyInviteStatus.Sent) : XUiC_PlayersListEntry.EnumAllyInviteStatus.Received) : XUiC_PlayersListEntry.EnumAllyInviteStatus.Friends) : XUiC_PlayersListEntry.EnumAllyInviteStatus.LocalPlayer;
|
||||
if ((UnityEngine.Object)entityPlayer2 == (UnityEngine.Object)entityPlayer1)
|
||||
playerEntry.PartyStatus = !entityPlayer1.partyInvites.Contains(entityPlayer2) ? (!entityPlayer1.IsInParty() ? XUiC_PlayersListEntry.EnumPartyStatus.LocalPlayer_NoParty : ((UnityEngine.Object)entityPlayer1.Party.Leader == (UnityEngine.Object)entityPlayer1 ? XUiC_PlayersListEntry.EnumPartyStatus.LocalPlayer_InPartyAsLead : XUiC_PlayersListEntry.EnumPartyStatus.LocalPlayer_InParty)) : XUiC_PlayersListEntry.EnumPartyStatus.LocalPlayer_Received;
|
||||
else if (entityPlayer1.IsInParty())
|
||||
{
|
||||
bool flag3 = entityPlayer1.IsPartyLead();
|
||||
playerEntry.PartyStatus = !entityPlayer1.Party.MemberList.Contains(entityPlayer2) ? (!entityPlayer2.IsInParty() || !entityPlayer2.Party.IsFull() ? (flag3 ? XUiC_PlayersListEntry.EnumPartyStatus.OtherPlayer_NoPartyAsLead : XUiC_PlayersListEntry.EnumPartyStatus.OtherPlayer_NoParty) : XUiC_PlayersListEntry.EnumPartyStatus.OtherPlayer_PartyFullAsLead) : (!flag3 ? (entityPlayer2.IsPartyLead() ? XUiC_PlayersListEntry.EnumPartyStatus.OtherPlayer_InPartyIsLead : XUiC_PlayersListEntry.EnumPartyStatus.OtherPlayer_InParty) : XUiC_PlayersListEntry.EnumPartyStatus.OtherPlayer_InPartyAsLead);
|
||||
}
|
||||
else if (entityPlayer1.partyInvites.Contains(entityPlayer2))
|
||||
{
|
||||
if (entityPlayer2.IsInParty() && entityPlayer2.Party.IsFull())
|
||||
{
|
||||
playerEntry.PartyStatus = XUiC_PlayersListEntry.EnumPartyStatus.OtherPlayer_NoPartyAsLead;
|
||||
entityPlayer1.partyInvites.Remove(entityPlayer2);
|
||||
}
|
||||
else
|
||||
playerEntry.PartyStatus = XUiC_PlayersListEntry.EnumPartyStatus.LocalPlayer_Received;
|
||||
}
|
||||
else
|
||||
{
|
||||
entityPlayer2.IsInParty();
|
||||
playerEntry.PartyStatus = XUiC_PlayersListEntry.EnumPartyStatus.OtherPlayer_NoPartyAsLead;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
playerEntry.IsOffline = true;
|
||||
playerEntry.EntityId = -1;
|
||||
playerEntry.PlayerData = persistentPlayerData;
|
||||
playerEntry.PlayerName.UpdatePlayerData(persistentPlayerData.PlayerData, _showCrossplay, persistentPlayerData.PlayerName.DisplayName ?? sentityIdRefList[index2].PlayerId.CombinedString);
|
||||
playerEntry.AdminSprite.IsVisible = false;
|
||||
playerEntry.TwitchSprite.IsVisible = false;
|
||||
playerEntry.TwitchDisabledSprite.IsVisible = false;
|
||||
playerEntry.DistanceToFriend.IsVisible = true;
|
||||
playerEntry.DistanceToFriend.Text = "--";
|
||||
playerEntry.ZombieKillsText.Text = "--";
|
||||
playerEntry.PlayerKillsText.Text = "--";
|
||||
playerEntry.DeathsText.Text = "--";
|
||||
playerEntry.LevelText.Text = "--";
|
||||
playerEntry.GamestageText.Text = "--";
|
||||
playerEntry.PingText.Text = "--";
|
||||
playerEntry.Voice.IsVisible = false;
|
||||
playerEntry.Chat.IsVisible = false;
|
||||
playerEntry.IsOffline = true;
|
||||
playerEntry.AllyStatus = !((UnityEngine.Object)entityPlayer2 == (UnityEngine.Object)entityPlayer1) ? (!flag2 ? (!__instance.invitesReceivedList.Contains(persistentPlayerData.PrimaryId) ? (!__instance.invitesSentList.Contains(persistentPlayerData.PrimaryId) ? XUiC_PlayersListEntry.EnumAllyInviteStatus.NA : XUiC_PlayersListEntry.EnumAllyInviteStatus.Sent) : XUiC_PlayersListEntry.EnumAllyInviteStatus.Received) : XUiC_PlayersListEntry.EnumAllyInviteStatus.Friends) : XUiC_PlayersListEntry.EnumAllyInviteStatus.LocalPlayer;
|
||||
playerEntry.PartyStatus = XUiC_PlayersListEntry.EnumPartyStatus.Offline;
|
||||
playerEntry.labelPartyIcon.IsVisible = true;
|
||||
playerEntry.buttonReportPlayer.IsVisible = true;
|
||||
playerEntry.buttonShowOnMap.IsVisible = false;
|
||||
playerEntry.labelShowOnMap.IsVisible = true;
|
||||
}
|
||||
playerEntry.RefreshBindings();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
for (; index1 < __instance.playerList.Rows; ++index1)
|
||||
{
|
||||
XUiC_PlayersListEntry playerEntry = __instance.playerEntries[index1];
|
||||
if (playerEntry != null)
|
||||
{
|
||||
playerEntry.EntityId = -1;
|
||||
playerEntry.PlayerData = (PersistentPlayerData)null;
|
||||
playerEntry.PlayerName.ClearPlayerData();
|
||||
playerEntry.AdminSprite.IsVisible = false;
|
||||
playerEntry.TwitchSprite.IsVisible = false;
|
||||
playerEntry.TwitchDisabledSprite.IsVisible = false;
|
||||
playerEntry.ZombieKillsText.Text = string.Empty;
|
||||
playerEntry.PlayerKillsText.Text = string.Empty;
|
||||
playerEntry.DeathsText.Text = string.Empty;
|
||||
playerEntry.LevelText.Text = string.Empty;
|
||||
playerEntry.GamestageText.Text = string.Empty;
|
||||
playerEntry.PingText.Text = string.Empty;
|
||||
playerEntry.Voice.IsVisible = false;
|
||||
playerEntry.Chat.IsVisible = false;
|
||||
playerEntry.ShowOnMapEnabled = false;
|
||||
playerEntry.DistanceToFriend.IsVisible = false;
|
||||
playerEntry.AllyStatus = XUiC_PlayersListEntry.EnumAllyInviteStatus.Empty;
|
||||
playerEntry.PartyStatus = XUiC_PlayersListEntry.EnumPartyStatus.Offline;
|
||||
playerEntry.buttonReportPlayer.IsVisible = false;
|
||||
playerEntry.labelAllyIcon.IsVisible = false;
|
||||
playerEntry.labelPartyIcon.IsVisible = false;
|
||||
playerEntry.labelShowOnMap.IsVisible = false;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user