// // // //
// Основа избы
// // // //


мир.разобрать({
    заголовок: "Колобку здесь быть",
    изображения: {
        дом: {
            ширина: 2000,
            высота: 600,
            вид: {
                background: "url(р/сцены/изба.jpg)",
            },
        },
    },
    объекты: {
        полСлева: {
            x: 0,
            y: 580,
            ширина: 355,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
        },
        полКрышки: {
            x: 357,
            y: 580,
            ширина: 135,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
        },
        полСправа: {
            x: 495,
            y: 580,
            ширина: 1505,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
        },
        стол: {
            x: 1253,
            y: 420,
            ширина: 610,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                collisionFilter: {
                    category: 2,
                },
            },
        },
        подоконник: {
            x: 1673,
            y: 375,
            ширина: 200,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                angle: -0.0698,
                collisionFilter: {
                    category: 2,
                },
            },
        },
    },
    звуки: {
        изба: {
            события: ["вошли в избу"],
            файл: "р/звуки/387922__setuniman__scheming-1o95.mp3",
            повторять: true,
            останов: ["покинули избу"],
        },
    },
});



// // // //
// Игрок
// // // //


мир.разобрать({
    изображения: {
        колобок: {
            ширина: 70,
            высота: 70,
            вид: {
                background: "url(р/колобок/колобок_неподвижен.png)",
                //"z-index": 10,
            },
        },
    },
    тела: {
        подошва: {
            x: 100,
            y: 450,
            высота: 20,
            ширина: 40,
            мир: true,
            физика: {
                isStatic: false,
                inertia: Infinity,
            },
        },
    },
    объекты: {
        кирпич: {
            x: 100,
            y: 350,
            высота: 20,
            ширина: 40,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                //display: "none",
            },
            физика: {
                isStatic: false,
                inertia: Infinity,
            },
        },
        /*
        сенсорИгрока: {
            x: 170,
            y: 350,
            высота: 70,
            ширина: 70,
            вид: {
                background: "url(р/отладка/основа.jpg)",
            },
            физика: {
                isSensor: true,
            },
        },
        игрок: {
            x: 100,
            y: 350,
            части: ["кирпич", "сенсорИгрока"],
            физика: {
                isStatic: false,
                inertia: Infinity,
            },
        },
        */
    },
    игрок: {
        объект: "кирпич",
        скорость: [5, 12.5],
        клавиши: ["ArrowLeft", "ArrowRight", "ArrowUp"],
    },
    слежение: {
        колобок: {
            объект: "кирпич",
            изображение: "колобок",
            смещение: [-35, -60],
            скорость: 1,
        },
        камера: {
            объект: "кирпич",
            скорость: 0.1,
        },
    },
    маскиПрыжков: {
        игрок: {
            объект: "кирпич",
            скорость: -1,
            маски: [1, 1|2],
        },
    },
    звуки: {
        прыжокИгрока: {
            события: ["игрок начал прыжок"],
            файл: "р/звуки/331381__qubodup__public-domain-jump-sound.wav",
        },
    },
});



// // // //
// Платформы и объекты печи
// // // //


мир.разобрать({
    объекты: {
        фундаментПечи: {
            x: 570,
            y: 470,
            ширина: 550,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                collisionFilter: {
                    category: 2,
                },
            },
        },
        полка1: {
            x: 660,
            y: 335,
            ширина: 40,
            высота: 10,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                collisionFilter: {
                    category: 2,
                },
            },
        },
        полка2: {
            x: 767,
            y: 335,
            ширина: 40,
            высота: 10,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                collisionFilter: {
                    category: 2,
                },
            },
        },
        полка3: {
            x: 855,
            y: 335,
            ширина: 40,
            высота: 10,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                collisionFilter: {
                    category: 2,
                },
            },
        },
        полкаСамовара: {
            x: 975,
            y: 355,
            ширина: 70,
            высота: 10,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                collisionFilter: {
                    category: 2,
                },
            },
        },
        лежанкаПечки: {
            x: 600,
            y: 242,
            ширина: 330,
            высота: 10,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                collisionFilter: {
                    category: 2,
                },
            },
        },
        основаниеТрубыПечки: {
            x: 937,
            y: 175,
            ширина: 130,
            высота: 10,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                collisionFilter: {
                    category: 2,
                },
            },
        },
        самовар: {
            x: 650,
            y: 300,
            ширина: 70,
            высота: 120,
            вид: {
                background: "url(р/вещи/самовар.png) no-repeat scroll 0% 0% / contain",
            },
            физика: {
                isStatic: false,
                //inertia: Infinity,
            },
        },
    },
});



