From 1b49e1e0b349dcf10016ec5af95dc519fd17e39d 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, 4 Oct 2021 15:10:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D1=8B:=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D0=BE=20+=20=D0=B8=D0=B7=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3.5/игра/180.Объекты.js | 96 ++++++++++++++++-------------- 3.5/игра/700.Игра.js | 2 +- 2 files changed, 51 insertions(+), 47 deletions(-) diff --git a/3.5/игра/180.Объекты.js b/3.5/игра/180.Объекты.js index 772f00b..50882d0 100644 --- a/3.5/игра/180.Объекты.js +++ b/3.5/игра/180.Объекты.js @@ -1,4 +1,4 @@ -function Объекты(события, изображения, тела, слежение) +function Объекты(события, состояние) { this.создать = function() { @@ -9,67 +9,71 @@ function Объекты(события, изображения, тела, сле события.подписать(this); }; - this.обработатьКлюч = function(ключ, путь, значение) + this.обновитьИзображение = function(имя) { - if (путь[0] != "объекты") + let имяИзо = `объекты-${имя}`; + let за = this.задано[имя]; + let пр = this.умолчание.пр; + var описание = { + ширина: за["пр.2"] ? за["пр.2"] : пр[2], + высота: за["пр.3"] ? за["пр.3"] : пр[3], + вид: {}, + }; + for (var ключ in за) { - return; + if (ключ.startsWith("вид.")) + { + var к = ключ.substring(4); + var значение = за[ключ]; + описание.вид[к] = значение; + } } - var имя = путь[1]; - var свойство = путь.slice(2).join("."); - if (!this.задано[имя]) - { - this.задано[имя] = {}; - } - this.задано[имя][свойство] = значение; - this.обновитьОбъект(имя); + состояние.разобрать({ + изображения: { + [имяИзо]: описание, + }, + }); }; - this.обновитьОбъект = function(имя) + this.обработатьКлюч = function(ключ, путь, значение) { - /* - var тело = тела.тела[за.тело]; - if (!тело) + if (путь[0] != "объекты") { return; } - var элемент = изображения.элементы[за.изображение]; - var ум = this.умолчание; - - // Параметры. - var скорость = за.скорость ? за.скорость : ум.скорость; - var смещениеX = за["смещение.0"] ? за["смещение.0"] : ум.смещение[0]; - var смещениеY = за["смещение.1"] ? за["смещение.1"] : ум.смещение[1]; - var предел = за.предел ? за.предел : ум.предел; - - // Текущая позиция. - var x0 = 0; - if (элемент.dataset.слежениеX) + let имя = путь[1]; + let свойство = путь.slice(2).join("."); + if (!this.задано[имя]) { - x0 = элемент.dataset.слежениеX; + this.задано[имя] = {}; } - var y0 = 0; - if (элемент.dataset.слежениеY) + this.задано[имя][свойство] = значение; + + let пр = свойство.startsWith("пр."); + if (пр) { - y0 = элемент.dataset.слежениеY; + this.пересоздатьТело(имя); } + this.обновитьИзображение(имя); + }; - // Целевая позиция. - var x1 = тело.position.x + смещениеX; - var y1 = тело.position.y + смещениеY; - // Radians -> Degrees. - var угол = тело.angle * 180 / Math.PI; - - // Устанавливаемая плавно позиция. - var x = this.lerp(x0, x1, скорость, предел); - var y = this.lerp(y0, y1, скорость, предел); - - элемент.dataset.слежениеX = x; - элемент.dataset.слежениеY = y; - изображения.обновитьРасположение(за.изображение, x, y, угол); - */ + this.пересоздатьТело = function(имя) + { + let имяТела = `объекты-${имя}`; + let за = this.задано[имя]; + let пр = this.умолчание.пр; + состояние.разобрать({ + тела: { + [имяТела]: { + x: за["пр.0"] ? за["пр.0"] : пр[0], + y: за["пр.1"] ? за["пр.1"] : пр[1], + ширина: за["пр.2"] ? за["пр.2"] : пр[2], + высота: за["пр.3"] ? за["пр.3"] : пр[3], + }, + }, + }); }; // Конструктор. diff --git a/3.5/игра/700.Игра.js b/3.5/игра/700.Игра.js index 869cd40..82d721d 100644 --- a/3.5/игра/700.Игра.js +++ b/3.5/игра/700.Игра.js @@ -10,7 +10,7 @@ function Игра() мир.изображения = new Изображения(корень), мир.тела = new Тела(мир.события, мир.физика.движок.world); мир.слежение = new Слежение(мир.события, мир.изображения, мир.тела); - мир.объекты = new Объекты(мир.события, мир.изображения, мир.тела, мир.слежение); + мир.объекты = new Объекты(мир.события, мир.состояние); this.ключники = [ new Заголовок(), мир.изображения,