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 @@ - +