Files
MYPOM/4.1/игра/180.Объекты.js

110 líneas
3.3 KiB
JavaScript

function Объекты(состояние)
{
this.создать = function()
{
this.умолчание = {
пр: [0, 0, 40, 20],
};
this.задано = {};
};
this.обновитьИзображение = function(имя, пр, вид)
{
состояние.разобрать({
изображения: {
[имя]: {
пр: пр,
вид: вид,
},
},
});
};
this.обновитьПозициюРазмер = function(имя, пр)
{
состояние.разобрать({
тела: {
[имя]: {
пр: пр,
},
},
});
};
this.обновитьСлежение = function(имя, пр)
{
состояние.разобрать({
слежение: {
[имя]: {
изображение: имя,
тело: имя,
смещение: [-пр[2] / 2, -пр[3] / 2],
},
},
});
};
this.обновитьФизику = function(имя, значение)
{
состояние.разобрать({
тела: {
[имя]: {
физика: значение,
},
},
});
};
this.обработатьКлюч = function(ключ, путь, значение)
{
if (путь[0] != "объекты")
{
return;
}
let имя = путь[1];
let свойство = путь.slice(2).join(".");
if (!this.задано[имя])
{
this.задано[имя] = {};
}
this.задано[имя][свойство] = значение;
let производноеИмя = `объекты-${имя}`;
if (свойство.startsWith("пр."))
{
let пр = this.пр(имя);
this.обновитьПозициюРазмер(производноеИмя, пр);
this.обновитьСлежение(производноеИмя, пр);
let вид = this.задано[имя]["вид"];
this.обновитьИзображение(производноеИмя, пр, вид);
}
else if (свойство == "физика")
{
this.обновитьФизику(производноеИмя, значение);
}
else if (свойство == "вид")
{
let пр = this.пр(имя);
let вид = this.задано[имя]["вид"];
this.обновитьИзображение(производноеИмя, пр, вид);
}
};
this.пр = function(имя)
{
let за = this.задано[имя];
let пр = this.умолчание.пр;
return [
за["пр.0"] ? за["пр.0"] : пр[0],
за["пр.1"] ? за["пр.1"] : пр[1],
за["пр.2"] ? за["пр.2"] : пр[2],
за["пр.3"] ? за["пр.3"] : пр[3],
];
};
// Конструктор.
this.создать();
};