Host can ban lobby players from ingame

New menu looks really ugly but it works
This commit is contained in:
juanjp600
2016-08-28 22:16:49 -03:00
parent d27cafffa9
commit 8f675e625b
3 changed files with 46 additions and 3 deletions

View File

@@ -7,7 +7,7 @@ namespace Barotrauma
{
class GameSession
{
public enum InfoFrameTab { Crew, Mission };
public enum InfoFrameTab { Crew, Mission, ManagePlayers };
public readonly TaskManager TaskManager;
@@ -244,6 +244,13 @@ namespace Barotrauma
missionButton.UserData = InfoFrameTab.Mission;
missionButton.OnClicked = SelectInfoFrameTab;
if (GameMain.Server != null)
{
var manageButton = new GUIButton(new Rectangle(200, -30, 100, 20), "Manage players", GUI.Style, infoFrame);
manageButton.UserData = InfoFrameTab.ManagePlayers;
manageButton.OnClicked = SelectInfoFrameTab;
}
var closeButton = new GUIButton(new Rectangle(0, 0, 80, 20), "Close", Alignment.BottomCenter, GUI.Style, infoFrame);
closeButton.OnClicked = ToggleInfoFrame;
@@ -262,6 +269,9 @@ namespace Barotrauma
break;
case InfoFrameTab.Mission:
CreateMissionInfo(infoFrame);
break;
case InfoFrameTab.ManagePlayers:
GameMain.Server.ManagePlayersFrame(infoFrame);
break;
}
@@ -283,7 +293,7 @@ namespace Barotrauma
}
public void Update(float deltaTime)
{
TaskManager.Update(deltaTime);

View File

@@ -1732,7 +1732,7 @@ namespace Barotrauma
}
}
switch (type)
switch (type)
{
case NetworkEventType.DropItem:
if (GameMain.Server != null)

View File

@@ -646,5 +646,38 @@ namespace Barotrauma.Networking
return false;
}
public void ManagePlayersFrame(GUIFrame infoFrame)
{
GUIListBox cList = new GUIListBox(new Rectangle(0, 0, 280, 300), Color.White * 0.7f, GUI.Style, infoFrame);
cList.Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f);
//crewList.OnSelected = SelectCrewCharacter;
foreach (Client c in ConnectedClients)
{
GUIFrame frame = new GUIFrame(new Rectangle(0, 0, 0, 40), Color.Transparent, null, cList);
frame.Padding = new Vector4(5.0f, 5.0f, 5.0f, 5.0f);
frame.Color = (c.inGame && c.Character!=null && !c.Character.IsDead) ? Color.Gold * 0.2f : Color.Transparent;
frame.HoverColor = Color.LightGray * 0.5f;
frame.SelectedColor = Color.Gold * 0.5f;
GUITextBlock textBlock = new GUITextBlock(
new Rectangle(40, 0, 0, 25),
c.name + " (" + c.Connection.RemoteEndPoint.Address.ToString() + ")",
Color.Transparent, Color.White,
Alignment.Left, Alignment.Left,
null, frame);
var banButton = new GUIButton(new Rectangle(220, 0, 100, 20), "Ban", Alignment.Right | Alignment.CenterY, GUI.Style, frame);
banButton.UserData = c.name;
banButton.OnClicked += GameMain.NetLobbyScreen.BanPlayer;
var kickButton = new GUIButton(new Rectangle(110, 0, 100, 20), "Kick", Alignment.Right | Alignment.CenterY, GUI.Style, frame);
kickButton.UserData = c.name;
kickButton.OnClicked += GameMain.NetLobbyScreen.KickPlayer;
textBlock.Padding = new Vector4(5.0f, 0.0f, 5.0f, 0.0f);
}
}
}
}