protected virtual string GenerateCpl(ICondition p_cndCondition)
{
StringBuilder stbCPL = new StringBuilder();
if (p_cndCondition is CompositeCondition)
{
CompositeCondition cpcCondition = (CompositeCondition)p_cndCondition;
string strOperator = null;
string strPrefix = null;
string strSuffix = null;
switch (cpcCondition.Operator)
{
case ConditionOperator.And:
strOperator = "AND";
break;
case ConditionOperator.Or:
strOperator = "OR";
strPrefix = "(";
strSuffix = ")";
break;
}
stbCPL.Append(strPrefix);
for (Int32 i = 0; i < cpcCondition.Conditions.Count; i++)
{
stbCPL.Append(GenerateCpl(cpcCondition.Conditions[i]));
if (i < cpcCondition.Conditions.Count - 1)
stbCPL.AppendFormat(" {0} ", strOperator);
}
stbCPL.Append(strSuffix);
}
else if (p_cndCondition is FlagCondition)
{
FlagCondition flcCondition = (FlagCondition)p_cndCondition;
stbCPL.AppendFormat("${0}$ = \"{1}\"", flcCondition.FlagName, flcCondition.Value);
}
else if (p_cndCondition is PluginCondition)
{
PluginCondition pncCondition = (PluginCondition)p_cndCondition;
stbCPL.AppendFormat("\"{0}\" is {1}", pncCondition.PluginPath, pncCondition.State.ToString());
}
else if (p_cndCondition is GameVersionCondition)
{
GameVersionCondition gvcCondition = (GameVersionCondition)p_cndCondition;
stbCPL.AppendFormat("gameVersion >= {0}", gvcCondition.MinimumVersion.ToString());
}
else if (p_cndCondition is ModManagerCondition)
{
ModManagerCondition mmcCondition = (ModManagerCondition)p_cndCondition;
stbCPL.AppendFormat("managerVersion >= {0}", mmcCondition.MinimumVersion.ToString());
}
return stbCPL.ToString();
}
}