создавать избу из структуры

This commit is contained in:
2021-05-06 14:54:27 +03:00
parent e6f7a18f25
commit f68873d472
3 changed files with 113 additions and 2 deletions

View File

@@ -31,6 +31,7 @@
<script src="игра/109.управление.js"></script>
<script src="игра/110.колобок.js"></script>
<script src="игра/111.изба.js"></script>
<script src="игра/200.отладка.js"></script>
<script src="игра/499.пуск.js"></script>
</body>
</html>

View File

@@ -30,12 +30,77 @@
// // // //
ЗадатьСтруктуруИзбы = мир =>
{
мир.изба = {
фон: {
тип: "image",
x: 0,
y: 0,
texture: "изба",
originX: 0,
originY: 0,
},
}
};
// // // //
СоздатьИзбуПоСтруктуре = мир =>
{
var структура = мир.изба;
var сцена = мир.сцена;
for (var имя in структура)
{
var узел = null;
var описание = структура[имя];
var свойства = {};
Object.assign(свойства, описание);
delete свойства["тип"];
delete свойства["x"];
delete свойства["y"];
delete свойства["texture"];
// Создаём изображение.
if (описание.тип == "image")
{
узел = сцена.add.image(описание.x, описание.y, описание.texture);
}
// Создаём спрайт.
else if (описание.тип == "sprite")
{
}
узел.name = имя;
// Выставляем оставшиеся невыставленными свойства.
for (var свойство in свойства)
{
var значение = свойства[свойство];
узел[свойство] = значение;
}
// Необходимо после смены originX/Y.
узел.updateDisplayOrigin();
console.debug(имя, описание, узел);
}
};
// // // //
СоздатьИзбу = мир =>
{
мир.сцена.sound.play("звук-избы", { loop: true });
мир.сцена.add.image(0, 0, "изба").setOrigin(0, 0);
мир.разбитоеОкно = мир.сцена.add.image(1660, 183, "окно-разбито");
мир.разбитоеОкно.setOrigin(0, 0).setScale(0.75, 0.75);
мир.разбитоеОкно.setVisible(false);
@@ -550,6 +615,8 @@ console.debug("стрела.x", мир.стрела.x);
загрузить ресурсы сцены
загрузить ресурсы избы
создать сцену
задать структуру избы
создать избу по структуре
создать избу
создать полы и стены каркаса
создать платформы

View File

@@ -0,0 +1,43 @@
/*
*
* Реакции
*
*/
УведомитьЛишьПервыйРаз = мир =>
{
if (мир.уведомилиЛишьПервыйРаз)
{
return;
}
мир.уведомилиЛишьПервыйРаз = true;
мир.уведомить("лишь первый раз");
};
ВывестиУзлыСцены = мир =>
{
var узлы = мир.сцена.children.list;
for (var номер in узлы)
{
var узел = узлы[номер];
console.debug(номер + ": " + JSON.stringify(узел.toJSON()));
}
};
/*
*
* Последовательность
*
*/
мир.разобрать(`
#обновить сцену
# уведомить лишь первый раз
#лишь первый раз
# вывести узлы сцены
`);