diff --git a/классы/ТемаФишек/2019-09-06.js b/классы/ТемаФишек/2019-09-06.js new file mode 100644 index 0000000..26bb80a --- /dev/null +++ b/классы/ТемаФишек/2019-09-06.js @@ -0,0 +1,97 @@ +function ТемаФишек(имя) +{ + this.имя = имя; + + // Частичные имена текстур для загрузки. + this.нейтральТекстуры = []; + this.выборТекстуры = []; + for (var номер = 1; номер <= 42; ++номер) + { + this.нейтральТекстуры.push("0/" + номер); + this.выборТекстуры.push("1/" + номер); + } + + // Материалы фишек. + this.нейтраль = []; + this.выбор = []; +}; +ТемаФишек.prototype.имяФайлаТекстуры = function(частичноеИмя) +{ + return частичноеИмя + ".png"; +} +ТемаФишек.prototype.имяТекстуры = function(частичноеИмя) +{ + return "tile.tex/" + частичноеИмя; +} +ТемаФишек.prototype.имяМатериала = function(частичноеИмя) +{ + return "tile.mat/" + частичноеИмя; +} +ТемаФишек.prototype.загрузить = function(основаАдреса, отклик) +{ + var ресурсы = []; + // Список ресурсов для загрузки. + for (var номер in this.нейтральТекстуры) + { + // Нейтраль. + { + const чимя = this.нейтральТекстуры[номер]; + const имя = this.имяТекстуры(чимя) + const файл = this.имяФайлаТекстуры(чимя); + ресурсы.push([основаАдреса + файл, имя]); + } + // Выбор. + { + const чимя = this.выборТекстуры[номер]; + const имя = this.имяТекстуры(чимя) + const файл = this.имяФайлаТекстуры(чимя); + ресурсы.push([основаАдреса + файл, имя]); + } + } + + const времяНачала = Date.now(); + + // Получить текстуры и завести материалы. + var self = this; + муром.ресурсы.получить( + ресурсы, + function() + { + const прошло = Date.now() - времяНачала; + console.log("ТемаФишек. Загрузка заняла мс: '" + прошло + "'"); + + self.создатьМатериалы(); + отклик(); + } + ); +}; +ТемаФишек.prototype.создатьМатериалы = function() +{ + const вер = муром.ресурсы.ресурс("ver").содержимое; + const фра = муром.ресурсы.ресурс("fra").содержимое; + for (var номер in this.нейтральТекстуры) + { + // Нейтраль. + { + const чимя = this.нейтральТекстуры[номер]; + const имяТ = this.имяТекстуры(чимя) + const имяМ = this.имяМатериала(чимя); + var мат = муром.материалы.создатьМатериал(имяМ); + var изо = муром.ресурсы.ресурс(имяТ); + мат.задатьТекстуру("image", изо); + мат.задатьШейдеры(вер, фра); + this.нейтраль[номер] = мат; + } + // Выбор. + { + const чимя = this.выборТекстуры[номер]; + const имяТ = this.имяТекстуры(чимя) + const имяМ = this.имяМатериала(чимя); + var мат = муром.материалы.создатьМатериал(имяМ); + var изо = муром.ресурсы.ресурс(имяТ); + мат.задатьТекстуру("image", изо); + мат.задатьШейдеры(вер, фра); + this.выбор[номер] = мат; + } + } +};