!! Fixed a major bug that caused entity IDs to not match between server and client

This commit is contained in:
Regalis
2016-02-09 19:59:11 +02:00
parent 22fcd644ac
commit 5beaf43e17
2 changed files with 42 additions and 6 deletions
+33 -1
View File
@@ -18,7 +18,10 @@ namespace Barotrauma
public ushort ID public ushort ID
{ {
get { return id; } get
{
return id;
}
set set
{ {
Entity thisEntity; Entity thisEntity;
@@ -122,5 +125,34 @@ namespace Barotrauma
{ {
dictionary.Remove(ID); dictionary.Remove(ID);
} }
public static void DumpIds(int count)
{
List<Entity> e = new List<Entity>();
foreach (Entity ent in dictionary.Values)
{
int index = 0;
for (int i = 0; i < e.Count; i++)
{
if (e[i].id < ent.id)
{
index = i;
break;
}
}
e.Insert(index, ent);
}
int c = 0;
foreach (Entity ent in e)
{
if (c>count) break;
DebugConsole.ThrowError(ent.id+": "+ent.ToString());
c++;
}
}
} }
} }
+9 -5
View File
@@ -168,6 +168,11 @@ namespace Barotrauma
get { return subBody == null ? false : subBody.AtDamageDepth; } get { return subBody == null ? false : subBody.AtDamageDepth; }
} }
public override string ToString()
{
return "Barotrauma.Submarine ("+name+")";
}
//constructors & generation ---------------------------------------------------- //constructors & generation ----------------------------------------------------
public Submarine(string filePath, string hash = "") : base(null) public Submarine(string filePath, string hash = "") : base(null)
@@ -199,8 +204,8 @@ namespace Barotrauma
//this.mapHash = new MapHash(md5Hash); //this.mapHash = new MapHash(md5Hash);
} }
base.Remove();
ID = ushort.MaxValue; ID = ushort.MaxValue;
base.Remove();
} }
//drawing ---------------------------------------------------- //drawing ----------------------------------------------------
@@ -218,7 +223,7 @@ namespace Barotrauma
for (int i = 0; i < MapEntity.mapEntityList.Count(); i++) for (int i = 0; i < MapEntity.mapEntityList.Count(); i++)
{ {
if (MapEntity.mapEntityList[i].Sprite == null || MapEntity.mapEntityList[i].Sprite.Depth < 0.5f) if (MapEntity.mapEntityList[i].Sprite == null || MapEntity.mapEntityList[i].Sprite.Depth < 0.5f)
MapEntity.mapEntityList[i].Draw(spriteBatch, editing); MapEntity.mapEntityList[i].Draw(spriteBatch, editing, false);
} }
@@ -242,7 +247,7 @@ namespace Barotrauma
for (int i = 0; i < MapEntity.mapEntityList.Count(); i++) for (int i = 0; i < MapEntity.mapEntityList.Count(); i++)
{ {
if (MapEntity.mapEntityList[i].Sprite == null || MapEntity.mapEntityList[i].Sprite.Depth >= 0.5f) if (MapEntity.mapEntityList[i].Sprite == null || MapEntity.mapEntityList[i].Sprite.Depth >= 0.5f)
MapEntity.mapEntityList[i].Draw(spriteBatch, editing); MapEntity.mapEntityList[i].Draw(spriteBatch, editing, true);
} }
} }
@@ -680,8 +685,7 @@ namespace Barotrauma
GameMain.LightManager.OnMapLoaded(); GameMain.LightManager.OnMapLoaded();
ID = ushort.MaxValue-10; ID = ushort.MaxValue;
} }
public static Submarine Load(string fileName) public static Submarine Load(string fileName)