public void AddEffect(ProductTrigger trigger, Effect effect) { Entry entry; if (!_map.TryGetValue(effect.UniqueID, out entry)) { _map[effect.UniqueID] = entry = new Entry(effect); } var c = new TriggerConditions(trigger); entry.Add(c); entry.AddSource(trigger); }
void ProcessCondition(TriggerConditions cond, Func <MissionCondition, ScriptedTrigger, bool> action) { lock (_msnLock) { foreach (var tr in activeTriggers) { for (int i = tr.Conditions.Count - 1; i >= 0; i--) { if (tr.Conditions[i].Type == cond && action(tr.Conditions[i], tr.Trigger)) { tr.Conditions.RemoveAt(i); } } } } }
/// <summary> /// Add a guard to this collection. /// </summary> /// <param name="tg">The trigger guard to add.</param> public void AddGuard(IElementaryTriggerCondition c0, TriggerGuard tg) { var name = tg.Guard.Name; Entry entry; if (!_map.TryGetValue(name, out entry)) { _map[name] = entry = new Entry(tg.Guard); } // calculate effective conditions for the guard var c = new TriggerConditions(c0); switch (tg.Guard.Type) { case GuardType.LEAVE: c.PreCondition = Gate.ComposeAND(c.PreCondition, tg.PreCondition); c.PostCondition = Gate.ComposeAND(c.PostCondition, tg.PostCondition); break; case GuardType.TRANSITION: c.PreCondition = Gate.ComposeAND(c.PreCondition, tg.PreCondition); c.PostCondition = Gate.ComposeAND(c.PostCondition, tg.PostCondition); break; case GuardType.ENTER: c.PostCondition = Gate.ComposeAND(c.PostCondition, tg.PostCondition); break; default: throw new ArgumentException("invalid guard type."); } Log.TraceGuard(c.PreCondition, c.PostCondition, "before join"); if (!TraceFlags.DisableTriggerJoin) { // express postconditions by preconditions c.JoinTrigger(tg.Trigger); } Log.TraceGuard(c.PreCondition, c.PostCondition, "add guard"); // and add to entry entry.Add(c); }
public static extern short SetTriggerChannelConditions( short handle, TriggerConditions[] conditions, short numConditions);
public MissionCondition(TriggerConditions cnd, Entry e) { Type = cnd; Entry = e; }
static bool CondTrue(TriggerConditions cond) { return(cond == TriggerConditions.Cnd_True || cond == TriggerConditions.Cnd_SpaceExit || cond == TriggerConditions.Cnd_BaseEnter); }
public void Parse(GameBitBuffer buffer) { Field0 = buffer.ReadInt(32); Field1 = new TriggerConditions(); Field1.Parse(buffer); Field2 = buffer.ReadInt(32); Field3 = new SNOName(); Field3.Parse(buffer); Field4 = buffer.ReadInt(32); Field5 = buffer.ReadInt(32); eRuneType = buffer.ReadInt(32); bUseRuneType = buffer.ReadInt(32); Field8 = new HardpointLink[2]; for(int i = 0;i < _Field8.Length;i++) { _Field8[i] = new HardpointLink(); _Field8[i].Parse(buffer); } Field9 = new LookLink(); Field9.Parse(buffer); Field10 = new ConstraintLink(); Field10.Parse(buffer); Field11 = buffer.ReadInt(32); Field12 = buffer.ReadFloat32(); Field13 = buffer.ReadInt(32); Field14 = buffer.ReadInt(32); Field15 = buffer.ReadInt(32); Field16 = buffer.ReadInt(32); Field17 = buffer.ReadInt(32); Field18 = buffer.ReadFloat32(); Field19 = buffer.ReadFloat32(); Field20 = buffer.ReadInt(32); Field21 = buffer.ReadFloat32(); Field22 = buffer.ReadInt(32); Field23 = buffer.ReadFloat32(); Field24 = buffer.ReadInt(32); Field25 = buffer.ReadInt(32); Field26 = new RGBAColor(); Field26.Parse(buffer); Field27 = buffer.ReadInt(32); Field28 = new RGBAColor(); Field28.Parse(buffer); Field29 = buffer.ReadInt(32); }