summaryrefslogtreecommitdiff
path: root/Live2dHistoire/live2d/js/message.js
diff options
context:
space:
mode:
authormayx <mayx@outlook.com>2022-01-24 14:27:29 +0100
committermayx <mayx@outlook.com>2022-01-24 14:27:29 +0100
commit9514c646335b87251cab2b22c4cea70bd3800763 (patch)
tree8f1072f2d12731f6808f539a19bc8bc057c6409b /Live2dHistoire/live2d/js/message.js
parent86ab19c89877022790538f763ac8624515309128 (diff)
add Live2D
Diffstat (limited to 'Live2dHistoire/live2d/js/message.js')
-rw-r--r--Live2dHistoire/live2d/js/message.js482
1 files changed, 482 insertions, 0 deletions
diff --git a/Live2dHistoire/live2d/js/message.js b/Live2dHistoire/live2d/js/message.js
new file mode 100644
index 0000000..032fcf6
--- /dev/null
+++ b/Live2dHistoire/live2d/js/message.js
@@ -0,0 +1,482 @@
+var home_Path = document.location.protocol +'//' + window.document.location.hostname +'/';
+
+var userAgent = window.navigator.userAgent.toLowerCase();
+console.log(userAgent);
+var norunAI = [ "android", "iphone", "ipod", "ipad", "windows phone"];
+var norunFlag = false;
+
+
+for(var i=0;i<norunAI.length;i++){
+ if(userAgent.indexOf(norunAI[i]) > -1){
+ norunFlag = true;
+ break;
+ }
+}
+
+if(!window.WebGLRenderingContext){
+ norunFlag = true;
+}
+
+if(!norunFlag){
+ var hitFlag = false;
+ var AIFadeFlag = false;
+ var liveTlakTimer = null;
+ var sleepTimer_ = null;
+ var AITalkFlag = false;
+ var talkNum = 0;
+ (function (){
+ function renderTip(template, context) {
+ var tokenReg = /(\\)?\{([^\{\}\\]+)(\\)?\}/g;
+ return template.replace(tokenReg, function (word, slash1, token, slash2) {
+ if (slash1 || slash2) {
+ return word.replace('\\', '');
+ }
+ var variables = token.replace(/\s/g, '').split('.');
+ var currentObject = context;
+ var i, length, variable;
+ for (i = 0, length = variables.length; i < length; ++i) {
+ variable = variables[i];
+ currentObject = currentObject[variable];
+ if (currentObject === undefined || currentObject === null) return '';
+ }
+ return currentObject;
+ });
+ }
+
+ String.prototype.renderTip = function (context) {
+ return renderTip(this, context);
+ };
+
+ var re = /x/;
+ re.toString = function() {
+ showMessage('哈哈,你打开了控制台,是想要看看我的秘密吗?', 5000);
+ return '';
+ };
+
+ $(document).on('copy', function (){
+ showMessage('你都复制了些什么呀,转载要记得加上出处哦~~', 5000);
+ });
+
+ function initTips(){
+ $.ajax({
+ cache: true,
+ url: message_Path+'message.json',
+ dataType: "json",
+ success: function (result){
+ $.each(result.mouseover, function (index, tips){
+ $(tips.selector).mouseover(function (){
+ var text = tips.text;
+ if(Array.isArray(tips.text)) text = tips.text[Math.floor(Math.random() * tips.text.length + 1)-1];
+ text = text.renderTip({text: $(this).text()});
+ showMessage(text, 3000);
+ talkValTimer();
+ clearInterval(liveTlakTimer);
+ liveTlakTimer = null;
+ });
+ $(tips.selector).mouseout(function (){
+ showHitokoto();
+ if(liveTlakTimer == null){
+ liveTlakTimer = window.setInterval(function(){
+ showHitokoto();
+ },15000);
+ };
+ });
+ });
+ $.each(result.click, function (index, tips){
+ $(tips.selector).click(function (){
+ if(hitFlag){
+ return false
+ }
+ hitFlag = true;
+ setTimeout(function(){
+ hitFlag = false;
+ },8000);
+ var text = tips.text;
+ if(Array.isArray(tips.text)) text = tips.text[Math.floor(Math.random() * tips.text.length + 1)-1];
+ text = text.renderTip({text: $(this).text()});
+ showMessage(text, 3000);
+ });
+ clearInterval(liveTlakTimer);
+ liveTlakTimer = null;
+ if(liveTlakTimer == null){
+ liveTlakTimer = window.setInterval(function(){
+ showHitokoto();
+ },15000);
+ };
+ });
+ }
+ });
+ }
+ initTips();
+
+ var text;
+ if(document.referrer !== '' && document.referrer.split('/')[2] !== window.location.host ){
+ var referrer = document.createElement('a');
+ referrer.href = document.referrer;
+ text = '嗨!来自 <span style="color:#0099cc;">' + referrer.hostname + '</span> 的朋友!';
+ var domain = referrer.hostname.split('.')[1];
+ if (domain == 'baidu') {
+ text = '嗨! 来自 百度搜索 的朋友!<br>欢迎访问<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>';
+ }else if (domain == 'so') {
+ text = '嗨! 来自 360搜索 的朋友!<br>欢迎访问<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>';
+ }else if (domain == 'google') {
+ text = '嗨! 来自 谷歌搜索 的朋友!<br>欢迎访问<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>';
+ }
+ }else {
+ if (window.location.href == home_Path) { //主页URL判断,需要斜杠结尾
+ var now = (new Date()).getHours();
+ if (now > 23 || now <= 5) {
+ text = '你是夜猫子呀?这么晚还不睡觉,明天起的来嘛?';
+ } else if (now > 5 && now <= 7) {
+ text = '早上好!一日之计在于晨,美好的一天就要开始了!';
+ } else if (now > 7 && now <= 11) {
+ text = '上午好!工作顺利嘛,不要久坐,多起来走动走动哦!';
+ } else if (now > 11 && now <= 14) {
+ text = '中午了,工作了一个上午,现在是午餐时间!';
+ } else if (now > 14 && now <= 17) {
+ text = '午后很容易犯困呢,今天的运动目标完成了吗?';
+ } else if (now > 17 && now <= 19) {
+ text = '傍晚了!窗外夕阳的景色很美丽呢,最美不过夕阳红~~';
+ } else if (now > 19 && now <= 21) {
+ text = '晚上好,今天过得怎么样?';
+ } else if (now > 21 && now <= 23) {
+ text = '已经这么晚了呀,早点休息吧,晚安~~';
+ } else {
+ text = '嗨~ 快来逗我玩吧!';
+ }
+ }else {
+ text = '欢迎阅读<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>';
+ }
+ }
+ showMessage(text, 12000);
+ })();
+
+ liveTlakTimer = setInterval(function(){
+ showHitokoto();
+ },15000);
+
+ function showHitokoto(){
+ if(sessionStorage.getItem("Sleepy")!=="1"){
+ if(!AITalkFlag){
+ $.getJSON('https://v1.hitokoto.cn/',function(result){
+ talkValTimer();
+ showMessage(result.hitokoto, 0);
+ });
+ }
+ }else{
+ hideMessage(0);
+ if(sleepTimer_==null){
+ sleepTimer_ = setInterval(function(){
+ checkSleep();
+ },200);
+ }
+ console.log(sleepTimer_);
+ }
+ }
+
+ function checkSleep(){
+ var sleepStatu = sessionStorage.getItem("Sleepy");
+ if(sleepStatu!=='1'){
+ talkValTimer();
+ showMessage('你回来啦~', 0);
+ clearInterval(sleepTimer_);
+ sleepTimer_= null;
+ }
+ }
+
+ function showMessage(text, timeout){
+ if(Array.isArray(text)) text = text[Math.floor(Math.random() * text.length + 1)-1];
+ //console.log('showMessage', text);
+ $('.message').stop();
+ $('.message').html(text);
+ $('.message').fadeTo(200, 1);
+ //if (timeout === null) timeout = 5000;
+ //hideMessage(timeout);
+ }
+ function talkValTimer(){
+ $('#live_talk').val('1');
+ }
+
+ function hideMessage(timeout){
+ //$('.message').stop().css('opacity',1);
+ if (timeout === null) timeout = 5000;
+ $('.message').delay(timeout).fadeTo(200, 0);
+ }
+
+ function initLive2d (){
+ $('#hideButton').on('click', function(){
+ if(AIFadeFlag){
+ return false;
+ }else{
+ AIFadeFlag = true;
+ localStorage.setItem("live2dhidden", "0");
+ $('#landlord').fadeOut(200);
+ $('#open_live2d').delay(200).fadeIn(200);
+ setTimeout(function(){
+ AIFadeFlag = false;
+ },300);
+ }
+ });
+ $('#open_live2d').on('click', function(){
+ if(AIFadeFlag){
+ return false;
+ }else{
+ AIFadeFlag = true;
+ localStorage.setItem("live2dhidden", "1");
+ $('#open_live2d').fadeOut(200);
+ $('#landlord').delay(200).fadeIn(200);
+ setTimeout(function(){
+ AIFadeFlag = false;
+ },300);
+ }
+ });
+ $('#youduButton').on('click',function(){
+ if($('#youduButton').hasClass('doudong')){
+ var typeIs = $('#youduButton').attr('data-type');
+ $('#youduButton').removeClass('doudong');
+ $('body').removeClass(typeIs);
+ $('#youduButton').attr('data-type','');
+ }else{
+ var duType = $('#duType').val();
+ var duArr = duType.split(",");
+ var dataType = duArr[Math.floor(Math.random() * duArr.length)];
+
+ $('#youduButton').addClass('doudong');
+ $('#youduButton').attr('data-type',dataType);
+ $('body').addClass(dataType);
+ }
+ });
+ if(talkAPI!==""){
+ $('#showInfoBtn').on('click',function(){
+ var live_statu = $('#live_statu_val').val();
+ if(live_statu=="0"){
+ return
+ }else{
+ $('#live_statu_val').val("0");
+ $('.live_talk_input_body').fadeOut(500);
+ AITalkFlag = false;
+ showHitokoto();
+ $('#showTalkBtn').show();
+ $('#showInfoBtn').hide();
+ }
+ });
+ $('#showTalkBtn').on('click',function(){
+ var live_statu = $('#live_statu_val').val();
+ if(live_statu=="1"){
+ return
+ }else{
+ $('#live_statu_val').val("1");
+ $('.live_talk_input_body').fadeIn(500);
+ AITalkFlag = true;
+ $('#showTalkBtn').hide();
+ $('#showInfoBtn').show();
+
+ }
+ });
+ $('#talk_send').on('click',function(){
+ var info_ = $('#AIuserText').val();
+ var userid_ = $('#AIuserName').val();
+ if(info_ == "" ){
+ showMessage('写点什么吧!',0);
+ return;
+ }
+ if(userid_ == ""){
+ showMessage('聊之前请告诉我你的名字吧!',0);
+ return;
+ }
+ showMessage('思考中~', 0);
+ $.ajax({
+ type: 'POST',
+ url: talkAPI,
+ data: {
+ "info":info_,
+ "userid":userid_
+ },
+ success: function(res) {
+ if(res.code !== 100000){
+ talkValTimer();
+ showMessage('似乎有什么错误,请和站长联系!',0);
+ }else{
+ talkValTimer();
+ showMessage(res.text,0);
+ }
+ console.log(res);
+ $('#AIuserText').val("");
+ sessionStorage.setItem("live2duser", userid_);
+ }
+ });
+ });
+ }else{
+ $('#showInfoBtn').hide();
+ $('#showTalkBtn').hide();
+
+ }
+ //获取音乐信息初始化
+ var bgmListInfo = $('input[name=live2dBGM]');
+ if(bgmListInfo.length == 0){
+ $('#musicButton').hide();
+ }else{
+ var bgmPlayNow = parseInt($('#live2d_bgm').attr('data-bgm'));
+ var bgmPlayTime = 0;
+ var live2dBGM_Num = sessionStorage.getItem("live2dBGM_Num");
+ var live2dBGM_PlayTime = sessionStorage.getItem("live2dBGM_PlayTime");
+ if(live2dBGM_Num){
+ if(live2dBGM_Num<=$('input[name=live2dBGM]').length-1){
+ bgmPlayNow = parseInt(live2dBGM_Num);
+ }
+ }
+ if(live2dBGM_PlayTime){
+ bgmPlayTime = parseInt(live2dBGM_PlayTime);
+ }
+ var live2dBGMSrc = bgmListInfo.eq(bgmPlayNow).val();
+ $('#live2d_bgm').attr('data-bgm',bgmPlayNow);
+ $('#live2d_bgm').attr('src',live2dBGMSrc);
+ $('#live2d_bgm')[0].currentTime = bgmPlayTime;
+ $('#live2d_bgm')[0].volume = 0.5;
+ var live2dBGM_IsPlay = sessionStorage.getItem("live2dBGM_IsPlay");
+ var live2dBGM_WindowClose = sessionStorage.getItem("live2dBGM_WindowClose");
+ if(live2dBGM_IsPlay == '0' && live2dBGM_WindowClose == '0'){
+ $('#live2d_bgm')[0].play();
+ $('#musicButton').addClass('play');
+ }
+ sessionStorage.setItem("live2dBGM_WindowClose" , '1');
+ $('#musicButton').on('click',function(){
+ if($('#musicButton').hasClass('play')){
+ $('#live2d_bgm')[0].pause();
+ $('#musicButton').removeClass('play');
+ sessionStorage.setItem("live2dBGM_IsPlay",'1');
+ }else{
+ $('#live2d_bgm')[0].play();
+ $('#musicButton').addClass('play');
+ sessionStorage.setItem("live2dBGM_IsPlay",'0');
+ }
+ });
+ window.onbeforeunload = function(){
+ sessionStorage.setItem("live2dBGM_WindowClose" , '0');
+ if($('#musicButton').hasClass('play')){
+ sessionStorage.setItem("live2dBGM_IsPlay",'0');
+ }
+ }
+ document.getElementById('live2d_bgm').addEventListener("timeupdate", function(){
+ var live2dBgmPlayTimeNow = document.getElementById('live2d_bgm').currentTime;
+ sessionStorage.setItem("live2dBGM_PlayTime" , live2dBgmPlayTimeNow );
+ });
+ document.getElementById('live2d_bgm').addEventListener("ended", function(){
+ var listNow = parseInt($('#live2d_bgm').attr('data-bgm'));
+ listNow ++ ;
+ if(listNow > $('input[name=live2dBGM]').length-1){
+ listNow = 0;
+ }
+ var listNewSrc = $('input[name=live2dBGM]').eq(listNow).val();
+ sessionStorage.setItem("live2dBGM_Num",listNow);
+ $('#live2d_bgm').attr('src',listNewSrc);
+ $('#live2d_bgm')[0].play();
+ $('#live2d_bgm').attr('data-bgm',listNow);
+ });
+ document.getElementById('live2d_bgm').addEventListener("error", function(){
+ $('#live2d_bgm')[0].pause();
+ $('#musicButton').removeClass('play');
+ showMessage('音乐似乎加载不出来了呢!',0);
+ });
+ }
+ //获取用户名
+ var live2dUser = sessionStorage.getItem("live2duser");
+ if(live2dUser !== null){
+ $('#AIuserName').val(live2dUser);
+ }
+ //获取位置
+ var landL = sessionStorage.getItem("historywidth");
+ var landB = sessionStorage.getItem("historyheight");
+ if(landL == null || landB ==null){
+ landL = '5px'
+ landB = '0px'
+ }
+ $('#landlord').css('left',landL+'px');
+ $('#landlord').css('bottom',landB + 'px');
+ //移动
+ function getEvent() {
+ return window.event || arguments.callee.caller.arguments[0];
+ }
+ var smcc = document.getElementById("landlord");
+ var moveX = 0;
+ var moveY = 0;
+ var moveBottom = 0;
+ var moveLeft = 0;
+ var moveable = false;
+ var docMouseMoveEvent = document.onmousemove;
+ var docMouseUpEvent = document.onmouseup;
+ smcc.onmousedown = function(){
+ var ent = getEvent();
+ moveable = true;
+ moveX = ent.clientX;
+ moveY = ent.clientY;
+ var obj = smcc;
+ moveBottom = parseInt(obj.style.bottom);
+ moveLeft = parseInt(obj.style.left);
+ if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
+ window.getSelection().removeAllRanges();
+ }
+ document.onmousemove = function(){
+ if(moveable){
+ var ent = getEvent();
+ var x = moveLeft + ent.clientX - moveX;
+ var y = moveBottom + (moveY - ent.clientY);
+ obj.style.left = x + "px";
+ obj.style.bottom = y + "px";
+ }
+ };
+ document.onmouseup = function(){
+ if(moveable){
+ var historywidth = obj.style.left;
+ var historyheight = obj.style.bottom;
+ historywidth = historywidth.replace('px', '');
+ historyheight = historyheight.replace('px', '');
+ sessionStorage.setItem("historywidth", historywidth);
+ sessionStorage.setItem("historyheight", historyheight);
+ document.onmousemove = docMouseMoveEvent;
+ document.onmouseup = docMouseUpEvent;
+ moveable = false;
+ moveX = 0;
+ moveY = 0;
+ moveBottom = 0;
+ moveLeft = 0;
+ }
+ };
+ };
+ }
+ $(document).ready(function() {
+ var AIimgSrc = [
+ home_Path + message_Path + "model/histoire/histoire.1024/texture_00.png",
+ home_Path + message_Path + "model/histoire/histoire.1024/texture_01.png",
+ home_Path + message_Path + "model/histoire/histoire.1024/texture_02.png",
+ home_Path + message_Path + "model/histoire/histoire.1024/texture_03.png"
+ ]
+ var images = [];
+ var imgLength = AIimgSrc.length;
+ var loadingNum = 0;
+ for(var i=0;i<imgLength;i++){
+ images[i] = new Image();
+ images[i].src = AIimgSrc[i];
+ images[i].onload = function(){
+ loadingNum++;
+ if(loadingNum===imgLength){
+ var live2dhidden = localStorage.getItem("live2dhidden");
+ if(live2dhidden==="0"){
+ setTimeout(function(){
+ $('#open_live2d').fadeIn(200);
+ },1300);
+ }else{
+ setTimeout(function(){
+ $('#landlord').fadeIn(200);
+ },1300);
+ }
+ setTimeout(function(){
+ loadlive2d("live2d", message_Path+"model/histoire/model.json");
+ },1000);
+ initLive2d ();
+ images = null;
+ }
+ }
+ }
+ });
+}