Esempio n. 1
0
        public override void Initialise()
        {
            base.Initialise();
            HP           = 3;
            active       = true;
            angle        = 180;
            RotateAround = new Vector3(0.0f, 1.0f, 0.0f);
            scale        = 1.0f;
            height       = 4500.0f;
            size         = 7500.0f;
            code         = RandomHelper.Rand() % 10;
            boundingBox  = new BoundingBox();
            CalculateBoundingBox();
            fsm    = new FSM(this);
            idle   = new IdleState();
            combat = new CombatState();
            flee   = new FleeState();
            fsm.AddState(idle);
            fsm.AddState(combat);
            fsm.AddState(flee);

            //idle transit to combat if enemy has enter the viewzone
            idle.AddTransition(new Transition(combat, () => onScreen));

            //combat transit to flee if enemy is about to die
            combat.AddTransition(new Transition(flee, () => HP < 2));
            Start();
        }
Esempio n. 2
0
        public SceneManager(Menu m, World l, EndScreen e)
        {
            menu      = m;
            level     = l;
            endScreen = e;

            fsm = new FSM(this);

            inMenu.AddTransition(new Transition(inGame, () => bChange));
            inGame.AddTransition(new Transition(inEndScreen, () => !level.Player.Active));
            inEndScreen.AddTransition(new Transition(inMenu, () => bChange));

            fsm.AddState(inMenu);
            fsm.AddState(inGame);
            fsm.AddState(inEndScreen);
        }
        private void Initialise()
        {
            fsm = new FSM(this);

            // Create the states
            IdleState  idle  = new IdleState();
            FleeState  flee  = new FleeState();
            ChaseState chase = new ChaseState();

            // Create the transitions between the states
            idle.AddTransition(new Transition(flee, () => TaggerSeen));
            flee.AddTransition(new Transition(idle, () => !TaggerSeen));
            idle.AddTransition(new Transition(chase, () => isTagged));
            flee.AddTransition(new Transition(chase, () => isTagged));
            chase.AddTransition(new Transition(idle, () => !isTagged));

            // Add the created states to the FSM
            fsm.AddState(idle);
            fsm.AddState(flee);
            fsm.AddState(chase);

            // Set the starting state of the FSM
            fsm.Initialise("Idle");
        }