1 回答
TA贡献1880条经验 获得超4个赞
编辑:我已经编辑了我的答案以解决通用任务方法的想法。
如果您希望任务在多种不同类型上通用,您可能希望在 上实现IsSameorIsEquivalent方法Items.Item,然后继承该方法。您甚至可以覆盖 Object.Equals 方法(这可能是更合适的方式)。
class Item
{
public virtual bool IsSame(Item comp){ return comp.Name == Name; }
}
class Tool: Item
{
public override bool IsSame(Item comp)
{
return base.IsSame(comp) && (comp is Tool) && ((Tool)comp).Material == Material && ((Tool)comp).Classification == Classification;
}
}
然后在您完成迭代中:
override public bool Accomplish()
{
bool questAccomplished = true;
foreach (var group in RequiredItems.GroupBy(x => x))
{
if (Application._player.InventoryItems.Count
(
x =>
(
x.IsSame(group.Key)
)
) < group.Count())
{
questAccomplished = false;
break;
}
}
return questAccomplished;
}
- 1 回答
- 0 关注
- 88 浏览
添加回答
举报