переименовать
This commit is contained in:
84
100.мир.js
Normal file
84
100.мир.js
Normal file
@@ -0,0 +1,84 @@
|
||||
мир = {
|
||||
ключники: [],
|
||||
выставленныеЗначения: {},
|
||||
};
|
||||
|
||||
мир.выпрямить = function(obj)
|
||||
{
|
||||
// https://stackoverflow.com/a/42121920
|
||||
var newObj = {};
|
||||
for (var key in obj)
|
||||
{
|
||||
if (typeof obj[key] === 'object' && obj[key] !== null)
|
||||
{
|
||||
var temp = мир.выпрямить(obj[key])
|
||||
for (var key2 in temp)
|
||||
{
|
||||
newObj[key + "." + key2] = temp[key2];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
newObj[key] = obj[key];
|
||||
}
|
||||
}
|
||||
return newObj;
|
||||
};
|
||||
|
||||
мир.лишьНовыеЗначения = function(значения) {
|
||||
var новые = {};
|
||||
for (var ключ in значения)
|
||||
{
|
||||
var было = мир.выставленныеЗначения[ключ];
|
||||
var стало = значения[ключ];
|
||||
if (!(было != null && было == стало))
|
||||
{
|
||||
новые[ключ] = стало;
|
||||
мир.выставленныеЗначения[ключ] = стало;
|
||||
}
|
||||
}
|
||||
return новые;
|
||||
};
|
||||
|
||||
мир.разобрать = function(словарь) {
|
||||
var значения = мир.лишьНовыеЗначения(мир.выпрямить(словарь));
|
||||
for (var ключ in значения)
|
||||
{
|
||||
var путь = ключ.split(".");
|
||||
var значение = значения[ключ];
|
||||
for (var номер in мир.ключники)
|
||||
{
|
||||
мир.ключники[номер](ключ, путь, значение);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
мир.задать = function(словарь, полныйКлюч, значение) {
|
||||
var путь = полныйКлюч.split(".");
|
||||
var пройти = путь.length - 1;
|
||||
var вложенность = словарь;
|
||||
for (var номер = 0; номер < пройти; ++номер)
|
||||
{
|
||||
var ключ = путь[номер];
|
||||
if (!(ключ in вложенность))
|
||||
{
|
||||
вложенность[ключ] = {};
|
||||
вложенность = вложенность[ключ];
|
||||
}
|
||||
}
|
||||
// Значение в конце вложенности.
|
||||
var ключ = путь[пройти];
|
||||
вложенность[ключ] = значение;
|
||||
};
|
||||
|
||||
мир.синхронизироватьЭлементТело = function(элемент, тело) {
|
||||
if (тело.isSleeping)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
let x = тело.position.x - элемент.offsetWidth / 2;
|
||||
let y = тело.position.y - элемент.offsetHeight / 2;
|
||||
let угол = тело.angle;
|
||||
элемент.style.transform = `translate(${x}px, ${y}px) rotate(${угол}rad)`;
|
||||
};
|
||||
Reference in New Issue
Block a user