|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- function Объекты(состояние)
- {
- this.создать = function()
- {
- this.умолчание = {
- пр: [0, 0, 40, 20],
- };
- this.задано = {};
- };
-
- this.обновитьИзображение = function(имя, пр, вид)
- {
- состояние.разобрать({
- изображения: {
- [имя]: {
- пр: пр,
- вид: вид,
- },
- },
- });
- };
-
- this.обновитьПозициюРазмер = function(имя, пр)
- {
- состояние.разобрать({
- тела: {
- [имя]: {
- пр: пр,
- },
- },
- });
- };
-
- this.обновитьСлежение = function(имя, пр)
- {
- состояние.разобрать({
- слежение: {
- [имя]: {
- изображение: имя,
- тело: имя,
- смещение: [-пр[2] / 2, -пр[3] / 2],
- },
- },
- });
- };
-
- this.обновитьФизику = function(имя, значение)
- {
- состояние.разобрать({
- тела: {
- [имя]: {
- физика: значение,
- },
- },
- });
- };
-
- this.обработатьКлюч = function(ключ, путь, значение)
- {
- if (путь[0] != "объекты")
- {
- return;
- }
-
- let имя = путь[1];
- let свойство = путь.slice(2).join(".");
- if (!this.задано[имя])
- {
- this.задано[имя] = {};
- }
- this.задано[имя][свойство] = значение;
-
- let производноеИмя = `объекты-${имя}`;
-
- if (свойство.startsWith("пр."))
- {
- let пр = this.пр(имя);
- this.обновитьПозициюРазмер(производноеИмя, пр);
- this.обновитьСлежение(производноеИмя, пр);
- let вид = this.задано[имя]["вид"];
- this.обновитьИзображение(производноеИмя, пр, вид);
- }
- else if (свойство == "физика")
- {
- this.обновитьФизику(производноеИмя, значение);
- }
- else if (свойство == "вид")
- {
- let пр = this.пр(имя);
- let вид = this.задано[имя]["вид"];
- this.обновитьИзображение(производноеИмя, пр, вид);
- }
- };
-
- this.пр = function(имя)
- {
- let за = this.задано[имя];
- let пр = this.умолчание.пр;
- return [
- за["пр.0"] ? за["пр.0"] : пр[0],
- за["пр.1"] ? за["пр.1"] : пр[1],
- за["пр.2"] ? за["пр.2"] : пр[2],
- за["пр.3"] ? за["пр.3"] : пр[3],
- ];
- };
-
- // Конструктор.
- this.создать();
- };
|