1031 lines
29 KiB
JavaScript
1031 lines
29 KiB
JavaScript
/*
|
||
*
|
||
* Реакции
|
||
*
|
||
*/
|
||
|
||
|
||
ЗагрузитьРесурсыИзбы = мир =>
|
||
{
|
||
const звуки = {
|
||
"звук-избы": "ресурсы/звуки/387922__setuniman__scheming-1o95.mp3",
|
||
"звук-зарядки": "ресурсы/звуки/543927__eminyildirim__pistol-gun-cocking.wav",
|
||
"пуск-стрелы": "ресурсы/звуки/521552__omerbhatti34__arrow-impact.mp3",
|
||
"удар-стрелы": "ресурсы/звуки/330800__czarcazas__shattering-glass-small.mp3",
|
||
"выломали-окно": "ресурсы/звуки/448004__kneeling__break-window.mp3",
|
||
"молоко-перевернули": "ресурсы/звуки/235596__tcrocker68__large-glassbottle-fall-woodfloor.wav",
|
||
"молоко-прыгнули": "ресурсы/звуки/352065__cabled-mess__glassy-bits-06.wav",
|
||
};
|
||
for (var имя in звуки)
|
||
{
|
||
мир.сцена.load.audio(имя, звуки[имя]);
|
||
}
|
||
|
||
const изображения = {
|
||
"основа": "ресурсы/отладка/основа.jpg",
|
||
"линия": "ресурсы/отладка/линия_вертикальная.png",
|
||
"изба": "ресурсы/сцены/изба.jpg",
|
||
"молоко": "ресурсы/вещи/банка_молока.png",
|
||
"лужа": "ресурсы/вещи/лужа.png",
|
||
"паук": "ресурсы/животные/паук.png",
|
||
"мышь": "ресурсы/животные/мышь.png",
|
||
"мышь": "ресурсы/животные/мышь.png",
|
||
"самовар": "ресурсы/вещи/самовар.png",
|
||
"стрела": "ресурсы/вещи/стрела.png",
|
||
"окно-разбито": "ресурсы/вещи/окно_разбитая-часть.png",
|
||
"окно-выломано": "ресурсы/вещи/окно_дыра.png",
|
||
"крышка-подпола": "ресурсы/вещи/крышка-подпола.png",
|
||
};
|
||
for (var имя in изображения)
|
||
{
|
||
мир.сцена.load.image(имя, изображения[имя]);
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ЗадатьСтруктуруИзбы = мир =>
|
||
{
|
||
function платформаПрыжков(узел) {
|
||
var ограничить = узел.body.checkCollision;
|
||
ограничить.down = false;
|
||
ограничить.left = false;
|
||
ограничить.right = false;
|
||
}
|
||
function платформаКаркаса(узел) {
|
||
узел.body.checkCollision.down = false;
|
||
}
|
||
|
||
мир.изба = {
|
||
фон: {
|
||
родитель: мир.сцена,
|
||
тип: "изображение",
|
||
x: 0,
|
||
y: 0,
|
||
texture: "изба",
|
||
originX: 0,
|
||
originY: 0,
|
||
},
|
||
|
||
полДоКрышки: {
|
||
родитель: мир.каркас,
|
||
тип: "платформа",
|
||
после: платформаКаркаса,
|
||
x: 0,
|
||
y: 585,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 43,
|
||
visible: false,
|
||
},
|
||
полКрышки: {
|
||
родитель: мир.каркас,
|
||
тип: "платформа",
|
||
после: платформаКаркаса,
|
||
x: 360,
|
||
y: 585,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 16,
|
||
visible: false,
|
||
},
|
||
крышка: {
|
||
родитель: мир.сцена,
|
||
тип: "изображение",
|
||
x: 357,
|
||
y: 605,
|
||
texture: "крышка-подпола",
|
||
originX: 0,
|
||
originY: 1,
|
||
scaleX: 0.4,
|
||
scaleY: 0.4,
|
||
},
|
||
полПослеКрышки: {
|
||
родитель: мир.каркас,
|
||
тип: "платформа",
|
||
x: 510,
|
||
y: 585,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 200,
|
||
visible: false,
|
||
},
|
||
|
||
леваяСтена: {
|
||
родитель: мир.каркас,
|
||
тип: "платформа",
|
||
x: 0,
|
||
y: 200,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleY: 50,
|
||
visible: false,
|
||
},
|
||
праваяСтена: {
|
||
родитель: мир.каркас,
|
||
тип: "платформа",
|
||
x: 2000,
|
||
y: 200,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleY: 50,
|
||
visible: false,
|
||
},
|
||
|
||
фундаментПечи: {
|
||
родитель: мир.платформы,
|
||
тип: "платформа",
|
||
после: платформаПрыжков,
|
||
x: 583,
|
||
y: 473,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 65,
|
||
visible: false,
|
||
},
|
||
полка1: {
|
||
родитель: мир.платформы,
|
||
тип: "платформа",
|
||
после: платформаПрыжков,
|
||
x: 666,
|
||
y: 335,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 3,
|
||
visible: false,
|
||
},
|
||
полкаМолока: {
|
||
родитель: мир.платформы,
|
||
тип: "платформа",
|
||
после: платформаПрыжков,
|
||
x: 771,
|
||
y: 335,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 3,
|
||
visible: false,
|
||
},
|
||
полка3: {
|
||
родитель: мир.платформы,
|
||
тип: "платформа",
|
||
после: платформаПрыжков,
|
||
x: 862,
|
||
y: 335,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 3,
|
||
visible: false,
|
||
},
|
||
полкаСамовара: {
|
||
родитель: мир.платформы,
|
||
тип: "платформа",
|
||
после: платформаПрыжков,
|
||
x: 995,
|
||
y: 355,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 4,
|
||
visible: false,
|
||
},
|
||
лежанкаПечи: {
|
||
родитель: мир.платформы,
|
||
тип: "платформа",
|
||
после: платформаПрыжков,
|
||
x: 620,
|
||
y: 245,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 35,
|
||
visible: false,
|
||
},
|
||
основаТрубыПечи: {
|
||
родитель: мир.платформы,
|
||
тип: "платформа",
|
||
после: платформаПрыжков,
|
||
x: 950,
|
||
y: 180,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 12,
|
||
visible: false,
|
||
},
|
||
|
||
стол: {
|
||
родитель: мир.платформы,
|
||
тип: "платформа",
|
||
после: платформаПрыжков,
|
||
x: 1270,
|
||
y: 427,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 70,
|
||
visible: false,
|
||
},
|
||
подоконник: {
|
||
родитель: мир.платформы,
|
||
тип: "платформа",
|
||
после: платформаПрыжков,
|
||
x: 1690,
|
||
y: 375,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 20,
|
||
visible: false,
|
||
},
|
||
разбитоеОкно: {
|
||
родитель: мир.сцена,
|
||
тип: "изображение",
|
||
x: 1660,
|
||
y: 183,
|
||
texture: "окно-разбито",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 0.75,
|
||
scaleY: 0.75,
|
||
visible: false,
|
||
},
|
||
выломанноеОкно: {
|
||
родитель: мир.сцена,
|
||
тип: "изображение",
|
||
x: 1660,
|
||
y: 183,
|
||
texture: "окно-выломано",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 0.75,
|
||
scaleY: 0.75,
|
||
visible: false,
|
||
},
|
||
|
||
молоко: {
|
||
родитель: мир.сцена.physics,
|
||
тип: "спрайт",
|
||
группы: [мир.вещи],
|
||
x: 785,
|
||
y: 240,
|
||
texture: "молоко",
|
||
scaleX: 0.4,
|
||
scaleY: 0.4,
|
||
depth: 10,
|
||
},
|
||
лужа: {
|
||
родитель: мир.сцена,
|
||
тип: "изображение",
|
||
x: 285,
|
||
y: 585,
|
||
texture: "лужа",
|
||
scaleX: 0.25,
|
||
scaleY: 0.25,
|
||
visible: false,
|
||
},
|
||
самовар: {
|
||
родитель: мир.сцена.physics,
|
||
тип: "спрайт",
|
||
группы: [мир.вещи],
|
||
x: 1003,
|
||
y: 200,
|
||
texture: "самовар",
|
||
scaleX: 0.2,
|
||
scaleY: 0.2,
|
||
depth: 5,
|
||
},
|
||
|
||
паук1: {
|
||
родитель: мир.враги,
|
||
тип: "платформа",
|
||
x: 620,
|
||
y: 345,
|
||
texture: "паук",
|
||
скорость: 50,
|
||
низ: 550,
|
||
верх: 270,
|
||
depth: 10,
|
||
},
|
||
нить1: {
|
||
родитель: мир.сцена,
|
||
тип: "изображение",
|
||
x: 619,
|
||
y: 245,
|
||
texture: "линия",
|
||
originX: 0,
|
||
originY: 0,
|
||
depth: 10,
|
||
},
|
||
паук2: {
|
||
родитель: мир.враги,
|
||
тип: "платформа",
|
||
x: 785,
|
||
y: 375,
|
||
texture: "паук",
|
||
скорость: 70,
|
||
низ: 550,
|
||
верх: 270,
|
||
depth: 10,
|
||
},
|
||
нить2: {
|
||
родитель: мир.сцена,
|
||
тип: "изображение",
|
||
x: 784,
|
||
y: 245,
|
||
texture: "линия",
|
||
originX: 0,
|
||
originY: 0,
|
||
depth: 10,
|
||
},
|
||
паук3: {
|
||
родитель: мир.враги,
|
||
тип: "платформа",
|
||
x: 930,
|
||
y: 500,
|
||
texture: "паук",
|
||
скорость: 70,
|
||
низ: 550,
|
||
верх: 270,
|
||
depth: 10,
|
||
},
|
||
нить3: {
|
||
родитель: мир.сцена,
|
||
тип: "изображение",
|
||
x: 929,
|
||
y: 245,
|
||
texture: "линия",
|
||
originX: 0,
|
||
originY: 0,
|
||
depth: 10,
|
||
},
|
||
паук4: {
|
||
родитель: мир.враги,
|
||
тип: "платформа",
|
||
x: 1003,
|
||
y: 250,
|
||
texture: "паук",
|
||
скорость: 40,
|
||
низ: 400,
|
||
верх: 200,
|
||
depth: 10,
|
||
},
|
||
нить4: {
|
||
родитель: мир.сцена,
|
||
тип: "изображение",
|
||
x: 1002,
|
||
y: 180,
|
||
texture: "линия",
|
||
originX: 0,
|
||
originY: 0,
|
||
depth: 10,
|
||
},
|
||
|
||
мышь1: {
|
||
родитель: мир.враги,
|
||
тип: "платформа",
|
||
x: 350,
|
||
y: 575,
|
||
texture: "мышь",
|
||
flipX: true,
|
||
depth: 10,
|
||
скорость: 290,
|
||
},
|
||
мышь2: {
|
||
родитель: мир.враги,
|
||
тип: "платформа",
|
||
x: 740,
|
||
y: 575,
|
||
texture: "мышь",
|
||
flipX: true,
|
||
depth: 10,
|
||
скорость: 375,
|
||
},
|
||
|
||
кучаСтрел: {
|
||
родитель: мир.стрелы,
|
||
тип: "платформа",
|
||
x: 1270,
|
||
y: 405,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleX: 25,
|
||
scaleY: 2,
|
||
visible: false,
|
||
},
|
||
лук: {
|
||
родитель: мир.стрелы,
|
||
тип: "платформа",
|
||
x: 1280,
|
||
y: 200,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
visible: false,
|
||
},
|
||
пускСтрелы: {
|
||
родитель: мир.стрелы,
|
||
тип: "платформа",
|
||
x: 1270,
|
||
y: 160,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
visible: false,
|
||
},
|
||
границаПолётаСтрелы: {
|
||
родитель: мир.стрелы,
|
||
тип: "платформа",
|
||
x: 1830,
|
||
y: 200,
|
||
texture: "основа",
|
||
originX: 0,
|
||
originY: 0,
|
||
scaleY: 20,
|
||
visible: false,
|
||
},
|
||
};
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ЗадатьФункциюПоискаУзлаПоИмени = мир =>
|
||
{
|
||
мир.узелСцены = function(имя) {
|
||
return мир.сцена.children.list.find(function(элемент) {
|
||
return элемент.name == имя;
|
||
});
|
||
};
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СоздатьИзбу = мир =>
|
||
{
|
||
создатьУзлыСценыПоСтруктуре(мир.изба);
|
||
мир.сцена.sound.play("звук-избы", { loop: true });
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
/*
|
||
ПозволитьПлатформамПропускатьПрыжки = мир =>
|
||
{
|
||
мир.платформы.children.iterate(function(платформа) {
|
||
платформа.body.checkCollision.down = false;
|
||
платформа.body.checkCollision.left = false;
|
||
платформа.body.checkCollision.right = false;
|
||
});
|
||
};
|
||
*/
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
НастроитьПауков = мир =>
|
||
{
|
||
мир.пауки = [];
|
||
мир.нитиПауков = [];
|
||
for (var имя in мир.изба)
|
||
{
|
||
if (имя.startsWith("паук"))
|
||
{
|
||
var паук = мир.узелСцены(имя);
|
||
var имяНити = имя.replace("паук", "нить");
|
||
var нить = мир.узелСцены(имяНити);
|
||
паук.body.setVelocityY(паук.скорость);
|
||
мир.пауки.push(паук);
|
||
мир.нитиПауков.push(нить);
|
||
}
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
АнимироватьПауков = мир =>
|
||
{
|
||
for (var номер in мир.пауки)
|
||
{
|
||
var паук = мир.пауки[номер];
|
||
var нить = мир.нитиПауков[номер];
|
||
нить.displayHeight = паук.y - нить.y - 5;
|
||
if (паук.y > паук.низ)
|
||
{
|
||
паук.setVelocityY(-паук.скорость);
|
||
} else if (паук.y < паук.верх)
|
||
{
|
||
паук.setVelocityY(паук.скорость);
|
||
}
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
НастроитьМышей = мир =>
|
||
{
|
||
мир.мыши = [];
|
||
for (var имя in мир.изба)
|
||
{
|
||
if (имя.startsWith("мышь"))
|
||
{
|
||
var мышь = мир.узелСцены(имя);
|
||
мышь.body.setVelocityX(мышь.скорость);
|
||
мир.мыши.push(мышь);
|
||
}
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
АнимироватьМышей = мир =>
|
||
{
|
||
for (var номер in мир.мыши)
|
||
{
|
||
var мышь= мир.мыши[номер];
|
||
if (мышь.x > 1950)
|
||
{
|
||
мышь.setVelocityX(-мышь.скорость);
|
||
мышь.flipX = false;
|
||
} else if (мышь.x < 50)
|
||
{
|
||
мышь.setVelocityX(мышь.скорость);
|
||
мышь.flipX = true;
|
||
}
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
НастроитьСтрелы = мир =>
|
||
{
|
||
var куча = мир.узелСцены("кучаСтрел");
|
||
куча.body.checkCollision.down = false;
|
||
var лук = мир.узелСцены("лук");
|
||
лук.body.checkCollision.down = false;
|
||
var пуск = мир.узелСцены("пускСтрелы");
|
||
|
||
// Определение прыжка по стрелам.
|
||
мир.сцена.physics.add.collider(мир.колобок, куча, function(a, b) {
|
||
if (мир.колобок.body.touching.down) {
|
||
мир.колобок.прыжокПоСтрелам = true;
|
||
}
|
||
});
|
||
|
||
// Определение пуска стрелы.
|
||
var стПуск = мир.сцена.physics.add.collider(мир.колобок, пуск);
|
||
стПуск.collideCallback = function(a, b) {
|
||
if (мир.стрелаЗаряжена && !мир.пускСтрелы)
|
||
{
|
||
мир.пускСтрелы = true;
|
||
мир.уведомить("пуск стрелы");
|
||
}
|
||
};
|
||
стПуск.overlapOnly = true;
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СоздатьСтрелу = мир =>
|
||
{
|
||
мир.стрелаЗаряжена = false;
|
||
мир.пускСтрелы = false;
|
||
|
||
мир.стрела = мир.сцена.physics.add.sprite(1250, 397, "стрела").setOrigin(0, 0);
|
||
мир.стрела.setScale(0.5, 0.5).refreshBody();
|
||
мир.стрела.depth = 5;
|
||
|
||
мир.сцена.physics.add.collider(мир.стрела, мир.каркас);
|
||
мир.сцена.physics.add.collider(мир.стрела, мир.платформы);
|
||
|
||
// Определение заряда стрелы.
|
||
var лук = мир.узелСцены("лук");
|
||
var стЛук = мир.сцена.physics.add.collider(мир.стрела, лук);
|
||
стЛук.collideCallback = function(a, b) {
|
||
if (мир.стрела.body.touching.down && !мир.стрелаЗаряжена)
|
||
{
|
||
мир.стрелаЗаряжена = true;
|
||
мир.уведомить("стрела заряжена");
|
||
}
|
||
};
|
||
|
||
// Определение столкновения с окном.
|
||
var граница = мир.узелСцены("границаПолётаСтрелы");
|
||
var стОкно = мир.сцена.physics.add.collider(мир.стрела, граница);
|
||
стОкно.collideCallback = function(a, b) {
|
||
if (мир.стрелаЗаряжена && мир.пускСтрелы)
|
||
{
|
||
мир.стрелаЗаряжена = false;
|
||
мир.пускСтрелы = false;
|
||
мир.уведомить("удар стрелы об окно");
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтследитьПрыжокПоСтрелам = мир =>
|
||
{
|
||
мир.колобок.прыжокПоСтрелам = null;
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПроверитьНаличиеПрыжкаПоСтрелам = мир =>
|
||
{
|
||
if (!мир.колобок.прыжокПоСтрелам)
|
||
{
|
||
return;
|
||
}
|
||
мир.уведомить("прыжок по платформе стрел");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПодкидыватьСтрелуКЛуку = мир =>
|
||
{
|
||
if (!мир.стрела.body.touching.down || мир.стрелаЗаряжена)
|
||
{
|
||
return;
|
||
}
|
||
var скорость = мир.колобок.скоростьПадения * 0.9;
|
||
мир.стрела.setVelocityY(-скорость);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ВоспроизвестиЗвукЗарядкиСтрелы = мир =>
|
||
{
|
||
мир.сцена.sound.play("звук-зарядки");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ВоспроизвестиЗвукПускаСтрелы = мир =>
|
||
{
|
||
мир.сцена.sound.play("пуск-стрелы");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПуститьСтрелу = мир =>
|
||
{
|
||
function randInt(min, max)
|
||
{
|
||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random#getting_a_random_integer_between_two_values
|
||
min = Math.ceil(min);
|
||
max = Math.floor(max);
|
||
return Math.floor(Math.random() * (max - min)) + min;
|
||
}
|
||
var скорость = randInt(1100, 1300);
|
||
|
||
мир.стрела.setVelocityX(скорость);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ВоспроизвестиЗвукУдараСтрелыОбОкно = мир =>
|
||
{
|
||
мир.сцена.sound.play("удар-стрелы");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтобразитьРазбитоеОкно = мир =>
|
||
{
|
||
мир.узелСцены("разбитоеОкно").setVisible(true);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтобразитьВыломанноеОкно = мир =>
|
||
{
|
||
мир.узелСцены("разбитоеОкно").setVisible(false);
|
||
мир.узелСцены("выломанноеОкно").setVisible(true);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
УведомитьСразуПослеУдара = мир =>
|
||
{
|
||
setTimeout(
|
||
function() {
|
||
мир.уведомить("сразу после удара");
|
||
},
|
||
1
|
||
);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПодсчитатьУдарыСтрелыОбОкно = мир =>
|
||
{
|
||
if (!мир.ударовСтрелыОбОкно)
|
||
{
|
||
мир.ударовСтрелыОбОкно = 1;
|
||
мир.уведомить("первый удар стрелы об окно");
|
||
}
|
||
else if (мир.ударовСтрелыОбОкно == 1)
|
||
{
|
||
мир.ударовСтрелыОбОкно = 2;
|
||
мир.уведомить("второй удар стрелы об окно");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ВоспроизвестиЗвукВыломанногоОкна = мир =>
|
||
{
|
||
мир.сцена.sound.play("выломали-окно");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПроверитьПрыжокПоМолоку = мир =>
|
||
{
|
||
if (мир.колобок.вещь == "молоко")
|
||
{
|
||
мир.уведомить("колобок прыгнул по молоку");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПроверитьДостаточностьПрыжкаПоМолоку = мир =>
|
||
{
|
||
if (мир.колобок.скоростьПадения >= 500) {
|
||
мир.уведомить("достаточный прыжок по молоку");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
НачатьПереворотМолока = мир =>
|
||
{
|
||
мир.молоко = мир.узелСцены("молоко");
|
||
мир.вещи.remove(мир.молоко);
|
||
мир.вещиНедвижимые.add(мир.молоко);
|
||
мир.молоко.setAngularVelocity(120);
|
||
мир.молоко.setVelocityY(-500);
|
||
мир.молоко.переворот = 1;
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
АнимироватьПереворотМолока = мир =>
|
||
{
|
||
if (!мир.молоко)
|
||
{
|
||
return;
|
||
}
|
||
|
||
if (мир.молоко.переворот == 1)
|
||
{
|
||
мир.молоко.переворот = 2;
|
||
setTimeout(
|
||
function() {
|
||
мир.молоко.переворот = 3;
|
||
// Меняем местами высоту и ширину тела.
|
||
var тело = мир.молоко.body;
|
||
var ширина = тело.height / мир.молоко.scaleY;
|
||
var высота = тело.width / мир.молоко.scaleX;
|
||
тело.setSize(ширина, высота);
|
||
},
|
||
100
|
||
);
|
||
}
|
||
else if (
|
||
(мир.молоко.переворот == 3) &&
|
||
(мир.молоко.body.touching.down)
|
||
) {
|
||
мир.молоко.depth = 5;
|
||
мир.молоко.body.stop();
|
||
мир.молоко = null;
|
||
мир.уведомить("перевернули молоко");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПоказатьЛужуМолока = мир =>
|
||
{
|
||
|
||
var молоко = мир.узелСцены("молоко");
|
||
var лужа = мир.узелСцены("лужа");
|
||
лужа.setPosition(молоко.x + 40, молоко.y + 20);
|
||
лужа.setVisible(true);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ВоспроизвестиЗвукПрыжкаПоМолоку = мир =>
|
||
{
|
||
мир.сцена.sound.play("молоко-прыгнули");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ВоспроизвестиЗвукПереворотаМолока = мир =>
|
||
{
|
||
мир.сцена.sound.play("молоко-перевернули", { seek: 1 });
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПроверитьПрыжокПоКрышкеПодпола = мир =>
|
||
{
|
||
if (мир.колобок.каркас == "полКрышки")
|
||
{
|
||
мир.уведомить("колобок прыгнул по крышке подпола");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
НачатьПоворотКрышкиПодпола = мир =>
|
||
{
|
||
if (мир.крышка)
|
||
{
|
||
return;
|
||
}
|
||
|
||
мир.крышка = мир.узелСцены("крышка");
|
||
мир.крышка.поворот = 1;
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
АнимироватьПоворотКрышкиПодпола = мир =>
|
||
{
|
||
if (!мир.крышка)
|
||
{
|
||
return;
|
||
}
|
||
|
||
var скорость = 4;
|
||
|
||
if (мир.крышка.поворот == 1)
|
||
{
|
||
мир.крышка.setAngle(мир.крышка.angle - скорость);
|
||
if (мир.крышка.angle <= -90)
|
||
{
|
||
мир.крышка.поворот = 2;
|
||
}
|
||
}
|
||
else if (мир.крышка.поворот == 2)
|
||
{
|
||
мир.узелСцены("полКрышки").body.checkCollision.none = true;
|
||
мир.крышка.поворот = 3;
|
||
setTimeout(
|
||
function() {
|
||
мир.крышка.поворот = 4;
|
||
},
|
||
5000
|
||
);
|
||
}
|
||
else if (мир.крышка.поворот == 4)
|
||
{
|
||
мир.крышка.setAngle(мир.крышка.angle + скорость);
|
||
if (мир.крышка.angle >= 0)
|
||
{
|
||
мир.узелСцены("полКрышки").body.checkCollision.none = false;
|
||
мир.крышка = null;
|
||
}
|
||
}
|
||
};
|
||
|
||
/*
|
||
*
|
||
* Последовательность
|
||
*
|
||
*/
|
||
|
||
|
||
мир.разобрать(`
|
||
загрузить ресурсы сцены
|
||
загрузить ресурсы избы
|
||
создать сцену
|
||
задать структуру избы
|
||
задать функцию поиска узла по имени
|
||
создать избу
|
||
# позволить платформам пропускать прыжки
|
||
настроить пауков
|
||
настроить мышей
|
||
настроить стрелы
|
||
создать стрелу
|
||
колобок начал прыжок
|
||
отследить прыжок по стрелам
|
||
колобок закончил прыжок
|
||
проверить наличие прыжка по стрелам
|
||
прыжок по платформе стрел
|
||
подкидывать стрелу к луку
|
||
стрела заряжена
|
||
воспроизвести звук зарядки стрелы
|
||
пуск стрелы
|
||
воспроизвести звук пуска стрелы
|
||
пустить стрелу
|
||
удар стрелы об окно
|
||
воспроизвести звук удара стрелы об окно
|
||
уведомить сразу после удара
|
||
подсчитать удары стрелы об окно
|
||
первый удар стрелы об окно
|
||
отобразить разбитое окно
|
||
второй удар стрелы об окно
|
||
отобразить выломанное окно
|
||
воспроизвести звук выломанного окна
|
||
сразу после удара
|
||
создать стрелу
|
||
колобок прыгнул на вещь
|
||
проверить прыжок по молоку
|
||
колобок прыгнул по молоку
|
||
проверить достаточность прыжка по молоку
|
||
воспроизвести звук прыжка по молоку
|
||
достаточный прыжок по молоку
|
||
начать переворот молока
|
||
перевернули молоко
|
||
показать лужу молока
|
||
воспроизвести звук переворота молока
|
||
колобок прыгнул на каркас
|
||
проверить прыжок по крышке подпола
|
||
колобок прыгнул по крышке подпола
|
||
начать поворот крышки подпола
|
||
|
||
обновить сцену
|
||
анимировать пауков
|
||
анимировать мышей
|
||
анимировать переворот молока
|
||
анимировать поворот крышки подпола
|
||
`);
|
||
|