- fixed clients failing to load submarines if they're not in the root Submarine folder

- some refactoring
- temporarily disabled kicking by voting
This commit is contained in:
Regalis
2016-05-30 18:32:36 +03:00
parent 9b659f72d6
commit b512a7ec18
6 changed files with 111 additions and 72 deletions

View File

@@ -35,9 +35,12 @@ namespace Barotrauma.Networking
get { return myID; }
}
public List<Client> OtherClients
public override List<Client> ConnectedClients
{
get { return otherClients; }
get
{
return otherClients;
}
}
public string ActiveFileTransferName
@@ -273,7 +276,14 @@ namespace Barotrauma.Networking
string subName = inc.ReadString();
string subHash = inc.ReadString();
submarines.Add(new Submarine(Path.Combine(Submarine.SavePath, subName), subHash, false));
string mySubPath = Path.Combine(Submarine.SavePath, subName);
var matchingSub = Submarine.SavedSubmarines.Find(s => s.Name == subName);
if (matchingSub != null)
{
mySubPath = matchingSub.FilePath;
}
submarines.Add(new Submarine(mySubPath, subHash, false));
}
GameMain.NetLobbyScreen.UpdateSubList(submarines);
@@ -679,7 +689,7 @@ namespace Barotrauma.Networking
if (id != myID)
{
var characterOwner = otherClients.Find(c => c.ID == id);
characterOwner.Character = newCharacter;
if (characterOwner != null) characterOwner.Character = newCharacter;
}
crew.Add(newCharacter);
@@ -824,12 +834,24 @@ namespace Barotrauma.Networking
Character character = obj as Character;
if (character == null) return false;
if (character != myCharacter)
{
var kickButton = new GUIButton(new Rectangle(0, 0, 130, 20), "Vote to Kick", Alignment.BottomLeft, GUI.Style, characterFrame);
kickButton.UserData = character;
kickButton.OnClicked += VoteForKick;
}
//if (character != myCharacter)
//{
// var kickButton = new GUIButton(new Rectangle(0, 0, 120, 20), "Vote to Kick", Alignment.BottomLeft, GUI.Style, characterFrame);
// kickButton.UserData = character;
// kickButton.OnClicked += VoteForKick;
//}
//if (GameMain.NetworkMember.ConnectedClients != null)
//{
// var client = GameMain.NetworkMember.ConnectedClients.Find(c => c.Character == character);
// if (client != null && client.KickVoteCount>0)
// {
// new GUITextBlock(
// new Rectangle(0, 0, 100, 20),
// client.KickVoteCount + "/" + GameMain.NetworkMember.ConnectedClients,
// GUI.Style, Alignment.BottomRight, Alignment.TopLeft, characterFrame);
// }
//}
return true;
}