You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.1KB

  1. function grРеплики(события)
  2. {
  3. this.создать = function()
  4. {
  5. this.задано = {};
  6. события.подписать(this);
  7. };
  8. this.номерРеплики = function(инструмент)
  9. {
  10. if (инструмент == "рука")
  11. {
  12. return 1;
  13. }
  14. else if (инструмент == "рот")
  15. {
  16. return 2;
  17. }
  18. else if (инструмент == "нога")
  19. {
  20. return 3;
  21. }
  22. // "глаз"
  23. return 0;
  24. };
  25. this.обработатьКлюч = function(ключ, путь, значение)
  26. {
  27. if (!ключ.startsWith("gr.реплики"))
  28. {
  29. return;
  30. }
  31. let имя = путь[2];
  32. let свойство = путь.slice(3).join(".");
  33. if (!this.задано[имя])
  34. {
  35. this.задано[имя] = {};
  36. }
  37. this.задано[имя][свойство] = значение;
  38. };
  39. this.обработатьСобытие = function(событие)
  40. {
  41. let меню = "меню/";
  42. if (событие.startsWith(меню))
  43. {
  44. let значения = событие.substring(меню.length).split("/");
  45. let инструмент = значения[0];
  46. let подсказка = значения[1];
  47. this.отобразитьРеплику(инструмент, подсказка);
  48. }
  49. };
  50. this.отобразитьРеплику = function(инструмент, подсказка)
  51. {
  52. let номер = this.номерРеплики(инструмент);
  53. let реплика = this.задано[подсказка][номер];
  54. let частей = реплика.split(/ /);
  55. let длительность = частей.length * 1000;
  56. UIkit.notification({
  57. message: реплика,
  58. timeout: длительность,
  59. });
  60. };
  61. // Конструктор.
  62. this.создать();
  63. };