Fixed incorrectly positioned character info boxes in the info menu

This commit is contained in:
Regalis
2017-04-24 19:08:25 +03:00
parent 645df3fde6
commit df7daa5925
4 changed files with 18 additions and 26 deletions
+12 -15
View File
@@ -212,11 +212,15 @@ namespace Barotrauma
GUIListBox crewList = new GUIListBox(new Rectangle(0, y, 280, listBoxHeight), Color.White * 0.7f, "", crewFrame); GUIListBox crewList = new GUIListBox(new Rectangle(0, y, 280, listBoxHeight), Color.White * 0.7f, "", crewFrame);
crewList.Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f); crewList.Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f);
crewList.OnSelected = SelectCrewCharacter; crewList.OnSelected = (component, obj) =>
{
SelectCrewCharacter(component.UserData as Character, crewList);
return true;
};
foreach (Character character in crew.FindAll(c => c.TeamID == teamIDs[i])) foreach (Character character in crew.FindAll(c => c.TeamID == teamIDs[i]))
{ {
GUIFrame frame = new GUIFrame(new Rectangle(0, 0, 0, 40), Color.Transparent, null, crewList); GUIFrame frame = new GUIFrame(new Rectangle(0, 0, 0, 40), Color.Transparent, "ListBoxElement", crewList);
frame.UserData = character; frame.UserData = character;
frame.Padding = new Vector4(5.0f, 5.0f, 5.0f, 5.0f); frame.Padding = new Vector4(5.0f, 5.0f, 5.0f, 5.0f);
frame.Color = (GameMain.NetworkMember != null && GameMain.NetworkMember.Character == character) ? Color.Gold * 0.2f : Color.Transparent; frame.Color = (GameMain.NetworkMember != null && GameMain.NetworkMember.Character == character) ? Color.Gold * 0.2f : Color.Transparent;
@@ -238,29 +242,22 @@ namespace Barotrauma
} }
protected virtual bool SelectCrewCharacter(GUIComponent component, object obj) protected virtual bool SelectCrewCharacter(Character character, GUIComponent crewList)
{ {
Character character = obj as Character;
if (character == null) return false; if (character == null) return false;
var crewFrame = component.Parent; GUIComponent existingFrame = crewList.Parent.FindChild("selectedcharacter");
while (crewFrame.Parent!=null) if (existingFrame != null) crewList.Parent.RemoveChild(existingFrame);
{
crewFrame = crewFrame.Parent;
}
GUIComponent existingFrame = crewFrame.FindChild("selectedcharacter");
if (existingFrame != null) crewFrame.RemoveChild(existingFrame);
var previewPlayer = new GUIFrame( var previewPlayer = new GUIFrame(
new Rectangle(0, 0, 230, 300), new Rectangle(0, 0, 230, 300),
new Color(0.0f, 0.0f, 0.0f, 0.8f), Alignment.TopRight, "", crewFrame); new Color(0.0f, 0.0f, 0.0f, 0.8f), Alignment.TopRight, "", crewList.Parent);
previewPlayer.Padding = new Vector4(5.0f, 5.0f, 5.0f, 5.0f); previewPlayer.Padding = new Vector4(5.0f, 5.0f, 5.0f, 5.0f);
previewPlayer.UserData = "selectedcharacter"; previewPlayer.UserData = "selectedcharacter";
character.Info.CreateInfoFrame(previewPlayer); character.Info.CreateInfoFrame(previewPlayer);
if (GameMain.NetworkMember != null) GameMain.NetworkMember.SelectCrewCharacter(component, obj); if (GameMain.NetworkMember != null) GameMain.NetworkMember.SelectCrewCharacter(character, crewList);
return true; return true;
} }
+3 -4
View File
@@ -910,13 +910,12 @@ namespace Barotrauma.Networking
} }
public override bool SelectCrewCharacter(GUIComponent component, object obj) public override bool SelectCrewCharacter(Character character, GUIComponent crewFrame)
{ {
var characterFrame = component.Parent.Parent.FindChild("selectedcharacter");
Character character = obj as Character;
if (character == null) return false; if (character == null) return false;
var characterFrame = crewFrame.FindChild("selectedcharacter");
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);
+2 -6
View File
@@ -1544,15 +1544,11 @@ namespace Barotrauma.Networking
SaveClientPermissions(); SaveClientPermissions();
} }
public override bool SelectCrewCharacter(GUIComponent component, object obj) public override bool SelectCrewCharacter(Character character, GUIComponent crewFrame)
{ {
base.SelectCrewCharacter(component, obj);
var characterFrame = component.Parent.Parent.FindChild("selectedcharacter");
Character character = obj as Character;
if (character == null) return false; if (character == null) return false;
var characterFrame = crewFrame.FindChild("selectedcharacter");
if (character != myCharacter) if (character != myCharacter)
{ {
var banButton = new GUIButton(new Rectangle(0, 0, 100, 20), "Ban", Alignment.BottomRight, "", characterFrame); var banButton = new GUIButton(new Rectangle(0, 0, 100, 20), "Ban", Alignment.BottomRight, "", characterFrame);
@@ -427,7 +427,7 @@ namespace Barotrauma.Networking
} }
} }
public virtual bool SelectCrewCharacter(GUIComponent component, object obj) public virtual bool SelectCrewCharacter(Character character, GUIComponent crewFrame)
{ {
return false; return false;
} }