X-Git-Url: https://git.yukkurigames.com/?p=pwl6.git;a=blobdiff_plain;f=src%2Fyuu%2Fdirector.js;h=7660b26a3ec3e95edacfa7213a394b06382fbb02;hp=7f90fd4a30c6399415348e286dffa98fce7ca722;hb=f96f0ecc5cd905dba4d20f3a06d154bf2683bff3;hpb=94974e84ebad043b1664b6d916b6e3483b387d85 diff --git a/src/yuu/director.js b/src/yuu/director.js index 7f90fd4..7660b26 100644 --- a/src/yuu/director.js +++ b/src/yuu/director.js @@ -1,7 +1,7 @@ /* Copyright 2014 Yukkuri Games Licensed under the terms of the GNU GPL v2 or later - @license http://www.gnu.org/licenses/gpl-2.0.html - @source: http://yukkurigames.com/yuu/ + @license https://www.gnu.org/licenses/gpl-2.0.html + @source: https://yukkurigames.com/yuu/ */ (function (yuu) { @@ -17,6 +17,13 @@ if (!yuu.InputState) require("./input"); if (!yuu.Material) require("./gfx"); + function getCommand (element) { + var command = element.getAttribute('data-yuu-command'); + if (!command || command === 'data-yuu-command') + element.setAttribute('data-yuu-command', command = element.id); + return command; + } + yuu.Director = yT({ constructor: function (commandStack, input, tickHz) { /** Manage and update a set of Scenes @@ -133,7 +140,7 @@ // Aside from the performance considerations, deferring // resizing by multiple frames fixes mis-sizing during startup - // and fullscreen transition in node-webkit on Windows. (And + // and fullscreen transition in NW.js on Windows. (And // probably similar bugs in other configurations.) _doresize: yf.debounce(function () { this._resized = true; @@ -298,7 +305,7 @@ return; this._tickCount = 0; this._timerStart = 0; - // GNU/Linux with node-webkit sizes things incorrectly on + // GNU/Linux with NW.js sizes things incorrectly on // startup, so force a recalculating as soon as the render // loop runs. this._resized = true; @@ -564,7 +571,7 @@ var elements = element.querySelectorAll("[data-yuu-command]"); yf.each(function (element) { - var command = element.getAttribute("data-yuu-command"); + var command = getCommand(element); switch (element.tagName.toLowerCase()) { case "input": switch (element.type.toLowerCase()) { @@ -625,7 +632,7 @@ function handleElement (event) { /*jshint validthis:true */ /* `this` comes from being a DOM element event handler. */ - var command = this.getAttribute("data-yuu-command"); + var command = getCommand(this); switch (this.tagName.toLowerCase()) { case "input": switch (this.type.toLowerCase()) { @@ -679,6 +686,14 @@ var director = yuu.director = new yuu.Director(); /** The standard director */ + if (yuu.audio) { + yuu.Animation.registerOperation(function playSound (sound) { + if (Array.isArray(sound)) + sound = yuu.random.choice(sound); + (new yuu.Instrument(sound)).play(); + }); + } + yuu.registerInitHook(function () { return yuu.ready(director._scenes); });