// // // //
// Подкидывание стрелы
// // // //


мир.разобрать({
    объекты: {
        сенсор: {
            x: 1280,
            y: 400,
            ширина: 120,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                isStatic: true,
                isSensor: true,
            },
        },
        стрела: {
            x: 1230,
            y: 350,
            высота: 30,
            ширина: 200,
            вид: {
                display: "inline-block",
                background: "url(р/вещи/стрела.png) no-repeat scroll 0% 0% / contain",
                transform: "scaleX(-1)",
            },
            физика: {
                isStatic: false,
                inertia: Infinity,
                collisionFilter: {
                    category: 4,
                },
            },
        },
        лук: {
            x: 1250,
            y: 200,
            ширина: 100,
            вид: {
                background: "url(р/отладка/основа.jpg)",
                display: "none",
            },
            физика: {
                isStatic: true,
                collisionFilter: {
                    category: 4,
                },
            },
        },
    },
    столкновения: {
        стрелаНачало: {
            объекты: ["кирпич", "сенсор"],
            событие: "сенсор стрелы",
        },
        стрелаКонец: {
            объекты: ["стрела", "лук"],
            событие: "стрела и лук",
        },
    },
    маскиПрыжков: {
        стрела: {
            объект: "стрела",
            скорость: -1,
            маски: [0, 2|4]
        },
    },
    звуки: {
        зарядкаЛука: {
            события: ["закинули стрелу"],
            файл: "р/звуки/543927__eminyildirim__pistol-gun-cocking.wav",
        },
    },
});

function ПодкидываниеСтрелы() {
    this.создать = function() {
        this.времяСтрелы = null;
        this.времяПриземления = null;
        this.подкинули = false;
        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;
        }
        else if (
            (событие == "стрела и лук") &&
            this.закинули &&
            this.завершить
        ) {
            мир.события.уведомить("закинули стрелу");
            мир.события.отписать(this);
            this.завершить();
        }
    };

    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.закинули = true;
        }
    };

    // Конструктор.
    this.создать();
}

мир.подкидываниеСтрелы = new ПодкидываниеСтрелы();
мир.подкидываниеСтрелы.завершить = function() {
    мир.подкидываниеСтрелы = null;
};


// Запустить звук избы
мир.события.уведомить("вошли в избу");



// // // //
// Отладка событий
// // // //


function ОтладкаСобытий() {
    this.обработатьСобытие = function(событие) {
        if (событие.startsWith("игрокПаук"))
        {
console.debug("событие", событие);
        }
    };

    // Конструктор.
    мир.события.подписать(this);
}

мир.отладкаСобытий = new ОтладкаСобытий();



// // // //
// Пауки
// // // //

мир.разобрать({
    объекты: {
        паук1: {
            x: 680,
            y: 300,
            ширина: 30,
            вид: {
                background: "url(р/животные/паук.png) no-repeat scroll 0% 0% / contain",
            },
            физика: {
                isStatic: false,
                isSensor: true,
            },
        },
    },
    столкновения: {
        игрокПаук1: {
            объекты: ["кирпич", "паук1"],
            событие: "игрокПаук1",
        },
        /*
        проверкаСенсораИгрокаРТ: {
            объекты: ["рт", "паук1"],
            событие: "игрокПаукРТ",
        },
        проверкаСенсораИгрокаРТ1: {
            объекты: ["рт1", "паук1"],
            событие: "игрокПаукРТ1",
        },
        проверкаСенсораИгрокаРТ2: {
            объекты: ["рт2", "паук1"],
            событие: "игрокПаукРТ2",
        },
        */
    },
    движение: {
        паук1: {
            объекты: ["паук1"],
            скорость: [0.7, 1],
            x: [610, 1080],
            y: [350, 450],
        },
    },
});
