rifleejectcasing.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. class RifleEjectCasing extends WeaponStateBase
  2. {
  3. WeaponActions m_action;
  4. int m_actionType;
  5. ref WeaponStartAction m_start;
  6. ref WeaponEjectCasing m_eject;
  7. ref BulletHide_W4T m_hideB;
  8. void RifleEjectCasing (Weapon_Base w = NULL, WeaponStateBase parent = NULL, WeaponActions action = WeaponActions.NONE, int actionType = -1)
  9. {
  10. m_action = action;
  11. m_actionType = actionType;
  12. // setup nested state machine
  13. m_start = new WeaponStartAction(m_weapon, this, m_action, m_actionType);
  14. m_eject = new WeaponEjectCasing(m_weapon, this);
  15. m_hideB = new BulletHide_W4T(m_weapon, this);
  16. // events
  17. WeaponEventBase __be_ = new WeaponEventAnimBulletEject;
  18. WeaponEventBase __bh_ = new WeaponEventAnimBulletHide;
  19. WeaponEventBase _fin_ = new WeaponEventHumanCommandActionFinished;
  20. m_fsm = new WeaponFSM(this); // @NOTE: set owner of the submachine fsm
  21. // transitions
  22. m_fsm.AddTransition(new WeaponTransition(m_start, __be_, m_eject));
  23. m_fsm.AddTransition(new WeaponTransition(m_eject, __bh_, m_hideB));
  24. m_fsm.AddTransition(new WeaponTransition(m_hideB, _fin_, NULL));
  25. // Safety exits
  26. m_fsm.AddTransition(new WeaponTransition(m_eject , _fin_, null));
  27. m_fsm.AddTransition(new WeaponTransition(m_start , _fin_, null));
  28. m_fsm.SetInitialState(m_start);
  29. }
  30. };