Игра Маджонг | Mahjong game
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.

101 lines
3.5KB

  1. мж.задатьНейтральныйМатериал = function()
  2. {
  3. var мат = муром.материалы.создатьМатериал("N");
  4. var изо = муром.ресурсы.ресурс("tex.stub");
  5. мат.задатьТекстуру("image", изо);
  6. var вер = муром.ресурсы.ресурс("ver").содержимое;
  7. var фра = муром.ресурсы.ресурс("fra").содержимое;
  8. мат.задатьШейдеры(вер, фра);
  9. мж.сцена.задатьМатериал(мат);
  10. };
  11. мж.разобратьРаскладку = function()
  12. {
  13. eval(муром.ресурсы.ресурс("Layout").содержимое);
  14. var содержимое = муром.ресурсы.ресурс("lay").содержимое;
  15. мж.раскладка = new Раскладка();
  16. мж.раскладка.разобрать(содержимое);
  17. };
  18. мж.фишки = [];
  19. мж.создатьФишки = function()
  20. {
  21. eval(муром.ресурсы.ресурс("Tile").содержимое);
  22. for (var номер in мж.раскладка.позиции)
  23. {
  24. var ф = new Фишка();
  25. ф.позиция = мж.раскладка.позиции[номер];
  26. мж.фишки.push(ф);
  27. }
  28. };
  29. мж.размерФишки = {
  30. "ширина": 2.0,
  31. "высота": 3.0,
  32. "глубина": 1.0,
  33. };
  34. мж.создатьУзлыФишек = function()
  35. {
  36. const шагФишки = 2.0;
  37. const коэффициенты = {
  38. "x": мж.размерФишки.ширина / шагФишки,
  39. "y": -мж.размерФишки.высота / шагФишки,
  40. "z": мж.размерФишки.глубина,
  41. };
  42. var мод = муром.ресурсы.ресурс("mod");
  43. for (var номер in мж.фишки)
  44. {
  45. var имя = номер.toString();
  46. var узел = муром.узлы.создатьУзел(имя, мод);
  47. мж.сцена.добавитьДитя(узел);
  48. var ф = мж.фишки[номер];
  49. var п = ф.позиция;
  50. узел.позиция = [
  51. п[2] * коэффициенты.x,
  52. п[1] * коэффициенты.y,
  53. п[0] * коэффициенты.z,
  54. ];
  55. ф.узел = узел;
  56. }
  57. };
  58. мж.центрироватьСцену = function()
  59. {
  60. var границы = {
  61. "лево": 1000,
  62. "право": -1000,
  63. "верх": -1000,
  64. "низ": 1000,
  65. };
  66. for (var номер in мж.фишки)
  67. {
  68. const ф = мж.фишки[номер];
  69. const x = ф.узел.позиция[0];
  70. const y = ф.узел.позиция[1];
  71. if (x < границы.лево)
  72. {
  73. границы.лево = x;
  74. }
  75. if (x > границы.право)
  76. {
  77. границы.право = x;
  78. }
  79. if (y < границы.низ)
  80. {
  81. границы.низ = y;
  82. }
  83. if (y > границы.верх)
  84. {
  85. границы.верх = y;
  86. }
  87. }
  88. const ширина = границы.право - границы.лево + мж.размерФишки.ширина;
  89. const высота = границы.верх - границы.низ + мж.размерФишки.высота;
  90. мж.сцена.позиция = [-ширина / 2.0, 0, высота / 2.0];
  91. };