- Edited item densities to make more sense

- Characters spawned through the console are synced with clients
This commit is contained in:
Regalis
2016-03-04 18:29:41 +02:00
parent 6efb64e94d
commit 02825782e5
18 changed files with 107 additions and 57 deletions
@@ -141,6 +141,12 @@ namespace Barotrauma
}
}
public string ConfigPath
{
get;
private set;
}
public float Mass
{
get { return AnimController.Mass; }
@@ -396,6 +402,8 @@ namespace Barotrauma
{
keys[i] = new Key(GameMain.Config.KeyBind((InputType)i));
}
ConfigPath = file;
selectedItems = new Item[2];
+9 -3
View File
@@ -193,11 +193,15 @@ namespace Barotrauma
break;
case "spawn":
if (commands.Length == 1) return;
Character spawnedCharacter = null;
if (commands[1].ToLower()=="human")
{
WayPoint spawnPoint = WayPoint.GetRandom(SpawnType.Human);
Character.Controlled = Character.Create(Character.HumanConfigFile, (spawnPoint == null) ? Vector2.Zero : spawnPoint.WorldPosition);
spawnedCharacter = Character.Create(Character.HumanConfigFile, (spawnPoint == null) ? Vector2.Zero : spawnPoint.WorldPosition);
Character.Controlled = spawnedCharacter;
if (GameMain.GameSession != null)
{
SinglePlayerMode mode = GameMain.GameSession.gameMode as SinglePlayerMode;
@@ -209,9 +213,11 @@ namespace Barotrauma
else
{
WayPoint spawnPoint = WayPoint.GetRandom(SpawnType.Enemy);
Character.Create("Content/Characters/" + commands[1] + "/" + commands[1] + ".xml", (spawnPoint == null) ? Vector2.Zero : spawnPoint.WorldPosition);
spawnedCharacter = Character.Create("Content/Characters/" + commands[1] + "/" + commands[1] + ".xml", (spawnPoint == null) ? Vector2.Zero : spawnPoint.WorldPosition);
}
if (spawnedCharacter != null && GameMain.Server != null) GameMain.Server.SendCharacterSpawnMessage(spawnedCharacter);
break;
//case "startserver":
// if (Game1.Server==null)
@@ -588,6 +588,9 @@ namespace Barotrauma.Networking
case (byte)PacketTypes.NewItem:
Item.Spawner.ReadNetworkData(inc);
break;
case (byte)PacketTypes.NewCharacter:
ReadCharacterSpawnMessage(inc);
break;
case (byte)PacketTypes.RemoveItem:
Item.Remover.ReadNetworkData(inc);
break;
@@ -767,6 +770,18 @@ namespace Barotrauma.Networking
GameMain.NetworkMember = null;
}
public void ReadCharacterSpawnMessage(NetIncomingMessage message)
{
string configPath = message.ReadString();
ushort id = message.ReadUInt16();
Vector2 position = new Vector2(message.ReadFloat(), message.ReadFloat());
var character = Character.Create(configPath, position);
if (character != null) character.ID = id;
}
public void RequestFile(string file, FileTransferMessageType fileType)
{
if (fileStreamReceiver!=null)
@@ -1476,6 +1476,21 @@ namespace Barotrauma.Networking
message.Write(character.Info.Job.Name);
}
public void SendCharacterSpawnMessage(Character character)
{
NetOutgoingMessage message = server.CreateMessage();
message.Write((byte)PacketTypes.NewCharacter);
message.Write(character.ConfigPath);
message.Write(character.ID);
message.Write(character.Position.X);
message.Write(character.Position.Y);
SendMessage(message, NetDeliveryMethod.ReliableUnordered);
}
public void SendItemSpawnMessage(List<Item> items, List<Inventory> inventories = null)
{
if (items == null || !items.Any()) return;
@@ -21,6 +21,8 @@ namespace Barotrauma.Networking
NewItem, RemoveItem,
NewCharacter,
CharacterInfo,
Chatmessage, UpdateNetLobby,