public Enemy(Dictionary<string, object> attributes) { FSMAction noAction = new A_None(); State S_Idle = new State("idle", new A_IdleEnter(), new A_Idle(), new A_IdleExit()); State S_MoveToPosition = new State("moveToPosition", new A_MoveToPositionEnter(), new A_MoveToPosition(), new A_MoveToPositionExit()); State S_Attack = new State("attack", new A_AttackEnter(), new A_Attack(), new A_AttackExit()); State S_Death = new State("death", new A_DeathEnter(), new A_Death(), new A_DeathExit()); State S_Hurt = new State("hurt", new A_HurtEnter(), new A_Hurt(), new A_HurtExit()); Transition T_Idle = new Transition(S_Idle, noAction); Transition T_MoveToPosition = new Transition(S_MoveToPosition, noAction); Transition T_Attack = new Transition(S_Attack, noAction); Transition T_Death = new Transition(S_Death, noAction); Transition T_Hurt = new Transition(S_Hurt, noAction); S_Idle.addTransition(T_MoveToPosition, "moveToPosition"); S_Idle.addTransition(T_Attack, "attack"); S_Idle.addTransition(T_Death, "death"); S_Idle.addTransition(T_Hurt, "hurt"); S_MoveToPosition.addTransition(T_Idle, "idle"); S_MoveToPosition.addTransition(T_Attack, "attack"); S_MoveToPosition.addTransition(T_Death, "death"); S_MoveToPosition.addTransition(T_MoveToPosition, "moveToPosition"); S_MoveToPosition.addTransition(T_Hurt, "hurt"); S_Attack.addTransition(T_Idle, "idle"); S_Attack.addTransition(T_Death, "death"); S_Attack.addTransition(T_Hurt, "hurt"); S_Hurt.addTransition(T_Idle, "idle"); S_Hurt.addTransition(T_Death, "death"); S_Hurt.addTransition(T_Hurt, "hurt"); PlayerData HookerData = new PlayerData(GameData.Hooker); PlayerData RobotData = new PlayerData(GameData.Robot); this.fsmc = FSM.FSM.createFSMInstance(S_Idle, noAction); this.attributes = attributes; this.playerData = new Dictionary<GameObject, PlayerData>(); this.playerData[GameData.Hooker] = HookerData; this.playerData[GameData.Robot] = RobotData; this.jumpStrength = 0.0f; this.canJump = false; }
void Start() { //vehicle CharacterController controller = GetComponent<CharacterController>(); vehicle = new Vehicle(mass, maxSpeed, maxForce, controller.transform.position); timer = 0.0f; attributes = new Dictionary<string, int>(); idle = new State(new Action_IdleEnter(), new Action_Idle(), new Action_IdleExit(), "idle"); seek = new State(new Action_SeekEnter(), new Action_Seek(), new Action_SeekExit(), "seek"); flee = new State(new Action_FleeEnter(), new Action_Flee(), new Action_FleeExit(), "flee"); pursuit = new State(new Action_PursuitEnter(), new Action_Pursuit(), new Action_PursuitExit(), "pursuit"); evade = new State(new Action_EvadeEnter(), new Action_Evade(), new Action_EvadeExit(), "evade"); wander = new State(new Action_WanderEnter(), new Action_Wander(), new Action_WanderExit(), "wander"); patrol = new State(new Action_PatrolEnter(), new Action_Patrol(), new Action_PatrolExit(), "patrol"); seekEnter = new Transition(seek, new Action_None()); idleEnter = new Transition(idle, new Action_None()); fleeEnter = new Transition(flee, new Action_None()); pursuitEnter = new Transition(pursuit, new Action_None()); evadeEnter = new Transition(evade, new Action_None()); wanderEnter = new Transition(wander, new Action_None()); patrolEnter = new Transition(patrol, new Action_None()); idle.addTransition(seekEnter, "seekEnter"); idle.addTransition(fleeEnter, "fleeEnter"); idle.addTransition(pursuitEnter, "pursuitEnter"); idle.addTransition(evadeEnter, "evadeEnter"); idle.addTransition(wanderEnter, "wanderEnter"); idle.addTransition(patrolEnter, "patrolEnter"); seek.addTransition(idleEnter, "idleEnter"); seek.addTransition(fleeEnter, "fleeEnter"); seek.addTransition(pursuitEnter, "pursuitEnter"); seek.addTransition(evadeEnter, "evadeEnter"); seek.addTransition(wanderEnter, "wanderEnter"); seek.addTransition(patrolEnter, "patrolEnter"); flee.addTransition(idleEnter, "idleEnter"); flee.addTransition(seekEnter, "seekEnter"); flee.addTransition(pursuitEnter, "pursuitEnter"); flee.addTransition(evadeEnter, "evadeEnter"); flee.addTransition(wanderEnter, "wanderEnter"); flee.addTransition(patrolEnter, "patrolEnter"); pursuit.addTransition(idleEnter, "idleEnter"); pursuit.addTransition(seekEnter, "seekEnter"); pursuit.addTransition(fleeEnter, "fleeEnter"); pursuit.addTransition(evadeEnter, "evadeEnter"); pursuit.addTransition(wanderEnter, "wanderEnter"); patrol.addTransition(patrolEnter, "patrolEnter"); evade.addTransition(idleEnter, "idleEnter"); evade.addTransition(seekEnter, "seekEnter"); evade.addTransition(fleeEnter, "fleeEnter"); evade.addTransition(pursuitEnter, "pursuitEnter"); evade.addTransition(wanderEnter, "wanderEnter"); evade.addTransition(patrolEnter, "patrolEnter"); wander.addTransition(idleEnter, "idleEnter"); wander.addTransition(seekEnter, "seekEnter"); wander.addTransition(fleeEnter, "fleeEnter"); wander.addTransition(pursuitEnter, "pursuitEnter"); wander.addTransition(evadeEnter, "evadeEnter"); wander.addTransition(patrolEnter, "patrolEnter"); patrol.addTransition(idleEnter, "idleEnter"); patrol.addTransition(seekEnter, "seekEnter"); patrol.addTransition(fleeEnter, "fleeEnter"); patrol.addTransition(pursuitEnter, "pursuitEnter"); patrol.addTransition(evadeEnter, "evadeEnter"); patrol.addTransition(wanderEnter, "wanderEnter"); // set the player controller for use by the state machine fsmc = FSM.FSM.createFSMInstance(idle, new Idle(), attributes, "hunter"); fsmc.setController(GetComponent<CharacterController>()); vehicle.setController(GetComponent<CharacterController()); }