chatline.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. class ChatLine
  2. {
  3. // Consts
  4. const float FADE_TIMEOUT = 30;
  5. const float FADE_OUT_DURATION = 3;
  6. const float FADE_IN_DURATION = 0.5;
  7. private const string RADIO_PREFIX = "(" + "#str_radio" + ") ";
  8. private const string GAME_PREFIX = "(" + "#layout_chat_game" + ") ";
  9. private const string ADMIN_PREFIX = "(" + "#STR_MP_MASTER" + ") ";
  10. private const int DEFAULT_COLOUR = ARGB(255, 255, 255, 255);
  11. private const int GAME_TEXT_COLOUR = ARGB(255, 255, 0, 0);
  12. private const int ADMIN_TEXT_COLOUR = ARGB(255, 255, 255, 0);
  13. // Widgets
  14. Widget m_RootWidget;
  15. TextWidget m_NameWidget;
  16. TextWidget m_TextWidget;
  17. private ref WidgetFadeTimer m_FadeTimer;
  18. private ref Timer m_TimeoutTimer;
  19. void ChatLine(Widget root_widget)
  20. {
  21. m_RootWidget = GetGame().GetWorkspace().CreateWidgets("gui/layouts/day_z_chat_item.layout", root_widget);
  22. m_NameWidget = TextWidget.Cast( m_RootWidget.FindAnyWidget( "ChatItemSenderWidget" ) );
  23. m_TextWidget = TextWidget.Cast( m_RootWidget.FindAnyWidget( "ChatItemTextWidget" ) );
  24. m_FadeTimer = new WidgetFadeTimer;
  25. m_TimeoutTimer = new Timer(CALL_CATEGORY_GUI);
  26. }
  27. void ~ChatLine()
  28. {
  29. delete m_TextWidget;
  30. }
  31. void Set(ChatMessageEventParams params) // Param 1 --> Channel, Param 2 --> sender name, Param 3 --> message, Param 4 ??
  32. {
  33. int channel;
  34. m_NameWidget.SetText("");
  35. m_TextWidget.SetText("");
  36. SetColour(DEFAULT_COLOUR);
  37. m_RootWidget.Show(true);
  38. channel = params.param1; // 0 = Survior 1 = Game/System 2 = Admin
  39. /*
  40. if (params.param2 != "")
  41. {
  42. m_NameWidget.SetText( params.param2 + " : ");
  43. }
  44. if( channel & CCSystem )
  45. {
  46. if(params.param2 != "")
  47. {
  48. m_NameWidget.SetText(GAME_PREFIX + ": " );
  49. }
  50. SetColour(GAME_TEXT_COLOUR);
  51. }
  52. else if( channel & CCAdmin )
  53. {
  54. m_NameWidget.SetText(ADMIN_PREFIX + ": ");
  55. SetColour(ADMIN_TEXT_COLOUR);
  56. }
  57. else if( channel & CCTransmitter )
  58. {
  59. m_NameWidget.SetText(RADIO_PREFIX + params.param2 + " : ");
  60. }
  61. */
  62. if ( channel & CCSystem )
  63. {
  64. // Game
  65. if (params.param2 != "")
  66. {
  67. m_NameWidget.SetText(GAME_PREFIX + ": " );
  68. }
  69. SetColorByParam(params.param4, GAME_TEXT_COLOUR);
  70. }
  71. else if ( channel & CCAdmin )
  72. {
  73. // Admin
  74. m_NameWidget.SetText(ADMIN_PREFIX + ": ");
  75. SetColorByParam(params.param4, ADMIN_TEXT_COLOUR);
  76. }
  77. else if ( channel & CCTransmitter )
  78. {
  79. // Radio - Trasnmitter
  80. m_NameWidget.SetText(RADIO_PREFIX + params.param2 + " : ");
  81. }
  82. else if ( channel == 0 || channel & CCDirect )
  83. {
  84. // Player
  85. if (params.param2 != "")
  86. {
  87. m_NameWidget.SetText(params.param2 + " : ");
  88. }
  89. }
  90. m_TextWidget.SetText(params.param3);
  91. m_FadeTimer.FadeIn(m_RootWidget, FADE_IN_DURATION);
  92. m_TimeoutTimer.Run(FADE_TIMEOUT, m_FadeTimer, "FadeOut", new Param2<Widget, float>(m_RootWidget, FADE_OUT_DURATION));
  93. }
  94. private void SetColour(int colour)
  95. {
  96. m_NameWidget.SetColor(colour);
  97. m_TextWidget.SetColor(colour);
  98. }
  99. protected void SetColorByParam(string pParamValue, int pFallback)
  100. {
  101. if (pParamValue != "")
  102. {
  103. SetColour(ColorNameToColor(pParamValue));
  104. return;
  105. }
  106. SetColour(pFallback);
  107. }
  108. void Clear()
  109. {
  110. m_RootWidget.Show( false );
  111. m_TimeoutTimer.Stop();
  112. m_FadeTimer.Stop();
  113. }
  114. protected int ColorNameToColor(string pColorName)
  115. {
  116. int color = 0xFFFFFFFF;
  117. switch (pColorName)
  118. {
  119. case "colorStatusChannel":
  120. color = COLOR_BLUE;
  121. break;
  122. case "colorAction":
  123. color = COLOR_YELLOW;
  124. break;
  125. case "colorFriendly":
  126. color = COLOR_GREEN;
  127. break;
  128. case "colorImportant":
  129. color = COLOR_RED;
  130. break;
  131. }
  132. return color;
  133. }
  134. }