From d815d923f9447f521f2aaa055292a13bf19ca8e2 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: Wed, 28 Jul 2021 15:11:07 +0300 Subject: [PATCH] =?UTF-8?q?-=D0=B4=D0=B5=D0=B9=D1=81=D1=82=D0=B2=D0=B8?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 301.события.js | 20 ++++++++++++++++++++ 320.игрок.js | 19 +++---------------- 400.столкновения.js | 4 ++-- 800.пример.json.js | 2 +- index.html | 2 +- 5 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 301.события.js diff --git a/301.события.js b/301.события.js new file mode 100644 index 0000000..a16a68c --- /dev/null +++ b/301.события.js @@ -0,0 +1,20 @@ +мир.события = { + обработчики: [], + подписать: function(обработчик) { + мир.события.обработчики.push(обработчик); + }, + отписать: function(обработчик) { + var номер = мир.события.обработчики.indexOf(обработчик); + if (номер != -1) + { + мир.события.обработчики.splice(номер, 1); + } + }, + уведомить: function(событие) { + for (var номер in мир.события.обработчики) + { + var обработчик = мир.события.обработчики[номер]; + обработчик.обработатьСобытие(событие); + } + }, +}; diff --git a/320.игрок.js b/320.игрок.js index 5184e02..dda0ebb 100644 --- a/320.игрок.js +++ b/320.игрок.js @@ -74,19 +74,6 @@ }; -// // // // - - -/* -мир.игрок.задатьМаскуСтолкновения = function() -{ - var прыжок = мир.игрок.тело.velocity.y < -1; - var маска = прыжок ? 1 : (1 | 2); - мир.игрок.тело.collisionFilter.mask = маска; -}; -*/ - - // // // / @@ -95,7 +82,7 @@ if (мир.игрок.прыжок.статус == 1) { мир.игрок.прыжок.статус = 2; - мир.действия.совершить("игрокВПрыжке"); + мир.события.уведомить("игрок в прыжке"); } var нетДвижения = (Math.abs(мир.игрок.тело.velocity.y) < мир.игрок.прыжок.скоростьОтсутствия); var клавиша = мир.игрок.задано["клавиши.2"]; @@ -107,7 +94,7 @@ ) { мир.игрок.прыжок.статус = 1; мир.игрок.приземление.скорость = 0; - мир.действия.совершить("игрокНачалПрыжок"); + мир.события.уведомить("игрок начал прыжок"); } if (мир.игрок.прыжок.статус != 2) @@ -129,6 +116,6 @@ ) { мир.игрок.прыжок.время = сейчас; мир.игрок.прыжок.статус = 0; - мир.действия.совершить("игрокПриземлился"); + мир.события.уведомить("игрок приземлился"); } }; diff --git a/400.столкновения.js b/400.столкновения.js index 147d58e..45acaf6 100644 --- a/400.столкновения.js +++ b/400.столкновения.js @@ -44,7 +44,7 @@ var ст = за[имя]; var имя1 = ст["объекты.0"]; var имя2 = ст["объекты.1"]; - if (!имя1 || !имя2 || !ст.действие) + if (!имя1 || !имя2 || !ст.событие) { continue; } @@ -62,7 +62,7 @@ ) { continue; } - мир.действия.совершить(ст.действие); + мир.события.уведомить(ст.событие); } } }; diff --git a/800.пример.json.js b/800.пример.json.js index 4b3461d..073aaa2 100644 --- a/800.пример.json.js +++ b/800.пример.json.js @@ -340,7 +340,7 @@ console.debug("ИГР ПодкидываниеС.обработатьС", соб столкновения: { стрела: { объекты: ["кирпич", "сенсор"], - действие: "сенсорСтрелы", + событие: "сенсор стрелы", }, }, действия: { diff --git a/index.html b/index.html index 1d3be41..0aba45a 100644 --- a/index.html +++ b/index.html @@ -35,7 +35,7 @@ - +