chatinputmenu.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. class ChatInputMenu extends UIScriptedMenu
  2. {
  3. private EditBoxWidget m_edit_box;
  4. private TextWidget m_channel_text;
  5. private UAIDWrapper m_BackInputWrapper;
  6. private ref Timer m_close_timer;
  7. void ChatInputMenu()
  8. {
  9. m_close_timer = new Timer();
  10. }
  11. override Widget Init()
  12. {
  13. m_BackInputWrapper = GetUApi().GetInputByID(UAUIBack).GetPersistentWrapper();
  14. layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/day_z_chat_input.layout");
  15. m_edit_box = EditBoxWidget.Cast(layoutRoot.FindAnyWidget("InputEditBoxWidget"));
  16. m_channel_text = TextWidget.Cast(layoutRoot.FindAnyWidget("ChannelText"));
  17. UpdateChannel();
  18. return layoutRoot;
  19. }
  20. override bool UseKeyboard()
  21. {
  22. return true;
  23. }
  24. override bool OnChange(Widget w, int x, int y, bool finished)
  25. {
  26. super.OnChange(w, x, y, finished);
  27. if (!finished) return false;
  28. string text = m_edit_box.GetText();
  29. if (text != "")
  30. {
  31. GetGame().ChatPlayer(text);
  32. if (!GetGame().IsMultiplayer())
  33. {
  34. string name;
  35. GetGame().GetPlayerName(name);
  36. ChatMessageEventParams chat_params = new ChatMessageEventParams(CCDirect, name, text, "");
  37. MissionGameplay.Cast(GetGame().GetMission()).m_Chat.Add(chat_params);
  38. }
  39. }
  40. m_close_timer.Run(0.1, this, "Close");
  41. GetUApi().GetInputByID(UAPersonView).Supress();
  42. return true;
  43. }
  44. override void OnShow()
  45. {
  46. SetFocus(m_edit_box);
  47. }
  48. override void OnHide()
  49. {
  50. super.OnHide();
  51. GetGame().GetMission().HideChat();
  52. if (!GetGame().GetMission().IsVoNActive())
  53. GetGame().GetMission().HideVoiceLevelWidgets();
  54. }
  55. override void Refresh()
  56. {
  57. }
  58. override void Update(float timeslice)
  59. {
  60. if (m_BackInputWrapper.InputP().LocalPress())
  61. {
  62. Close();
  63. }
  64. }
  65. void UpdateChannel()
  66. {
  67. m_channel_text.SetText(GetChannelName(/*GetGame().ChatGetChannel()*/0));
  68. }
  69. static string GetChannelName(ChatChannel channel)
  70. {
  71. switch (channel)
  72. {
  73. case CCSystem:
  74. return "System";
  75. case CCAdmin:
  76. return "Admin";
  77. case CCDirect:
  78. return "Direct";
  79. case CCMegaphone:
  80. return "Megaphone";
  81. case CCTransmitter:
  82. return "Radio";
  83. case CCPublicAddressSystem:
  84. return "PAS";
  85. }
  86. return "";
  87. }
  88. }