Browse Source

z64 всегда

tags/4.1
parent
commit
e41ffb9eb6
4 changed files with 82 additions and 4 deletions
  1. +61
    -0
      3.2/проигрыватель/100.Состояние.js
  2. +10
    -0
      3.2/проигрыватель/700.Игра.js
  3. +1
    -0
      3.2/проигрыватель/index.html
  4. +10
    -4
      3.2/редактор/100.Редактор.js

+ 61
- 0
3.2/проигрыватель/100.Состояние.js View File

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

+ 10
- 0
3.2/проигрыватель/700.Игра.js View File

@@ -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;


+ 1
- 0
3.2/проигрыватель/index.html View File

@@ -16,6 +16,7 @@
<script src="../общее/100.События.js"></script>
<script src="../общее/200.функции.js"></script>
<script src="../общее/300.ПараметрыЗапуска.js"></script>
<script src="100.Состояние.js"></script>
<script src="700.Игра.js"></script>
<script>
var игра = new Игра();


+ 10
- 4
3.2/редактор/100.Редактор.js View File

@@ -32,10 +32,6 @@ function Редактор(события, имяРедактора)
{
var содержимое = this.ace.session.getValue();
var z64 = мир.вZ64(содержимое);
var путь = window.location.pathname + "?z64=" + z64;
history.pushState(null, "", путь);
document.title = `${this.первоначальныйЗаголовок} ${z64.length}:${z64.slice(z64.length - 5)}`;

// Исполняем явно код лишь первый раз.
var проигрыватель = document.getElementById("проигрыватель");
if (!проигрыватель.src)
@@ -49,10 +45,20 @@ function Редактор(события, имяРедактора)
}
};

this.обновитьАдреснуюСтрокуИЗаголовок = function()
{
var содержимое = this.ace.session.getValue();
var z64 = мир.вZ64(содержимое);
var путь = window.location.pathname + "?z64=" + z64;
history.pushState(null, "", путь);
document.title = `${this.первоначальныйЗаголовок} ${z64.length}:${z64.slice(z64.length - 5)}`;
};

this.обработатьСобытие = function(событие)
{
if (событие == "завершили редактирование")
{
this.обновитьАдреснуюСтрокуИЗаголовок();
this.проверитьКорректностьКода();
}
else if (событие == "код корректен")


Loading…
Cancel
Save