Browse Source

реплики

tags/4.1
parent
commit
e1ba7d18b1
4 changed files with 122 additions and 7 deletions
  1. +1
    -0
      4.1/игра.html
  2. +49
    -6
      4.1/игра/280.Меню.js
  3. +69
    -0
      4.1/игра/300.Реплики.js
  4. +3
    -1
      4.1/игра/700.Игра.js

+ 1
- 0
4.1/игра.html View File

@@ -37,6 +37,7 @@
<script src="игра/240.Столкновения.js"></script>
<script src="игра/260.Подсказки.js"></script>
<script src="игра/280.Меню.js"></script>
<script src="игра/300.Реплики.js"></script>
<script src="игра/700.Игра.js"></script>
<script>
var игра = new Игра();


+ 49
- 6
4.1/игра/280.Меню.js View File

@@ -1,33 +1,76 @@
function Меню(события, подсказки)
function Меню(события, подсказки, реплики)
{
this.создать = function()
{
события.подписать(this);
this.установитьМеню();
this.улавливатьВыбор();
};

this.обработатьСобытие = function(событие)
{
let мышь = "мышь/нажатие/";
let сами = "меню/";
if (событие.startsWith(мышь))
{
let значения = событие.substring(мышь.length).split("/");
let элемент = значения[2];
let имя = подсказки.подсказкаДляЭлемента(элемент);
if (имя)
if (имя && имя in реплики.задано)
{
this.отобразитьМеню(имя);
}
}
else if (событие.startsWith(сами))
{
UIkit.modal("#меню").hide();
}
};

this.отобразитьМеню = function(имя)
{
this.активнаяПодсказка = имя;
let подсказка = подсказки.задано[имя];
document.getElementById("меню-заголовок").innerHTML = подсказка.текст;
UIkit.modal("#меню").show();
};

this.улавливатьВыбор = function()
{
var тут = this;
let глаз = document.getElementById("меню-кнопка-глаз");
глаз.addEventListener(
"click",
function() {
события.уведомить(`меню/глаз/${тут.активнаяПодсказка}`);
}
);

let рука = document.getElementById("меню-кнопка-рука");
рука.addEventListener(
"click",
function() {
события.уведомить(`меню/рука/${тут.активнаяПодсказка}`);
}
);

let рот = document.getElementById("меню-кнопка-рот");
рот.addEventListener(
"click",
function() {
события.уведомить(`меню/рот/${тут.активнаяПодсказка}`);
}
);

let нога = document.getElementById("меню-кнопка-нога");
нога.addEventListener(
"click",
function() {
события.уведомить(`меню/нога/${тут.активнаяПодсказка}`);
}
);
};

this.установитьМеню = function()
{
let html = `
@@ -37,16 +80,16 @@ function Меню(события, подсказки)
<h2 id="меню-заголовок" class="uk-modal-title">Заголовок</h2>
<div class="uk-child-width-1-4 uk-text-center" uk-grid>
<div>
<div class="uk-card uk-card-small uk-card-hover uk-card-default uk-card-body">👁️</div>
<div id="меню-кнопка-глаз" class="uk-card uk-card-small uk-card-hover uk-card-default uk-card-body">👁️</div>
</div>
<div>
<div class="uk-card uk-card-small uk-card-hover uk-card-default uk-card-body">🤚</div>
<div id="меню-кнопка-рука" class="uk-card uk-card-small uk-card-hover uk-card-default uk-card-body">🤚</div>
</div>
<div>
<div class="uk-card uk-card-small uk-card-hover uk-card-default uk-card-body">🗣</div>
<div id="меню-кнопка-рот" class="uk-card uk-card-small uk-card-hover uk-card-default uk-card-body">🗣</div>
</div>
<div>
<div class="uk-card uk-card-small uk-card-hover uk-card-default uk-card-body">🥾</div>
<div id="меню-кнопка-нога" class="uk-card uk-card-small uk-card-hover uk-card-default uk-card-body">🥾</div>
</div>
</div>
</div>


+ 69
- 0
4.1/игра/300.Реплики.js View File

@@ -0,0 +1,69 @@
function Реплики(события)
{
this.создать = function()
{
this.задано = {};
события.подписать(this);
};

this.номерРеплики = function(инструмент)
{
if (инструмент == "рука")
{
return 1;
}
else if (инструмент == "рот")
{
return 2;
}
else if (инструмент == "нога")
{
return 3;
}
// "глаз"
return 0;
};

this.обработатьКлюч = function(ключ, путь, значение)
{
if (путь[0] != "реплики")
{
return;
}

let имя = путь[1];
let свойство = путь.slice(2).join(".");
if (!this.задано[имя])
{
this.задано[имя] = {};
}
this.задано[имя][свойство] = значение;
};

this.обработатьСобытие = function(событие)
{
let меню = "меню/";
if (событие.startsWith(меню))
{
let значения = событие.substring(меню.length).split("/");
let инструмент = значения[0];
let подсказка = значения[1];
this.отобразитьРеплику(инструмент, подсказка);
}
};

this.отобразитьРеплику = function(инструмент, подсказка)
{
let номер = this.номерРеплики(инструмент);
let реплика = this.задано[подсказка][номер];
let частей = реплика.split(/ /);
let длительность = частей.length * 1000;
UIkit.notification({
message: реплика,
timeout: длительность,
});
};

// Конструктор.
this.создать();
};

+ 3
- 1
4.1/игра/700.Игра.js View File

@@ -23,7 +23,8 @@ function Игра()
мир.мышь = new Мышь(мир.события);
мир.столкновения = new Столкновения(мир.события, мир.тела, мир.физдвижок);
мир.подсказки = new Подсказки();
мир.меню = new Меню(мир.события, мир.подсказки);
мир.реплики = new Реплики(мир.события);
мир.меню = new Меню(мир.события, мир.подсказки, мир.реплики);
this.ключники = [
new Заголовок(),
мир.виды,
@@ -35,6 +36,7 @@ function Игра()
мир.сцена,
мир.столкновения,
мир.подсказки,
мир.реплики,
];

var z64 = мир.параметрыЗапуска()["z64"];


Loading…
Cancel
Save