ChatMessage.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "ChatMessage.h"
  2. #include "Globals.h"
  3. ChatMessage::ChatMessage(char* data)
  4. : TextFeld()
  5. {
  6. setStyle(Style::VCenter | Style::Sichtbar | Style::Mehrzeilig | Style::AutoLineBreak);
  7. setSchriftZ(dynamic_cast<Schrift*>(uiFactory.initParam.schrift->getThis()));
  8. setSchriftSize(12);
  9. setAutoLineBreakSpacing(" ");
  10. __int64 time = *(__int64*)data;
  11. short mLen = *(short*)(data + 8);
  12. char* message = new char[mLen + 1];
  13. memcpy(message, data + 10, mLen);
  14. message[mLen] = 0;
  15. char channelLen = *(data + 10 + mLen);
  16. char* channel = new char[channelLen + 1];
  17. memcpy(channel, data + 11 + mLen, channelLen);
  18. channel[channelLen] = 0;
  19. Framework::Text channelT = channel;
  20. delete[] channel;
  21. Zeit converter(time);
  22. Text* timeT = converter.getZeit("d.m.y h:i:s");
  23. setSchriftFarbe(0xFFFFFFFF);
  24. if (channelT.istGleich("system:INFO"))
  25. {
  26. setSchriftFarbe(0xFFA0A0A0);
  27. channelT = "[INFO]";
  28. }
  29. else if (channelT.istGleich("system:WARNING"))
  30. {
  31. setSchriftFarbe(0xFFFF7700);
  32. channelT = "[WARNING]";
  33. }
  34. else if (channelT.istGleich("system:ERROR"))
  35. {
  36. setSchriftFarbe(0xFFFF0000);
  37. channelT = "[ERROR]";
  38. }
  39. else if (channelT.hatAt(0, "player:"))
  40. {
  41. Text* tmp = channelT.getTeilText(7);
  42. channelT = *tmp;
  43. tmp->release();
  44. }
  45. Text tmp = *timeT + " " + channelT + " " + message;
  46. tmp.ersetzen("\n", "\n ");
  47. setText(tmp);
  48. timeT->release();
  49. delete[] message;
  50. }
  51. bool ChatMessage::tick(double tickVal)
  52. {
  53. setHeight(getNeededHeight());
  54. return ZeichnungHintergrund::tick(tickVal);
  55. }