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 關注
- 107 瀏覽
添加回答
舉報