public Transition ReadTransition() { Transition transition = new Transition(); transition.Target = ReadAttributeValue <string>("target"); transition.Event = ReadAttributeValue <string>("event", null); transition.Cond = ReadExpressionByAttribute("cond", false); var firstNode = FilterChildNodeType().FirstOrDefault(); if (firstNode != null) { if (firstNode.LocalName == "cond") { ReadStartNode(firstNode); transition.Cond = ReadFirstChildExpression(null); ReadEndNode(); foreach (var action in ReadActions(FilterChildNodeType().Skip(1))) { transition.AddAction(action); } } else { foreach (var action in ReadActions(FilterChildNodeType())) { transition.AddAction(action); } } } return(transition); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil_AttendSermon lordToil_Sermon = new LordToil_AttendSermon(this.spot); stateGraph.AddToil(lordToil_Sermon); LordToil_End lordToil_End = new LordToil_End(); stateGraph.AddToil(lordToil_End); Transition transition = new Transition(lordToil_Sermon, lordToil_End); transition.AddTrigger(new Trigger_TickCondition(() => this.ShouldBeCalledOff())); transition.AddTrigger(new Trigger_PawnLostViolently()); transition.AddAction(new TransitionAction_Message("MessagePartyCalledOff".Translate(), MessageSound.Negative, this.spot)); stateGraph.AddTransition(transition); this.timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(5000, 15000)); Transition transition2 = new Transition(lordToil_Sermon, lordToil_End); transition2.AddTrigger(this.timeoutTrigger); transition2.AddAction(new TransitionAction_Message("MessagePartyFinished".Translate(), MessageSound.Negative, this.spot)); transition2.AddAction(new TransitionAction_Cus(delegate { this.Finished(); })); stateGraph.AddTransition(transition2); return(stateGraph); }