(f5058dc03) Fixed inability to ban/kick clients using the in-game info menu, made the client-side ban/kick methods more type-safe.
This commit is contained in:
@@ -1884,17 +1884,20 @@ namespace Barotrauma.Networking
|
|||||||
client.SendMessage(msg, NetDeliveryMethod.ReliableUnordered);
|
client.SendMessage(msg, NetDeliveryMethod.ReliableUnordered);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool VoteForKick(GUIButton button, object userdata)
|
public void VoteForKick(Client votedClient)
|
||||||
{
|
{
|
||||||
var votedClient = userdata is Client ? (Client)userdata : otherClients.Find(c => c.Character == userdata);
|
if (votedClient == null) { return; }
|
||||||
if (votedClient == null) return false;
|
|
||||||
|
|
||||||
votedClient.AddKickVote(ConnectedClients.First(c => c.ID == ID));
|
votedClient.AddKickVote(ConnectedClients.First(c => c.ID == ID));
|
||||||
Vote(VoteType.Kick, votedClient);
|
Vote(VoteType.Kick, votedClient);
|
||||||
|
}
|
||||||
|
|
||||||
button.Enabled = false;
|
public override void AddChatMessage(ChatMessage message)
|
||||||
|
{
|
||||||
|
base.AddChatMessage(message);
|
||||||
|
|
||||||
return true;
|
if (string.IsNullOrEmpty(message.Text)) { return; }
|
||||||
|
GameMain.NetLobbyScreen.NewChatMessage(message);
|
||||||
|
chatBox.AddMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void AddChatMessage(ChatMessage message)
|
public override void AddChatMessage(ChatMessage message)
|
||||||
@@ -2379,12 +2382,12 @@ namespace Barotrauma.Networking
|
|||||||
|
|
||||||
public virtual bool SelectCrewCharacter(Character character, GUIComponent characterFrame)
|
public virtual bool SelectCrewCharacter(Character character, GUIComponent characterFrame)
|
||||||
{
|
{
|
||||||
if (character == null) return false;
|
if (character == null) { return false; }
|
||||||
|
|
||||||
if (character != myCharacter)
|
if (character != myCharacter)
|
||||||
{
|
{
|
||||||
var client = GameMain.NetworkMember.ConnectedClients.Find(c => c.Character == character);
|
var client = GameMain.NetworkMember.ConnectedClients.Find(c => c.Character == character);
|
||||||
if (client == null) return false;
|
if (client == null) { return false; }
|
||||||
|
|
||||||
var mute = new GUITickBox(new RectTransform(new Vector2(0.95f, 0.1f), characterFrame.RectTransform, Anchor.BottomCenter) { RelativeOffset = new Vector2(0.0f, 0.1f) },
|
var mute = new GUITickBox(new RectTransform(new Vector2(0.95f, 0.1f), characterFrame.RectTransform, Anchor.BottomCenter) { RelativeOffset = new Vector2(0.0f, 0.1f) },
|
||||||
TextManager.Get("Mute"))
|
TextManager.Get("Mute"))
|
||||||
@@ -2405,8 +2408,8 @@ namespace Barotrauma.Networking
|
|||||||
var banButton = new GUIButton(new RectTransform(new Vector2(0.45f, 0.9f), buttonContainer.RectTransform),
|
var banButton = new GUIButton(new RectTransform(new Vector2(0.45f, 0.9f), buttonContainer.RectTransform),
|
||||||
TextManager.Get("Ban"))
|
TextManager.Get("Ban"))
|
||||||
{
|
{
|
||||||
UserData = character.Name,
|
UserData = client,
|
||||||
OnClicked = GameMain.NetLobbyScreen.BanPlayer
|
OnClicked = (btn, userdata) => { GameMain.NetLobbyScreen.BanPlayer(client); return false; }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (HasPermission(ClientPermissions.Kick))
|
if (HasPermission(ClientPermissions.Kick))
|
||||||
@@ -2414,8 +2417,8 @@ namespace Barotrauma.Networking
|
|||||||
var kickButton = new GUIButton(new RectTransform(new Vector2(0.45f, 0.9f), buttonContainer.RectTransform),
|
var kickButton = new GUIButton(new RectTransform(new Vector2(0.45f, 0.9f), buttonContainer.RectTransform),
|
||||||
TextManager.Get("Kick"))
|
TextManager.Get("Kick"))
|
||||||
{
|
{
|
||||||
UserData = character.Name,
|
UserData = client,
|
||||||
OnClicked = GameMain.NetLobbyScreen.KickPlayer
|
OnClicked = (btn, userdata) => { GameMain.NetLobbyScreen.KickPlayer(client); return false; }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if (serverSettings.Voting.AllowVoteKick)
|
else if (serverSettings.Voting.AllowVoteKick)
|
||||||
@@ -2423,8 +2426,8 @@ namespace Barotrauma.Networking
|
|||||||
var kickVoteButton = new GUIButton(new RectTransform(new Vector2(0.45f, 0.9f), buttonContainer.RectTransform),
|
var kickVoteButton = new GUIButton(new RectTransform(new Vector2(0.45f, 0.9f), buttonContainer.RectTransform),
|
||||||
TextManager.Get("VoteToKick"))
|
TextManager.Get("VoteToKick"))
|
||||||
{
|
{
|
||||||
UserData = character,
|
UserData = client,
|
||||||
OnClicked = VoteForKick
|
OnClicked = (btn, userdata) => { VoteForKick(client); btn.Enabled = false; return true; }
|
||||||
};
|
};
|
||||||
if (GameMain.NetworkMember.ConnectedClients != null)
|
if (GameMain.NetworkMember.ConnectedClients != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1541,7 +1541,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
UserData = selectedClient
|
UserData = selectedClient
|
||||||
};
|
};
|
||||||
banButton.OnClicked += BanPlayer;
|
banButton.OnClicked = (bt, userdata) => { BanPlayer(selectedClient); return true; };
|
||||||
banButton.OnClicked += ClosePlayerFrame;
|
banButton.OnClicked += ClosePlayerFrame;
|
||||||
|
|
||||||
var rangebanButton = new GUIButton(new RectTransform(new Vector2(0.3f, 1.0f), buttonAreaUpper.RectTransform),
|
var rangebanButton = new GUIButton(new RectTransform(new Vector2(0.3f, 1.0f), buttonAreaUpper.RectTransform),
|
||||||
@@ -1549,7 +1549,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
UserData = selectedClient
|
UserData = selectedClient
|
||||||
};
|
};
|
||||||
rangebanButton.OnClicked += BanPlayerRange;
|
rangebanButton.OnClicked = (bt, userdata) => { BanPlayerRange(selectedClient); return true; };
|
||||||
rangebanButton.OnClicked += ClosePlayerFrame;
|
rangebanButton.OnClicked += ClosePlayerFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1561,7 +1561,7 @@ namespace Barotrauma
|
|||||||
TextManager.Get("VoteToKick"))
|
TextManager.Get("VoteToKick"))
|
||||||
{
|
{
|
||||||
Enabled = !selectedClient.HasKickVoteFromID(GameMain.Client.ID),
|
Enabled = !selectedClient.HasKickVoteFromID(GameMain.Client.ID),
|
||||||
OnClicked = GameMain.Client.VoteForKick,
|
OnClicked = (btn, userdata) => { GameMain.Client.VoteForKick(selectedClient); btn.Enabled = false; return true; },
|
||||||
UserData = selectedClient
|
UserData = selectedClient
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1574,7 +1574,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
UserData = selectedClient
|
UserData = selectedClient
|
||||||
};
|
};
|
||||||
kickButton.OnClicked = KickPlayer;
|
kickButton.OnClicked = (bt, userdata) => { KickPlayer(selectedClient); return true; };
|
||||||
kickButton.OnClicked += ClosePlayerFrame;
|
kickButton.OnClicked += ClosePlayerFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1603,25 +1603,22 @@ namespace Barotrauma
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool KickPlayer(GUIButton button, object userData)
|
public void KickPlayer(Client client)
|
||||||
{
|
{
|
||||||
if (!(userData is Client client) || GameMain.NetworkMember == null) return false;
|
if (GameMain.NetworkMember == null || client == null) { return; }
|
||||||
GameMain.Client.CreateKickReasonPrompt(client.Name, false);
|
GameMain.Client.CreateKickReasonPrompt(client.Name, false);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool BanPlayer(GUIButton button, object userData)
|
public void BanPlayer(Client client)
|
||||||
{
|
{
|
||||||
if (!(userData is Client client) || GameMain.NetworkMember == null) return false;
|
if (GameMain.NetworkMember == null || client == null) { return; }
|
||||||
GameMain.Client.CreateKickReasonPrompt(client.Name, true);
|
GameMain.Client.CreateKickReasonPrompt(client.Name, true);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool BanPlayerRange(GUIButton button, object userData)
|
public void BanPlayerRange(Client client)
|
||||||
{
|
{
|
||||||
if (!(userData is Client client) || GameMain.NetworkMember == null) return false;
|
if (GameMain.NetworkMember == null || client == null) { return; }
|
||||||
GameMain.Client.CreateKickReasonPrompt(client.Name, true, true);
|
GameMain.Client.CreateKickReasonPrompt(client.Name, true, true);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void AddToGUIUpdateList()
|
public override void AddToGUIUpdateList()
|
||||||
|
|||||||
Reference in New Issue
Block a user