var hub = $.connection.drawingHub; hub.connection.url = "https://topsterpush.azurewebsites.net/signalr"; hub.state.id = "40240"; hub.state.name = "1"; $.connection.hub.logging = true; hub.logging = true; var data = []; var buffer = []; var paint = false; var order = 0; var stop = false; var secret = null; var timer = -1; var canvas = document.getElementById("canvas"); canvas.width = 500; canvas.height = 300; var context = canvas.getContext("2d"); function addClick (x, y, dragging) { if(stop){ return; } order++; var item = {x: Math.round(x), y: Math.round(y), d:dragging, o: order}; buffer.push(item); data.push(item); if(buffer.length == 1){ setTimeout(function(){ //alert(JSON.stringify(buffer)); hub.server.add(buffer); buffer.splice(0,buffer.length); }, 100); } } function redraw () { clearCanvas(); for (var i = 0; i < data.length; i++) { context.beginPath(); if (data[i].d && i) { context.moveTo(data[i - 1].x, data[i - 1].y); } else { context.moveTo(data[i].x - 1, data[i].y); } context.lineTo(data[i].x, data[i].y); context.strokeStyle = "#FF0000"; context.lineCap = "round"; context.lineJoin = "round"; context.lineWidth = 3; context.stroke(); } context.closePath(); } function press (e) { var mouseX = (e.changedTouches ? e.changedTouches[0].pageX : e.pageX)- this.offsetLeft, mouseY = (e.changedTouches ? e.changedTouches[0].pageY : e.pageY)- this.offsetTop; paint = true; addClick(mouseX, mouseY, false); redraw(); } function drag (e) { var mouseX = (e.changedTouches ? e.changedTouches[0].pageX : e.pageX)- this.offsetLeft, mouseY = (e.changedTouches ? e.changedTouches[0].pageY : e.pageY)- this.offsetTop; if (paint) { addClick(mouseX, mouseY, true); redraw(); } e.preventDefault(); } function release () { paint = false; redraw(); } function cancel() { paint = false; } canvas.addEventListener("mousedown", press, false); canvas.addEventListener("mousemove", drag, false); canvas.addEventListener("mouseup", release); canvas.addEventListener("mouseout", cancel, false); canvas.addEventListener("touchstart", press, false); canvas.addEventListener("touchmove", drag, false); canvas.addEventListener("touchend", release, false); canvas.addEventListener("touchcancel", cancel, false); function clearCanvas() { context.clearRect(0, 0, canvas.width, canvas.height); } function sortData(a,b){ return a.o-b.o; } hub.client.delta = function(items){ for(var i=0;i"; if(!stop && secret && text.trim().toUpperCase() == secret.trim().toUpperCase()){ stop = true; hub.server.winner(name); } }; hub.client.cleanchat = function(){ document.getElementById("chat").innerHTML = ""; document.getElementById("chatinput").style.visibility = "hidden"; setTimeout(function(){ document.getElementById("chatinput").style.visibility = "visible"; }, 20); }; function enterText(event){ if (event.keyCode == 13){ document.getElementById("submit").click(); } } function escapeHTML (unsafe) { return unsafe.replace(/[&<"']/g, function(m) { switch (m) { case "&": return "&"; case "<": return "<"; case "\"": return """; default: return "'"; } }); } function sendchat(){ var chatinput = document.getElementById("chatinput"); if(chatinput.value){ hub.server.chatText(chatinput.value); chatinput.value = ""; } } function clearDraw(){ if(!stop){ buffer.splice(0,buffer.length); hub.server.clear(); } } hub.client.tryStart = function(winnerName){ if(!winnerName || winnerName && winnerName == hub.state.name){ stop = false; var options = document.getElementById("possible").options; var length = options.length; var random = getRandomInt(0, length-1); secret = options[random].value; document.getElementById("status").innerHTML = "Zeichne folgendes Objekt: " +//TL// ""+secret+""; document.getElementById("deleteButton").style.visibility = "visible"; if(timer == -1){ timer = 60; timerrun(); } } else{ stopGame(); } }; function timerrun(){ if(!stop){ if(timer>0){ timer--; document.getElementById("timerdisp").innerHTML = timer + "s"; setTimeout(timerrun, 1000); } else if(!timer){ hub.server.noWinner(); timer = -1; } } } hub.client.tryStop = function(name){ document.getElementById("status").innerHTML = displayName(name) +" malt. "+//TL// "Was könnte das sein?";//TL// stopGame(); }; hub.client.tryEnd = function(name){ document.getElementById("status").innerHTML = "Gewinner: "+displayName(name);//TL// var oldBg = document.getElementById("borderarea").style.background; document.getElementById("borderarea").style.background = "#80FF80"; setTimeout(function(){ document.getElementById("borderarea").style.background = oldBg; }, 1000); var options = document.getElementById("possible").options; var i; for (i = 0; i < options.length; i++) { if(options[i].value == secret){ document.getElementById("possible").removeChild(document.getElementById("possible").children[i]); break; } } stopGame(); }; function displayName(name){ if(name == hub.state.name){ return "Du";//TL// } return "Spieler "+name;//TL// } function stopGame(){ stop = true; document.getElementById("deleteButton").style.visibility = "hidden"; secret = null; timer = -1; document.getElementById("timerdisp").innerHTML = ""; } function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; } $.connection.hub.start({jsonp:true, transport: "webSockets"}).done(function () { hub.server.register(); }); $.connection.hub.disconnected(function () { location.reload(); });