From 65bb22c42ab2f981f0e246d711a851606d8c4a66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Wed, 2 Jun 2021 14:55:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BB=D0=B0=D1=82=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 00100.мир.js | 3 +- 00110.заголовок.js | 2 +- 00120.физика.js | 23 ++++---- 00130.платформы.js | 53 ++++++++++++++---- 01000.пуск.js | 9 +++ ...ер.json.js => 01300.пример.json.js | 12 +--- index.html | 3 +- old/.01.js.swp | Bin 0 -> 12288 bytes 8 files changed, 68 insertions(+), 37 deletions(-) create mode 100644 01000.пуск.js rename 00300.пример.json.js => 01300.пример.json.js (55%) create mode 100644 old/.01.js.swp diff --git a/00100.мир.js b/00100.мир.js index 6f2f437..4250359 100644 --- a/00100.мир.js +++ b/00100.мир.js @@ -28,10 +28,11 @@ var значения = мир.выпрямить(словарь); for (var ключ in значения) { + var путь = ключ.split("."); var значение = значения[ключ]; for (var номер in мир.ключники) { - мир.ключники[номер](ключ, значение); + мир.ключники[номер](ключ, путь, значение); } } }; diff --git a/00110.заголовок.js b/00110.заголовок.js index 951a80e..5b1be58 100644 --- a/00110.заголовок.js +++ b/00110.заголовок.js @@ -1,4 +1,4 @@ -мир.ключники.push(function(ключ, значение){ +мир.ключники.push(function(ключ, путь, значение){ if (ключ != "заголовок") { return; diff --git a/00120.физика.js b/00120.физика.js index 8c13a77..3ab4556 100644 --- a/00120.физика.js +++ b/00120.физика.js @@ -1,14 +1,13 @@ -мир.физика = { }; - -мир.физика.движок = Matter.Engine.create({ - enableSleeping: true, -}); - -мир.физика.обновить = function() -{ - Matter.Engine.update(мир.физика.движок); - requestAnimationFrame(мир.физика.обновить); +мир.физика = { + движок: null, + настройки: { + enableSleeping: true, + }, + создать: function() { + мир.физика.движок = Matter.Engine.create(мир.физика.настройки); + }, + обновить: function() { + Matter.Engine.update(мир.физика.движок); + }, }; -// Запустить обновление. -мир.физика.обновить(); diff --git a/00130.платформы.js b/00130.платформы.js index f8e1e5c..a039b29 100644 --- a/00130.платформы.js +++ b/00130.платформы.js @@ -1,19 +1,50 @@ -мир.платформы = {}; +мир.платформы = { + умолчание: { + x: 100, + y: 100, + ширина: 40, + высота: 20, + цвет: "ff0000", + }, + задано: {}, + тела: {}, +}; -мир.ключники.push(function(ключ, значение){ + +мир.ключники.push(function(ключ, путь, значение){ if (!ключ.startsWith("платформы")) { return; } - var к = ключ.split("."); - var имя = к[1]; -console.debug("имя:", имя); - if (!(имя in мир.платформы)) + + var имя = путь[1]; + var свойство = путь[2]; + + // Сохранить заданные значения. + if (!(имя in мир.платформы.задано)) + { + мир.платформы.задано[имя] = {}; + } + мир.платформы.задано[имя][свойство] = значение; + +console.debug("задано", мир.платформы.задано[имя]); + + // Удалить физическое тело. + if (имя in мир.платформы.тела) { - /* - мир.платформы[имя] = { - тело: - }; - */ + var тело = мир.платформы.тела[имя]; + Matter.Composite.remove(мир.физика.движок.world, тело); } + // Пересоздать физическое тело. + var задано = мир.платформы.задано[имя]; + var тело = Matter.Bodies.rectangle( + задано["x"] ? задано["x"] : мир.платформы.умолчание["x"], + задано["y"] ? задано["y"] : мир.платформы.умолчание["y"], + задано["ширина"] ? задано["ширина"] : мир.платформы.умолчание["ширина"], + задано["высота"] ? задано["высота"] : мир.платформы.умолчание["высота"], + { + isStatic: true, + } + ); + Matter.Composite.add(мир.физика.движок.world, тело); }); diff --git a/01000.пуск.js b/01000.пуск.js new file mode 100644 index 0000000..42ecb31 --- /dev/null +++ b/01000.пуск.js @@ -0,0 +1,9 @@ +мир.обновить = function() +{ + мир.физика.обновить(); + requestAnimationFrame(мир.обновить); +}; + +// Запустить. +мир.физика.создать(); +мир.обновить(); diff --git a/00300.пример.json.js b/01300.пример.json.js similarity index 55% rename from 00300.пример.json.js rename to 01300.пример.json.js index 213cb55..7200059 100644 --- a/00300.пример.json.js +++ b/01300.пример.json.js @@ -2,18 +2,8 @@ заголовок: "РК 0.1.0", платформы: { полка1: { - x: 0, - y: 0, - ширина: 200, - высота: 50, - цвет: "ff0000", - }, - полка2: { x: 100, - y: 0, - ширина: 200, - высота: 50, - цвет: "00ff00", + y: 100, }, }, спрайты: { diff --git a/index.html b/index.html index bb8d112..b307ee2 100644 --- a/index.html +++ b/index.html @@ -22,6 +22,7 @@ - + + diff --git a/old/.01.js.swp b/old/.01.js.swp new file mode 100644 index 0000000000000000000000000000000000000000..a9bc5716111f4abfbed92564aecfcec58d31bf86 GIT binary patch literal 12288 zcmeI2&u<$=6vrnOML;Pf^u~ccT!hxtS^t6%Vi`n25LFwBC~!e2S$ik;ChMJLXST5k zp{J@xB*c#+2X09G`VW8;2W}t^{0E2w9D3o#cV>6v{ID7e^-?q|eX`k^H*em2=e^lP zcBl5%#Z_8x8w}UOjNQ2T&3flUI{E&ij17XVz88dRTVBk=Euk$YUaOZTHXmvH;E=;= zTpeu6stEmRt?q8hBLi%MRlq86XB0@)#@xbb)@;;k+Tr=q<8=0sH}8yZ>%}Ty6|f3e z1*`&A0jq#jz$#!BxGNM;@eI3;NKfR^zLMW(4&C!dd$S5y1*`&A0jq#jz$#!BunJfO ztO8a6tAJJDE>ytt8T<8KeDr@Gg2(6o#sB}e&M@{9_yVkfIZy#J;FpIO`x4v$Yv2-? z2j{^#@EDi{f1GCQNAMZ=6og<2{QV$fe}Uh?>)=&z8C(J{fGTjoIWP-Of_uQ9rx^Pd zd=0(=pMaZS1)KoiKfu^^a1}fW{<)vApTXxK0RylFHo+TU9-IQVu=d}<58ylSG583) z2Zlg_WpEbE06|f5YZxq;NLOT2HbJV)P9~+ zKag$@&zFUWopQOwx+0PyLpP9DbEjo9tmCG!?Xj5a>cB6vT^-6*feWX8qdS7 zuH8@JxvA~yQ-;xO!g$&+8aj+AqcE}RKpJ|Ddf*Nr4-^uzyGSZYIqlw7pk@PO#;efd z6C`z@QoT2eRC5=O^Pp!oYGkVY2N&6v!p*TBOy0V2D*F!GOCZnpuXHwfS4k9KowU`xwI@Jtju`ccW`xZ;`!1Y1d%(+qSBVb+glDHrCxwG&DVtiUepUYJw;A^K_5fd zzP|g~#r!Aj?5;NvmXEe literal 0 HcmV?d00001