25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

300.Реплики.js 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. function Реплики(события)
  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 (путь[0] != "реплики")
  28. {
  29. return;
  30. }
  31. let имя = путь[1];
  32. let свойство = путь.slice(2).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. };