From 87da5895fe1266030e0b80ee94e6a747f75a4acc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Mon, 11 Oct 2021 14:49:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4.0/игра/180.Объекты.js | 99 +++++++++++++++--------------- 1 file changed, 49 insertions(+), 50 deletions(-) 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(имя)