actionreadpaper.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. class ActionReadPaperCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. EnableStateChangeCallback();
  6. m_ActionData.m_ActionComponent = new CAContinuousTime(-1.0);
  7. }
  8. override void EndActionComponent()
  9. {
  10. }
  11. override void OnStateChange(int pOldState, int pCurrentState)
  12. {
  13. if (pCurrentState == STATE_NONE && (!GetGame().IsDedicatedServer()))
  14. {
  15. if (GetGame().GetUIManager() && GetGame().GetUIManager().IsMenuOpen(MENU_NOTE))
  16. GetGame().GetUIManager().FindMenu(MENU_NOTE).Close();
  17. }
  18. else if (pCurrentState == STATE_LOOP_LOOP && pOldState != STATE_LOOP_LOOP && (!GetGame().IsMultiplayer() || GetGame().IsServer()))
  19. {
  20. ItemBase paper_item = ItemBase.Cast(m_ActionData.m_MainItem);
  21. Param1<string> text = new Param1<string>(paper_item.GetWrittenNoteData().GetNoteText());
  22. paper_item.RPCSingleParam(ERPCs.RPC_READ_NOTE, text, true,m_ActionData.m_Player.GetIdentity());
  23. }
  24. }
  25. };
  26. //!DEPRECATED
  27. class ActionReadPaper: ActionContinuousBase
  28. {
  29. void ActionReadPaper()
  30. {
  31. m_CallbackClass = ActionReadPaperCB;
  32. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_VIEWNOTE;
  33. m_FullBody = true;
  34. m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_PRONE;
  35. m_Text = "#read";
  36. }
  37. override void CreateConditionComponents()
  38. {
  39. m_ConditionItem = new CCINonRuined;
  40. m_ConditionTarget = new CCTNone;
  41. }
  42. override bool HasTarget()
  43. {
  44. return false;
  45. }
  46. override void OnUpdate(ActionData action_data)
  47. {
  48. super.OnUpdate(action_data);
  49. if(!GetGame().IsDedicatedServer())
  50. {
  51. if (action_data.m_State == UA_FINISHED && GetGame().GetUIManager() && !GetGame().GetUIManager().IsMenuOpen(MENU_NOTE))
  52. {
  53. ActionManagerClient.Cast(action_data.m_Player.GetActionManager()).RequestEndAction();
  54. }
  55. }
  56. }
  57. override void OnEndRequest(ActionData action_data)
  58. {
  59. if (action_data.m_Callback)
  60. {
  61. action_data.m_Callback.InternalCommand(DayZPlayerConstants.CMD_ACTIONINT_INTERRUPT);
  62. }
  63. }
  64. };