объекты

This commit is contained in:
2021-10-11 14:49:35 +03:00
parent 6923fc9f08
commit 87da5895fe

View File

@@ -8,48 +8,53 @@ function Объекты(состояние)
this.задано = {}; this.задано = {};
}; };
this.обновитьИзображение = function(имя) this.обновитьИзображение = function(имя, пр, вид)
{ {
let имяИзо = `объекты-${имя}`;
let за = this.задано[имя];
let пр = this.пр(имя);
var описание = {
ширина: пр[2],
высота: пр[3],
вид: {},
};
for (var ключ in за)
{
if (ключ.startsWith("вид."))
{
var к = ключ.substring(4);
var значение = за[ключ];
описание.вид[к] = значение;
}
}
состояние.разобрать({ состояние.разобрать({
изображения: { изображения: {
[имяИзо]: описание, [имя]: {
пр: пр,
вид: вид,
},
}, },
}); });
}; };
this.обновитьСлежение = function(имя) this.обновитьПозициюРазмер = function(имя, пр)
{
состояние.разобрать({
тела: {
[имя]: {
пр: пр,
},
},
});
};
this.обновитьСлежение = function(имя, пр)
{ {
let имяС = `объекты-${имя}`;
let пр = this.пр(имя);
состояние.разобрать({ состояние.разобрать({
слежение: { слежение: {
[имяС]: { [имя]: {
изображение: имяС, изображение: имя,
тело: имяС, тело: имя,
смещение: [-пр[2] / 2, -пр[3] / 2], смещение: [-пр[2] / 2, -пр[3] / 2],
}, },
}, },
}); });
}; };
this.обновитьФизику = function(имя, значение)
{
состояние.разобрать({
тела: {
[имя]: {
физика: значение,
},
},
});
};
this.обработатьКлюч = function(ключ, путь, значение) this.обработатьКлюч = function(ключ, путь, значение)
{ {
if (путь[0] != "объекты") if (путь[0] != "объекты")
@@ -65,32 +70,26 @@ function Объекты(состояние)
} }
this.задано[имя][свойство] = значение; this.задано[имя][свойство] = значение;
let пр = свойство.startsWith("пр."); let производноеИмя = `объекты-${имя}`;
if (пр)
{
this.пересоздатьТело(имя);
this.обновитьСлежение(имя);
}
this.обновитьИзображение(имя);
};
this.пересоздатьТело = function(имя) if (свойство.startsWith("пр."))
{ {
let имяТела = `объекты-${имя}`;
let пр = this.пр(имя); let пр = this.пр(имя);
состояние.разобрать({ this.обновитьПозициюРазмер(производноеИмя, пр);
тела: { this.обновитьСлежение(производноеИмя, пр);
[имяТела]: { let вид = this.задано[имя]["вид"];
x: пр[0], this.обновитьИзображение(производноеИмя, пр, вид);
y: пр[1], }
ширина: пр[2], else if (свойство == "физика")
высота: пр[3], {
физика: { this.обновитьФизику(производноеИмя, значение);
isStatic: false, }
}, else if (свойство == "вид")
}, {
}, let пр = this.пр(имя);
}); let вид = this.задано[имя]["вид"];
this.обновитьИзображение(производноеИмя, пр, вид);
}
}; };
this.пр = function(имя) this.пр = function(имя)