您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
sdfsdf
- // ==UserScript==
- // @name GLB Canvas Replay Conversion
- // @namespace pbr/canvas
- // @include http://goallineblitz.com/game/replay.pl?game_id=*&pbp_id=*
- // @copyright 2012, pabst
- // @license (CC) Attribution Share Alike; http://creativecommons.org/licenses/by-sa/3.0/
- // @version 12.11.30
- // @description sdfsdf
- // ==/UserScript==
- /*
- *
- * pabst did this 12/11/27+
- *
- *
- */
- unsafeWindow.pause();
- document.getElementById("offense_container").style.visibility = "hidden";
- document.getElementById("defense_container").style.visibility = "hidden";
- document.getElementById("offense_container").style.display = "none";
- document.getElementById("defense_container").style.display = "none";
- var play_data = null;
- var imageData = [];
- if (!window.requestAnimationFrame) {
- requestAnimFrame = (function () {
- return window.requestAnimationFrame ||
- window.webkitRequestAnimationFrame ||
- window.mozRequestAnimationFrame ||
- window.oRequestAnimationFrame ||
- window.msRequestAnimationFrame ||
- function(callback, element) {
- console.log("no request animation frame!!");
- window.setTimeout(callback, 1000 / 20);
- };
- }) ();
- };
- window.setTimeout(
- function() {
- if (unsafeWindow.defaultFrameSpeed != 100) {
- console.log("replays must be set to 10fps for this script to work : "+unsafeWindow.defaultFrameSpeed);
- unsafeWindow.play();
- }
- else {
- main();
- }
- }
- , 100);
- function main() {
- var container = document.getElementById("replay_container")
- container.style.height = "500px";
- container.style.width = "520px";
- var area = document.getElementById("replay_area");
- container.removeChild(area);
- play_data = fixFrames();
- fixButtons();
- initBackground();
- initForeground();
- initOffense();
- initDefense();
- initReplayInfo();
- drawFrame(0,0);
- setTimeout(function() {
- isPlaying = true;
- document.getElementById("pause_button").visibility = "visible";
- document.getElementById("play_button").visibility = "hidden";
- render();
- }, 2500);
- }
- function initBackground() {
- var canvas = document.createElement("canvas");
- canvas.style.position = 'absolute';
- canvas.setAttribute("id","background");
- canvas.setAttribute("width","520px");
- canvas.setAttribute("height","500px");
- var container = document.getElementById("replay_container")
- container.appendChild(canvas);
- var context = canvas.getContext("2d");
- context.save();
- }
- function initForeground() {
- var canvas = document.createElement("canvas");
- canvas.style.position = 'absolute';
- canvas.setAttribute("id","foreground");
- canvas.setAttribute("width","520px");
- canvas.setAttribute("height","500px");
- var container = document.getElementById("replay_container")
- container.appendChild(canvas);
- var context = canvas.getContext("2d");
- context.save();
- }
- function initOffense() {
- var canvas = document.createElement("canvas");
- canvas.style.position = 'absolute';
- canvas.style.top = "20px";
- canvas.setAttribute("id","offense");
- canvas.setAttribute("width","20px");
- canvas.setAttribute("height","460px");
- var container = document.getElementById("replay_container")
- container.appendChild(canvas);
- canvas.addEventListener("click", offenseClicked, false);
- }
- function offenseClicked() {
- renderOffenseLineup();
- }
- function initDefense() {
- var canvas = document.createElement("canvas");
- canvas.style.position = 'absolute';
- canvas.style.left = "500px";
- canvas.style.top = "20px";
- canvas.setAttribute("id","defense");
- canvas.setAttribute("width","20px");
- canvas.setAttribute("height","460px");
- var container = document.getElementById("replay_container")
- container.appendChild(canvas);
- canvas.addEventListener("click", defenseClicked, false);
- }
- function defenseClicked() {
- renderDefenseLineup();
- }
- function initReplayInfo() {
- var canvas = document.createElement("canvas");
- canvas.style.position = 'absolute';
- canvas.setAttribute("id","replayInfo");
- canvas.setAttribute("width","520px");
- canvas.setAttribute("height","20px");
- var container = document.getElementById("replay_container")
- container.appendChild(canvas);
- var canvas = document.createElement("canvas");
- canvas.style.position = 'absolute';
- canvas.style.top = "480px";
- canvas.setAttribute("id","playResults");
- canvas.setAttribute("width","520px");
- canvas.setAttribute("height","20px");
- var container = document.getElementById("replay_container")
- container.appendChild(canvas);
- }
- function getTeamBColor(id) {
- var team = unsafeWindow.ptid[id];
- var position = unsafeWindow.players[id].position;
- var fcolor = unsafeWindow.home_color2+"_border_home";
- var bcolor = unsafeWindow.home_color1;
- if (unsafeWindow.home != team) {
- fcolor = unsafeWindow.away_color2+"_border";
- bcolor = unsafeWindow.away_color1;
- }
- bcolor = bcolor.replace("mid_","medium");
- bcolor = bcolor.replace("_","");
- return bcolor;
- }
- function getTeamFColor(bcolor) {
- var canvas = document.createElement("canvas");
- var context = canvas.getContext("2d");
- context.strokeStyle = bcolor;
- var color = context.strokeStyle.toString().slice(1);
- var r = parseInt(color.slice(0,2), 16);
- var g = parseInt(color.slice(2,4), 16);
- var b = parseInt(color.slice(4,6), 16);
- if ((r+g+b)/3 > 128) {
- return "black";
- }
- else {
- return "white";
- }
- }
- function renderReplayInfo() {
- if (imageData["replayInfo"] == null) {
- var canvas = document.createElement("canvas");
- canvas.setAttribute("width","520px");
- canvas.setAttribute("height","20px");
- var context = canvas.getContext("2d");
- var gradient = context.createLinearGradient(0,0,0,20);
- gradient.addColorStop(0,"rgb(100,100,100)");
- gradient.addColorStop(1,"rgb(40,40,40)");
- context.lineWidth = 2;
- context.fillStyle = gradient;
- context.fillRect(0,0,520,20);
- context.font = "bold 18px sans-serif";
- context.fillStyle = "#ffcc00";
- var info = document.getElementsByTagName("h1")[0].textContent;
- var length = context.measureText(info.toString());
- context.fillText(info.toString(), 260-length.width/2,16);
- var p = play_data[0][1];
- var id = p.id;
- var bcolor = getTeamBColor(id);
- var fcolor = getTeamFColor(bcolor);
- context.lineWidth = 2;
- context.fillStyle = bcolor;
- context.strokeStyle = fcolor;
- context.beginPath();
- context.moveTo(0,0);
- context.lineTo(40, 0);
- context.lineTo(60,20);
- context.lineTo(0,20);
- context.lineTo(0,0);
- context.closePath();
- context.fill();
- context.stroke();
- context.font="bold 16px sans-serif";
- var score = document.getElementById("off_score").textContent;
- var length = context.measureText(score.toString());
- context.fillStyle = fcolor;
- context.fillText(score.toString(), 20-length.width/2,16);
- var p = play_data[0][12];
- var id = p.id;
- var bcolor = getTeamBColor(id);
- var fcolor = getTeamFColor(bcolor);
- context.lineWidth = 2;
- context.fillStyle = bcolor;
- context.strokeStyle = fcolor;
- context.beginPath();
- context.moveTo(520,0);
- context.lineTo(480, 0);
- context.lineTo(460,20);
- context.lineTo(520,20);
- context.lineTo(520,0);
- context.closePath();
- context.fill();
- context.stroke();
- context.font="bold 16px sans-serif";
- var score = document.getElementById("def_score").textContent;
- var length = context.measureText(score.toString());
- context.fillStyle = fcolor;
- context.fillText(score.toString(), 500-length.width/2,16);
- imageData["replayInfo"] = canvas;
- }
- var canvas = document.getElementById("replayInfo");
- var context = canvas.getContext("2d");
- context.drawImage(imageData["replayInfo"],0,0);
- if (imageData["playResults"] == null) {
- var canvas = document.createElement("canvas");
- canvas.setAttribute("width","520px");
- canvas.setAttribute("height","20px");
- var context = canvas.getContext("2d");
- var gradient = context.createLinearGradient(0,0,0,20);
- gradient.addColorStop(0,"rgb(100,100,100)");
- gradient.addColorStop(1,"rgb(40,40,40)");
- context.lineWidth = 2;
- context.fillStyle = gradient;
- context.fillRect(0,0,520,20);
- var size = 14;
- do {
- context.font = "bold "+size+"px sans-serif";
- context.fillStyle = "#ffcc00";
- var info = document.getElementById("outcome_content").textContent;
- var length = context.measureText(info.toString());
- size--;
- }
- while (length.width > 520);
- context.fillText(info.toString(), 260-length.width/2,14);
- imageData["playResults"] = canvas;
- }
- var canvas = document.getElementById("playResults");
- var context = canvas.getContext("2d");
- context.drawImage(imageData["playResults"],0,0);
- }
- function renderOffenseBar(frame, pct, loc) {
- if (imageData["offenseBar"] == null) {
- var canvas = document.createElement("canvas");
- canvas.setAttribute("width","20px");
- canvas.setAttribute("height","480px");
- var context = canvas.getContext("2d");
- var p = play_data[0][1];
- var id = p.id;
- var bcolor = getTeamBColor(id);
- var fcolor = getTeamFColor(bcolor);
- context.lineWidth = 3;
- context.fillStyle = bcolor;
- context.strokeStyle = fcolor;
- context.fillRect(0,0, 20,460);
- context.strokeRect(0,0, 20,460);
- var teamName = document.getElementsByClassName("secondary_container")[0].textContent;
- context.fillStyle = fcolor;
- context.lineWidth=1;
- context.font="bold 14px sans-serif";
- context.save();
- context.rotate(Math.PI/2);
- context.fillText(teamName, 50,-6);
- context.restore();
- imageData["offenseBar"] = canvas;
- }
- var canvas = document.getElementById("offense");
- var context = canvas.getContext("2d");
- context.drawImage(imageData["offenseBar"],0,0);
- }
- var offenseLineupVisible = false;
- function renderOffenseLineup(frame, pct, loc) {
- offenseLineupVisible = !offenseLineupVisible;
- if (offenseLineupVisible == true) {
- var canvas = document.createElement("canvas");
- canvas.setAttribute("id","offenseLineup");
- canvas.setAttribute("width","200px");
- canvas.setAttribute("height","480px");
- canvas.style.position = "absolute";
- canvas.style.left = "20px";
- var context = canvas.getContext("2d");
- var id = unsafeWindow.play_data[0][1].id;
- var team = unsafeWindow.ptid[id];
- var bcolor = getTeamBColor(id);
- var fcolor = getTeamFColor(bcolor);
- context.font="14px sans-serif";
- context.lineWidth = 2;
- context.fillStyle = bcolor;
- context.strokeStyle = fcolor;
- context.fillRect(0,130, 200,500);
- context.strokeRect(0,130, 200,500);
- for (var i=1; i<12; i++) {
- var id = unsafeWindow.play_data[0][i].id;
- var position = unsafeWindow.players[id].position;
- var name = unsafeWindow.players[id].name;
- var x = i;
- var y = 216;
- context.fillStyle = bcolor
- context.fillRect(0,(x-1)*24+y, 200,x*24+y);
- context.strokeRect(0,(x-1)*24+y, 200,x*24+y);
- context.fillStyle = fcolor;
- context.fillText(name, 25, x*24-10+y+3);
- context.drawImage(imageData[id], 5, (x-1)*24+y+4);
- }
- var image = new Image();
- image.src = "http://goallineblitz.com/game/team_pic.pl?team_id="+team;
- var imgcanvas = document.createElement("canvas");
- var imgcontext = imgcanvas.getContext("2d");
- imgcontext.scale(75/image.width, 75/image.height);
- imgcontext.drawImage(image, 0, 0);
- context.drawImage(imgcanvas, 5,135);
- context.font = "64px sans-serif";
- context.fillColor = fcolor;
- var score = document.getElementById("off_score").textContent;
- var length = context.measureText(score.toString());
- context.fillText(score.toString(), 138-length.width/2,200);
- var container = document.getElementById("replay_container");
- container.appendChild(canvas);
- }
- else {
- var lineup = document.getElementById("offenseLineup");
- lineup.parentNode.removeChild(lineup);
- }
- }
- function renderDefenseBar(frame, pct, loc) {
- if (imageData["defenseBar"] == null) {
- var canvas = document.createElement("canvas");
- canvas.setAttribute("width","20px");
- canvas.setAttribute("height","460px");
- var context = canvas.getContext("2d");
- var p = play_data[0][12];
- var id = p.id;
- var bcolor = getTeamBColor(id);
- var fcolor = getTeamFColor(bcolor);
- context.lineWidth = 3;
- context.fillStyle = bcolor;
- context.strokeStyle = fcolor;
- context.fillRect(0,0, 20,460);
- context.strokeRect(0,0, 20,460);
- var teamName = document.getElementsByClassName("secondary_container")[1].textContent;
- context.fillStyle = fcolor;
- context.lineWidth=1;
- context.font="bold 14px sans-serif";
- context.save();
- context.rotate(Math.PI/2);
- context.fillText(teamName, 50,-6);
- context.restore();
- imageData["defenseBar"] = canvas;
- }
- var canvas = document.getElementById("defense");
- var context = canvas.getContext("2d");
- context.drawImage(imageData["defenseBar"],0,0);
- }
- var defenseLineupVisible = false;
- function renderDefenseLineup(frame, pct, loc) {
- defenseLineupVisible = !defenseLineupVisible;
- if (defenseLineupVisible == true) {
- var canvas = document.createElement("canvas");
- canvas.setAttribute("id","defenseLineup");
- canvas.setAttribute("width","200px");
- canvas.setAttribute("height","480px");
- canvas.style.position = "absolute";
- canvas.style.left = "300px";
- var context = canvas.getContext("2d");
- var id = unsafeWindow.play_data[0][13].id;
- var team = unsafeWindow.ptid[id];
- var bcolor = getTeamBColor(id);
- var fcolor = getTeamFColor(bcolor);
- context.font="14px sans-serif";
- context.lineWidth = 2;
- context.fillStyle = bcolor;
- context.strokeStyle = fcolor;
- context.fillRect(0,130, 200,460);
- context.strokeRect(0,130, 200,460);
- for (var i=12; i<23; i++) {
- var id = unsafeWindow.play_data[0][i].id;
- var position = unsafeWindow.players[id].position;
- var name = unsafeWindow.players[id].name;
- var x = i-11;
- var y = 216;
- context.fillStyle = bcolor;
- context.fillRect(0,(x-1)*24+y, 200,x*24+y);
- context.strokeRect(0,(x-1)*24+y, 200,x*24+y);
- context.fillStyle = fcolor;
- context.fillText(name, 25, x*24-10+y+3);
- context.drawImage(imageData[id], 5, (x-1)*24+y+4);
- }
- var image = new Image();
- image.src = "http://goallineblitz.com/game/team_pic.pl?team_id="+team;
- var imgcanvas = document.createElement("canvas");
- var imgcontext = imgcanvas.getContext("2d");
- imgcontext.scale(75/image.width, 75/image.height);
- imgcontext.drawImage(image, 0, 0);
- context.drawImage(imgcanvas, 5,135);
- context.font = "64px sans-serif";
- context.fillColor = fcolor;
- var score = document.getElementById("def_score").textContent;
- var length = context.measureText(score.toString());
- context.fillText(score.toString(), 138-(length.width/2),200);
- var container = document.getElementById("replay_container");
- container.appendChild(canvas);
- }
- else {
- var lineup = document.getElementById("defenseLineup");
- lineup.parentNode.removeChild(lineup);
- }
- }
- function drawFrame(frame, pct) {
- var loc = renderField(frame, pct);
- var canvas = document.getElementById("foreground");
- var context = canvas.getContext("2d");
- context.restore();
- context.save();
- context.clearRect(20, 0, 500, 1160);
- renderFirstDown(frame, pct, loc);
- renderVisionCone(frame, pct, loc);
- renderPlayers(frame, pct, loc);
- renderBall(frame, pct, loc);
- renderIcons(frame, pct, loc);
- renderOffenseBar(frame, pct, loc);
- renderDefenseBar(frame, pct, loc);
- renderReplayInfo();
- }
- var initialTime = null;
- var currentTime = null;
- var isPlaying = false;
- var frameMultiplier = 1;
- function render() {
- if (isPlaying == false) return;
- currentTime = new Date();
- if (initialTime == null) {
- initialTime = currentTime;
- }
- var diff = currentTime - initialTime;
- var frame = diff/100 * frameMultiplier;
- pct = frame - Math.floor(frame);
- frame = Math.floor(frame) % play_data.length;
- try {
- drawFrame(frame, pct);
- lastTime = currentTime;
- var scrubber = 480/play_data.length*(frame+pct);
- document.getElementById("scrubber_handle").style.left = scrubber+"px";
- }
- catch (e) {
- window.console.log(e);
- }
- measureFps();
- if (frame >= play_data.length-1) {
- initialTime = null;
- setTimeout(function() {
- drawFrame(0,0);
- setTimeout(function() { render(); }, 2500);
- }, 2500);
- }
- else {
- requestAnimFrame(render);
- }
- }
- function renderIcons(frame, pct, loc) {
- var canvas = document.getElementById("foreground");
- var context = canvas.getContext("2d");
- for (var p=1; p<play_data[frame].length; p++) {
- var left = play_data[frame];
- if (left[p].icon != null) {
- var right = play_data[Math.min(frame+1, play_data.length-1)];
- var xdiff = right[p].x - left[p].x;
- var ydiff = right[p].y - left[p].y;
- var x = left[p].x + xdiff * pct;
- var y = left[p].y + ydiff * pct + loc - 20;
- var image = new Image();
- image.src = "/images/replay_icons/"+left[p].icon+".gif";
- context.drawImage(image, x-14, y-16);
- }
- }
- }
- function renderVisionCone(frame, pct, loc) {
- var p = play_data[frame][0];
- if ((p.tx != null) && (p.ty != null)) {
- var left = play_data[frame][0];
- var right = play_data[Math.min(frame+1, play_data.length-1)][0];
- var xdiff = right.x - left.x;
- var ydiff = right.y - left.y;
- var ballx = left.x + xdiff * pct - 16;
- var bally = left.y + ydiff * pct + loc;
- var xdiff = right.tx - left.tx;
- var ydiff = right.ty - left.ty;
- var targetx = left.tx + xdiff * pct - 16;
- var targety = left.ty + ydiff * pct + loc - 20;
- var canvas = document.getElementById("foreground");
- var context = canvas.getContext("2d");
- context.drawImage(imageData["target"], targetx+11, targety-5);
- /*
- var gradient = context.createRadialGradient(250,900,0,300,950,1);
- gradient.addColorStop(0,"rgba(200,200,200,1)");
- gradient.addColorStop(1,"rgba(200,200,200,0.0)");
- context.beginPath();
- context.moveTo(250,900);
- context.lineTo(250,950);
- context.lineTo(300,900);
- context.lineTo(250,900);
- context.closePath();
- context.fillStyle = gradient;
- context.strokeStyle = gradient;
- context.fill();
- context.stroke();
- */
- }
- }
- function renderFirstDown(frame, pct, loc) {
- for (var i=1; i<play_data[0].length; i++) {
- var p = play_data[0][i];
- if ((unsafeWindow.players[p.id].position == "C") || (unsafeWindow.players[p.id].position == "LS")) {
- var y = p.y+loc;
- var canvas = document.getElementById("foreground");
- var context = canvas.getContext("2d");
- var dir = document.getElementById("time_ytg");
- var dirText = dir.innerHTML;
- var togo = "";
- if (dirText.indexOf(" inches ") != -1) {
- togo = 0.3;
- }
- else {
- if (dirText.indexOf(" G on ") == -1) {
- var p2 = dirText.indexOf(" & ")+7;
- var p1 = dirText.indexOf(" on ");
- togo = parseFloat(dirText.substring(p2,p1));
- if (dirText.substring(p2-10,p2-9) == "4") {
- context.strokeStyle = "rgb(255,0,0)";
- }
- else {
- context.strokeStyle = "rgb(255,255,0)";
- }
- }
- }
- var dy = togo * 9;
- if (parseFloat(play_data[0][1].y) > parseFloat(play_data[0][0].y)) {
- dy = dy * -1;
- }
- context.beginPath();
- context.moveTo(20,y-dy);
- context.lineTo(500,y-dy);
- context.stroke();
- context.lineWidth = 2;
- context.beginPath();
- context.strokeStyle = "rgb(0,0,255)";
- context.moveTo(20,y);
- context.lineTo(500,y);
- context.stroke();
- break;
- }
- }
- }
- function renderField(frame, pct) {
- var left = play_data[frame];
- var right = play_data[Math.min(frame+1, play_data.length-1)];
- var ydiff = right[0].y - left[0].y;
- var y = left[0].y + ydiff * pct;
- var location = -1 * y + 250;
- location = Math.max(location, -660);
- location = Math.min(location, 0);
- var canvasbg = document.getElementById("background");
- var contextbg = canvasbg.getContext("2d");
- contextbg.drawImage(imageData["field"], 20, 0-location, 480, 500, 20, 0, 480, 500);
- return location;
- }
- function renderPlayers(frame, pct, loc) {
- /*
- for (var f=0; f<play_data.length; f++) {
- for (var p=0; p<play_data[f].length; p++) {
- if (play_data[f][p].icon != null) {
- console.log(f+") "+p+" -- "+play_data[f][p].icon);
- }
- }
- }
- */
- var canvas = document.getElementById("foreground");
- var context = canvas.getContext("2d");
- for (var p=1; p<play_data[frame].length; p++) {
- var left = play_data[frame];
- var right = play_data[Math.min(frame+1, play_data.length-1)];
- var xdiff = right[p].x - left[p].x;
- var ydiff = right[p].y - left[p].y;
- var x = left[p].x + xdiff * pct;
- var y = left[p].y + ydiff * pct + loc - 20;
- if (imageData[left[p].id] != null) {
- context.drawImage(imageData[left[p].id], x, y);
- }
- }
- }
- function renderBall(frame, pct, loc) {
- var left = play_data[frame];
- var right = play_data[Math.min(frame+1, play_data.length-1)];
- var xdiff = right[0].x - left[0].x;
- var ydiff = right[0].y - left[0].y;
- var x = left[0].x + xdiff * pct + 3;
- var y = left[0].y + ydiff * pct + loc - 20;
- var canvasfg = document.getElementById("foreground");
- var contextfg = canvasfg.getContext("2d");
- if ((left[0].z < 5) || (right[0].z < 5)) {
- contextfg.drawImage(imageData["ball"], x, y);
- }
- else {
- if (imageData["rotated-ball"] == null) {
- var mul = 1;
- if (left[0].x < right[0].x) {
- mul = 1;
- }
- else {
- mul = -1;
- }
- if (left[0].y < right[0].y) {
- mul = mul * -1;
- }
- else {
- mul = mul * 1;
- }
- var rotation = mul * Math.atan(Math.abs(left[0].x-right[0].x)/Math.abs(left[0].y-right[0].y));
- rotation += 2*Math.PI;
- var canvas = document.createElement("canvas");
- canvas.setAttribute("width",16);
- canvas.setAttribute("height",16);
- var context = canvas.getContext("2d");
- context.save();
- context.translate(8, 8);
- context.rotate(rotation);
- context.drawImage(imageData["passing-ball"], -8, -8);
- context.restore();
- imageData["rotated-ball"] = canvas;
- }
- contextfg.drawImage(imageData["rotated-ball"], x, y); //fix me!!
- }
- }
- function getFromCanvas(src, w, h) {
- var image = new Image();
- image.src = src;
- var canvas = document.createElement("canvas");
- canvas.setAttribute("width",w);
- canvas.setAttribute("height",h);
- var context = canvas.getContext("2d");
- context.drawImage(image,0,0);
- return canvas;
- }
- function prepareImages() {
- imageData["ball"] = getFromCanvas("http://goallineblitz.com/images/ball.gif", 16, 16);
- imageData["passing-ball"] = getFromCanvas("http://goallineblitz.com/images/passing-ball.gif", 16, 16); //fix me!!
- imageData["kicking-ball"] = getFromCanvas("http://goallineblitz.com/images/kicking-ball.gif", 16, 16); //fix me!!
- imageData["field"] = getFromCanvas("http://goallineblitz.com/images/game/fields/"+unsafeWindow.field+".jpg", 520, 1160);
- var canvas = document.createElement("canvas");
- canvas.setAttribute("width","26");
- canvas.setAttribute("height","26");
- var context = canvas.getContext("2d");
- context.beginPath();
- context.strokeStyle = "rgb(255,255,255)";
- context.lineWidth = 3;
- context.moveTo(13,0);
- context.lineTo(13,26);
- context.moveTo(0,13);
- context.lineTo(26,13);
- context.stroke();
- context.beginPath();
- context.strokeStyle = "rgb(255,0,0)";
- context.lineWidth = 2;
- context.arc(13, 13, 10, 0, 2*Math.PI, false);
- context.closePath();
- context.stroke();
- imageData["target"] = canvas;
- canvas = null;
- var done = [];
- for (var i=1; i<unsafeWindow.play_data[0].length; i++) {
- var p = unsafeWindow.play_data[0][i];
- var id = p.id;
- if (imageData[id] != null) continue;
- var team = unsafeWindow.ptid[id];
- var position = unsafeWindow.players[id].position;
- var fcolor = unsafeWindow.home_color2+"_border_home";
- var bcolor = unsafeWindow.home_color1;
- if (unsafeWindow.home != team) {
- fcolor = unsafeWindow.away_color2+"_border";
- bcolor = unsafeWindow.away_color1;
- }
- var fimage = new Image();
- fimage.src = "http://goallineblitz.com/images/dots/"+fcolor+"/"+position+".gif";
- var bimage = new Image();
- bimage.src = "http://goallineblitz.com/images/dots/"+bcolor+".gif";
- var canvas = document.createElement("canvas");
- canvas.setAttribute("width","16");
- canvas.setAttribute("height","16");
- var context = canvas.getContext("2d");
- if ((bimage.complete == false) || (fimage.complete == false)) {
- if (bimage.complete == false) {
- done.push(fimage.src);
- }
- if (fimage.complete == false) {
- done.push(fimage.src);
- }
- }
- else {
- context.drawImage(bimage,0,0);
- context.drawImage(fimage,0,0);
- imageData[id] = canvas;
- }
- }
- if (done.length > 0) {
- console.log("noooooo greasemonkey, no one would ever want to use worker threads...");
- console.log(done);
- setTimeout(prepareImages, 250);
- }
- }
- function beginPressed() {
- pausePressed();
- initialTime = null;
- currentTime = null;
- drawFrame(0,0);
- }
- function rwPressed() {
- if (isPlaying == true) {
- frameMultiplier = Math.max(frameMultiplier - 0.25, 0);
- console.log(frameMultiplier);
- }
- else {
- currentTime = currentTime.setMilliseconds(currentTime.getMilliseconds() - 100);
- currentTime = new Date(currentTime);
- var diff = currentTime - initialTime;
- var frame = diff/100 * frameMultiplier;
- pct = frame - Math.floor(frame);
- frame = Math.floor(frame) % play_data.length;
- if (frame < 0) frame += play_data.length;
- drawFrame(frame, pct);
- }
- }
- function pausePressed() {
- console.log("pause");
- document.getElementById("pause_button").visibility = "hidden";
- document.getElementById("play_button").visibility = "visible";
- isPlaying = false;
- }
- function playPressed() {
- console.log("play");
- document.getElementById("pause_button").visibility = "visible";
- document.getElementById("play_button").visibility = "hidden";
- isPlaying = true;
- var t = currentTime;
- currentTime = new Date();
- initialTime = currentTime - (t-initialTime);
- render();
- }
- function ffPressed() {
- if (isPlaying == true) {
- frameMultiplier = frameMultiplier + 0.25;
- console.log(frameMultiplier);
- }
- else {
- currentTime = currentTime.setMilliseconds(currentTime.getMilliseconds() + 100);
- currentTime = new Date(currentTime);
- var diff = currentTime - initialTime;
- var frame = diff/100 * frameMultiplier;
- pct = frame - Math.floor(frame);
- frame = Math.floor(frame) % play_data.length;
- drawFrame(frame, pct);
- }
- }
- function endPressed() {
- pausePressed();
- initialTime = null;
- currentTime = null;
- drawFrame(play_data.length-1,0);
- }
- function fixButtons() {
- var buttons = document.getElementsByClassName("button left");
- var begin = buttons[2];
- begin.addEventListener("click",beginPressed);
- var rewind = buttons[3];
- rewind.addEventListener("click",rwPressed);
- var pause = buttons[4];
- pause.addEventListener("click",playPressed);
- var play = buttons[5];
- play.addEventListener("click",pausePressed);
- var ff = buttons[6];
- ff.addEventListener("click",ffPressed);
- var end = buttons[7];
- end.addEventListener("click",endPressed);
- }
- function fixFrames() {
- var stime = new Date();
- var uwpd = new Array();
- for (var i=0; i<unsafeWindow.play_data.length; i++) {
- uwpd.push(new Array());
- }
- var missing = 0;
- for (var p=0; p<unsafeWindow.play_data[0].length; p++) {
- var id = unsafeWindow.play_data[0][p].id;
- for (var cf=0; cf<unsafeWindow.play_data.length; cf++) {
- var found = false;
- for (var i=0; i<unsafeWindow.play_data[cf].length; i++) {
- if (id == unsafeWindow.play_data[cf][i].id) {
- found = true;
- uwpd[cf].push(eval(uneval(unsafeWindow.play_data[cf][i])));
- break;
- }
- }
- if (!found) {
- uwpd[cf].push(eval(uneval(uwpd[cf-1][p])));
- missing++;
- }
- }
- }
- var time = new Date() - stime;
- console.log("uwpd copy ("+missing+" missing): "+time.toFixed(0)+"ms");
- for (var p=1; p<uwpd[0].length; p++) {
- for (var f=uwpd.length-1; f>0; f--) {
- if (uwpd[f][p].icon != null) {
- for (var z=f+1; z<Math.min(uwpd.length, f+8); z++) {
- uwpd[z][p].icon = uwpd[f][p].icon;
- }
- }
- }
- }
- var time = new Date() - stime;
- console.log("uwpd icons: "+time.toFixed(0)+"ms");
- prepareImages();
- return uwpd;
- }
- var frameCounter = 0;
- var lastTime = 0;
- var fps = [];
- function measureFps() {
- frameCounter++;
- if (frameCounter > 300) {
- var now = new Date();
- var delta = now - lastTime;
- fps.push(frameCounter / delta);
- frameCounter = 0;
- lastTime = now;
- }
- if (fps.length == 10) {
- console.log(fps);
- fps = [];
- }
- }