summary refs log tree commit diff
path: root/Live2dHistoire/live2d/js/message.js
diff options
context:
space:
mode:
authormayx2022-01-24 21:27:29 +0800
committermayx2022-01-24 21:27:29 +0800
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;
+				}
+			}
+		}
+	});
+}