|
|
@@ -1,4 +1,4 @@ |
|
|
|
function Объекты(состояние) |
|
|
|
function Объекты(состояние, события) |
|
|
|
{ |
|
|
|
this.создать = function() |
|
|
|
{ |
|
|
@@ -6,15 +6,111 @@ function Объекты(состояние) |
|
|
|
пр: [0, 0, 40, 20], |
|
|
|
}; |
|
|
|
this.задано = {}; |
|
|
|
события.подписать(this); |
|
|
|
}; |
|
|
|
|
|
|
|
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.задано[имя]["вид"]; |
|
|
|
let анимация = this.задано[имя]["анимация"]; |
|
|
|
this.обновитьИзображение(производноеИмя, пр, вид, анимация); |
|
|
|
} |
|
|
|
else if (свойство == "физика") |
|
|
|
{ |
|
|
|
this.обновитьФизику(производноеИмя, значение); |
|
|
|
} |
|
|
|
else if ( |
|
|
|
свойство == "вид" || |
|
|
|
свойство == "анимация" |
|
|
|
) { |
|
|
|
let пр = this.пр(имя); |
|
|
|
let вид = this.задано[имя]["вид"]; |
|
|
|
let анимация = this.задано[имя]["анимация"]; |
|
|
|
this.обновитьИзображение(производноеИмя, пр, вид, анимация); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.обработатьСобытие = function(событие) |
|
|
|
{ |
|
|
|
let в = "виды/"; |
|
|
|
let а = "анимации/"; |
|
|
|
if (событие.startsWith(в)) |
|
|
|
{ |
|
|
|
let вид = событие.substring(в.length); |
|
|
|
this.обновитьОбъектыВида(вид); |
|
|
|
} |
|
|
|
else if (событие.startsWith(а)) |
|
|
|
{ |
|
|
|
let анимация = событие.substring(а.length); |
|
|
|
this.обновитьОбъектыАнимации(анимация); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.обновитьОбъектыАнимации = function(анимация) |
|
|
|
{ |
|
|
|
for (let имя in this.задано) |
|
|
|
{ |
|
|
|
let за = this.задано[имя]; |
|
|
|
let зан = за["анимация"]; |
|
|
|
if (зан && зан == анимация) |
|
|
|
{ |
|
|
|
this.обновитьВидАнимацию(имя); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.обновитьОбъектыВида = function(вид) |
|
|
|
{ |
|
|
|
for (let имя in this.задано) |
|
|
|
{ |
|
|
|
let за = this.задано[имя]; |
|
|
|
let зви = за["вид"]; |
|
|
|
if (зви && зви == вид) |
|
|
|
{ |
|
|
|
this.обновитьВидАнимацию(имя); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.обновитьВидАнимацию = function(имя) |
|
|
|
{ |
|
|
|
let пр = this.пр(имя); |
|
|
|
let вид = this.задано[имя]["вид"]; |
|
|
|
let анимация = this.задано[имя]["анимация"]; |
|
|
|
let производноеИмя = `объекты-${имя}`; |
|
|
|
this.обновитьИзображение(производноеИмя, пр, вид, анимация); |
|
|
|
}; |
|
|
|
|
|
|
|
this.обновитьИзображение = function(имя, пр, вид, анимация) |
|
|
|
{ |
|
|
|
состояние.разобрать({ |
|
|
|
изображения: { |
|
|
|
[имя]: { |
|
|
|
пр: пр, |
|
|
|
вид: вид, |
|
|
|
анимация: анимация, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}); |
|
|
@@ -55,43 +151,6 @@ 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.задано[имя]; |
|
|
|