diff --git a/800.пример.json.js b/800.пример.json.js index b81f6e9..76452f7 100644 --- a/800.пример.json.js +++ b/800.пример.json.js @@ -318,10 +318,14 @@ }, }, столкновения: { - стрела: { + стрелаНачало: { объекты: ["кирпич", "сенсор"], событие: "сенсор стрелы", }, + стрелаКонец: { + объекты: ["стрела", "лук"], + событие: "стрела и лук", + }, }, маскиПрыжков: { стрела: { @@ -337,7 +341,8 @@ function ПодкидываниеСтрелы() { this.времяСтрелы = null; this.времяПриземления = null; this.подкинули = false; - this.закинули = null; + this.закинули = false; + this.завершить = null; мир.события.подписать(this); }; @@ -353,12 +358,21 @@ function ПодкидываниеСтрелы() { this.времяПриземления = мир.физика.движок.timing.timestamp; this.подкинуть(); } - else if (событие = "игрок начал прыжок") + else if (событие == "игрок начал прыжок") { this.времяСтрелы = null; this.времяПриземления = null; this.подкинули = false; } + else if ( + (событие == "стрела и лук") && + this.закинули && + this.завершить + ) { + мир.события.уведомить("закинули стрелу"); + мир.события.отписать(this); + this.завершить(); + } }; this.подкинуть = function() { @@ -378,13 +392,9 @@ function ПодкидываниеСтрелы() { { x: 0, y: -мир.игрок.приземление.скорость * 1.2 } ); - // Уведомить о достижении нужной скорости. - if ( - (мир.игрок.приземление.скорость > 16) && - this.закинули - ) { - мир.события.отписать(this); - this.закинули(); + if (мир.игрок.приземление.скорость > 16) + { + this.закинули = true; } }; @@ -393,6 +403,27 @@ function ПодкидываниеСтрелы() { } мир.подкидываниеСтрелы = new ПодкидываниеСтрелы(); -мир.подкидываниеСтрелы.закинули = function() { +мир.подкидываниеСтрелы.завершить = function() { мир.подкидываниеСтрелы = null; }; + + +// // // // +// Отладка событий +// // // // + + +function ОтладкаСобытий() { + this.обработатьСобытие = function(событие) { + if (событие == "закинули стрелу") + { + console.debug("событие", событие); + } + }; + + // Конструктор. + мир.события.подписать(this); +} + +мир.отладкаСобытий = new ОтладкаСобытий(); +