@@ -24,12 +24,12 @@ | |||||
<script src="общее/150.Состояние.js"></script> | <script src="общее/150.Состояние.js"></script> | ||||
<script src="общее/200.функции.js"></script> | <script src="общее/200.функции.js"></script> | ||||
<script src="игра/050.Заголовок.js"></script> | <script src="игра/050.Заголовок.js"></script> | ||||
<script src="игра/070.Виды.js"></script> | |||||
<script src="игра/100.Изображения.js"></script> | <script src="игра/100.Изображения.js"></script> | ||||
<script src="игра/120.Физика.js"></script> | <script src="игра/120.Физика.js"></script> | ||||
<script src="игра/140.Тела.js"></script> | <script src="игра/140.Тела.js"></script> | ||||
<script src="игра/160.Слежение.js"></script> | <script src="игра/160.Слежение.js"></script> | ||||
<script src="игра/180.Объекты.js"></script> | <script src="игра/180.Объекты.js"></script> | ||||
<script src="игра/200.Вид.js"></script> | |||||
<script src="игра/700.Игра.js"></script> | <script src="игра/700.Игра.js"></script> | ||||
<script> | <script> | ||||
var игра = new Игра(); | var игра = new Игра(); | ||||
@@ -1,4 +1,4 @@ | |||||
function Вид(события) | |||||
function Виды(события) | |||||
{ | { | ||||
this.создать = function() | this.создать = function() | ||||
{ | { | ||||
@@ -7,7 +7,7 @@ function Вид(события) | |||||
this.обработатьКлюч = function(ключ, путь, значение) | this.обработатьКлюч = function(ключ, путь, значение) | ||||
{ | { | ||||
if (путь[0] != "вид") | |||||
if (путь[0] != "виды") | |||||
{ | { | ||||
return; | return; | ||||
} | } | ||||
@@ -20,7 +20,7 @@ function Вид(события) | |||||
} | } | ||||
this.задано[имя][свойство] = значение; | this.задано[имя][свойство] = значение; | ||||
события.уведомить(`обновили вид/${имя}`); | |||||
события.уведомить(`виды/${имя}`); | |||||
}; | }; | ||||
// Конструктор. | // Конструктор. |
@@ -1,4 +1,4 @@ | |||||
function Изображения(корень) | |||||
function Изображения(события, виды, корень) | |||||
{ | { | ||||
this.создать = function() | this.создать = function() | ||||
{ | { | ||||
@@ -11,6 +11,7 @@ function Изображения(корень) | |||||
}; | }; | ||||
this.задано = {}; | this.задано = {}; | ||||
this.элементы = {}; | this.элементы = {}; | ||||
события.подписать(this); | |||||
}; | }; | ||||
this.создатьИлиПолучитьЭлемент = function(имя) | this.создатьИлиПолучитьЭлемент = function(имя) | ||||
@@ -38,6 +39,31 @@ function Изображения(корень) | |||||
return эл; | return эл; | ||||
}; | }; | ||||
this.обновитьВид = function(имя, вид) | |||||
{ | |||||
/**/console.debug("ИГР Изображения.обновитьВ имя/вид", имя, вид); | |||||
var эл = this.создатьИлиПолучитьЭлемент(имя); | |||||
let за = виды.задано[вид]; | |||||
for (let параметр in за) | |||||
{ | |||||
эл.style.setProperty(параметр, за[параметр]); | |||||
} | |||||
}; | |||||
this.обновитьРасположение = function(имя, x, y, угол) | |||||
{ | |||||
var за = this.задано[имя]; | |||||
var эл = this.элементы[имя]; | |||||
эл.style.left = `${x}px`; | |||||
эл.style.top = `${y}px`; | |||||
var transform = `rotate(${угол}deg) `; | |||||
if (за["вид.transform"]) | |||||
{ | |||||
transform += за["вид.transform"]; | |||||
} | |||||
эл.style.transform = transform; | |||||
}; | |||||
this.обновитьЭлемент = function(имя, свойство, значение) | this.обновитьЭлемент = function(имя, свойство, значение) | ||||
{ | { | ||||
if (!this.задано[имя]) | if (!this.задано[имя]) | ||||
@@ -68,25 +94,23 @@ function Изображения(корень) | |||||
var угол = за.угол ? за.угол : ум.угол; | var угол = за.угол ? за.угол : ум.угол; | ||||
this.обновитьРасположение(имя, x, y, угол); | this.обновитьРасположение(имя, x, y, угол); | ||||
} | } | ||||
else if (свойство.startsWith("вид")) | |||||
else if (свойство == "вид") | |||||
{ | { | ||||
var параметр = свойство.substring(4); | |||||
эл.style.setProperty(параметр, значение); | |||||
this.обновитьВид(имя, значение); | |||||
} | } | ||||
}; | }; | ||||
this.обновитьРасположение = function(имя, x, y, угол) | |||||
this.обновитьЭлементыВида = function(вид) | |||||
{ | { | ||||
var за = this.задано[имя]; | |||||
var эл = this.элементы[имя]; | |||||
эл.style.left = `${x}px`; | |||||
эл.style.top = `${y}px`; | |||||
var transform = `rotate(${угол}deg) `; | |||||
if (за["вид.transform"]) | |||||
for (let имя in this.задано) | |||||
{ | { | ||||
transform += за["вид.transform"]; | |||||
let заданныйВид = this.задано[имя]["вид"]; | |||||
if (заданныйВид && заданныйВид == вид) | |||||
{ | |||||
/**/console.debug("ИГР Изображения.обработатьС обновитьВид имя/вид", имя, вид); | |||||
this.обновитьВид(имя, вид); | |||||
} | |||||
} | } | ||||
эл.style.transform = transform; | |||||
}; | }; | ||||
this.обработатьКлюч = function(ключ, путь, значение) | this.обработатьКлюч = function(ключ, путь, значение) | ||||
@@ -99,6 +123,16 @@ function Изображения(корень) | |||||
} | } | ||||
}; | }; | ||||
this.обработатьСобытие = function(событие) | |||||
{ | |||||
let префикс = "виды/"; | |||||
if (событие.startsWith(префикс)) | |||||
{ | |||||
let вид = событие.substring(префикс.length); | |||||
this.обновитьЭлементыВида(вид); | |||||
} | |||||
}; | |||||
// Конструктор. | // Конструктор. | ||||
this.создать(); | this.создать(); | ||||
} | } |
@@ -7,18 +7,18 @@ function Игра() | |||||
мир.состояние = new Состояние(); | мир.состояние = new Состояние(); | ||||
мир.состояние.обработчик = (к, п, з) => { this.обработатьКлюч(к, п, з) }; | мир.состояние.обработчик = (к, п, з) => { this.обработатьКлюч(к, п, з) }; | ||||
мир.физика = new Физика(); | мир.физика = new Физика(); | ||||
мир.изображения = new Изображения(корень), | |||||
мир.виды = new Виды(мир.события); | |||||
мир.изображения = new Изображения(мир.события, мир.виды, корень), | |||||
мир.тела = new Тела(мир.физика.движок.world); | мир.тела = new Тела(мир.физика.движок.world); | ||||
мир.слежение = new Слежение(мир.изображения, мир.тела); | мир.слежение = new Слежение(мир.изображения, мир.тела); | ||||
мир.объекты = new Объекты(мир.состояние); | мир.объекты = new Объекты(мир.состояние); | ||||
мир.вид = new Вид(мир.события); | |||||
this.ключники = [ | this.ключники = [ | ||||
new Заголовок(), | new Заголовок(), | ||||
мир.виды, | |||||
мир.изображения, | мир.изображения, | ||||
мир.тела, | мир.тела, | ||||
мир.слежение, | мир.слежение, | ||||
мир.объекты, | мир.объекты, | ||||
мир.вид, | |||||
]; | ]; | ||||
var z64 = мир.параметрыЗапуска()["z64"]; | var z64 = мир.параметрыЗапуска()["z64"]; | ||||