diff --git a/3.2/проигрыватель/100.Состояние.js b/3.2/проигрыватель/100.Состояние.js
new file mode 100644
index 0000000..332e9e3
--- /dev/null
+++ b/3.2/проигрыватель/100.Состояние.js
@@ -0,0 +1,61 @@
+function Состояние()
+{
+ this.создать = function()
+ {
+ this.обработчик = null;
+ this.значения = {};
+ };
+
+ this.выпрямить = function(obj)
+ {
+ // https://stackoverflow.com/a/42121920
+ var newObj = {};
+ for (var key in obj)
+ {
+ if (typeof obj[key] === 'object' && obj[key] !== null)
+ {
+ var temp = this.выпрямить(obj[key])
+ for (var key2 in temp)
+ {
+ newObj[key + "." + key2] = temp[key2];
+ }
+ }
+ else
+ {
+ newObj[key] = obj[key];
+ }
+ }
+ return newObj;
+ };
+
+ this.лишьНовыеЗначения = function(значения) {
+ var новые = {};
+ for (var ключ in значения)
+ {
+ var было = this.значения[ключ];
+ var стало = значения[ключ];
+ if (!(было != null && было == стало))
+ {
+ новые[ключ] = стало;
+ this.значения[ключ] = стало;
+ }
+ }
+ return новые;
+ };
+
+ this.разобрать = function(словарь) {
+/**/console.debug("01");
+ var значения = this.лишьНовыеЗначения(this.выпрямить(словарь));
+/**/console.debug("02");
+ for (var ключ in значения)
+ {
+ var путь = ключ.split(".");
+ var значение = значения[ключ];
+ this.обработчик(ключ, путь, значение);
+ }
+ };
+
+
+ // Конструктор.
+ this.создать();
+}
diff --git a/3.2/проигрыватель/700.Игра.js b/3.2/проигрыватель/700.Игра.js
index 403f7ab..f9c6b41 100644
--- a/3.2/проигрыватель/700.Игра.js
+++ b/3.2/проигрыватель/700.Игра.js
@@ -2,6 +2,10 @@ function Игра()
{
this.создать = function()
{
+ this.состояние = new Состояние();
+ this.состояние.обработчик = this.обработатьКлюч;
+ var тут = this;
+ мир.разобрать = function(словарь) { тут.состояние.разобрать(словарь); };
this.события = new События();
this.пз = new ПараметрыЗапуска();
var z64 = this.пз.параметры["z64"];
@@ -15,9 +19,15 @@ function Игра()
{
var код = мир.изZ64(z64);
/**/console.debug("Игра.исполнитьКод:", код);
+ eval(код);
}
};
+ this.обработатьКлюч = function(ключ, путь, значение)
+ {
+/**/console.debug("Игра.обработатьК", ключ, путь, значение);
+ };
+
this.отслеживатьОбновленияКода = function()
{
var тут = this;
diff --git a/3.2/проигрыватель/index.html b/3.2/проигрыватель/index.html
index 45a6a67..c55325a 100644
--- a/3.2/проигрыватель/index.html
+++ b/3.2/проигрыватель/index.html
@@ -16,6 +16,7 @@
+