Humans can be spawned through console in multiplayer
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -252,15 +252,17 @@ 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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user