◆少前百科是非盈利性、非官方的少女前线维基百科。 ◆如果您发现某些内容错误/空缺,请勇于修正/添加!参与进来其实很容易!点这里 加入少前百科。 ◆有任何意见、建议、纠错,欢迎在 GFwiki:反馈与建议 提出和讨论。编辑事务讨论QQ群:597764980,微博@GFwiki少前百科 ◆To foreigners,You can use twitter to contact us. |
“Widget:AVGplayer/js”的版本间的差异
小 |
|||
(未显示同一用户的17个中间版本) | |||
第4行: | 第4行: | ||
var xmlhttp_doll = new XMLHttpRequest(); | var xmlhttp_doll = new XMLHttpRequest(); | ||
xmlhttp_doll.onreadystatechange = function() { | xmlhttp_doll.onreadystatechange = function() { | ||
− | if (this.readyState == 4 && this.status == 200) { | + | if (this.readyState == 4 && this.status == 200) { |
− | dollarray = JSON.parse(this.responseText.replace(/\/\*\s{1,4}\d{1,4}\s{1,4}\*\//g,"").replace(",\n}", "\n}"));} | + | dollarray = JSON.parse(this.responseText.replace(/\/\*\s{1,4}\d{1,4}\s{1,4}\*\//g,"").replace(",\n}", "\n}")); |
+ | getdollarrays(); | ||
+ | } | ||
}; | }; | ||
xmlhttp_doll.open("GET", "/index.php?title=JSON:AVGDOLL&action=raw", true); | xmlhttp_doll.open("GET", "/index.php?title=JSON:AVGDOLL&action=raw", true); | ||
第34行: | 第36行: | ||
xmlhttp_se.send(); | xmlhttp_se.send(); | ||
+ | function getdollarrays() { | ||
mw.loader.using('ext.gadget.md5hasher', function() { | mw.loader.using('ext.gadget.md5hasher', function() { | ||
const prefabcodes = [0, 2, 3, 4, 5, 6, 7, 8, 9].concat([...Array(26)].map((_, i) => String.fromCharCode(i + 97))); | const prefabcodes = [0, 2, 3, 4, 5, 6, 7, 8, 9].concat([...Array(26)].map((_, i) => String.fromCharCode(i + 97))); | ||
第45行: | 第48行: | ||
newXhr.open('GET', '/images/' + window.gfUtils.createWikiPathPart(prefab) + '/' + prefab); | newXhr.open('GET', '/images/' + window.gfUtils.createWikiPathPart(prefab) + '/' + prefab); | ||
newXhr.send(); | newXhr.send(); | ||
+ | } | ||
}); | }); | ||
+ | } | ||
var effarray = { | var effarray = { | ||
第112行: | 第117行: | ||
var loadingnow = {doll:0, bg:0, bgm:0, eff:0}; | var loadingnow = {doll:0, bg:0, bgm:0, eff:0}; | ||
− | window.playAvgGlobal = function(text) { | + | var bgmEnd = false; |
+ | |||
+ | window.playAvgGlobal = function(text, title) { | ||
if (typeof text != 'string') { | if (typeof text != 'string') { | ||
console.warn('AVGplayer interface called with parameter of invalid type: must be string.'); | console.warn('AVGplayer interface called with parameter of invalid type: must be string.'); | ||
return; | return; | ||
} | } | ||
+ | bgmEnd = false; | ||
avgtxt = text; | avgtxt = text; | ||
endsign = 0; | endsign = 0; | ||
avgnextline = ""; | avgnextline = ""; | ||
+ | linepos = 0; | ||
+ | $("#avgbgm").attr("src", ""); $(".avgsound").remove(); | ||
+ | $("#avgbackground").html(""); | ||
+ | $(".avgdollpic").remove(); | ||
+ | $(".avgefect").remove(); | ||
readline(); | readline(); | ||
firstloading(); | firstloading(); | ||
+ | $('#avgtitle').html(title||''); | ||
} | } | ||
function avgcreat(){ | function avgcreat(){ | ||
$(".avgchoice").click(function(){ | $(".avgchoice").click(function(){ | ||
+ | if (window.pauseMainBgm) window.pauseMainBgm(); | ||
+ | bgmEnd = false; | ||
var xmlhttp = new XMLHttpRequest(); | var xmlhttp = new XMLHttpRequest(); | ||
xmlhttp.onreadystatechange = function() { | xmlhttp.onreadystatechange = function() { | ||
第357行: | 第373行: | ||
else readline(); | else readline(); | ||
}); | }); | ||
+ | |||
+ | function endBgm() { | ||
+ | bgmEnd = true; | ||
+ | $('#avgbgm')[0].pause(); | ||
+ | setTimeout(function() { | ||
+ | if (endsign == 1 && window.canPlayMainBgm && window.resumeMainBgm) window.resumeMainBgm(); | ||
+ | }, 2000); | ||
+ | $('#avgbox')[0].removeEventListener('click', endBgm); | ||
+ | } | ||
function readline(){ | function readline(){ | ||
if(blacksign == 1 || branchblock == 1 || flash_block == 1) return; | if(blacksign == 1 || branchblock == 1 || flash_block == 1) return; | ||
− | if(endsign == 1) { | + | if(endsign == 1 && !avgnextline) { |
$("#avgline").html(`<div class="endsigndiv">${$("#avgtitle").html()} END</div>`); | $("#avgline").html(`<div class="endsigndiv">${$("#avgtitle").html()} END</div>`); | ||
+ | if (!bgmEnd) { | ||
+ | $('#avgbox')[0].addEventListener('click', endBgm); | ||
+ | } | ||
return; | return; | ||
} | } | ||
第377行: | 第405行: | ||
if(avgbranches.length != 0){ | if(avgbranches.length != 0){ | ||
− | let html_string = `<div id="avgbranchdiv">`; | + | let isCg = avgbranches.every(opt => opt.startsWith('cg')); |
− | for(i in avgbranches) html_string += `<div class="avgbranch" index="${i}">${ | + | let html_string = `<div id="avgbranchdiv"${isCg ? ' class="cg-options"' : ''}>`; |
+ | for(i in avgbranches) { | ||
+ | let optionText = avgbranches[i]; | ||
+ | let xpos = '', ypos = ''; | ||
+ | if (isCg) { | ||
+ | optionText = optionText.slice(2); | ||
+ | let poses = optionText.split(','); | ||
+ | xpos = `calc(50% + ${poses[0]*0.625}px)`; | ||
+ | ypos = `calc(50% - ${poses[1]*0.625}px)`; | ||
+ | } | ||
+ | html_string += `<div class="avgbranch" index="${i}"${isCg ? ' style="left:'+xpos+';top:'+ypos+'"' : ''}>${isCg ? '' : optionText}<\/div>`; | ||
+ | } | ||
html_string += `<\/div>`; | html_string += `<\/div>`; | ||
第409行: | 第448行: | ||
setTimeout(function(){ | setTimeout(function(){ | ||
$(".avgefect").remove(); $(".avgsound").remove(); | $(".avgefect").remove(); $(".avgsound").remove(); | ||
− | $(".avgdollpic").remove(); $("#avgbackground").html(""); $("#avgbgm").attr("src", ""); | + | $(".avgdollpic").remove(); $("#avgbackground").html(""); //$("#avgbgm").attr("src", ""); |
$("#avgspeaker").html(""); $("#avgline").html(""); | $("#avgspeaker").html(""); $("#avgline").html(""); | ||
setTimeout(function(){ | setTimeout(function(){ | ||
第463行: | 第502行: | ||
if(thisline.indexOf("<BIN>") != -1){ | if(thisline.indexOf("<BIN>") != -1){ | ||
var bgsrc = bgarray[thisline.slice(thisline.indexOf("<BIN>") + ("<BIN>").length, thisline.indexOf("</BIN>"))]; | var bgsrc = bgarray[thisline.slice(thisline.indexOf("<BIN>") + ("<BIN>").length, thisline.indexOf("</BIN>"))]; | ||
− | $("#avgbackground").html(`<img src="` + bgsrc + `"/>`); | + | $("#avgbackground").html(`<img src="` + bgsrc + `" draggable="false"/>`); |
if(thisline.indexOf("<Night>") != -1) $("#avgbackground").append(`<div style="width:1200px; height:675px; position:absolute; backdrop-filter:saturate(0.6) brightness(0.4) hue-rotate(15deg)"><\/div>`); | if(thisline.indexOf("<Night>") != -1) $("#avgbackground").append(`<div style="width:1200px; height:675px; position:absolute; backdrop-filter:saturate(0.6) brightness(0.4) hue-rotate(15deg)"><\/div>`); | ||
} | } | ||
第477行: | 第516行: | ||
setTimeout(function(){ | setTimeout(function(){ | ||
flash_block = 0; | flash_block = 0; | ||
− | $("#avgbackground").html(`<img src="${bgarray[background_array[background_array.length - 1]]}" style="display:none;"/>`); | + | $("#avgbackground").html(`<img src="${bgarray[background_array[background_array.length - 1]]}" style="display:none;" draggable="false"/>`); |
$("#avgbackground").children("img").fadeIn(control_parament.rate * 5); | $("#avgbackground").children("img").fadeIn(control_parament.rate * 5); | ||
}, background_array.length * (control_parament.delay + control_parament.rate * 2 + control_parament.duration) * 5); | }, background_array.length * (control_parament.delay + control_parament.rate * 2 + control_parament.duration) * 5); | ||
第484行: | 第523行: | ||
let time_start = ((i + 1) * control_parament.delay + i * control_parament.rate * 2 + i * control_parament.duration) * 5; | let time_start = ((i + 1) * control_parament.delay + i * control_parament.rate * 2 + i * control_parament.duration) * 5; | ||
setTimeout(function(){ | setTimeout(function(){ | ||
− | $("#avgbackground").html(`<img src="${bgarray[background_array[i]]}" style="display:none;"/>`); | + | $("#avgbackground").html(`<img src="${bgarray[background_array[i]]}" style="display:none;" draggable="false"/>`); |
$("#avgbackground").children("img").fadeIn(control_parament.rate * 5); | $("#avgbackground").children("img").fadeIn(control_parament.rate * 5); | ||
}, time_start); | }, time_start); | ||
第571行: | 第610行: | ||
} else the_center += `left:152px;">`; | } else the_center += `left:152px;">`; | ||
− | the_center += `<img src="` + dollarray[newavgdoll.center] + `" style="`; | + | the_center += `<img draggable="false" src="` + dollarray[newavgdoll.center] + `" style="`; |
if((avgpicstr.indexOf("<通讯框>") != -1) && (avgpicstr.indexOf("<通讯框>") > avgpicstr.indexOf(";"))){ | if((avgpicstr.indexOf("<通讯框>") != -1) && (avgpicstr.indexOf("<通讯框>") > avgpicstr.indexOf(";"))){ | ||
the_center += `background-color:#12131d; -webkit-mask-image:url(/images/d/d0/Mask.png); -webkit-mask-position-x: 28px; -webkit-mask-size: 850px;"/>` + telemask + `<\/div>`; | the_center += `background-color:#12131d; -webkit-mask-image:url(/images/d/d0/Mask.png); -webkit-mask-position-x: 28px; -webkit-mask-size: 850px;"/>` + telemask + `<\/div>`; | ||
第648行: | 第687行: | ||
} else the_left += `left:-20px;">`; | } else the_left += `left:-20px;">`; | ||
− | the_left += `<img src="` + dollarray[newavgdoll.left] + `" style="`; | + | the_left += `<img draggable="false" src="` + dollarray[newavgdoll.left] + `" style="`; |
if((avgpicstr.indexOf("<通讯框>") != -1) && (avgpicstr.indexOf("<通讯框>") < avgpicstr.indexOf(";"))){ | if((avgpicstr.indexOf("<通讯框>") != -1) && (avgpicstr.indexOf("<通讯框>") < avgpicstr.indexOf(";"))){ | ||
the_left += `background-color:#12131d; -webkit-mask-image:url(/images/d/d0/Mask.png); -webkit-mask-position-x: 28px; -webkit-mask-size: 850px;"/>` + telemask + `<\/div>`; | the_left += `background-color:#12131d; -webkit-mask-image:url(/images/d/d0/Mask.png); -webkit-mask-position-x: 28px; -webkit-mask-size: 850px;"/>` + telemask + `<\/div>`; | ||
第666行: | 第705行: | ||
} else the_right += `left:324px;">`; | } else the_right += `left:324px;">`; | ||
− | the_right += `<img src="` + dollarray[newavgdoll.right] + `" style="`; | + | the_right += `<img draggable="false" src="` + dollarray[newavgdoll.right] + `" style="`; |
if((avgpicstr.indexOf("<通讯框>") != -1) && (avgpicstr.indexOf("<通讯框>") > avgpicstr.indexOf(";"))){ | if((avgpicstr.indexOf("<通讯框>") != -1) && (avgpicstr.indexOf("<通讯框>") > avgpicstr.indexOf(";"))){ | ||
the_right += `background-color:#12131d; -webkit-mask-image:url(/images/d/d0/Mask.png); -webkit-mask-position-x: 28px; -webkit-mask-size: 850px;"/>` + telemask + `<\/div>`; | the_right += `background-color:#12131d; -webkit-mask-image:url(/images/d/d0/Mask.png); -webkit-mask-position-x: 28px; -webkit-mask-size: 850px;"/>` + telemask + `<\/div>`; | ||
第691行: | 第730行: | ||
//word line - color & size handler | //word line - color & size handler | ||
if(thisline.indexOf(":") != -1){ | if(thisline.indexOf(":") != -1){ | ||
− | let keyword = (thisline.indexOf("+") != -1) ? "+" : ((thisline.indexOf("<c>") != -1) ? "<c>" : "\n"); | + | let keyword = (thisline.indexOf("+") != -1) ? "+" : ((thisline.indexOf("<c>") != -1) ? "<c>" : (thisline.indexOf('<cg>') != -1 ? '<cg>' : "\n")); |
let line = thisline.slice(thisline.indexOf(":") + 1, thisline.length); | let line = thisline.slice(thisline.indexOf(":") + 1, thisline.length); | ||
// color & size | // color & size | ||
第716行: | 第755行: | ||
avgbranches = line_temp.split("<c>"); | avgbranches = line_temp.split("<c>"); | ||
console.log(avgbranches); | console.log(avgbranches); | ||
+ | } else if (line.indexOf('<cg>') != -1) { | ||
+ | let line_temp = line.slice(line.indexOf('<cg>') + 4, line.length).replace('\r', ''); | ||
+ | avgbranches = line_temp.split('<cg>').map(opt => 'cg' + opt); | ||
+ | console.log(avgbranches); | ||
} | } | ||
} else { | } else { | ||
第764行: | 第807行: | ||
log_string += `<\/td><td style="width:80%; vertical-align:baseline;">` + ((thisline.indexOf("<分支") != -1) ? ("分支" + thisline[thisline.indexOf("<分支") + 4] + "<br>") : ""); | log_string += `<\/td><td style="width:80%; vertical-align:baseline;">` + ((thisline.indexOf("<分支") != -1) ? ("分支" + thisline[thisline.indexOf("<分支") + 4] + "<br>") : ""); | ||
log_string += thisline.slice(thisline.indexOf(":") + 1, thisline.length).replace(/\+/g, "<br>").replace(/<c>/g, " 分支") + `<\/td><\/tr><\/table><\/div>`; | log_string += thisline.slice(thisline.indexOf(":") + 1, thisline.length).replace(/\+/g, "<br>").replace(/<c>/g, " 分支") + `<\/td><\/tr><\/table><\/div>`; | ||
+ | log_string += thisline.slice(thisline.indexOf(":") + 1, thisline.length).replace(/\+/g, "<br>").replace(/<cg>/g, " 分支") + `<\/td><\/tr><\/table><\/div>`; | ||
if(avgtxt.indexOf("\n", logpos) == -1) break; | if(avgtxt.indexOf("\n", logpos) == -1) break; |