Add support for CPos[] fields to FieldLoader
This commit is contained in:
committed by
Paul Chote
parent
07ed6a889e
commit
c20cffad5c
@@ -87,6 +87,7 @@ namespace OpenRA
|
|||||||
{ typeof(WAngle), ParseWAngle },
|
{ typeof(WAngle), ParseWAngle },
|
||||||
{ typeof(WRot), ParseWRot },
|
{ typeof(WRot), ParseWRot },
|
||||||
{ typeof(CPos), ParseCPos },
|
{ typeof(CPos), ParseCPos },
|
||||||
|
{ typeof(CPos[]), ParseCPosArray },
|
||||||
{ typeof(CVec), ParseCVec },
|
{ typeof(CVec), ParseCVec },
|
||||||
{ typeof(CVec[]), ParseCVecArray },
|
{ typeof(CVec[]), ParseCVecArray },
|
||||||
{ typeof(BooleanExpression), ParseBooleanExpression },
|
{ typeof(BooleanExpression), ParseBooleanExpression },
|
||||||
@@ -283,6 +284,29 @@ namespace OpenRA
|
|||||||
return InvalidValueAction(value, fieldType, fieldName);
|
return InvalidValueAction(value, fieldType, fieldName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static object ParseCPosArray(string fieldName, Type fieldType, string value, MemberInfo field)
|
||||||
|
{
|
||||||
|
if (value != null)
|
||||||
|
{
|
||||||
|
var parts = value.Split(SplitComma);
|
||||||
|
|
||||||
|
if (parts.Length % 2 != 0)
|
||||||
|
return InvalidValueAction(value, fieldType, fieldName);
|
||||||
|
|
||||||
|
var vecs = new CPos[parts.Length / 2];
|
||||||
|
for (var i = 0; i < vecs.Length; i++)
|
||||||
|
{
|
||||||
|
if (int.TryParse(parts[2 * i], out var rx)
|
||||||
|
&& int.TryParse(parts[2 * i + 1], out var ry))
|
||||||
|
vecs[i] = new CPos(rx, ry);
|
||||||
|
}
|
||||||
|
|
||||||
|
return vecs;
|
||||||
|
}
|
||||||
|
|
||||||
|
return InvalidValueAction(value, fieldType, fieldName);
|
||||||
|
}
|
||||||
|
|
||||||
static object ParseCVec(string fieldName, Type fieldType, string value, MemberInfo field)
|
static object ParseCVec(string fieldName, Type fieldType, string value, MemberInfo field)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
|
|||||||
Reference in New Issue
Block a user