Humans can be spawned through console in multiplayer

This commit is contained in:
Regalis
2016-08-23 14:19:50 +03:00
parent f03d3b2f61
commit dc67eeebd4
4 changed files with 32 additions and 20 deletions
+2 -4
View File
@@ -432,8 +432,7 @@ namespace Barotrauma
return enemyCharacter; return enemyCharacter;
} }
else if (hasAi)
if (hasAi && !isNetworkPlayer)
{ {
var aiCharacter = new AICharacter(file, position, characterInfo, isNetworkPlayer); var aiCharacter = new AICharacter(file, position, characterInfo, isNetworkPlayer);
var ai = new HumanAIController(aiCharacter); var ai = new HumanAIController(aiCharacter);
@@ -442,7 +441,6 @@ namespace Barotrauma
aiCharacter.minHealth = -100.0f; aiCharacter.minHealth = -100.0f;
return aiCharacter; return aiCharacter;
} }
var character = new Character(file, position, characterInfo, isNetworkPlayer); var character = new Character(file, position, characterInfo, isNetworkPlayer);
@@ -1200,7 +1198,7 @@ namespace Barotrauma
if (this == controlled) return; if (this == controlled) return;
if (IsNetworkPlayer && info!=null) if (info != null)
{ {
Vector2 namePos = new Vector2(pos.X, pos.Y - 120.0f) - GUI.Font.MeasureString(Info.Name) * 0.5f; Vector2 namePos = new Vector2(pos.X, pos.Y - 120.0f) - GUI.Font.MeasureString(Info.Name) * 0.5f;
spriteBatch.DrawString(GUI.Font, Info.Name, namePos - new Vector2(1.0f, 1.0f), Color.Black); spriteBatch.DrawString(GUI.Font, Info.Name, namePos - new Vector2(1.0f, 1.0f), Color.Black);
+6 -4
View File
@@ -253,14 +253,16 @@ namespace Barotrauma
if (commands[1].ToLowerInvariant()=="human") if (commands[1].ToLowerInvariant()=="human")
{ {
spawnedCharacter = Character.Create(Character.HumanConfigFile, spawnPosition); spawnedCharacter = Character.Create(Character.HumanConfigFile, spawnPosition);
Character.Controlled = spawnedCharacter;
if (GameMain.GameSession != null) if (GameMain.GameSession != null)
{ {
SinglePlayerMode mode = GameMain.GameSession.gameMode as SinglePlayerMode; SinglePlayerMode mode = GameMain.GameSession.gameMode as SinglePlayerMode;
if (mode == null) break; if (mode != null)
GameMain.GameSession.CrewManager.AddCharacter(Character.Controlled); {
GameMain.GameSession.CrewManager.SelectCharacter(null, Character.Controlled); Character.Controlled = spawnedCharacter;
GameMain.GameSession.CrewManager.AddCharacter(Character.Controlled);
GameMain.GameSession.CrewManager.SelectCharacter(null, Character.Controlled);
}
} }
} }
else else
+13 -8
View File
@@ -890,12 +890,19 @@ namespace Barotrauma.Networking
{ {
string configPath = message.ReadString(); string configPath = message.ReadString();
ushort id = message.ReadUInt16(); if (configPath != Character.HumanConfigFile)
{
ushort id = message.ReadUInt16();
Vector2 position = new Vector2(message.ReadFloat(), message.ReadFloat()); Vector2 position = new Vector2(message.ReadFloat(), message.ReadFloat());
var character = Character.Create(configPath, position, null, true); var character = Character.Create(configPath, position, null, true);
if (character != null) character.ID = id; if (character != null) character.ID = id;
}
else
{
ReadCharacterData(message, false, true);
}
} }
public void RequestFile(string file, FileTransferMessageType fileType) public void RequestFile(string file, FileTransferMessageType fileType)
@@ -1069,7 +1076,7 @@ namespace Barotrauma.Networking
client.SendMessage(msg, NetDeliveryMethod.ReliableUnordered); client.SendMessage(msg, NetDeliveryMethod.ReliableUnordered);
} }
public Character ReadCharacterData(NetIncomingMessage inc, bool isMyCharacter) public Character ReadCharacterData(NetIncomingMessage inc, bool isMyCharacter, bool hasAi = false)
{ {
string newName = inc.ReadString(); string newName = inc.ReadString();
ushort ID = inc.ReadUInt16(); ushort ID = inc.ReadUInt16();
@@ -1082,12 +1089,10 @@ namespace Barotrauma.Networking
string jobName = inc.ReadString(); string jobName = inc.ReadString();
JobPrefab jobPrefab = JobPrefab.List.Find(jp => jp.Name == jobName); JobPrefab jobPrefab = JobPrefab.List.Find(jp => jp.Name == jobName);
//ushort spawnPointID = inc.ReadUInt16();
CharacterInfo ch = new CharacterInfo(Character.HumanConfigFile, newName, isFemale ? Gender.Female : Gender.Male, jobPrefab); CharacterInfo ch = new CharacterInfo(Character.HumanConfigFile, newName, isFemale ? Gender.Female : Gender.Male, jobPrefab);
ch.HeadSpriteId = headSpriteID; ch.HeadSpriteId = headSpriteID;
Character character = Character.Create(ch, position, !isMyCharacter, false); Character character = Character.Create(ch, position, !isMyCharacter, hasAi);
GameMain.GameSession.CrewManager.characters.Add(character); GameMain.GameSession.CrewManager.characters.Add(character);
character.ID = ID; character.ID = ID;
+10 -3
View File
@@ -1587,10 +1587,17 @@ namespace Barotrauma.Networking
message.Write(character.ConfigPath); message.Write(character.ConfigPath);
message.Write(character.ID); if (character.ConfigPath == Character.HumanConfigFile)
{
WriteCharacterData(message, character.Name, character);
}
else
{
message.Write(character.ID);
message.Write(character.Position.X); message.Write(character.Position.X);
message.Write(character.Position.Y); message.Write(character.Position.Y);
}
SendMessage(message, NetDeliveryMethod.ReliableUnordered, recipients); SendMessage(message, NetDeliveryMethod.ReliableUnordered, recipients);
} }