我有一个如下所示的事件类:
public delegate void OnEventTriggered();
public interface IEventClause
{
event OnEventTriggered onEventTriggered;
}
以及另一个包含事件列表的类:
class Behaviour
{
IEnumerable<IEventClause> EventClauses { get; set; }
IEnumerable<IConditionClause> ConditionClauses { get; set; }
IEnumerable<IActionClause> ActionClauses { get; set; }
public void Initialize()
{
foreach (IEventClause eventClause in EventClauses)
{
eventClause.onEventTriggered += OnEventTriggered;
}
}
public void OnEventTriggered()
{
//TODO: OR, needs to figure a way to simulates AND
if (IsAllConditionsSatisfied())
{
RunAllActions();
}
}
}
现在,EventClauses的所有OnEventTriggered将由Behavior类上的OnEvenTriggered监听,这会创建一个OR效果,我正在寻找AND效果。我怎么能这样做?
我能想到的一种方法是让事件设置一个标志并使用轮询机制来检查事件设置的所有标志是否都为真。我认为如果没有明确的民意调查(我认为不是很整洁),它应该是可行的,但我无法弄清楚如何。
这是我想要重新创建的内容:http://world-editor-tutorials.thehelper.net/triggers.php
但触发器只在满足所有事件时被触发