weaponfirelast.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. class WeaponFireLast extends WeaponStateBase
  2. {
  3. WeaponActions m_action;
  4. int m_actionType;
  5. float m_dtAccumulator;
  6. ref WeaponFireWithEject m_fire;
  7. void WeaponFireLast (Weapon_Base w = NULL, WeaponStateBase parent = NULL, WeaponActions action = WeaponActions.NONE, int actionType = -1)
  8. {
  9. m_action = action;
  10. m_actionType = actionType;
  11. // setup nested state machine
  12. m_fire = new WeaponFireWithEject(m_weapon, this, m_action, m_actionType);
  13. // events
  14. WeaponEventBase _fin_ = new WeaponEventHumanCommandActionFinished;
  15. WeaponEventReloadTimeout __to_ = new WeaponEventReloadTimeout;
  16. m_fsm = new WeaponFSM(this); // @NOTE: set owner of the submachine fsm
  17. // transitions
  18. m_fsm.AddTransition(new WeaponTransition(m_fire, _fin_, NULL));
  19. m_fsm.AddTransition(new WeaponTransition(m_fire, __to_, NULL));
  20. m_fsm.SetInitialState(m_fire);
  21. }
  22. override void OnEntry (WeaponEventBase e)
  23. {
  24. super.OnEntry(e);
  25. if (e)
  26. m_dtAccumulator = 0;
  27. }
  28. override void OnExit (WeaponEventBase e)
  29. {
  30. m_dtAccumulator = 0;
  31. super.OnExit(e);
  32. }
  33. };