состояние

This commit is contained in:
2021-09-14 14:34:34 +03:00
parent 4f2ab349c2
commit 186bd312bb
6 changed files with 31 additions and 26 deletions

View File

@@ -1,61 +0,0 @@
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.создать();
}

View File

@@ -2,11 +2,9 @@ function Игра()
{
this.создать = function()
{
this.состояние = new Состояние();
this.состояние.обработчик = this.обработатьКлюч;
var тут = this;
мир.разобрать = function(словарь) { тут.состояние.разобрать(словарь); };
this.события = new События();
мир.события = new События();
мир.состояние = new Состояние();
мир.состояние.обработчик = this.обработатьКлюч;
var z64 = мир.параметрыЗапуска()["z64"];
this.исполнитьКод(z64);
this.отслеживатьОбновленияКода();

View File

@@ -14,8 +14,8 @@
<div id="отладка"></div>
<script src="../общее/100.События.js"></script>
<script src="../общее/150.Состояние.js"></script>
<script src="../общее/200.функции.js"></script>
<script src="100.Состояние.js"></script>
<script src="700.Игра.js"></script>
<script>
var игра = new Игра();