コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }