diff --git a/4.0/игра/180.Объекты.js b/4.0/игра/180.Объекты.js index 4f13513..88e7677 100644 --- a/4.0/игра/180.Объекты.js +++ b/4.0/игра/180.Объекты.js @@ -8,48 +8,53 @@ function Объекты(состояние) 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], }, }, }); }; + this.обновитьФизику = function(имя, значение) + { + состояние.разобрать({ + тела: { + [имя]: { + физика: значение, + }, + }, + }); + }; + this.обработатьКлюч = function(ключ, путь, значение) { if (путь[0] != "объекты") @@ -65,32 +70,26 @@ function Объекты(состояние) } this.задано[имя][свойство] = значение; - let пр = свойство.startsWith("пр."); - if (пр) + let производноеИмя = `объекты-${имя}`; + + if (свойство.startsWith("пр.")) { - this.пересоздатьТело(имя); - this.обновитьСлежение(имя); + let пр = this.пр(имя); + this.обновитьПозициюРазмер(производноеИмя, пр); + this.обновитьСлежение(производноеИмя, пр); + let вид = this.задано[имя]["вид"]; + this.обновитьИзображение(производноеИмя, пр, вид); + } + else if (свойство == "физика") + { + this.обновитьФизику(производноеИмя, значение); + } + else if (свойство == "вид") + { + let пр = this.пр(имя); + let вид = this.задано[имя]["вид"]; + this.обновитьИзображение(производноеИмя, пр, вид); } - this.обновитьИзображение(имя); - }; - - this.пересоздатьТело = function(имя) - { - let имяТела = `объекты-${имя}`; - let пр = this.пр(имя); - состояние.разобрать({ - тела: { - [имяТела]: { - x: пр[0], - y: пр[1], - ширина: пр[2], - высота: пр[3], - физика: { - isStatic: false, - }, - }, - }, - }); }; this.пр = function(имя)