ChatMessage.cpp 1.7 KB

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