diff options
Diffstat (limited to 'Live2dHistoire/live2d/js/message.js')
-rw-r--r-- | Live2dHistoire/live2d/js/message.js | 482 |
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; + } + } + } + }); +} |