rifle_base.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. enum DefaultAnimState
  2. {
  3. DEFAULT = 0, ///< default weapon state, closed and discharged
  4. };
  5. /**@class Rifle_Base
  6. * @brief base for rifles
  7. * @NOTE name copies config base class
  8. **/
  9. class Rifle_Base extends Weapon_Base
  10. {
  11. void Rifle_Base ()
  12. {
  13. }
  14. override void InitStateMachine ()
  15. {
  16. m_abilities.Insert(new AbilityRecord(WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
  17. // setup state machine
  18. // basic weapon states
  19. WeaponStableState E = new WeaponStableState(this, NULL, DefaultAnimState.DEFAULT);
  20. WeaponStateBase Mech = new WeaponCharging(this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
  21. // events
  22. WeaponEventBase __M__ = new WeaponEventMechanism;
  23. WeaponEventBase _fin_ = new WeaponEventHumanCommandActionFinished;
  24. WeaponEventBase _abt_ = new WeaponEventHumanCommandActionAborted;
  25. m_fsm = new WeaponFSM();
  26. // charging
  27. m_fsm.AddTransition(new WeaponTransition(E , __M__, Mech));
  28. m_fsm.AddTransition(new WeaponTransition(Mech , _fin_, E));
  29. m_fsm.AddTransition(new WeaponTransition(Mech , _abt_, E));
  30. SetInitialState(E);
  31. SelectionBulletHide();
  32. m_fsm.Start();
  33. }
  34. };