◆少前百科是非盈利性、非官方的少女前线维基百科。 ◆如果您发现某些内容错误/空缺,请勇于修正/添加!参与进来其实很容易!点这里 加入少前百科。 ◆有任何意见、建议、纠错,欢迎在 GFwiki:反馈与建议 提出和讨论。编辑事务讨论QQ群:597764980,微博@GFwiki少前百科 ◆To foreigners,You can use twitter to contact us. |
“Widget:AVGplayer/js”的版本间的差异
(校对纠错) |
(更新) |
||
第26行: | 第26行: | ||
xmlhttp_Spot.send(); | xmlhttp_Spot.send(); | ||
+ | |||
+ | var animearray = { | ||
+ | "%%code=AVG_ink1%%":"http://www.gfwiki.org/images/2/26/AVG_ink1.flv", | ||
+ | } | ||
var linepos = 0; | var linepos = 0; | ||
− | var endsign = 0; // | + | var endsign = 0; /* 该剧情是否结束的标志 */ |
− | var avgtxt = ""; // | + | var avgtxt = ""; /* avg文本 */ |
− | var avgdoll = {left:0,center:0,right:0}; // | + | var avgdoll = {left:0, center:0, right:0}; /* 当前立绘 */ |
− | var avgnextline = ""; / | + | var avgnextline = ""; /* 当一个场景有多个+台词时 */ |
− | + | var avgbranches = []; | |
− | var | + | var branchblock = 0; |
− | var | + | var branchchosen = 0; |
− | var logallsign = 0; // | + | var autosign = 0; /* 是否开启自动模式 */ |
+ | var autospeed = 4; /* 自动速度 */ | ||
+ | |||
+ | var logallsign = 0; /* log是否展示全部的标志 */ | ||
− | var printwordstr; // | + | var printwordstr; /* 打印的台词 */ |
− | var printwordnum; // | + | var printwordnum; /* 打印台词的位置 */ |
− | var blacksign = 0; // | + | var blacksign = 0; /* 黑幕的标志 */ |
var loadingfile = ""; | var loadingfile = ""; | ||
第62行: | 第69行: | ||
xmlhttp.send(); | xmlhttp.send(); | ||
+ | loadingfile = $(this).attr("link"); | ||
$("#avgtitle").html($(this).children("span.avgname").html()); | $("#avgtitle").html($(this).children("span.avgname").html()); | ||
− | + | console.log($(this).children("span.avgname").html().replace(/<span class="subsign">/g, "").replace(/<\/span>/g, "") + " : " + $(this).attr("link")); | |
− | |||
$("#avgbgm").attr("src", ""); | $("#avgbgm").attr("src", ""); | ||
$("#avgbackground").html(""); | $("#avgbackground").html(""); | ||
第108行: | 第115行: | ||
<div id="avgbox"> | <div id="avgbox"> | ||
<div id="avgbackground"></div> | <div id="avgbackground"></div> | ||
+ | <video id="avganime" autoplay="autoplay" preload="auto"></video> | ||
<div id="avgword"> | <div id="avgword"> | ||
<div id="avgspeaker"></div> | <div id="avgspeaker"></div> | ||
第262行: | 第270行: | ||
function readline(){ | function readline(){ | ||
− | if(endsign == 1 || blacksign == 1) return; | + | if(endsign == 1 || blacksign == 1 || branchblock == 1) return; |
if(avgnextline){ | if(avgnextline){ | ||
第274行: | 第282行: | ||
} | } | ||
− | var thisline = avgtxt.slice(linepos, avgtxt.indexOf("\n", linepos)); | + | if(avgbranches.length != 0){ |
+ | let html_string = `<div id="avgbranchdiv">`; | ||
+ | for(i in avgbranches) html_string += `<div class="avgbranch" index="${i}">${avgbranches[i]}</div>`; | ||
+ | html_string += `</div>`; | ||
+ | |||
+ | $("#avgbox").append(html_string); | ||
+ | avgbranches = []; | ||
+ | branchblock = 1; | ||
+ | |||
+ | $(".avgbranch").click(function(){ | ||
+ | branchblock = 0; | ||
+ | branchchosen = Number($(this).attr("index")) + 1; | ||
+ | $("#avgbranchdiv").remove(); | ||
+ | }); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | var thisline = (avgtxt.indexOf("\n", linepos) == -1) ? avgtxt.slice(linepos, avgtxt.length) : avgtxt.slice(linepos, avgtxt.indexOf("\n", linepos)); | ||
+ | |||
+ | // branches | ||
+ | while(thisline.indexOf("<分支>") != -1 && Number(thisline[thisline.indexOf("<分支>") + 4]) != branchchosen){ | ||
+ | if(avgtxt.indexOf("\n", linepos) == -1) { endsign = 1; return;} | ||
+ | linepos = avgtxt.indexOf("\n", linepos) + 1; | ||
+ | thisline = (avgtxt.indexOf("\n", linepos) == -1) ? avgtxt.slice(linepos, avgtxt.length) : avgtxt.slice(linepos, avgtxt.indexOf("\n", linepos)); | ||
+ | } | ||
+ | if(thisline.indexOf("<分支>") == -1 && branchchosen != 0) branchchosen = 0; | ||
− | //black | + | // black |
if(thisline.indexOf("<黑屏2>") != -1 && blacksign == 0){ | if(thisline.indexOf("<黑屏2>") != -1 && blacksign == 0){ | ||
$(".avgdollpic").fadeOut(1000 / autospeed); $(".avgefect").fadeOut(1000 / autospeed); | $(".avgdollpic").fadeOut(1000 / autospeed); $(".avgefect").fadeOut(1000 / autospeed); | ||
第296行: | 第329行: | ||
} | } | ||
− | //bgm | + | // bgm |
if(thisline.indexOf("<BGM>") != -1){ | if(thisline.indexOf("<BGM>") != -1){ | ||
$("#avgbgm").attr("src", bgmarray[thisline.slice(thisline.indexOf("<BGM>") + ("<BGM>").length, thisline.indexOf("</BGM>"))]); | $("#avgbgm").attr("src", bgmarray[thisline.slice(thisline.indexOf("<BGM>") + ("<BGM>").length, thisline.indexOf("</BGM>"))]); | ||
第302行: | 第335行: | ||
} | } | ||
− | //background | + | // background |
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 + `"/>`); | ||
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>`); | ||
+ | } | ||
+ | |||
+ | // background_mp4 common_effect | ||
+ | if(thisline.indexOf("<common_effect>") != -1){ | ||
+ | var animesrc = animearray[thisline.slice(thisline.indexOf("<common_effect>") + ("<common_effect>").length, thisline.indexOf("</common_effect>"))]; | ||
+ | $("#avganime").css("display","unset"); | ||
+ | $("#avganime").attr("src", animesrc); | ||
+ | $("#avganime").bind('ended', function(){ | ||
+ | $("#avganime").css("display","none"); | ||
+ | }); | ||
} | } | ||
第357行: | 第400行: | ||
if(target_name == this_name){ | if(target_name == this_name){ | ||
cen_sign = 0; | cen_sign = 0; | ||
+ | $(avgdoll_div[i]).stop(); | ||
$(avgdoll_div[i]).css({"z-index":"6"}); | $(avgdoll_div[i]).css({"z-index":"6"}); | ||
$(avgdoll_div[i]).animate({"left":"152px"}, 300); | $(avgdoll_div[i]).animate({"left":"152px"}, 300); | ||
第380行: | 第424行: | ||
the_center += `<img src="` + dollarray[newavgdoll.center] + `" style="`; | the_center += `<img 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(http://www.gfwiki.org/images/d/d0/Mask.png);"/>` + telemask + `</div>`; | + | the_center += `background-color:#12131d; -webkit-mask-image:url(http://www.gfwiki.org/images/d/d0/Mask.png); -webkit-mask-position-x: 20px; -webkit-mask-size: 850px;"/>` + telemask + `</div>`; |
} else the_center += `"/></div>`; | } else the_center += `"/></div>`; | ||
$("#avgbox").append(the_center); | $("#avgbox").append(the_center); | ||
第398行: | 第442行: | ||
if(left_name == this_name){ | if(left_name == this_name){ | ||
left_sign = 0; | left_sign = 0; | ||
+ | $(avgdoll_div[i]).stop(); | ||
$(avgdoll_div[i]).animate({"left":"-20px"}, 300); | $(avgdoll_div[i]).animate({"left":"-20px"}, 300); | ||
$(avgdoll_div[i]).css({"z-index":((the_speaker == "left") ? "4" : "2")}); | $(avgdoll_div[i]).css({"z-index":((the_speaker == "left") ? "4" : "2")}); | ||
第418行: | 第463行: | ||
} else if(right_name == this_name){ | } else if(right_name == this_name){ | ||
right_sign = 0; | right_sign = 0; | ||
+ | $(avgdoll_div[i]).stop(); | ||
$(avgdoll_div[i]).animate({"left":"324px"}, 300); | $(avgdoll_div[i]).animate({"left":"324px"}, 300); | ||
$(avgdoll_div[i]).css({"z-index":((the_speaker == "right") ? "4" : "2")}); | $(avgdoll_div[i]).css({"z-index":((the_speaker == "right") ? "4" : "2")}); | ||
第447行: | 第493行: | ||
the_left += `<img src="` + dollarray[newavgdoll.left] + `" style="`; | the_left += `<img 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(http://www.gfwiki.org/images/d/d0/Mask.png);"/>` + telemask + `</div>`; | + | the_left += `background-color:#12131d; -webkit-mask-image:url(http://www.gfwiki.org/images/d/d0/Mask.png); -webkit-mask-position-x: 20px; -webkit-mask-size: 850px;"/>` + telemask + `</div>`; |
} else the_left += `"/></div>`; | } else the_left += `"/></div>`; | ||
$("#avgbox").append(the_left); | $("#avgbox").append(the_left); | ||
第458行: | 第504行: | ||
the_right += `<img src="` + dollarray[newavgdoll.right] + `" style="`; | the_right += `<img 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(http://www.gfwiki.org/images/d/d0/Mask.png);"/>` + telemask + `</div>`; | + | the_right += `background-color:#12131d; -webkit-mask-image:url(http://www.gfwiki.org/images/d/d0/Mask.png); -webkit-mask-position-x: 20px; -webkit-mask-size: 850px;"/>` + telemask + `</div>`; |
} else the_right += `"/></div>`; | } else the_right += `"/></div>`; | ||
$("#avgbox").append(the_right); | $("#avgbox").append(the_right); | ||
第481行: | 第527行: | ||
//word line - color & size handler | //word line - color & size handler | ||
if(thisline.indexOf(":") != -1){ | if(thisline.indexOf(":") != -1){ | ||
− | let keyword = (thisline.indexOf("+") != -1) ? "+" : "\n"; | + | let keyword = (thisline.indexOf("+") != -1) ? "+" : ((thisline.indexOf("<c>") != -1) ? "<c>" : "\n"); |
let line = thisline.slice(thisline.indexOf(":") + 1, thisline.length); | let line = thisline.slice(thisline.indexOf(":") + 1, thisline.length); | ||
// color & size | // color & size | ||
− | line = line.replace(/<\/color>/g, "</span").replace(/<\/Size>/g, "</span | + | line = line.replace(/<\/color>/g, "</span>").replace(/<\/Size>/g, "</span>"); |
− | |||
for(let j = 0; j < line.length; j++){ | for(let j = 0; j < line.length; j++){ | ||
− | if(line.slice(j - ("font-size: | + | if(line.slice(j - ("<Size=").length, j) == "<Size="){ |
+ | let size_num = (Number(line.slice(j, j+2)) / 2.4).toFixed(0); | ||
+ | line = line.slice(0, j - ("<Size=").length) + "<span style=\"font-size:" + size_num + "px;\"" + line.slice(j+2, line.length); | ||
+ | } else if(line.slice(j - ("<color=").length, j) == "<color="){ | ||
+ | line = line.slice(0, j - ("<color=").length) + "<span style=\"color:" + line.slice(j, j + ("#000000").length) + ";\"" + line.slice(j + ("#000000").length, line.length); | ||
+ | } | ||
} | } | ||
− | + | printwordstr = (keyword == "\n" && line.indexOf("/n") == -1) ? line : line.slice(0, line.indexOf(keyword)); | |
− | |||
− | |||
+ | $("#avgword").stop(); | ||
$("#avgword").animate({opacity:"0.0"}, 400, "swing"); | $("#avgword").animate({opacity:"0.0"}, 400, "swing"); | ||
setTimeout(function(){ $("#avgline").html(""); $("#avgword").animate({opacity:"1.0"}, 400, "swing");}, 400); | setTimeout(function(){ $("#avgline").html(""); $("#avgword").animate({opacity:"1.0"}, 400, "swing");}, 400); | ||
第499行: | 第548行: | ||
if((line.indexOf("+") != -1)) avgnextline = line.slice(line.indexOf("+") + 1, line.length); | if((line.indexOf("+") != -1)) avgnextline = line.slice(line.indexOf("+") + 1, line.length); | ||
+ | else if(line.indexOf("<c>") != -1) { | ||
+ | let line_temp = line.slice(line.indexOf("<c>") + 3, line.length).replace("\r", ""); | ||
+ | avgbranches = line_temp.split("<c>"); | ||
+ | // branches max number 6 | ||
+ | /*for(let k = 0; k < 6; k ++) { | ||
+ | if(line_temp.indexOf("<c>" == -1) || line_temp.length == 0) break; | ||
+ | console.log("before" + line_temp); | ||
+ | line_temp = line_temp.slice(line_temp.indexOf("<c>") + 3, line_temp.length); | ||
+ | console.log("after" + line_temp); | ||
+ | avgbranches.push(line_temp.slice(0, line_temp.indexOf("<c>"))); | ||
+ | console.log("push" + line_temp.slice(0, line_temp.indexOf("<c>"))); | ||
+ | }*/ | ||
+ | console.log(avgbranches); | ||
+ | } | ||
} else { | } else { | ||
+ | $("#avgword").stop(); | ||
$("#avgword").animate({opacity:"0.0"}, 400, "swing"); | $("#avgword").animate({opacity:"0.0"}, 400, "swing"); | ||
setTimeout(function(){ $("#avgline").html(""); $("#avgword").animate({opacity:"1.0"}, 400, "swing");}, 400); | setTimeout(function(){ $("#avgline").html(""); $("#avgword").animate({opacity:"1.0"}, 400, "swing");}, 400); | ||
第515行: | 第579行: | ||
function autoreadline(){ | function autoreadline(){ | ||
− | if(autosign == 0) return; | + | if(autosign == 0 || branchblock == 1) return; |
if($("#avglog").attr("state") != "on") readline(); | if($("#avglog").attr("state") != "on") readline(); | ||
setTimeout(function(){ | setTimeout(function(){ | ||
第618行: | 第682行: | ||
} | } | ||
− | console.log("Doll Image"); console.log(loading.doll); | + | console.log("Doll Image array"); console.log(loading.doll); |
− | console.log("Background CG"); console.log(loading.bg); | + | console.log("Background CG array"); console.log(loading.bg); |
− | console.log("Background Music"); console.log(loading.bgm); | + | console.log("Background Music array"); console.log(loading.bgm); |
loadingfin.doll = loading.doll.length; | loadingfin.doll = loading.doll.length; | ||
loadingfin.bg = loading.bg.length; | loadingfin.bg = loading.bg.length; |