|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643 |
- /*
- *
- * Реакции
- *
- */
-
-
- ЗагрузитьРесурсыИзбы = мир =>
- {
- мир.сцена.load.audio("звук-избы", "ресурсы/звуки/387922__setuniman__scheming-1o95.mp3");
- мир.сцена.load.audio("звук-зарядки", "ресурсы/звуки/543927__eminyildirim__pistol-gun-cocking.wav");
- мир.сцена.load.audio("пуск-стрелы", "ресурсы/звуки/521552__omerbhatti34__arrow-impact.mp3");
- мир.сцена.load.audio("удар-стрелы", "ресурсы/звуки/330800__czarcazas__shattering-glass-small.mp3");
- мир.сцена.load.audio("выломали-окно", "ресурсы/звуки/448004__kneeling__break-window.mp3");
-
- мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg");
- мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png");
- мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg");
- мир.сцена.load.image("молоко", "ресурсы/вещи/банка_молока.png");
- мир.сцена.load.image("паук", "ресурсы/животные/паук.png");
- мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
- мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
- мир.сцена.load.image("самовар", "ресурсы/вещи/самовар.png");
- мир.сцена.load.image("стрела", "ресурсы/вещи/стрела.png");
- мир.сцена.load.image("окно-разбито", "ресурсы/вещи/окно_разбитая-часть.png");
- мир.сцена.load.image("окно-выломано", "ресурсы/вещи/окно_дыра.png");
- };
-
-
- // // // //
-
-
- ЗадатьСтруктуруИзбы = мир =>
- {
- мир.изба = {
- фон: {
- родитель: мир.сцена,
- тип: "изображение",
- x: 0,
- y: 0,
- texture: "изба",
- originX: 0,
- originY: 0,
- },
-
- полДоКрышки: {
- родитель: мир.каркас,
- тип: "платформа",
- x: 0,
- y: 585,
- texture: "основа",
- originX: 0,
- originY: 0,
- scaleX: 43,
- visible: false,
- },
- полКрышки: {
- родитель: мир.каркас,
- тип: "платформа",
- x: 300,
- y: 585,
- texture: "основа",
- originX: 0,
- originY: 0,
- scaleX: 30,
- visible: false,
- },
- полПослеКрышки: {
- родитель: мир.каркас,
- тип: "платформа",
- 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,
- },
- };
- };
-
-
- // // // //
-
-
- СоздатьИзбу = мир =>
- {
- создатьУзлыСценыПоСтруктуре(мир.изба);
-
- мир.сцена.sound.play("звук-избы", { loop: true });
-
- мир.разбитоеОкно = мир.сцена.add.image(1660, 183, "окно-разбито");
- мир.разбитоеОкно.setOrigin(0, 0).setScale(0.75, 0.75);
- мир.разбитоеОкно.setVisible(false);
-
- мир.выломанноеОкно = мир.сцена.add.image(1660, 183, "окно-выломано");
- мир.выломанноеОкно.setOrigin(0, 0).setScale(0.75, 0.75);
- мир.выломанноеОкно.setVisible(false);
- };
-
-
- // // // //
-
-
- ПозволитьПлатформамПропускатьПрыжки = мир =>
- {
- мир.платформы.children.iterate(function(платформа) {
- платформа.body.checkCollision.down = false;
- платформа.body.checkCollision.left = false;
- платформа.body.checkCollision.right = false;
- });
- };
-
-
- // // // //
-
-
- СоздатьВещи = мир =>
- {
- var молоко = мир.сцена.physics.add.sprite(785, 240, "молоко");
- молоко.setScale(0.4, 0.4).refreshBody();
- молоко.depth = 5;
- мир.вещи.add(молоко);
-
- var самовар = мир.сцена.physics.add.sprite(1003, 200, "самовар");
- самовар.setScale(0.25, 0.25).refreshBody();
- самовар.depth = 5;
- мир.вещи.add(самовар);
- };
-
-
- // // // //
-
-
- СоздатьПауков = мир =>
- {
- мир.настройкиПауков = [
- {
- x: 620,
- y: 345,
- скорость: 50,
- низ: 550,
- верх: 270,
- },
- {
- x: 785,
- y: 375,
- скорость: 80,
- низ: 400,
- верх: 270,
- },
- {
- x: 930,
- y: 500,
- скорость: 70,
- низ: 550,
- верх: 270,
- },
- {
- x: 1003,
- y: 250,
- скорость: 40,
- низ: 400,
- верх: 200,
- },
- ];
- мир.пауки = [];
- мир.нитиПауков = [];
- for (var номер in мир.настройкиПауков)
- {
- var настройки = мир.настройкиПауков[номер];
- var паук = мир.враги.create(настройки.x, настройки.y, "паук");
- паук.body.setVelocityY(настройки.скорость);
- паук.depth = 10;
- мир.пауки.push(паук);
- var нить = мир.сцена.add.image(настройки.x - 1, настройки.верх - 25, "линия").setOrigin(0, 0);
- нить.depth = паук.depth;
- мир.нитиПауков.push(нить);
- }
- };
-
-
- // // // //
-
-
- АнимироватьПауков = мир =>
- {
- for (var номер in мир.пауки)
- {
- var паук = мир.пауки[номер];
- var нить = мир.нитиПауков[номер];
- var настройки = мир.настройкиПауков[номер];
- нить.displayHeight = паук.y - нить.y - 5;
- if (паук.y > настройки.низ)
- {
- паук.setVelocityY(-настройки.скорость);
- } else if (паук.y < настройки.верх)
- {
- паук.setVelocityY(настройки.скорость);
- }
- }
- };
-
-
- // // // //
-
-
- СоздатьМышей = мир =>
- {
- мир.настройкиМышей= [
- {
- x: 350,
- y: 575,
- скорость: 290,
- },
- {
- x: 740,
- y: 575,
- скорость: 375,
- },
- ];
- мир.мыши = [];
- for (var номер in мир.настройкиМышей)
- {
- var настройки = мир.настройкиМышей[номер];
- var мышь = мир.враги.create(настройки.x, настройки.y, "мышь");
- мышь.body.setVelocityX(настройки.скорость);
- мышь.depth = 10;
- мышь.flipX = true;
- мир.мыши.push(мышь);
- }
- };
-
-
- // // // //
-
-
- АнимироватьМышей = мир =>
- {
- for (var номер in мир.мыши)
- {
- var мышь= мир.мыши[номер];
- var скорость = мир.настройкиМышей[номер].скорость;
- if (мышь.x > 1950)
- {
- мышь.setVelocityX(-скорость);
- мышь.flipX = false;
- } else if (мышь.x < 50)
- {
- мышь.setVelocityX(скорость);
- мышь.flipX = true;
- }
- }
- };
-
-
- // // // //
-
-
- СоздатьСтрелы = мир =>
- {
- мир.пфСтрел = мир.сцена.physics.add.staticGroup();
- var куча = мир.пфСтрел.create(1270, 405, "основа").setOrigin(0, 0);
- куча.setScale(25, 2).refreshBody();
- куча.body.checkCollision.down = false;
- куча.setVisible(false);
-
- мир.пфЛук = мир.пфСтрел.create(1280, 200, "основа").setOrigin(0, 0);
- мир.пфЛук.body.checkCollision.down = false;
- мир.пфЛук.setVisible(false);
-
- var пуск = мир.пфСтрел.create(1270, 160, "основа").setOrigin(0, 0);
- пуск.setVisible(false);
-
- мир.пфОкно = мир.пфСтрел.create(1830, 200, "основа").setOrigin(0, 0);
- мир.пфОкно.setScale(1, 20).refreshBody();
- мир.пфОкно.setVisible(false);
-
- // Определение прыжка по стрелам.
- мир.сцена.physics.add.collider(мир.колобок, куча, function(a, b) {
- if (мир.колобок.body.touching.down) {
- мир.состояниеКолобка.прыжокПоСтрелам = true;
- console.debug("прыжок по стрелам");
- }
- });
-
- // Определение пуска стрелы.
- var стПуск = мир.сцена.physics.add.collider(мир.колобок, пуск);
- стПуск.collideCallback = function(a, b) {
- if (мир.стрелаЗаряжена && !мир.пускСтрелы)
- {
- мир.пускСтрелы = true;
- мир.уведомить("пуск стрелы");
- console.debug("пуск стрелы");
- }
- };
- стПуск.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 стЛук = мир.сцена.physics.add.collider(мир.стрела, мир.пфЛук);
- стЛук.collideCallback = function заряд(a, b) {
- if (мир.стрела.body.touching.down && !мир.стрелаЗаряжена)
- {
- мир.стрелаЗаряжена = true;
- мир.уведомить("стрела заряжена");
- console.debug("стрела заряжена");
- }
- };
-
- // Определение столкновения с окном.
- var стОкно = мир.сцена.physics.add.collider(мир.стрела, мир.пфОкно);
- стОкно.collideCallback = function(a, b) {
- if (мир.стрелаЗаряжена && мир.пускСтрелы)
- {
- мир.стрелаЗаряжена = false;
- мир.пускСтрелы = false;
- мир.уведомить("удар стрелы об окно");
- console.debug("удар стрелы об окно");
- }
- };
-
- console.debug("стрела.x", мир.стрела.x);
- };
-
-
- // // // //
-
-
- ОтследитьПрыжокПоСтрелам = мир =>
- {
- мир.состояниеКолобка.прыжокПоСтрелам = null;
- };
-
-
- // // // //
-
-
- ПроверитьНаличиеПрыжкаПоСтрелам = мир =>
- {
- if (!мир.состояниеКолобка.прыжокПоСтрелам)
- {
- return;
- }
- мир.уведомить("прыжок по платформе стрел");
- };
-
-
- // // // //
-
-
- ПодкидыватьСтрелуКЛуку = мир =>
- {
- if (!мир.стрела.body.touching.down || мир.стрелаЗаряжена)
- {
- return;
- }
- var скорость = мир.состояниеКолобка.скоростьПадения * 0.9;
- мир.стрела.setVelocityY(-скорость);
- };
-
-
- // // // //
-
-
- ВоспроизвестиЗвукЗарядкиСтрелы = мир =>
- {
- мир.сцена.sound.play("звук-зарядки");
- };
-
-
- // // // //
-
-
- ВоспроизвестиЗвукПускаСтрелы = мир =>
- {
- мир.сцена.sound.play("пуск-стрелы");
- };
-
-
- // // // //
-
-
- ПуститьСтрелу = мир =>
- {
- мир.стрела.setVelocityX(1200);
- };
-
-
- // // // //
-
-
- ВоспроизвестиЗвукУдараСтрелыОбОкно = мир =>
- {
- мир.сцена.sound.play("удар-стрелы");
- };
-
-
- // // // //
-
-
- ОтобразитьРазбитоеОкно = мир =>
- {
- мир.разбитоеОкно.setVisible(true);
- };
-
-
- // // // //
-
-
- ОтобразитьВыломанноеОкно = мир =>
- {
- мир.разбитоеОкно.setVisible(false);
- мир.выломанноеОкно.setVisible(true);
- };
-
-
- // // // //
-
-
- УведомитьСразуПослеУдара = мир =>
- {
- setTimeout(
- function() {
- мир.уведомить("сразу после удара");
- },
- 1
- );
- };
-
-
- // // // //
-
-
- ПодсчитатьУдарыСтрелыОбОкно = мир =>
- {
- if (!мир.ударовСтрелыОбОкно)
- {
- мир.ударовСтрелыОбОкно = 1;
- мир.уведомить("первый удар стрелы об окно");
- }
- else if (мир.ударовСтрелыОбОкно == 1)
- {
- мир.ударовСтрелыОбОкно = 2;
- мир.уведомить("второй удар стрелы об окно");
- }
- };
-
-
- // // // //
-
-
- ВоспроизвестиЗвукВыломанногоОкна = мир =>
- {
- мир.сцена.sound.play("выломали-окно");
- };
-
-
- /*
- *
- * Последовательность
- *
- */
-
-
- мир.разобрать(`
- загрузить ресурсы сцены
- загрузить ресурсы избы
- создать сцену
- задать структуру избы
- создать избу
- позволить платформам пропускать прыжки
- создать вещи
- создать пауков
- создать мышей
- создать стрелы
- создать стрелу
- обновить сцену
- анимировать пауков
- анимировать мышей
- колобок начал прыжок
- отследить прыжок по стрелам
- колобок закончил прыжок
- проверить наличие прыжка по стрелам
- прыжок по платформе стрел
- подкидывать стрелу к луку
- стрела заряжена
- воспроизвести звук зарядки стрелы
- пуск стрелы
- воспроизвести звук пуска стрелы
- пустить стрелу
- удар стрелы об окно
- воспроизвести звук удара стрелы об окно
- уведомить сразу после удара
- подсчитать удары стрелы об окно
- первый удар стрелы об окно
- отобразить разбитое окно
- второй удар стрелы об окно
- отобразить выломанное окно
- воспроизвести звук выломанного окна
- сразу после удара
- создать стрелу
- `);
-
|