@@ -28,10 +28,11 @@ | |||||
var значения = мир.выпрямить(словарь); | var значения = мир.выпрямить(словарь); | ||||
for (var ключ in значения) | for (var ключ in значения) | ||||
{ | { | ||||
var путь = ключ.split("."); | |||||
var значение = значения[ключ]; | var значение = значения[ключ]; | ||||
for (var номер in мир.ключники) | for (var номер in мир.ключники) | ||||
{ | { | ||||
мир.ключники[номер](ключ, значение); | |||||
мир.ключники[номер](ключ, путь, значение); | |||||
} | } | ||||
} | } | ||||
}; | }; | ||||
@@ -1,4 +1,4 @@ | |||||
мир.ключники.push(function(ключ, значение){ | |||||
мир.ключники.push(function(ключ, путь, значение){ | |||||
if (ключ != "заголовок") | if (ключ != "заголовок") | ||||
{ | { | ||||
return; | return; | ||||
@@ -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(мир.физика.движок); | |||||
}, | |||||
}; | }; | ||||
// Запустить обновление. | |||||
мир.физика.обновить(); |
@@ -1,19 +1,50 @@ | |||||
мир.платформы = {}; | |||||
мир.платформы = { | |||||
умолчание: { | |||||
x: 100, | |||||
y: 100, | |||||
ширина: 40, | |||||
высота: 20, | |||||
цвет: "ff0000", | |||||
}, | |||||
задано: {}, | |||||
тела: {}, | |||||
}; | |||||
мир.ключники.push(function(ключ, значение){ | |||||
мир.ключники.push(function(ключ, путь, значение){ | |||||
if (!ключ.startsWith("платформы")) | if (!ключ.startsWith("платформы")) | ||||
{ | { | ||||
return; | 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, тело); | |||||
}); | }); |
@@ -0,0 +1,9 @@ | |||||
мир.обновить = function() | |||||
{ | |||||
мир.физика.обновить(); | |||||
requestAnimationFrame(мир.обновить); | |||||
}; | |||||
// Запустить. | |||||
мир.физика.создать(); | |||||
мир.обновить(); |
@@ -2,18 +2,8 @@ | |||||
заголовок: "РК 0.1.0", | заголовок: "РК 0.1.0", | ||||
платформы: { | платформы: { | ||||
полка1: { | полка1: { | ||||
x: 0, | |||||
y: 0, | |||||
ширина: 200, | |||||
высота: 50, | |||||
цвет: "ff0000", | |||||
}, | |||||
полка2: { | |||||
x: 100, | x: 100, | ||||
y: 0, | |||||
ширина: 200, | |||||
высота: 50, | |||||
цвет: "00ff00", | |||||
y: 100, | |||||
}, | }, | ||||
}, | }, | ||||
спрайты: { | спрайты: { |
@@ -22,6 +22,7 @@ | |||||
<script src="00110.заголовок.js"></script> | <script src="00110.заголовок.js"></script> | ||||
<script src="00120.физика.js"></script> | <script src="00120.физика.js"></script> | ||||
<script src="00130.платформы.js"></script> | <script src="00130.платформы.js"></script> | ||||
<script src="00300.пример.json.js"></script> | |||||
<script src="01000.пуск.js"></script> | |||||
<script src="01300.пример.json.js"></script> | |||||
</body> | </body> | ||||
</html> | </html> |