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(); }
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"); }