ChatMessage.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "ChatMessage.h"
  2. #include <Timer.h>
  3. #include "Globals.h"
  4. ChatMessage::ChatMessage(char* data)
  5. : TextField(),
  6. lastWidth(0)
  7. {
  8. setStyle(Style::VCenter | Style::Visible | Style::Multiline
  9. | Style::AutoLineBreak);
  10. setFontZ(dynamic_cast<Font*>(uiFactory.initParam.font->getThis()));
  11. setFontSize(12);
  12. setAutoLineBreakSpacing(" ");
  13. __int64 time = *(__int64*)data;
  14. short mLen = *(short*)(data + 8);
  15. char* message = new char[mLen + 1];
  16. memcpy(message, data + 10, mLen);
  17. message[mLen] = 0;
  18. char channelLen = *(data + 10 + mLen);
  19. char* channel = new char[channelLen + 1];
  20. memcpy(channel, data + 11 + mLen, channelLen);
  21. channel[channelLen] = 0;
  22. Framework::Text channelT = channel;
  23. delete[] channel;
  24. Time converter(time);
  25. Text* timeT = converter.getTime("d.m.y h:i:s");
  26. setFontColor(0xFFFFFFFF);
  27. if (channelT.isEqual("system:INFO"))
  28. {
  29. setFontColor(0xFFA0A0A0);
  30. channelT = "[INFO]";
  31. }
  32. else if (channelT.isEqual("system:WARNING"))
  33. {
  34. setFontColor(0xFFFF7700);
  35. channelT = "[WARNING]";
  36. }
  37. else if (channelT.isEqual("system:ERROR"))
  38. {
  39. setFontColor(0xFFFF0000);
  40. channelT = "[ERROR]";
  41. }
  42. else if (channelT.hasAt(0, "player:"))
  43. {
  44. Text* tmp = channelT.getTeilText(7);
  45. channelT = *tmp;
  46. tmp->release();
  47. }
  48. Text tmp = *timeT + " " + channelT + " " + message;
  49. tmp.replace("\n", "\n ");
  50. setText(tmp);
  51. timeT->release();
  52. delete[] message;
  53. }
  54. bool ChatMessage::tick(double tickVal)
  55. {
  56. if (getWidth() != lastWidth)
  57. {
  58. lastWidth = getWidth();
  59. setHeight(getNeededHeight());
  60. }
  61. return DrawableBackground::tick(tickVal);
  62. }