fixes bug in prev.
This commit is contained in:
@@ -86,7 +86,11 @@ namespace OpenRa
|
|||||||
if (r.ReadBoolean())
|
if (r.ReadBoolean())
|
||||||
targetString = r.ReadString();
|
targetString = r.ReadString();
|
||||||
|
|
||||||
return new Order( order, ActorFromUInt( subjectId ), ActorFromUInt( targetActorId ), targetLocation, targetString);
|
Actor subject, targetActor;
|
||||||
|
if( !TryGetActorFromUInt( subjectId, out subject ) || !TryGetActorFromUInt( targetActorId, out targetActor ) )
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return new Order( order, subject, targetActor, targetLocation, targetString);
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0xfe:
|
case 0xfe:
|
||||||
@@ -109,10 +113,23 @@ namespace OpenRa
|
|||||||
return a.ActorID;
|
return a.ActorID;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Actor ActorFromUInt(uint aID)
|
static bool TryGetActorFromUInt(uint aID, out Actor ret )
|
||||||
{
|
{
|
||||||
if (aID == 0xFFFFFFFF) return null;
|
if( aID == 0xFFFFFFFF )
|
||||||
return Game.world.Actors.SingleOrDefault(x => x.ActorID == aID);
|
{
|
||||||
|
ret = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach( var a in Game.world.Actors.Where( x => x.ActorID == aID ) )
|
||||||
|
{
|
||||||
|
ret = a;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
ret = null;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Named constructors for Orders.
|
// Named constructors for Orders.
|
||||||
|
|||||||
@@ -27,8 +27,12 @@ namespace OpenRa.Orders
|
|||||||
var ms = new MemoryStream(bytes);
|
var ms = new MemoryStream(bytes);
|
||||||
var reader = new BinaryReader(ms);
|
var reader = new BinaryReader(ms);
|
||||||
var ret = new List<Order>();
|
var ret = new List<Order>();
|
||||||
while (ms.Position < ms.Length)
|
while( ms.Position < ms.Length )
|
||||||
ret.Add(Order.Deserialize(reader));
|
{
|
||||||
|
var o = Order.Deserialize( reader );
|
||||||
|
if( o != null )
|
||||||
|
ret.Add( o );
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user