From aaf8eeecc5076c664d472564fe64eafbefbfe4d2 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: Fri, 8 Oct 2021 17:01:11 +0300 Subject: [PATCH] =?UTF-8?q?=D1=82=D0=B5=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4.0/игра/140.Тела.js | 42 ++++++++++++++++++++++++++---------- 4.0/игра/700.Игра.js | 2 +- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/4.0/игра/140.Тела.js b/4.0/игра/140.Тела.js index f05b50f..351a615 100644 --- a/4.0/игра/140.Тела.js +++ b/4.0/игра/140.Тела.js @@ -1,4 +1,4 @@ -function Тела(физмир) +function Тела(события, физика, физмир) { this.создать = function() { @@ -11,6 +11,7 @@ function Тела(физмир) this.задано = {}; this.тела = {}; this.имена = {}; + события.подписать(this); }; this.именаЧастей = function(за) @@ -44,7 +45,30 @@ function Тела(физмир) this.пересоздатьТело(имя); }; - this.пересоздатьТело = function(имя) { + this.обработатьСобытие = function(событие) + { + let префикс = "физика/"; + if (событие.startsWith(префикс)) + { + let физ = событие.substring(префикс.length); + this.пересоздатьТелаФизики(физ); + } + }; + + this.пересоздатьТелаФизики = function(физ) + { + for (let имя in this.задано) + { + let заданнаяФизика = this.задано[имя]["физика"]; + if (заданнаяФизика && заданнаяФизика == физ) + { + this.пересоздатьТело(имя); + } + } + }; + + this.пересоздатьТело = function(имя) + { // Удаляем старое тело. if (имя in this.тела) { @@ -62,19 +86,15 @@ function Тела(физмир) пр[1] = пр[1] + пр[3] / 2.0; // Параметры тела. var параметры = {}; - /* - * НАДО использовать из ключа физика - * - Object.assign(параметры, ум.физика); - for (var путь in за) + if (за.физика) { - if (путь.startsWith("физика")) + let заф = физика.задано[за.физика]; + for (let параметр in заф) { - var свойство = путь.slice(7); - мир.задатьПолныйКлюч(параметры, свойство, за[путь]); + мир.задатьПолныйКлюч(параметры, параметр, заф[параметр]); } } - */ +/**/console.debug("ИГР Тела.пересоздатьТ имя/параметры", имя, параметры); var тело = null; // Создаём новое составное тело. diff --git a/4.0/игра/700.Игра.js b/4.0/игра/700.Игра.js index 9f59a9b..527979a 100644 --- a/4.0/игра/700.Игра.js +++ b/4.0/игра/700.Игра.js @@ -15,7 +15,7 @@ function Игра() мир.виды = new Виды(мир.события); мир.изображения = new Изображения(мир.события, мир.виды, корень), мир.физика = new Физика(мир.события); - мир.тела = new Тела(мир.физдвижок.world); + мир.тела = new Тела(мир.события, мир.физика, мир.физдвижок.world); мир.слежение = new Слежение(мир.изображения, мир.тела); мир.объекты = new Объекты(мир.состояние); this.ключники = [