stickers_dice_pack.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. class DocumentData;
  9. namespace Main {
  10. class Session;
  11. } // namespace Main
  12. namespace Stickers {
  13. class DicePack final {
  14. public:
  15. DicePack(not_null<Main::Session*> session, const QString &emoji);
  16. ~DicePack();
  17. [[nodiscard]] DocumentData *lookup(int value);
  18. private:
  19. void load();
  20. void applySet(const MTPDmessages_stickerSet &data);
  21. void tryGenerateLocalZero();
  22. const not_null<Main::Session*> _session;
  23. QString _emoji;
  24. base::flat_map<int, not_null<DocumentData*>> _map;
  25. mtpRequestId _requestId = 0;
  26. };
  27. class DicePacks final {
  28. public:
  29. explicit DicePacks(not_null<Main::Session*> session);
  30. static const QString kDiceString;
  31. static const QString kDartString;
  32. static const QString kSlotString;
  33. static const QString kFballString;
  34. static const QString kBballString;
  35. static const QString kPartyPopper;
  36. [[nodiscard]] static bool IsSlot(const QString &emoji) {
  37. return (emoji == kSlotString);
  38. }
  39. [[nodiscard]] DocumentData *lookup(const QString &emoji, int value);
  40. private:
  41. const not_null<Main::Session*> _session;
  42. base::flat_map<QString, std::unique_ptr<DicePack>> _packs;
  43. };
  44. } // namespace Stickers