Игра Маджонг | Mahjong game
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
4.0KB

  1. function ТемаФишек(имя)
  2. {
  3. this.имя = имя;
  4. // Частичные имена текстур для загрузки.
  5. this.нейтральТекстуры = [];
  6. this.выборТекстуры = [];
  7. for (var номер = 1; номер <= 42; ++номер)
  8. {
  9. this.нейтральТекстуры.push("0/" + номер);
  10. this.выборТекстуры.push("1/" + номер);
  11. }
  12. // Материалы фишек.
  13. this.нейтраль = [];
  14. this.выбор = [];
  15. };
  16. ТемаФишек.prototype.имяФайлаТекстуры = function(частичноеИмя)
  17. {
  18. return частичноеИмя + ".png";
  19. }
  20. ТемаФишек.prototype.имяТекстуры = function(частичноеИмя)
  21. {
  22. return "tile.tex/" + частичноеИмя;
  23. }
  24. ТемаФишек.prototype.имяМатериала = function(частичноеИмя)
  25. {
  26. return "tile.mat/" + частичноеИмя;
  27. }
  28. ТемаФишек.prototype.загрузить = function(основаАдреса, отклик)
  29. {
  30. var ресурсы = [];
  31. // Список ресурсов для загрузки.
  32. for (var номер in this.нейтральТекстуры)
  33. {
  34. // Нейтраль.
  35. {
  36. const чимя = this.нейтральТекстуры[номер];
  37. const имя = this.имяТекстуры(чимя)
  38. const файл = this.имяФайлаТекстуры(чимя);
  39. ресурсы.push([основаАдреса + файл, имя]);
  40. }
  41. // Выбор.
  42. {
  43. const чимя = this.выборТекстуры[номер];
  44. const имя = this.имяТекстуры(чимя)
  45. const файл = this.имяФайлаТекстуры(чимя);
  46. ресурсы.push([основаАдреса + файл, имя]);
  47. }
  48. }
  49. const времяНачала = Date.now();
  50. // Получить текстуры и завести материалы.
  51. var self = this;
  52. муром.ресурсы.получить(
  53. ресурсы,
  54. function()
  55. {
  56. const прошло = Date.now() - времяНачала;
  57. console.log("ТемаФишек. Загрузка заняла мс: '" + прошло + "'");
  58. self.создатьМатериалы();
  59. отклик();
  60. }
  61. );
  62. };
  63. ТемаФишек.prototype.создатьМатериалы = function()
  64. {
  65. const вер = муром.ресурсы.ресурс("ver").содержимое;
  66. const фра = муром.ресурсы.ресурс("fra").содержимое;
  67. for (var номер in this.нейтральТекстуры)
  68. {
  69. // Нейтраль.
  70. {
  71. const чимя = this.нейтральТекстуры[номер];
  72. const имяТ = this.имяТекстуры(чимя)
  73. const имяМ = this.имяМатериала(чимя);
  74. var мат = муром.материалы.создатьМатериал(имяМ);
  75. var изо = муром.ресурсы.ресурс(имяТ);
  76. мат.задатьТекстуру("image", изо);
  77. мат.задатьШейдеры(вер, фра);
  78. this.нейтраль[номер] = мат;
  79. }
  80. // Выбор.
  81. {
  82. const чимя = this.выборТекстуры[номер];
  83. const имяТ = this.имяТекстуры(чимя)
  84. const имяМ = this.имяМатериала(чимя);
  85. var мат = муром.материалы.создатьМатериал(имяМ);
  86. var изо = муром.ресурсы.ресурс(имяТ);
  87. мат.задатьТекстуру("image", изо);
  88. мат.задатьШейдеры(вер, фра);
  89. this.выбор[номер] = мат;
  90. }
  91. }
  92. };