Humans can be spawned through console in multiplayer
This commit is contained in:
@@ -432,8 +432,7 @@ namespace Barotrauma
|
||||
|
||||
return enemyCharacter;
|
||||
}
|
||||
|
||||
if (hasAi && !isNetworkPlayer)
|
||||
else if (hasAi)
|
||||
{
|
||||
var aiCharacter = new AICharacter(file, position, characterInfo, isNetworkPlayer);
|
||||
var ai = new HumanAIController(aiCharacter);
|
||||
@@ -442,7 +441,6 @@ namespace Barotrauma
|
||||
aiCharacter.minHealth = -100.0f;
|
||||
|
||||
return aiCharacter;
|
||||
|
||||
}
|
||||
|
||||
var character = new Character(file, position, characterInfo, isNetworkPlayer);
|
||||
@@ -1200,7 +1198,7 @@ namespace Barotrauma
|
||||
|
||||
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;
|
||||
spriteBatch.DrawString(GUI.Font, Info.Name, namePos - new Vector2(1.0f, 1.0f), Color.Black);
|
||||
|
||||
@@ -252,15 +252,17 @@ namespace Barotrauma
|
||||
|
||||
if (commands[1].ToLowerInvariant()=="human")
|
||||
{
|
||||
spawnedCharacter = Character.Create(Character.HumanConfigFile, spawnPosition);
|
||||
Character.Controlled = spawnedCharacter;
|
||||
spawnedCharacter = Character.Create(Character.HumanConfigFile, spawnPosition);
|
||||
|
||||
if (GameMain.GameSession != null)
|
||||
{
|
||||
SinglePlayerMode mode = GameMain.GameSession.gameMode as SinglePlayerMode;
|
||||
if (mode == null) break;
|
||||
GameMain.GameSession.CrewManager.AddCharacter(Character.Controlled);
|
||||
GameMain.GameSession.CrewManager.SelectCharacter(null, Character.Controlled);
|
||||
if (mode != null)
|
||||
{
|
||||
Character.Controlled = spawnedCharacter;
|
||||
GameMain.GameSession.CrewManager.AddCharacter(Character.Controlled);
|
||||
GameMain.GameSession.CrewManager.SelectCharacter(null, Character.Controlled);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -890,12 +890,19 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
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);
|
||||
if (character != null) character.ID = id;
|
||||
var character = Character.Create(configPath, position, null, true);
|
||||
if (character != null) character.ID = id;
|
||||
}
|
||||
else
|
||||
{
|
||||
ReadCharacterData(message, false, true);
|
||||
}
|
||||
}
|
||||
|
||||
public void RequestFile(string file, FileTransferMessageType fileType)
|
||||
@@ -1069,7 +1076,7 @@ namespace Barotrauma.Networking
|
||||
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();
|
||||
ushort ID = inc.ReadUInt16();
|
||||
@@ -1082,12 +1089,10 @@ namespace Barotrauma.Networking
|
||||
string jobName = inc.ReadString();
|
||||
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);
|
||||
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);
|
||||
|
||||
character.ID = ID;
|
||||
|
||||
@@ -1587,10 +1587,17 @@ namespace Barotrauma.Networking
|
||||
|
||||
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.Y);
|
||||
message.Write(character.Position.X);
|
||||
message.Write(character.Position.Y);
|
||||
}
|
||||
|
||||
SendMessage(message, NetDeliveryMethod.ReliableUnordered, recipients);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user