!! 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

View File

@@ -18,7 +18,10 @@ namespace Barotrauma
public ushort ID
{
get { return id; }
get
{
return id;
}
set
{
Entity thisEntity;
@@ -122,5 +125,34 @@ namespace Barotrauma
{
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++;
}
}
}
}

View File

@@ -168,6 +168,11 @@ namespace Barotrauma
get { return subBody == null ? false : subBody.AtDamageDepth; }
}
public override string ToString()
{
return "Barotrauma.Submarine ("+name+")";
}
//constructors & generation ----------------------------------------------------
public Submarine(string filePath, string hash = "") : base(null)
@@ -199,8 +204,8 @@ namespace Barotrauma
//this.mapHash = new MapHash(md5Hash);
}
base.Remove();
ID = ushort.MaxValue;
base.Remove();
}
//drawing ----------------------------------------------------
@@ -218,7 +223,7 @@ namespace Barotrauma
for (int i = 0; i < MapEntity.mapEntityList.Count(); i++)
{
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++)
{
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();
ID = ushort.MaxValue-10;
ID = ushort.MaxValue;
}
public static Submarine Load(string fileName)