исключить повтор
This commit is contained in:
@@ -267,26 +267,6 @@
|
||||
// Подкидывание стрелы
|
||||
// // // //
|
||||
|
||||
function ПодкидываниеСтрелы(мир) {
|
||||
this.создать = function() {
|
||||
мир.события.подписать(this);
|
||||
};
|
||||
|
||||
this.обработатьСобытие = function(событие) {
|
||||
console.debug("ИГР ПодкидываниеС.обработатьС", событие);
|
||||
};
|
||||
|
||||
// Конструктор.
|
||||
this.создать();
|
||||
}
|
||||
|
||||
мир.подстр = new ПодкидываниеСтрелы(мир);
|
||||
|
||||
мир.подкидываниеСтрелы = {
|
||||
сенсор: null,
|
||||
стрела: null,
|
||||
подкинули: false,
|
||||
};
|
||||
|
||||
мир.разобрать({
|
||||
объекты: {
|
||||
@@ -343,43 +323,6 @@ console.debug("ИГР ПодкидываниеС.обработатьС", соб
|
||||
событие: "сенсор стрелы",
|
||||
},
|
||||
},
|
||||
действия: {
|
||||
сенсорСтрелы: [
|
||||
() => {
|
||||
мир.подкидываниеСтрелы.сенсор = мир.физика.движок.timing.timestamp;
|
||||
},
|
||||
"подкинутьСтрелу",
|
||||
],
|
||||
игрокНачалПрыжок: [
|
||||
() => {
|
||||
мир.подкидываниеСтрелы.сенсор = null;
|
||||
мир.подкидываниеСтрелы.стрела = null;
|
||||
мир.подкидываниеСтрелы.подкинули = false;
|
||||
},
|
||||
],
|
||||
игрокПриземлился: [
|
||||
() => { мир.подкидываниеСтрелы.стрела = мир.физика.движок.timing.timestamp; },
|
||||
"подкинутьСтрелу",
|
||||
],
|
||||
подкинутьСтрелу: [
|
||||
() => {
|
||||
if (
|
||||
мир.подкидываниеСтрелы.подкинули ||
|
||||
!мир.подкидываниеСтрелы.стрела ||
|
||||
!мир.подкидываниеСтрелы.сенсор ||
|
||||
Math.abs(мир.подкидываниеСтрелы.стрела - мир.подкидываниеСтрелы.сенсор) > 0.00001 ||
|
||||
Math.abs(мир.объекты.тела.стрела.velocity.y) > 0.00001
|
||||
) {
|
||||
return;
|
||||
}
|
||||
мир.подкидываниеСтрелы.подкинули = true;
|
||||
Matter.Body.setVelocity(
|
||||
мир.объекты.тела.стрела,
|
||||
{ x: 0, y: -мир.игрок.приземление.скорость * 1.2 }
|
||||
);
|
||||
},
|
||||
],
|
||||
},
|
||||
маскиПрыжков: {
|
||||
стрела: {
|
||||
объект: "стрела",
|
||||
@@ -388,3 +331,68 @@ console.debug("ИГР ПодкидываниеС.обработатьС", соб
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
function ПодкидываниеСтрелы() {
|
||||
this.создать = function() {
|
||||
this.времяСтрелы = null;
|
||||
this.времяПриземления = null;
|
||||
this.подкинули = false;
|
||||
this.закинули = null;
|
||||
|
||||
мир.события.подписать(this);
|
||||
};
|
||||
|
||||
this.обработатьСобытие = function(событие) {
|
||||
if (событие == "сенсор стрелы")
|
||||
{
|
||||
this.времяСтрелы = мир.физика.движок.timing.timestamp;
|
||||
this.подкинуть();
|
||||
}
|
||||
else if (событие == "игрок приземлился")
|
||||
{
|
||||
this.времяПриземления = мир.физика.движок.timing.timestamp;
|
||||
this.подкинуть();
|
||||
}
|
||||
else if (событие = "игрок начал прыжок")
|
||||
{
|
||||
this.времяСтрелы = null;
|
||||
this.времяПриземления = null;
|
||||
this.подкинули = false;
|
||||
}
|
||||
};
|
||||
|
||||
this.подкинуть = function() {
|
||||
if (
|
||||
this.подкинули ||
|
||||
!this.времяСтрелы ||
|
||||
!this.времяПриземления ||
|
||||
Math.abs(this.времяСтрелы - this.времяПриземления) > 0.00001 ||
|
||||
Math.abs(мир.объекты.тела.стрела.velocity.y) > 0.00001
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.подкинули = true;
|
||||
Matter.Body.setVelocity(
|
||||
мир.объекты.тела.стрела,
|
||||
{ x: 0, y: -мир.игрок.приземление.скорость * 1.2 }
|
||||
);
|
||||
|
||||
// Уведомить о достижении нужной скорости.
|
||||
if (
|
||||
(мир.игрок.приземление.скорость > 16) &&
|
||||
this.закинули
|
||||
) {
|
||||
мир.события.отписать(this);
|
||||
this.закинули();
|
||||
}
|
||||
};
|
||||
|
||||
// Конструктор.
|
||||
this.создать();
|
||||
}
|
||||
|
||||
мир.подкидываниеСтрелы = new ПодкидываниеСтрелы();
|
||||
мир.подкидываниеСтрелы.закинули = function() {
|
||||
мир.подкидываниеСтрелы = null;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user