Last active
November 27, 2016 01:33
-
-
Save nabbynz/474bfbfb841d9a328418 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name TagPro Texture Pack Manager | |
// @description Drag and drop textures (tiles, boosts, splats, etc) & background wallpapers | |
// @version 3.0.1 | |
// - Made compatible with the "Textures Pack Picker" (in testing) | |
// - Made compatible with new TagPro site design | |
// - Now opens with the "TPM" button in the Nav Bar | |
// - Drag and drop your custom textures (or URL's) from anywhere (web or local). | |
// - Mix & match from pre-made texture packs (including balls!). | |
// - Optional: Ball Spin, Ball Transparency, Ball Overlays & Centre Flair. | |
// - Optional: Different In-Game Wallpaper | |
// - Optional: Different Ball Textures | |
// - Optional: Fading Splats | |
// @include http://tagpro-*.koalabeast.com* | |
// @include http://tangent.jukejuice.com* | |
// @include http://*.newcompte.fr* | |
// @updateURL https://gist.github.com/nabbynz/474bfbfb841d9a328418/raw/TagPro_Texture_Pack_Manager.user.js | |
// @downloadURL https://gist.github.com/nabbynz/474bfbfb841d9a328418/raw/TagPro_Texture_Pack_Manager.user.js | |
// @grant GM_getValue | |
// @grant GM_setValue | |
// @grant GM_deleteValue | |
// @grant GM_addStyle | |
// @author Dr.Holmes & ballparts & nabby | |
// ==/UserScript== | |
console.log('START: ' + GM_info.script.name + ' (v' + GM_info.script.version + ' by ' + GM_info.script.author + ')'); | |
var $uHome = $('#userscript-home'); | |
var $uTop = $('#userscript-top'); | |
var $uBottom = $('#userscript-bottom'); | |
var TPTPR_Overlays = {}; | |
var TPTPR_Packs = {}; | |
setObjects(); | |
var texturePack; | |
var getTexture = function() { | |
var textureDefault = { | |
"balls": "/images/tiles.png", | |
"tiles": "/images/tiles.png", | |
"speedpad": "/images/speedpad.png", | |
"speedpadred": "/images/speedpadred.png", | |
"speedpadblue": "/images/speedpadblue.png", | |
"portal": "/images/portal.png", | |
"splats": "/images/splats.png", | |
"wallpaper": "###", | |
"wallpaperingame": "/images/background.jpg" | |
}; | |
texturePack = $.extend(textureDefault, GM_getValue('texturePack', textureDefault)); | |
}; | |
getTexture(); | |
/* | |
var texs = JSON.stringify({ "name":"custom", | |
"tiles": texturePack.tiles, | |
"speedpad": texturePack.speedpad, | |
"speedpadRed": texturePack.speedpadred, | |
"speedpadBlue": texturePack.speedpadblue, | |
"portal": texturePack.portal, | |
"splats": texturePack.splats | |
} ); | |
//$.removeCookie('textures', { path:'/', domain:tagpro.cookieHost } ); | |
$.cookie("textures", texs, { expires: 36500, path: '/', domain: tagpro.cookieHost }); | |
*/ | |
if (tagpro.loadAssets) { | |
tagpro.loadAssets({ | |
"tiles": texturePack.tiles || '/images/tiles.png', | |
"speedpad": texturePack.speedpad || '/images/speedpad.png', | |
"speedpadRed": texturePack.speedpadred || '/images/speedpadred.png', | |
"speedpadBlue": texturePack.speedpadblue || '/images/speedpadblue.png', | |
"portal": texturePack.portal || '/images/portal.png', | |
"splats": texturePack.splats || '/images/splats.png' | |
}); | |
} | |
tagpro.ready(function() { | |
if (window.location.port) { //we're in a game... | |
var tr = tagpro.renderer; | |
var spinBall = GM_getValue('TPTPR_Spin', false); | |
var spinOverlay = !!(GM_getValue('TPTPR_ShowBallOverlaysMenu', false) && GM_getValue('TPTPR_SpinOverlay', false) && GM_getValue('TPTPR_Overlay', false)); | |
var spinFlair = GM_getValue('TPTPR_SpinFlair', false); | |
var differentBalls = !!(GM_getValue('TPTPR_DifferentBallTexture', false) && texturePack.balls); | |
//$('#textures').text(texs); | |
//Set the wallpaper... | |
var wallpaperType = 'wallpaper'; | |
if (GM_getValue('TPTPR_UseInGameWallpaper', false)) wallpaperType = 'wallpaperingame'; | |
if (texturePack[wallpaperType].indexOf('###') !== 0) { | |
$('html').css('background', '#000 url("'+texturePack[wallpaperType]+'") no-repeat fixed center').css('background-size', (GM_getValue('TPTPR_StretchWallpaper', true) ? 'cover' : 'contain')); | |
} | |
//Game Background Transparency... | |
if (GM_getValue('TPTPR_TransparentBackground', false)) { | |
var oldCanvas = $(tr.canvas); | |
var newCanvas = $('<canvas id="viewport" width="1280" height="800"></canvas>'); | |
oldCanvas.after(newCanvas); | |
oldCanvas.remove(); | |
tr.canvas = newCanvas.get(0); | |
tr.options.transparent = true; | |
tr.renderer = tr.createRenderer(); | |
tr.resizeAndCenterView(); | |
newCanvas.show(); | |
} | |
//Faded Splats... | |
if (GM_getValue('TPTPR_FadingSplats', false)) { | |
tr.drawSplat = function (x, y, team, showDeath, fadeAway) { | |
/* Draws a splat onto the splat layer. | |
* @param x {Number} The x-coordinate | |
* @param y {Number} The y-coordinate | |
* @param team {Number} The team number | |
* @param showDeath {boolean} Whether to show the death animation. */ | |
var startColor, stopColor; | |
if (team === 1) { | |
startColor = "ff0000"; | |
} else { | |
startColor = "0000ff"; | |
} | |
stopColor = "ffffff"; | |
if (showDeath) { | |
if (tr.options.disableParticles) { | |
tr.drawBallPop(x + 19, y + 19, team); | |
} else { | |
tr.startDeathEmitter(startColor, stopColor, x + 19, y + 19); | |
} | |
} | |
fadeAway = true; | |
tr.addSplat(team, x, y, fadeAway); | |
}; | |
} | |
//Ball Overlay... | |
if (GM_getValue('TPTPR_ShowBallOverlaysMenu', false) && GM_getValue('TPTPR_Overlay', false) && TPTPR_Overlays.hasOwnProperty(GM_getValue('TPTPR_Overlay')) ) { | |
var overlay = GM_getValue('TPTPR_Overlay'); | |
var overlayTexture = PIXI.Texture.fromImage(TPTPR_Overlays[overlay].url); | |
tr.TPTPR_CreateOverlay = function(player) { | |
if (!player.sprites.overlay) { | |
player.sprites.overlay = new PIXI.Sprite(overlayTexture); | |
player.sprites.overlay.anchor.x = 0.5; | |
player.sprites.overlay.anchor.y = 0.5; | |
player.sprites.overlay.x = 20; | |
player.sprites.overlay.y = 20; | |
if (overlay === 'sombrero') { //this one just looks better a bit bigger... | |
player.sprites.overlay.width = 50; | |
player.sprites.overlay.height = 50; | |
} | |
player.sprites.ball.addChild(player.sprites.overlay); | |
} | |
}; | |
} | |
//Different Balls, Ball Transparency & Overlay... | |
if (GM_getValue('TPTPR_TransparentBall', 1) < 1 || spinBall || spinOverlay || differentBalls) { | |
if (differentBalls) { | |
var loadDifferentBalls = new PIXI.AssetLoader([texturePack.balls]); | |
var setupDifferentBalls = function() { | |
var texture = PIXI.Texture.fromImage([texturePack.balls]); //will be taken from cache if available | |
var redTexture = new PIXI.Texture(texture, new PIXI.Rectangle(texture.width-80, 0, 40, 40)); | |
var blueTexture = new PIXI.Texture(texture, new PIXI.Rectangle(texture.width-40, 0, 40, 40)); | |
tr.updatePlayerColor = function(player) { | |
var color = player.team == 1 ? "red" : "blue"; | |
var tileId = color + "ball"; | |
if (player.sprites.actualBall.tileId !== tileId) { | |
var teamTexture = player.team === 1 ? redTexture : blueTexture; | |
var baseTexture = tagpro.tiles.getTexture(tileId); | |
var texture = new PIXI.Texture(baseTexture); | |
player.sprites.actualBall.setTexture(texture); | |
player.sprites.actualBall.tileId = tileId; | |
player.sprites.newBall.setTexture(teamTexture); | |
} | |
}; | |
tr.createNewBall = function(player) { | |
if (!player.sprites.newBall) { | |
var teamTexture = player.team === 1 ? redTexture : blueTexture; | |
player.sprites.newBall = new PIXI.Sprite(teamTexture); | |
player.sprites.newBall.anchor.x = 0.5; | |
player.sprites.newBall.anchor.y = 0.5; | |
player.sprites.newBall.x = 20; | |
player.sprites.newBall.y = 20; | |
player.sprites.ball.addChild(player.sprites.newBall); | |
} | |
}; | |
tr.createBallSprite = function(player) { | |
var texture = player.team == 1 ? "redball" : "blueball"; | |
player.sprites.actualBall = tagpro.tiles.draw(player.sprites.ball, texture, {x: 0, y: 0}, null, null, 0.01); | |
player.sprites.actualBall.tileId = texture; | |
tr.createNewBall(player); | |
player.sprites.newBall.alpha = GM_getValue('TPTPR_TransparentBall', 1); | |
player.sprites.newBall.anchor.x = 0.5; | |
player.sprites.newBall.anchor.y = 0.5; | |
player.sprites.newBall.x = 20; | |
player.sprites.newBall.y = 20; | |
if (GM_getValue('TPTPR_ShowBallOverlaysMenu', false) && GM_getValue('TPTPR_Overlay', false) && TPTPR_Overlays.hasOwnProperty(GM_getValue('TPTPR_Overlay')) ) tr.TPTPR_CreateOverlay(player); | |
}; | |
}; | |
loadDifferentBalls.onComplete = setupDifferentBalls; | |
loadDifferentBalls.load(); | |
} else { | |
tr.createBallSprite = function(player) { | |
var texture = player.team == 1 ? "redball" : "blueball"; | |
player.sprites.actualBall = tagpro.tiles.draw(player.sprites.ball, texture, {x: 0, y: 0}, null, null, 0.01); | |
player.sprites.actualBall.tileId = texture; | |
player.sprites.actualBall.alpha = GM_getValue('TPTPR_TransparentBall', 1); | |
player.sprites.actualBall.anchor.x = 0.5; | |
player.sprites.actualBall.anchor.y = 0.5; | |
player.sprites.actualBall.x = 20; | |
player.sprites.actualBall.y = 20; | |
if (GM_getValue('TPTPR_ShowBallOverlaysMenu', false) && GM_getValue('TPTPR_Overlay', false) && TPTPR_Overlays.hasOwnProperty(GM_getValue('TPTPR_Overlay')) ) tr.TPTPR_CreateOverlay(player); | |
}; | |
} | |
} | |
//Center/Spin Flair (from Browncoat's Mod)... | |
if (GM_getValue('TPTPR_ShowBallOverlaysMenu', false) && GM_getValue('TPTPR_CenterFlair', false)) { | |
tr.drawFlair = function(player) { | |
if (player.flair) { | |
if (!player.sprites.flair) { | |
var cacheKey = "flair-" + player.flair.x + "," + player.flair.y; | |
var flairTexture = tr.getFlairTexture(cacheKey, player.flair); | |
player.sprites.flair = new PIXI.Sprite(flairTexture); | |
player.sprites.flair.x = 20; | |
player.sprites.flair.y = 20; | |
//player.sprites.flair.width = 20; //normal size is 16x16 | |
//player.sprites.flair.height = 20; | |
player.sprites.flair.anchor.x = 0.5; | |
player.sprites.flair.anchor.y = 0.5; | |
player.sprites.info.addChild(player.sprites.flair); | |
} | |
if (spinFlair) player.sprites.flair.rotation = player.angle; | |
} | |
if (!player.flair && player.sprites.flair) { | |
player.sprites.info.removeChild(player.sprites.flair); | |
} | |
}; | |
} | |
//Spin... | |
if ( spinBall || spinOverlay ) { | |
var uPSP = tr.updatePlayerSpritePosition; | |
tr.updatePlayerSpritePosition = function(player) { | |
var whichBall = 'actualBall'; | |
if (GM_getValue('TPTPR_DifferentBallTexture', false) && player.sprites.newBall) whichBall = 'newBall'; | |
if (spinBall) player.sprites[whichBall].rotation = player.angle; | |
if (spinOverlay && player.sprites.overlay) player.sprites.overlay.rotation = player.angle; | |
uPSP(player); | |
}; | |
} | |
if (GM_getValue('TPTPR_MoveChatToLeft', false)) { | |
setTimeout(function() { | |
$('#chatHistory').css('left', '10px'); | |
$('#chat').css('left', '10px'); | |
}, 1200); | |
} else { | |
setTimeout(function() { | |
$('#chatHistory').css('left', $('#viewport').position().left + 10); | |
$('#chat').css('left', $('#viewport').position().left + 10); | |
}, 1200); | |
} | |
} else { | |
var WhichPageAreWeOn = function(){ | |
if (window.location.port) { //In a real game | |
return('ingame'); | |
} else if (document.URL.indexOf('/games/find') > 0) { //Joining page | |
return('joining'); | |
} else if ($('#userscript-home').length) { //Chosen server homepage | |
return('server'); | |
} else if (document.URL.indexOf('/profile/') > 0) { | |
if ($('#saveSettings').length) { | |
return('profile'); //Profile page and logged in | |
} else { | |
return('profileNotOurs'); //Profile page, but not our one (or we're logged out) | |
} | |
} else if (document.URL.indexOf('/groups') > 0) { | |
return('groups'); | |
} else if (document.URL.indexOf('/boards') > 0) { | |
return('boards'); | |
} else if (document.URL.indexOf('/maps') > 0) { | |
return('maps'); | |
} else if (document.URL.indexOf('/settings') > 0) { | |
return('settings'); | |
} else if (document.URL.indexOf('/textures') > 0) { | |
return('textures'); | |
} | |
}; | |
var PageLoc = WhichPageAreWeOn(); | |
if ((PageLoc === 'server') || (PageLoc === 'groups') || (PageLoc === 'boards') || (PageLoc === 'maps') || (PageLoc === 'profile') || (PageLoc === 'profileNotOurs')) { //pages to insert the menu into | |
var customTexturePack = GM_getValue('customTexturePack', TPTPR_Packs.mydnd.url); | |
var savedTextures; | |
if (GM_getValue('savedTextures')) { | |
savedTextures = JSON.parse(GM_getValue('savedTextures')); | |
} else { | |
savedTextures = {}; | |
} | |
var image = 'tiles', imageFriendly = 'Tiles'; | |
var randomPup = Math.floor(Math.random()*3); | |
/*-------------------------------------------------------------------------------*/ | |
// Functions... | |
/*-------------------------------------------------------------------------------*/ | |
var handleDrop = function(e) { | |
var data = e.originalEvent.dataTransfer; | |
var URL; | |
if (data.files[0]){ // Handle as a file... | |
var file = data.files[0]; | |
var reader = new FileReader(); | |
reader.onload = function(f){ | |
URL = f.target.result; | |
setTexture(image, URL); | |
saveToCustomTexturePack(image, URL); | |
setTimeout(function() { | |
confirmText('Success - File Saved!', imageFriendly); | |
}, 100); | |
}; | |
reader.readAsDataURL(file); | |
} else { // Handle as a URL... | |
data.items[0].getAsString(function(u){ | |
if (u.indexOf('http') !== 0) u = 'http://' + u; | |
setTexture(image, u); | |
saveToCustomTexturePack(image, u); | |
URL = u; | |
setTimeout(function() { | |
confirmText('Success - URL Saved!', imageFriendly); | |
}, 100); | |
}); | |
} | |
}; | |
/*-------------------------------------------------------------------------------*/ | |
var saveToCustomTexturePack = function(image, url) { | |
customTexturePack[image] = url; | |
GM_setValue('customTexturePack', customTexturePack); | |
}; | |
/*-------------------------------------------------------------------------------*/ | |
var setTexture = function(image, url) { | |
texturePack[image] = url; | |
GM_setValue('texturePack', texturePack); | |
if (image === 'wallpaper') { | |
if (url.indexOf('###') !== 0) { | |
$('html').css('background', '#000 url("'+texturePack[image]+'") no-repeat fixed center').css('background-size', (GM_getValue('TPTPR_StretchWallpaper', true) ? 'cover' : 'contain')); | |
$('#header').css('background', 'none'); | |
$('body').css('background', 'none'); | |
$('footer').css('background', 'none'); | |
} else { | |
confirmText('Custom ' + imageFriendly + ' removed'); | |
} | |
} | |
}; | |
/*-------------------------------------------------------------------------------*/ | |
var img = new Image(); //we're using this to get .width & .height of texture | |
var confirmText = function(header, message) { | |
if (header === undefined) header = 'Done!'; | |
if (message === undefined) message = ''; | |
if (header || message) { | |
$('#TPTPR_Messages').html('<span style="font-size:12px; color:yellow">'+header+'</span><br><span style="font-size:11px; color:white">'+message+'</span>'); | |
} | |
$('#TPTPR_Messages').stop().animate({"opacity":0}, 0); | |
if (header || message) { | |
$('#TPTPR_Messages').html('<span style="font-size:12px; color:yellow">'+header+'</span><br><span style="font-size:11px; color:white">'+message+'</span>'); | |
$('#TPTPR_Messages').stop().animate({"opacity":1}, 200, "swing", function(){ | |
$('#TPTPR_Messages').stop().animate({"null":1}, 3000, function(){ | |
$('#TPTPR_Messages').stop().animate({"opacity":0}, 2000, "swing", function(){ | |
}); | |
}); | |
}); | |
} | |
if (texturePack[image]) { | |
var dropZoneWidth = '100%'; | |
var dropZoneHeight = '40px'; | |
if ((image === 'tiles') || (image === 'splats') || (image === 'wallpaper') || (image === 'wallpaperingame')) dropZoneHeight = '220px'; | |
if (image === 'balls') dropZoneWidth = '80px'; | |
if (texturePack[image].indexOf('###') === 0) { | |
//$('#TPTPR_DropZone').html('').css({ 'background':'gray', 'height':dropZoneHeight }); | |
$('#TPTPR_DropZone').css({'height':'220px', 'width':'100%', 'background':'#a00'}).html('<div style="margin:40px">No custom wallpaper set.<br>Default will be used.</div>'); | |
} else { //image | |
if (image === 'balls') { | |
img.src = texturePack[image]; | |
var texturePosition = (img.width || 640) - 80; | |
$('#TPTPR_DropZone').html('').css({ 'margin':"0 auto", 'background':"url('"+texturePack[image]+"') center no-repeat", 'background-position':"-"+texturePosition+"px 0px", 'width':dropZoneWidth, 'height':dropZoneHeight }); | |
} else { | |
$('#TPTPR_DropZone').html('').css({ 'margin':"0 auto", 'background':"url('"+texturePack[image]+"') center no-repeat", 'background-size':"contain", 'width':dropZoneWidth, 'height':dropZoneHeight }); | |
} | |
} | |
} else { | |
if (image === 'balls') { | |
$('#TPTPR_DropZone').css({'height':'220px', 'width':'100%', 'background':'#a00'}).html('<div style="margin:40px">No File Loaded!<br>(Balls from "Tiles" will be used)</div>'); | |
} else { | |
$('#TPTPR_DropZone').css({'height':'220px', 'width':'100%', 'background':'#a00'}).html('<div style="margin:40px">No File Loaded!<br>(Vanilla defaults will be used)</div>'); | |
} | |
} | |
}; | |
/*-------------------------------------------------------------------------------*/ | |
var createPreview = function(name, type, elementToAppendTo, addNamePlate) { | |
if (type === undefined) type = 'saved'; | |
if (elementToAppendTo === undefined) elementToAppendTo = $('#TPTPR_SavedPacks'); | |
if (addNamePlate === undefined) addNamePlate = true; | |
var textureUrl; | |
var boostTextureUrl; | |
if (type === 'saved') { | |
textureUrl = savedTextures[name].tiles; | |
boostTextureUrl = savedTextures[name].speedpad; | |
} else if (type === 'author') { | |
if (name === 'mydnd') { | |
textureUrl = customTexturePack.tiles; | |
boostTextureUrl = customTexturePack.speedpad; | |
} else { | |
textureUrl = TPTPR_Packs[name].url.tiles; | |
boostTextureUrl = TPTPR_Packs[name].url.speedpad; | |
} | |
} else { | |
textureUrl = texturePack.tiles; | |
boostTextureUrl = texturePack.speedpad; | |
} | |
var $preview = $('<div class="preview" value="'+name+'" title="Load This Texture Pack...">').css({ | |
'position': 'relative', | |
'display': 'inline-block', | |
'margin': '0px', | |
'transform': 'scale(0.8, 0.8)', | |
'border-spacing': '0', | |
'cursor': 'pointer' | |
}); | |
// Create actual preview | |
var previewOutline = { | |
1: { | |
1:'', | |
2:'', | |
3:'', | |
4:'' | |
}, | |
2: { | |
1:'wall1', | |
2:'', | |
3:'', | |
4:'' | |
}, | |
3: { | |
1:'wall2', | |
2:'wallA', | |
3:'pup', | |
4:'' | |
} | |
}; | |
var tile = {x:-520, y:-160}, | |
wall1 = {x:-280, y:-120}, | |
wallA = {x:-80, y:-360}, | |
wall2 = {x:-280, y:-400}, | |
spad = {x:'0px', y:'0px'}, | |
pup = (function(){ | |
var yPosition = -160 - 40 * randomPup; | |
return {x:-480, y: yPosition}; | |
})(), | |
fc = {x:'-560px', y:'0px'}, | |
flag = {x:'-600px', y:'-40px'}; | |
for (var i in previewOutline){ | |
var row = $('<div/>'); | |
if (i == 1 || i == 3) row.css('height','30px'); | |
else row.css('height','40px'); | |
for (var j in previewOutline[i]){ | |
var tilePos = JSON.parse(JSON.stringify(tile)); | |
if (i == 1) tilePos.y += -10; | |
if (j == 1) tilePos.x += -10; | |
tilePos = tilePos.x+'px '+tilePos.y+'px'; | |
var $tile = $('<div></div>').css({ | |
'backgroundImage': 'url('+textureUrl+')', | |
'backgroundPosition': tilePos, | |
'height': 'inherit', | |
'width': '40px', | |
'display': 'table-cell' | |
}); | |
if (i == 1 || i == 3) row.find('.tile').css('backgroundPosition',tilePos.x +' '+ tilePos.y); | |
var $tileImage = $('<div/>').css({ | |
'backgroundImage': 'url('+textureUrl+')', | |
'height': 'inherit', | |
'width': 'inherit' | |
}); | |
var position; | |
switch(previewOutline[i][j]){ | |
case 'wall1': | |
position = JSON.parse(JSON.stringify(wall1)); | |
break; | |
case 'wall2': | |
position = JSON.parse(JSON.stringify(wall2)); | |
break; | |
case 'wallA': | |
position = JSON.parse(JSON.stringify(wallA)); | |
break; | |
case 'pup': | |
position = JSON.parse(JSON.stringify(pup)); | |
break; | |
default: | |
position = {x:40, y:40}; | |
break; | |
} | |
if (j == 1) { | |
position.x += -10; | |
$tile.css('width','30px'); | |
} | |
else if (j == 4) { | |
$tile.css('width','40px'); | |
} | |
position = position.x+'px '+position.y+'px'; | |
$tileImage.css('backgroundPosition', position); | |
if (((i == 2) && (j == 1)) || ((i == 3) && (j == 1)) || ((i == 3) && (j == 2)) || ((i == 3) && (j == 3))) { | |
$tile.append($tileImage); | |
} | |
row.append($tile); | |
} | |
$preview.append(row); | |
} | |
$preview.append($('<div class="flag-carrier"></div>').css({ | |
'backgroundPosition': fc.x +' '+ fc.y, | |
'backgroundImage': 'url('+textureUrl+')', | |
position: 'absolute', | |
width: '40px', | |
height: '40px', | |
top: '37px', | |
left: '35px' | |
})); | |
$preview.find('.flag-carrier').append($('<div></div>').css({ | |
'backgroundPosition': flag.x +' '+ flag.y, | |
'backgroundImage': 'url('+textureUrl+')', | |
position: 'absolute', | |
width: '40px', | |
height: '40px', | |
top: '-32px', | |
left: '13px' | |
})); | |
$preview.append($('<div id="TPTR_Preview_Boost"></div>').css({ | |
'backgroundPosition': spad.x +' '+ spad.y, | |
'backgroundImage': 'url('+boostTextureUrl+')', | |
position: 'absolute', | |
top: '30px', | |
left: '110px', | |
width: '40px', | |
height: '40px' | |
})); | |
// Create name plate | |
if (addNamePlate) { | |
var nameplateCSS = { | |
position: 'absolute', | |
width: '100%', | |
zIndex: '3', | |
backgroundColor: '#000000', | |
bottom: '-14px', | |
fontSize: '11px', | |
padding: '1px 0px' | |
}; | |
var $nameplate = $('<div class="nameplate"></div>').css(nameplateCSS); | |
$nameplate.append($('<span/>').css('margin','0px 10px').text(name)); | |
$preview.append($nameplate); | |
} | |
// Delete button | |
var deleteCSS = { | |
position: 'absolute', | |
color: '#ffffff', | |
top: '4px', | |
right: '4px', | |
fontWeight: 'bold', | |
fontSize: '12px', | |
opacity: '0.3', | |
cursor: 'pointer', | |
textDecoration: 'none', | |
zIndex: '2', | |
backgroundColor:'red', | |
borderRadius: '50%', | |
textAlign: 'center', | |
width: '15px', | |
height: '15px' | |
}; | |
var $delete = $('<div class="delete-preview" title="Delete This Saved Pack"></div>').css(deleteCSS).text('x'); | |
$delete.hover(function(){ | |
$(this).css('opacity', '1'); | |
}, function(){ | |
$(this).css('opacity', '0.3'); | |
}); | |
$preview.prepend($delete); | |
// Append | |
$(elementToAppendTo).prepend($preview); | |
}; | |
/*-------------------------------------------------------------------------------*/ | |
// Build the menu... | |
/*-------------------------------------------------------------------------------*/ | |
// Append components | |
$('.nav').find('ul').append('<li><a id="TPTPR_MenuButton" href="javascript:void(0)"><span style="border-bottom:1px dotted;" title="Show Texture Pack Manager Menu">TPM</span></a></li>'); | |
$('#TPTPR_MenuButton').after('<div id="TPTPR_Container" style="display:flex; flex-flow: row wrap; position:absolute; margin:0 0 0 -200px; padding:3px; text-align:center; width:546px; line-height:1.1; background-color:#DADFE1; border-radius:5px; -webkit-user-select:none; z-index:100"></div>'); | |
var $TPTPR_Container = $('#TPTPR_Container'); | |
$TPTPR_Container.append('<div id="TPTPR_Heading" style="width:100%; color:goldenrod; background:rebeccapurple; font-size:16px; padding:3px; border-radius:5px 5px 0 0; font-weight:bold; text-shadow:1px 1px 1px #000;">TagPro Texture Pack Manager <span style="color:#ccc; font-size:10px; font-style:italic; font-weight:normal;">v'+GM_info.script.version+'</span></div>'); | |
$TPTPR_Container.append('<div id="TPTPR_Left" style="width:200px"></div>'); | |
$TPTPR_Container.append('<div id="TPTPR_Right" style="margin:0px 10px 10px; width:320px"></div>'); | |
var $TPTPR_Right = $('#TPTPR_Right'); | |
$TPTPR_Container.append('<div id="TPTPR_ExitX" style="position:absolute; top:5px; right:5px; color:black; background:white; font-weight:bold; font-size:16px; width:19px; border:1px solid black; opacity:0.4; cursor:pointer; z-index:2">x</div>'); | |
$('#TPTPR_Left').append('<table id="TPTPR_Left_Inner" style="width:100%; color:white; background:#444; font-size:13px; border:1px solid black; border-spacing:1px; border-radius:7px"></table>'); | |
var $TPTPR_Left_Inner = $('#TPTPR_Left_Inner'); | |
$TPTPR_Left_Inner.append('<tr><th id="TPTPR_TextureButton_tiles" class="TPTPR_TextureButton" value="tiles"><span>Tiles</span></th></tr>'); | |
$TPTPR_Left_Inner.append('<tr><th id="TPTPR_TextureButton_speedpad" class="TPTPR_TextureButton" value="speedpad"><span>Speedpad</span></th></tr>'); | |
$TPTPR_Left_Inner.append('<tr><th id="TPTPR_TextureButton_speedpadred" class="TPTPR_TextureButton" value="speedpadred"><span>Speedpad Red</span></th></tr>'); | |
$TPTPR_Left_Inner.append('<tr><th id="TPTPR_TextureButton_speedpadblue" class="TPTPR_TextureButton" value="speedpadblue"><span>Speedpad Blue</span></th></tr>'); | |
$TPTPR_Left_Inner.append('<tr><th id="TPTPR_TextureButton_portal" class="TPTPR_TextureButton" value="portal"><span>Portal</span></th></tr>'); | |
$TPTPR_Left_Inner.append('<tr><th id="TPTPR_TextureButton_splats" class="TPTPR_TextureButton" value="splats"><span>Splats</span></th></tr>'); | |
$TPTPR_Left_Inner.append('<tr><td class="TPTPR_Spacer" style="background:#fff"></td></tr>'); | |
$TPTPR_Left_Inner.append('<tr><td style="background:#666"><div id="TPTPR_HideShowPacks" class="TPTPR_MenuSliderButton" title="Show/Hide">⇩ Texture Packs ⇩</div><div id="TPTPR_TexturePacks" style="display:flex; flex-wrap:wrap; justify-content:center; font-size:11px; overflow:hidden"></div></td></tr>'); | |
var $TPTPR_TexturePacks = $('#TPTPR_TexturePacks'); | |
$TPTPR_Left_Inner.append('<tr><td class="TPTPR_Spacer" style="background:#fff"></td></tr>'); | |
$TPTPR_Left_Inner.append('<tr><td id="TPTPR_Options" style="background:#888; font-size:11px">' + | |
'<label><input type="checkbox"'+(GM_getValue('TPTPR_Spin', false) ? ' checked' : '')+' id="TPTPR_Spin">Ball Spin</label><br>' + | |
'<label><input type="range" id="TPTPR_TransparentBall" value="'+(GM_getValue('TPTPR_TransparentBall', 1)*100)+'" min="0" max="100"></label><div style="color:#ddd">Ball Transparency: <span id="TPTPR_TransparentBallValue">'+(GM_getValue('TPTPR_TransparentBall', 1))+'</span></div>' + | |
'<label title="Override the balls texture in "Tiles""><input type="checkbox"'+(GM_getValue('TPTPR_DifferentBallTexture', false) ? ' checked' : '')+' id="TPTPR_DifferentBallTexture">Use Different Ball Texture</label><br>' + | |
'<label title="Splats will fade out in 5 seconds"><input type="checkbox"'+(GM_getValue('TPTPR_FadingSplats', false) ? ' checked' : '')+' id="TPTPR_FadingSplats">Use Fading Splats</label><br>' + | |
'<label title="The black background behind the map will be transparent"><input type="checkbox"'+(GM_getValue('TPTPR_TransparentBackground', false) ? ' checked' : '')+' id="TPTPR_TransparentBackground">Transparent Game Background</label><br>' + | |
'<label><input type="checkbox"'+(GM_getValue('TPTPR_UseInGameWallpaper', false) ? ' checked' : '')+' id="TPTPR_UseInGameWallpaper">Use Different In-Game Wallpaper</label><br>' + | |
'<label><input type="checkbox"'+(GM_getValue('TPTPR_StretchWallpaper', true) ? ' checked' : '')+' id="TPTPR_StretchWallpaper">Stretch Wallpaper to Fit</label><br>' + | |
'<label title="Default position is inside game window"><input type="checkbox"'+(GM_getValue('TPTPR_MoveChatToLeft', false) ? ' checked' : '')+' id="TPTPR_MoveChatToLeft">Force Chat to Left of Screen</label><br>' + | |
'<label><input type="checkbox"'+(GM_getValue('TPTPR_ShowBallOverlaysMenu', false) ? ' checked' : '')+' id="TPTPR_ShowBallOverlaysMenu">Enable Ball Overlays</label><br>' + | |
'</td></tr>'); | |
GM_addStyle('#TPTPR_Options input { margin:2px 0 0; }'); | |
GM_addStyle('#TPTPR_Options label:hover { color:chartreuse; }'); | |
$TPTPR_Left_Inner.append('<tr class="TPTPR_BallOverlaysMenu" style="display:none"><td class="TPTPR_Spacer" style="background:#fff"></td></tr>'); | |
$TPTPR_Left_Inner.append('<tr class="TPTPR_BallOverlaysMenu" style="display:none"><td style="background:#aaa"><div id="TPTPR_HideShowBallOverlays" class="TPTPR_MenuSliderButton" title="Show/Hide">⇩ Ball Overlays ⇩</div><div id="TPTPR_BallOverlays" style="display:flex; flex-wrap:wrap; justify-content:center; font-size:11px; color:#444; overflow:hidden"></div></td></tr>'); | |
$TPTPR_Left_Inner.append('<tr><td class="TPTPR_Spacer" style="background:#fff"></td></tr>'); | |
$TPTPR_Left_Inner.append('<tr><th id="TPTPR_TextureButton_balls" class="TPTPR_TextureButton" value="balls" style="cursor:pointer'+(GM_getValue('TPTPR_DifferentBallTexture', false) ? '' : '; display:none')+'" title="This texture will override the balls texture in "Tiles""><span>Balls</span></th></tr>'); | |
$TPTPR_Left_Inner.append('<tr><th id="TPTPR_TextureButton_wallpaper" value="wallpaper"><span>Wallpaper</span></th></tr>'); | |
$TPTPR_Left_Inner.append('<tr><th id="TPTPR_TextureButton_wallpaperingame" value="wallpaperingame" style="cursor:pointer'+(GM_getValue('TPTPR_UseInGameWallpaper', false) ? '' : '; display:none')+'"><span>Game Wallpaper</span></th></tr>'); | |
GM_addStyle('#TPTPR_Container th { cursor:pointer; background:#444 }'); | |
GM_addStyle('#TPTPR_Container th:hover { cursor:pointer; background:#999 }'); | |
$TPTPR_Right.append('<div style="font-size:13px; color:black; font-weight:bold">In-Game Texture</div><div style="font-size:10px; color:black; font-style:italic">(this texture will always be used for games)</div>'); | |
$TPTPR_Right.append('<div id="TPTPR_DropZone_Outer" style="display:flex; align-items:center; height:220px; border:2px dotted silver;"><div id="TPTPR_DropZone" style="width:100%"></div></div>'); | |
$TPTPR_Right.append('<div id="TPTPR_Messages" style="display:inline-block; margin:5px auto; padding:0 10px; font-weight:bold; background:#c00; border-radius:8px;"> </div>'); | |
$TPTPR_Right.append('<div><div id="TPTPR_PacksHeading" class="TPTPR_MenuSliderButton" title="Show/Hide">⇩ My Saved Texture Packs ⇩</div></div>'); | |
$('#TPTPR_PacksHeading').after('<div id="TPTPR_SavedPacks" style="position:relative; display:'+(Object.keys(savedTextures).length <= 2 ? 'inline-block' : 'none')+'; background-color:#ccc; height:auto; width:320px; border-bottom:3px solid gray; border-radius:0px 0px 5px 5px"></div>'); | |
$('#TPTPR_SavedPacks').append('<div id="TPTR_addNewPack" title="Save Current Texture Set" style="margin:10px auto; width:80px; opacity:0.5; font-size:40px; color:#7f8c8d; background:#ccc; border: 1px dashed black; border-radius:10px; cursor:pointer">+</div>'); | |
GM_addStyle('.TPTPR_MenuSliderButton { font-size:12px; color:lightgrey; background:rebeccapurple; padding:1px 5px; border-radius:5px; cursor:pointer; }'); | |
GM_addStyle('.TPTPR_MenuSliderButton:hover { color:chartreuse }'); | |
$('#TPTPR_Container').hide(0); | |
//Pre-made texture packs... | |
$.each(TPTPR_Packs, function(key, value) { | |
$TPTPR_TexturePacks.append('<span id="'+key+'" class="TPTPR_TexturePacksItem" title="By '+value.author+'">'+value.displayname+'</span>'); | |
if (key === 'vanilla') { | |
$('#'+key).addClass('TPTPR_SpecialPack'); | |
} else if (key === 'mydnd') { | |
$('#'+key).addClass('TPTPR_SpecialPack'); | |
$TPTPR_TexturePacks.append('<div style="width:100%"></div>'); | |
} | |
}); | |
$TPTPR_TexturePacks.append('<div style="width:100%"></div>'); | |
$TPTPR_TexturePacks.append('<label title="Uncheck to only load individual textures (like speedpad, splats, etc)" style="color:chartreuse"><input type="checkbox"'+(GM_getValue('TPTPR_CompletePack', true) ? ' checked' : '') + ' id="TPTPR_CompletePack">Load Complete Pack?</label>'); | |
GM_addStyle('.TPTPR_TexturePacksItem { margin:1px 4px; padding:0 3px; background:#fff; color:#777; border-radius:6px; cursor:default }'); | |
GM_addStyle('.TPTPR_TexturePacksItem:hover { background:firebrick; color:#eee }'); | |
GM_addStyle('.TPTPR_SpecialPack { font-style:italic; }'); | |
//Ball Overlays... | |
$.each(TPTPR_Overlays, function(key, value) { | |
$('#TPTPR_BallOverlays').append('<label class="TPTPR_BallOverlaysItem" id="'+key+'"><input type="radio" class="TPTPR_BallOverlaysItem" name="TPTPR_BallOverlaysItem"'+(key===GM_getValue('TPTPR_Overlay', false)?' checked':'')+'>'+value.displayname+'</input></label>'); | |
}); | |
$('#TPTPR_BallOverlays').append('<br><label style="width:100%; color:darkslategray"><input type="checkbox"' + (GM_getValue('TPTPR_SpinOverlay', false) ? ' checked' : '') + ' id="TPTPR_SpinOverlay">Spin Overlay</label>'); | |
$('#TPTPR_BallOverlays').append('<br><label style="width:100%; color:darkslategray"><input type="checkbox"' + (GM_getValue('TPTPR_CenterFlair', false) ? ' checked' : '') + ' id="TPTPR_CenterFlair">Center Flair in Ball</label>'); | |
$('#TPTPR_BallOverlays').append('<br><label style="width:100%; color:darkslategray"><input type="checkbox"' + (GM_getValue('TPTPR_SpinFlair', false) ? ' checked' : '') + (GM_getValue('TPTPR_CenterFlair', false) ? '' : ' disabled') + ' id="TPTPR_SpinFlair">Spin Flair with Ball</label>'); | |
$('#TPTPR_BallOverlays').hide(0); | |
if (GM_getValue('TPTPR_ShowBallOverlaysMenu', false)) $('.TPTPR_BallOverlaysMenu').show(0); | |
GM_addStyle('input.TPTPR_BallOverlaysItem { margin:0 0 0 4px }'); | |
// Add saved texture previews... | |
$.each(savedTextures, function(key, value) { | |
createPreview(key); | |
}); | |
//Set the wallpaper... | |
if (texturePack.wallpaper.indexOf('###') !== 0) { | |
if (texturePack.wallpaper.indexOf('#') === 0) { //legacy - no longer used | |
$('html').css('background', '#000'); | |
} else { | |
$('html').css('background', '#000 url("'+texturePack.wallpaper+'") no-repeat fixed center').css('background-size', (GM_getValue('TPTPR_StretchWallpaper', true) ? 'cover' : 'contain')); | |
} | |
$('#header').css('background', 'none'); | |
$('body').css('background', 'none'); | |
$('footer').css('background', 'none'); | |
} | |
/*-------------------------------------------------------------------------------*/ | |
// Bind events... | |
/*-------------------------------------------------------------------------------*/ | |
$('#TPTPR_MenuButton').on('click', function() { | |
$('#TPTPR_Container').slideToggle(400); | |
}); | |
$('#TPTPR_Container').find('table th').click(function(){ | |
$('#TPTPR_Left_Inner th').css('color', '#fff'); | |
$(this).css('color', '#7e0'); | |
image = $(this).attr('value'); | |
imageFriendly = $(this).text(); | |
if ((image === 'wallpaper') || (image === 'wallpaperingame')) $('#TPTPR_DropZone').prop('title', 'Double-click to reset'); | |
else $('#TPTPR_DropZone').prop('title', ''); | |
setTimeout(function() { | |
confirmText(imageFriendly); | |
}, 50); | |
}); | |
//Exit 'X'... | |
$('#TPTPR_ExitX').hover(function(){ | |
$(this).css('opacity', '0.8'); | |
}, function(){ | |
$(this).css('opacity', '0.4'); | |
}).click(function(){ | |
$(this).parent().slideUp(); | |
}); | |
//My Saved Packs... | |
$('#TPTPR_PacksHeading').click(function(){ | |
if ($('#TPTPR_SavedPacks').is(':visible')) { | |
$('#TPTPR_SavedPacks').slideUp(400, function() { | |
$('#TPTPR_PacksHeading').text('⇩ My Saved Texture Packs ⇩'); | |
}); | |
} else { | |
if ((image === 'wallpaper') || (image === 'wallpaperingame')) { | |
image = 'tiles'; | |
$('#TPTPR_Left_Inner').find('th').css('color', '#fff'); | |
$('#TPTPR_Container').find('table th:eq(0)').css('color', '#7e0'); | |
confirmText(''); | |
} | |
$('#TPTPR_SavedPacks').slideDown(400, function() { | |
$('#TPTPR_PacksHeading').text('⇧ My Saved Texture Packs ⇧'); | |
}); | |
} | |
}); | |
$('#TPTPR_SavedPacks').on('click', '.preview', function(){ | |
var textureName = $(this).attr('value'); | |
var pack = savedTextures[textureName]; | |
for (var i in pack){ | |
texturePack[i] = pack[i]; | |
setTexture(i, pack[i]); | |
$('#TPTPR_TextureButton_'+i).children('span').fadeOut(200).fadeIn(600); | |
} | |
confirmText('Saved Texture Pack Loaded', '"'+textureName+'"'); | |
}); | |
$('#TPTPR_SavedPacks').on('mouseenter', '.preview', function(){ | |
$(this).css('opacity', '0.7'); | |
}).on('mouseleave', '.preview', function(){ | |
$(this).css('opacity', '1'); | |
}); | |
$('#TPTPR_SavedPacks').on('click', '.delete-preview', function(e){ | |
e.stopPropagation(); | |
e.preventDefault(); | |
var confirmDelete = confirm('Delete saved texture pack?'); | |
if (confirmDelete) { | |
var preview = $(this).parent(); | |
preview.fadeOut(function(){ | |
delete savedTextures[preview.attr('value')]; | |
preview.remove(); | |
GM_setValue('savedTextures', JSON.stringify(savedTextures)); | |
}); | |
} | |
}); | |
$('#TPTR_addNewPack').click(function(){ | |
var name = prompt('Texture pack name:'); | |
if (name) { | |
var texturePackTemp = JSON.parse(JSON.stringify(texturePack)); | |
delete texturePackTemp.wallpaper; | |
delete texturePackTemp.wallpaperingame; | |
savedTextures[name] = texturePackTemp; | |
if ((JSON.stringify(savedTextures)*2/1024)/1024 > 30) { | |
alert('Storage limit exceeded.'); | |
delete savedTextures[name]; | |
} | |
else { | |
GM_setValue('savedTextures', JSON.stringify(savedTextures)); | |
createPreview(name); | |
} | |
} | |
}).hover(function(){ | |
$(this).css('opacity', '0.8'); | |
}, function(){ | |
$(this).css('opacity', '0.5'); | |
}); | |
//Options... | |
$('#TPTPR_Spin').on('click', function() { | |
GM_setValue('TPTPR_Spin', $(this).is(':checked')); | |
confirmText('Ball Spin: ' + ($(this).is(':checked') ? 'Enabled' : 'Disabled')); | |
}); | |
$('#TPTPR_TransparentBall').on('input', function() { | |
$('#TPTPR_TransparentBallValue').text( (this.value / 100).toFixed(2) ); | |
}); | |
$('#TPTPR_TransparentBall').on('change', function() { | |
GM_setValue('TPTPR_TransparentBall', (this.value / 100).toFixed(2)); | |
}); | |
$('#TPTPR_DifferentBallTexture').on('click', function() { | |
GM_setValue('TPTPR_DifferentBallTexture', $(this).is(':checked')); | |
if ($(this).is(':checked')) { | |
$('#TPTPR_TextureButton_balls').fadeIn(400); | |
$('#TPTPR_TextureButton_balls').trigger('click'); | |
} else { | |
$('#TPTPR_TextureButton_balls').fadeOut(400); | |
if (image === 'balls') $('#TPTPR_TextureButton_tiles').trigger('click'); | |
} | |
}); | |
$('#TPTPR_FadingSplats').on('click', function() { | |
GM_setValue('TPTPR_FadingSplats', $(this).is(':checked')); | |
confirmText('Fading Splats: ' + ($(this).is(':checked') ? 'Enabled' : 'Disabled')); | |
}); | |
$('#TPTPR_TransparentBackground').on('click', function() { | |
GM_setValue('TPTPR_TransparentBackground', $(this).is(':checked')); | |
confirmText('Game Background Transparency: ' + ($(this).is(':checked') ? 'Enabled' : 'Disabled')); | |
}); | |
$('#TPTPR_UseInGameWallpaper').on('click', function() { | |
GM_setValue('TPTPR_UseInGameWallpaper', $(this).is(':checked')); | |
$('#TPTPR_TextureButton_wallpaperingame').fadeToggle(400); | |
confirmText('Different Wallpaper In Game: ' + ($(this).is(':checked') ? 'Enabled' : 'Disabled')); | |
}); | |
$('#TPTPR_StretchWallpaper').on('click', function() { | |
GM_setValue('TPTPR_StretchWallpaper', $(this).is(':checked')); | |
$('html').css('background', '#000 url("'+texturePack.wallpaper+'") no-repeat fixed center').css('background-size', (GM_getValue('TPTPR_StretchWallpaper') ? 'cover' : 'contain')); | |
confirmText('Stretch Wallpaper: ' + ($(this).is(':checked') ? 'Enabled' : 'Disabled')); | |
}); | |
$('#TPTPR_MoveChatToLeft').on('click', function() { | |
GM_setValue('TPTPR_MoveChatToLeft', $(this).is(':checked')); | |
confirmText('Move Chat to Left: ' + ($(this).is(':checked') ? 'Enabled' : 'Disabled')); | |
}); | |
$('#TPTPR_ShowBallOverlaysMenu').on('click', function() { | |
GM_setValue('TPTPR_ShowBallOverlaysMenu', $(this).is(':checked')); | |
$('.TPTPR_BallOverlaysMenu').fadeToggle(600); | |
confirmText('Ball Overlays: ' + ($(this).is(':checked') ? 'Enabled' : 'Disabled')); | |
}); | |
$('#TPTPR_CenterFlair').on('click', function() { | |
GM_setValue('TPTPR_CenterFlair', $(this).is(':checked')); | |
if ($(this).is(':checked')) { | |
$('#TPTPR_SpinFlair').prop('disabled', false); | |
} else { | |
$('#TPTPR_SpinFlair').prop('disabled', true); | |
} | |
confirmText('Center Flair: ' + ($(this).is(':checked') ? 'Enabled' : 'Disabled')); | |
}); | |
$('#TPTPR_SpinFlair').on('click', function() { | |
GM_setValue('TPTPR_SpinFlair', $(this).is(':checked')); | |
confirmText('Spin Flair: ' + ($(this).is(':checked') ? 'Enabled' : 'Disabled')); | |
}); | |
// Get Texture Packs... | |
$TPTPR_TexturePacks.hide(0); | |
$('#TPTPR_HideShowPacks').on('click', function() { | |
if ($TPTPR_TexturePacks.is(':visible')) { | |
$TPTPR_TexturePacks.slideUp(400, function() { | |
$('#TPTPR_HideShowPacks').text('⇩ Texture Packs ⇩'); | |
}); | |
} else { | |
$TPTPR_TexturePacks.slideDown(400, function() { | |
$('#TPTPR_HideShowPacks').text('⇧ Texture Packs ⇧'); | |
}); | |
if ((image === 'wallpaper') || (image === 'wallpaperingame')) { | |
image = 'tiles'; | |
$('#TPTPR_Container table th').css('color', '#fff'); | |
$('#TPTPR_Container').find('table th:eq(0)').css('color', '#7e0'); | |
confirmText(''); | |
} | |
} | |
}); | |
$('#TPTPR_TexturePacks').find('.TPTPR_TexturePacksItem').hover(function() { | |
$('#TPTPR_PackPreview').remove(); | |
if ((image !== 'wallpaper') && (image !== 'wallpaperingame')) { | |
var width = '300px', height = '40px'; | |
if ((image === 'tiles') || (image === 'splats')) height = '200px'; | |
if (image === 'balls') width = '80px'; | |
if (GM_getValue('TPTPR_CompletePack', true)) { | |
$('#'+this.id).after('<div id="TPTPR_PackPreview" style="position:absolute; display:inline-block; top:'+($(this).position().top+13)+'px; left:'+$(this).position().left+'px; padding:5px 10px; background:white; border:2px dashed purple; border-radius:5px; z-index:9999;"></div>'); | |
createPreview(this.id, 'author', '#TPTPR_PackPreview', false); | |
} else { | |
var texturePosition; | |
if (this.id === 'mydnd') { | |
if (image === 'balls') { | |
img.src = customTexturePack.balls; | |
texturePosition = (img.width || 640) - 80; | |
$('#'+this.id).after('<div id="TPTPR_PackPreview" style="position:absolute; width:300px; z-index:9999; width:'+width+'; height:'+height+'; border:2px solid black; border-radius:5px; background:#fff url(\''+customTexturePack.balls+'\') center no-repeat; background-position:-'+texturePosition+'px 0;"></div>'); | |
} else { | |
$('#'+this.id).after('<div id="TPTPR_PackPreview" style="position:absolute; width:300px; z-index:9999; width:'+width+'; height:'+height+'; border:2px solid black; border-radius:5px; background:#fff url(\''+customTexturePack[image]+'\') center no-repeat; background-size:contain;"></div>'); | |
} | |
} else { | |
if (image === 'balls') { | |
img.src = TPTPR_Packs[this.id].url.tiles; | |
texturePosition = (img.width || 640) - 80; | |
$('#'+this.id).after('<div id="TPTPR_PackPreview" style="position:absolute; width:300px; z-index:9999; width:'+width+'; height:'+height+'; border:2px solid black; border-radius:5px; background:#fff url(\''+TPTPR_Packs[this.id].url.tiles+'\') center no-repeat; background-position:-'+texturePosition+'px 0;"></div>'); | |
} else { | |
$('#'+this.id).after('<div id="TPTPR_PackPreview" style="position:absolute; width:300px; z-index:9999; width:'+width+'; height:'+height+'; border:2px solid black; border-radius:5px; background:#fff url(\''+TPTPR_Packs[this.id].url[image]+'\') center no-repeat; background-size:contain;"></div>'); | |
} | |
} | |
} | |
} | |
}, function() { | |
$('#TPTPR_PackPreview').remove(); | |
}); | |
$('#TPTPR_CompletePack').on('click', function() { | |
GM_setValue('TPTPR_CompletePack', $(this).is(':checked')); | |
}); | |
$('#TPTPR_TexturePacks').find('.TPTPR_TexturePacksItem').on('click', function() { | |
$('#TPTPR_PackPreview').remove(); | |
if (this.id === 'vanilla') { | |
if (GM_getValue('TPTPR_CompletePack', true)) { | |
$.each(texturePack, function(key, value) { | |
if ((key !== 'wallpaper') && (image !== 'wallpaperingame')) { | |
setTexture(key, "/images/"+key+".png"); | |
$('#TPTPR_TextureButton_'+key).children('span').fadeOut(200).fadeIn(600); | |
} | |
}); | |
confirmText('Texture Pack Loaded', TPTPR_Packs[this.id].displayname); | |
} else { | |
setTexture(image, "/images/"+image+".png"); | |
$('#TPTPR_TextureButton_'+image).children('span').fadeOut(200).fadeIn(600); | |
confirmText('Single Texture Loaded: ' + imageFriendly, TPTPR_Packs[this.id].displayname); | |
} | |
} else if (this.id === 'mydnd') { //drag and dropped | |
if (GM_getValue('TPTPR_CompletePack', true)) { | |
$.each(texturePack, function(key, value) { | |
if ((key !== 'wallpaper') && (image !== 'wallpaperingame')) { | |
setTexture(key, customTexturePack[key]); | |
$('#TPTPR_TextureButton_'+key).children('span').fadeOut(200).fadeIn(600); | |
} | |
}); | |
confirmText('Texture Pack Loaded', TPTPR_Packs[this.id].displayname); | |
} else { | |
setTexture(image, customTexturePack[image]); | |
$('#TPTPR_TextureButton_'+image).children('span').fadeOut(200).fadeIn(600); | |
confirmText('Single Texture Loaded: ' + imageFriendly, TPTPR_Packs[this.id].displayname); | |
} | |
} else { | |
if (GM_getValue('TPTPR_CompletePack', true)) { | |
var packId = this.id; | |
$.each(texturePack, function(key, value) { | |
if ((key !== 'wallpaper') && (image !== 'wallpaperingame')) { | |
setTexture(key, TPTPR_Packs[packId].url[key]); | |
$('#TPTPR_TextureButton_'+key).children('span').fadeOut(200).fadeIn(600); | |
} | |
}); | |
confirmText('Texture Pack Loaded', TPTPR_Packs[this.id].displayname); | |
} else { | |
if (image === 'balls') { | |
setTexture(image, TPTPR_Packs[this.id].url.tiles); | |
} else { | |
setTexture(image, TPTPR_Packs[this.id].url[image]); | |
} | |
$('#TPTPR_TextureButton_'+image).children('span').fadeOut(200).fadeIn(600); | |
setTimeout(function(id) { | |
confirmText('Single Texture Loaded: ' + imageFriendly, TPTPR_Packs[id].displayname); | |
}, 50, this.id); | |
} | |
} | |
}); | |
//Overlays... | |
$('#TPTPR_HideShowBallOverlays').on('click', function() { | |
if ($('#TPTPR_BallOverlays').is(':visible')) { | |
$('#TPTPR_BallOverlays').slideUp(400, function() { | |
$('#TPTPR_HideShowBallOverlays').text('⇩ Ball Overlays ⇩'); | |
}); | |
} else { | |
$('#TPTPR_BallOverlays').slideDown(400, function() { | |
$('#TPTPR_HideShowBallOverlays').text('⇧ Ball Overlays ⇧'); | |
}); | |
} | |
}); | |
$('#TPTPR_BallOverlays').find('label.TPTPR_BallOverlaysItem').on('click', function() { | |
if (this.id === 'none') { | |
GM_setValue('TPTPR_Overlay', false); | |
} else { | |
GM_setValue('TPTPR_Overlay', this.id); | |
} | |
}); | |
$('#TPTPR_BallOverlays').find('label.TPTPR_BallOverlaysItem').hover(function() { | |
$('#TPTPR_OverlayPreview').remove(); | |
if (GM_getValue('TPTPR_DifferentBallTexture', false) && texturePack.balls) { | |
img.src = texturePack.balls; | |
var texturePosition = (img.width || 640) - 80; | |
$('#'+this.id).children('input').after('<div id="TPTPR_OverlayPreview" style="position:absolute; margin-top:2px; width:80px; height:40px; z-index:9999; border:2px solid black; border-radius:10px; background-color:white; background-image:url(\''+TPTPR_Overlays[this.id].url+'\'), url(\''+texturePack.balls+'\'); background-position:0px 0px, -'+texturePosition+'px 0"></div>'); | |
} else { | |
$('#'+this.id).children('input').after('<div id="TPTPR_OverlayPreview" style="position:absolute; margin-top:2px; width:80px; height:40px; z-index:9999; border:2px solid black; border-radius:10px; background-color:white; background-image:url(\''+TPTPR_Overlays[this.id].url+'\'), url(\''+texturePack.tiles+'\'); background-position:0px 0px, -560px 0"></div>'); | |
} | |
$('#'+this.id).css('color', 'firebrick'); | |
}, function() { | |
$('#TPTPR_OverlayPreview').remove(); | |
$('#'+this.id).css('color', ''); | |
}); | |
$('#TPTPR_SpinOverlay').on('click', function() { | |
GM_setValue('TPTPR_SpinOverlay', $(this).is(':checked')); | |
confirmText('Spin Overlay: ' + ($(this).is(':checked') ? 'Enabled' : 'Disabled')); | |
}); | |
// Drag/Drop events... | |
$(document).on('dragover', function(e) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
$('#TPTPR_DropZone_Outer').css({border:'2px dotted red'}); | |
}).on('dragleave', function(e) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
$('#TPTPR_DropZone_Outer').css({border:'2px dotted silver'}); | |
}); | |
var timeoutHandle=0, lastEnter; | |
$('#TPTPR_Left_Inner .TPTPR_TextureButton, #TPTPR_TextureButton_wallpaper, #TPTPR_TextureButton_wallpaperingame').on('dragover', function(e) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
$(this).css({background:'darkolivegreen'}); | |
$('#TPTPR_DropZone_Outer').css({border:'2px dotted red'}); | |
var that = this; | |
if (lastEnter !== e.target) { | |
lastEnter = e.target; | |
clearTimeout(timeoutHandle); | |
timeoutHandle = setTimeout(function() { | |
$(that).trigger('click'); | |
}, 600); | |
} | |
}).on('dragleave', function(e) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
$(this).css({background:'#444'}); | |
}).on('drop', function(e) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
$(this).css({background:'#444'}); | |
$('#TPTPR_DropZone_Outer').css({border:'2px dotted silver'}); | |
$(this).trigger('click'); | |
handleDrop(e); | |
}); | |
$('#TPTPR_DropZone_Outer').on('dragover', function(e) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
if (lastEnter !== e.target) { | |
lastEnter = e.target; | |
clearTimeout(timeoutHandle); | |
} | |
$(this).css({background:'green', opacity:0.3}); | |
}).on('dragleave', function(e) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
$(this).css({background:'', opacity:1}); | |
}).on('drop', function(e) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
$(this).css({border:'2px dotted silver', background:'', opacity:1}); | |
handleDrop(e); | |
}).on('dblclick', function(e) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
var confirmRemove = confirm('Remove Custom Wallpaper?'); | |
if (confirmRemove) { | |
if ((image === 'wallpaper') || (image === 'wallpaperingame')) { | |
setTexture(image, "###"); | |
confirmText('Custom ' + imageFriendly + ' removed'); | |
} | |
} | |
}); | |
// Select the tiles button... | |
$('#TPTPR_TextureButton_tiles').trigger('click'); | |
} else if (PageLoc === 'textures') { | |
$('ul.tab-list').append('<div id="TPM_ClearAll" style="margin:0px; padding:2px 5px; float:right; font-size:12px; color:red; background:#222; border:1px solid white; border-radius:5px; cursor:pointer;" title="Clears everything, except your custom saved links.">X</div>'); | |
$('#TPM_ClearAll').on('click', function() { | |
if (!confirm('Everything will be cleared, except for your saved packs.\n\n OK to continue?\n\n')) return; | |
$('.texture-url').val(''); | |
$.removeCookie('textures', { path:'/', domain:tagpro.cookieHost } ); | |
var updateurl = window.location.origin + '/textures'; | |
$.ajax({method:'post', data:'', dataType:'text', url:updateurl}).done(function(data){ | |
//console.log('TPM: Success POSTing',data); | |
}).fail(function(data){ | |
console.log('TPM: Failed POSTing',data); | |
}); | |
}).hover(function() { | |
$(this).css( { 'background':'red', 'color':'white' } ); | |
}, function() { | |
$(this).css( { 'background':'#222', 'color':'red' } ); | |
}); | |
} | |
} | |
}); | |
/*==================================================================================================================================================================*/ | |
function setObjects() { | |
TPTPR_Packs = { | |
'vanilla': { displayname:'Vanilla', author:'TagPro Defaults', url:{tiles:'/images/tiles.png', | |
speedpad:'/images/speedpad.png', | |
speedpadred:'/images/speedpadred.png', | |
speedpadblue:'/images/speedpadblue.png', | |
splats:'/images/splats.png', | |
portal:'/images/portal.png'} }, | |
'mydnd': { displayname:'My Drag and Dropped', author:'Me!', url:{tiles:'', | |
speedpad:'', | |
speedpadred:'', | |
speedpadblue:'', | |
splats:'', | |
portal:''} }, | |
'aaron215': { displayname:'Aaron215', author:'Aaron215', url:{tiles:'http://i.imgur.com/pHTyBeO.png', | |
speedpad:'http://i.imgur.com/p7yauSo.png', | |
speedpadred:'http://i.imgur.com/1pq6LLP.png', | |
speedpadblue:'http://i.imgur.com/KbRQdOb.png', | |
splats:'http://i.imgur.com/tDsbgPv.png', //blank | |
portal:'http://i.imgur.com/K0PQHJ6.png'} }, | |
'briochelight': { displayname:'Brioche Light', author:'brioche', url:{tiles:'http://i.imgur.com/WDLyCrr.png', | |
speedpad:'http://i.imgur.com/wtpkZWw.png', | |
speedpadred:'http://i.imgur.com/l6OMel5.png', | |
speedpadblue:'http://i.imgur.com/IAAOkQz.png', | |
splats:'http://i.imgur.com/kbkOC6x.png', | |
portal:'http://i.imgur.com/CXgNNTs.png'} }, | |
'camspp_lh': { displayname:'Cam\'sPP Light', author:'StrayCam', url:{tiles:'http://i.imgur.com/22NGRaG.png', | |
speedpad:'http://i.imgur.com/4N7Moqk.png', | |
speedpadred:'http://i.imgur.com/z4H9yVL.png', | |
speedpadblue:'http://i.imgur.com/L9AvmXe.png', | |
splats:'http://i.imgur.com/pJ3HlcS.png', | |
portal:'http://i.imgur.com/a0JUw8q.png'} }, | |
'camspp_dsh': { displayname:'Cam\'sPP Dark Sniper Horizontal', author:'StrayCam', url:{tiles:'http://i.imgur.com/2B8Vaux.png', | |
speedpad:'http://i.imgur.com/lVixtut.png', | |
speedpadred:'http://i.imgur.com/7Fe8iFB.png', | |
speedpadblue:'http://i.imgur.com/kU7LnOW.png', | |
splats:'http://i.imgur.com/pJ3HlcS.png', | |
portal:'http://i.imgur.com/mp79U9E.png'} }, | |
'camspp_lsd': { displayname:'Cam\'sPP Light Sniper Diagonal', author:'StrayCam', url:{tiles:'http://i.imgur.com/bhFWbNW.png', | |
speedpad:'http://i.imgur.com/22eydBT.png', | |
speedpadred:'http://i.imgur.com/mdS1Ex7.png', | |
speedpadblue:'http://i.imgur.com/oWxNfsx.png', | |
splats:'http://i.imgur.com/pJ3HlcS.png', | |
portal:'http://i.imgur.com/mp79U9E.png'} }, | |
'cmyk': { displayname:'cMYK', author:'MagicPigeon', url:{tiles:'http://i.imgur.com/v9VK5Oq.png', | |
speedpad:'http://i.imgur.com/5SFGnrT.png', | |
speedpadred:'http://i.imgur.com/qcgBVls.png', | |
speedpadblue:'http://i.imgur.com/nKExBLD.png', | |
splats:'http://i.imgur.com/7yhZMNT.png', //blank | |
portal:'http://i.imgur.com/DTGpCj1.png'} }, | |
'crystal': { displayname:'Crystal', author:'MagicPigeon', url:{tiles:'http://i.imgur.com/ixFW9oE.png', | |
speedpad:'http://i.imgur.com/VZKNMH1.png', | |
speedpadred:'http://i.imgur.com/VsGp8i1.png', | |
speedpadblue:'http://i.imgur.com/EQn1E5s.png', | |
splats:'http://i.imgur.com/mtH38yR.png', | |
portal:'http://i.imgur.com/70X2UY4.png'} }, | |
'derezzed': { displayname:'Derezzed', author:'-salt-', url:{tiles:'http://i.imgur.com/H9qQUAW.png', | |
speedpad:'http://i.imgur.com/BXtUHQG.png', | |
speedpadred:'http://i.imgur.com/G92Af0J.png', | |
speedpadblue:'http://i.imgur.com/R9FAvpp.png', | |
splats:'http://i.imgur.com/WXHAA3I.png', | |
portal:'http://i.imgur.com/vJDZam9.png'} }, | |
'electric': { displayname:'Electric', author:'Bug', url:{tiles:'http://i.imgur.com/iFeKuuV.png', | |
speedpad:'http://i.imgur.com/XrVvThx.png', | |
speedpadred:'http://i.imgur.com/GLHA3R8.png', | |
speedpadblue:'http://i.imgur.com/UcFhoVC.png', | |
splats:'http://i.imgur.com/wxJ2ImS.png', | |
portal:'http://i.imgur.com/GqZyi5s.png'} }, | |
'elementplus': { displayname:'Element+', author:'MagicPigeon', url:{tiles:'http://i.imgur.com/GAGacLn.png', | |
speedpad:'http://i.imgur.com/KkQKHLo.png', | |
speedpadred:'http://i.imgur.com/we2eBpa.png', | |
speedpadblue:'http://i.imgur.com/TKaRnU8.png', | |
splats:'http://i.imgur.com/Lzg8j80.png', | |
portal:'http://i.imgur.com/FlPW49l.png'} }, | |
'flat': { displayname:'Flat', author:'Bug', url:{tiles:'http://i.imgur.com/YC4vQM4.png', | |
speedpad:'http://i.imgur.com/UoHGwMS.png', | |
speedpadred:'http://i.imgur.com/CWrsplK.png', | |
speedpadblue:'http://i.imgur.com/8WrsT4f.png', | |
splats:'http://i.imgur.com/AYO8rbQ.png', | |
portal:'http://i.imgur.com/TYWr2Pu.png'} }, | |
'funhouse': { displayname:'Funhouse', author:'Sunna', url:{tiles:'http://i.imgur.com/eJebHd6.png', | |
speedpad:'http://i.imgur.com/pv0jGMF.png', | |
speedpadred:'http://i.imgur.com/7DibrCL.png', | |
speedpadblue:'http://i.imgur.com/syjTZuf.png', | |
splats:'http://i.imgur.com/KJ8hdEc.png', | |
portal:'http://i.imgur.com/4lmhtGF.png'} }, | |
'kindergarten': { displayname:'Kindergarten', author:'Clydas', url:{tiles:'http://i.imgur.com/y3tbmOS.png', | |
speedpad:'http://i.imgur.com/UEpX1wb.png', | |
speedpadred:'http://i.imgur.com/tUC9CMG.png', | |
speedpadblue:'http://i.imgur.com/5yA3IOx.png', | |
splats:'http://i.imgur.com/ZGSTp2s.png', | |
portal:'http://i.imgur.com/6Lbd9Aw.png'} }, | |
'minima': { displayname:'Minima', author:'Canvas', url:{tiles:'http://i.imgur.com/jGAtqcr.png', | |
speedpad:'http://i.imgur.com/pJEZKnh.png', | |
speedpadred:'http://i.imgur.com/OlDPpdM.png', | |
speedpadblue:'http://i.imgur.com/HgmJ9yg.png', | |
splats:'http://i.imgur.com/ytIIuQS.png', //blank | |
portal:'http://i.imgur.com/DeevRGe.png'} }, | |
'mltp': { displayname:'MLTP', author:'RonSpawnson', url:{tiles:'http://i.imgur.com/1sDyVZa.png', | |
speedpad:'http://i.imgur.com/KpTNzrD.png', | |
speedpadred:'http://i.imgur.com/gp44aAJ.png', | |
speedpadblue:'http://i.imgur.com/hKAhIyM.png', | |
splats:'http://i.imgur.com/ytIIuQS.png', //blank | |
portal:'http://i.imgur.com/09bFsXY.png'} }, | |
'modern': { displayname:'Modern', author:'Mitzimoto', url:{tiles:'http://i.imgur.com/stGySx9.png', | |
speedpad:'http://i.imgur.com/aCHBxVO.png', | |
speedpadred:'http://i.imgur.com/xKupyqI.png', | |
speedpadblue:'http://i.imgur.com/4dybmaE.png', | |
splats:'http://i.imgur.com/gXpvWEE.png', | |
portal:'http://i.imgur.com/KAo7jkl.png'} }, | |
'mtbad': { displayname:'MTBad', author:'mtbkr24', url:{tiles:'http://i.imgur.com/YnJ9THs.png', | |
speedpad:'http://i.imgur.com/Lgiwb5Q.png', | |
speedpadred:'http://i.imgur.com/XuN3NbB.png', | |
speedpadblue:'http://i.imgur.com/5JKeYSQ.png', | |
splats:'http://i.imgur.com/yL2TZJS.png', | |
portal:'http://i.imgur.com/xJe0hBy.png'} }, | |
'musclecups': { displayname:'Muscle\'s Cup', author:'Muscle Cups', url:{tiles:'http://i.imgur.com/Px8cdyU.png', | |
speedpad:'http://i.imgur.com/FjdVdQG.png', | |
speedpadred:'http://i.imgur.com/MtTupDg.png', | |
speedpadblue:'http://i.imgur.com/FZNnJZf.png', | |
splats:'http://i.imgur.com/3m8yX7z.png', | |
portal:'http://i.imgur.com/RQXDv00.png'} }, | |
'nabexty': { displayname:'Nabexty', author:'Nabby', url:{tiles:'http://i.imgur.com/JqkOE7d.png', | |
speedpad:'http://i.imgur.com/vhW6pZI.png', | |
speedpadred:'http://i.imgur.com/lxBZx15.png', | |
speedpadblue:'http://i.imgur.com/I20Lrtu.png', | |
splats:'http://i.imgur.com/1arNmEr.png', | |
portal:'http://i.imgur.com/FlPW49l.png'} }, | |
'nilla': { displayname:'Nilla', author:'Dotsarecool', url:{tiles:'http://i.imgur.com/Tdwjnkn.png', | |
speedpad:'http://i.imgur.com/bawbyQm.png', | |
speedpadred:'http://i.imgur.com/tDxnPWm.png', | |
speedpadblue:'http://i.imgur.com/NQaEKB0.png', | |
splats:'http://i.imgur.com/kHUlTwP.png', | |
portal:'http://i.imgur.com/v8aO03S.png'} }, | |
'pastelpro': { displayname:'Pastel Pro', author:'BMO', url:{tiles:'http://i.imgur.com/22ehddn.png', | |
speedpad:'http://i.imgur.com/r7beMZp.png', | |
speedpadred:'http://i.imgur.com/xAHMOOV.png', | |
speedpadblue:'http://i.imgur.com/R1TGL5x.png', | |
splats:'http://i.imgur.com/NKBd7nE.png', | |
portal:'http://i.imgur.com/GbdQNJJ.png'} }, | |
'plumb': { displayname:'Plumb', author:'SuperTed', url:{tiles:'http://i.imgur.com/V0Agukw.png', | |
speedpad:'http://i.imgur.com/4pVL2AE.png', | |
speedpadred:'http://i.imgur.com/DQ5Nh2M.png', | |
speedpadblue:'http://i.imgur.com/KuRxQMR.png', | |
splats:'http://i.imgur.com/AlkZRug.png', //blank | |
portal:'http://i.imgur.com/q0trLRN.png'} }, | |
'seaweedrb': { displayname:'Seaweed Red/Blue', author:'Borgen', url:{tiles:'http://i.imgur.com/e4UjsQs.png', | |
speedpad:'http://i.imgur.com/ONxlcFL.png', | |
speedpadred:'http://i.imgur.com/DwUHM2I.png', | |
speedpadblue:'http://i.imgur.com/DpJS96w.png', | |
splats:'http://i.imgur.com/ZrimG2x.png', | |
portal:'http://i.imgur.com/44fPSBq.png'} }, | |
'sleek': { displayname:'Sleek', author:'DaEvil1', url:{tiles:'http://i.imgur.com/1zgobTs.png', | |
speedpad:'http://i.imgur.com/zI4SzAE.png', | |
speedpadred:'http://i.imgur.com/8Ucws0m.png', | |
speedpadblue:'http://i.imgur.com/VDIrsng.png', | |
splats:'http://i.imgur.com/AlkZRug.png', //blank | |
portal:'http://i.imgur.com/1RRAMHe.png'} }, | |
'starwars': { displayname:'Star Wars', author:'Moosen', url:{tiles:'http://i.imgur.com/lxV0cnH.png', | |
speedpad:'http://i.imgur.com/WgeuDEz.png', | |
speedpadred:'http://i.imgur.com/cqY1LTe.png', | |
speedpadblue:'http://i.imgur.com/bCUoqXq.png', | |
splats:'http://i.imgur.com/XIndyGS.png', | |
portal:'http://i.imgur.com/FtLHfuz.png'} }, | |
'suave': { displayname:'Suave', author:'fxu', url:{tiles:'http://i.imgur.com/Lz0Kbua.png', | |
speedpad:'http://i.imgur.com/Hh2PIwl.png', | |
speedpadred:'http://i.imgur.com/Ps5E70J.png', | |
speedpadblue:'http://i.imgur.com/OsjYgED.png', | |
splats:'http://i.imgur.com/BTjNBz3.png', //blank | |
portal:'http://i.imgur.com/siMVwoM.png'} }, | |
'tranquilitydark': { displayname:'Tranquility Dark', author:'R e t r o', url:{tiles:'http://i.imgur.com/WyfRfld.png', | |
speedpad:'http://i.imgur.com/tZE7l6b.png', | |
speedpadred:'http://i.imgur.com/AGMgt6S.png', | |
speedpadblue:'http://i.imgur.com/nokGBIr.png', | |
splats:'http://i.imgur.com/tDsbgPv.png', //blank | |
portal:'http://i.imgur.com/gFC1dUu.png'} }, | |
'tranquilitylight': { displayname:'Tranquility Light', author:'R e t r o', url:{tiles:'http://i.imgur.com/cM7dUPy.png', | |
speedpad:'http://i.imgur.com/qhr6Z6b.png', | |
speedpadred:'http://i.imgur.com/cVyjSvA.png', | |
speedpadblue:'http://i.imgur.com/ZqlxWI5.png', | |
splats:'http://i.imgur.com/ay5FAXS.png', //blank | |
portal:'http://i.imgur.com/ZvBGaJF.png'} }, | |
'ultrasmooth': { displayname:'Ultra Smooth', author:'Professor Tag', url:{tiles:'http://i.imgur.com/zltfpGb.png', | |
speedpad:'http://i.imgur.com/zxubWbQ.png', | |
speedpadred:'http://i.imgur.com/yJGhLPt.png', | |
speedpadblue:'http://i.imgur.com/K02G9jE.png', | |
splats:'http://i.imgur.com/tDsbgPv.png', //blank | |
portal:'http://i.imgur.com/hffUZ2J.png'} }, | |
'vortex': { displayname:'Vortex', author:'MagicPigeon', url:{tiles:'http://i.imgur.com/jlbr0Gr.png', | |
speedpad:'http://i.imgur.com/hL1YlFu.png', | |
speedpadred:'http://i.imgur.com/gxQeYTw.png', | |
speedpadblue:'http://i.imgur.com/pbXh4b1.png', | |
splats:'http://i.imgur.com/36fUJG2.png', | |
portal:'http://i.imgur.com/H1cHH5w.png'} }, | |
}; | |
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ | |
TPTPR_Overlays = { | |
'none': { displayname:'None', url:false }, | |
'poker': { displayname:'Poker Chip', url:'http://i.imgur.com/SRTdwMB.png' }, | |
'quads': { displayname:'Quads', url:'http://i.imgur.com/Y4VyHp3.png' }, | |
'marble': { displayname:'Marble', url:'http://i.imgur.com/yT42PHy.png' }, //Professor Tag | |
'whitedot': { displayname:'White Dot', url:'http://i.imgur.com/YOo6Zkx.png' }, | |
'crosshair': { displayname:'Crosshair', url:'http://i.imgur.com/WO4hzVF.png' }, | |
'darkring': { displayname:'Dark Ring', url:'http://i.imgur.com/A746foc.png' }, | |
'innerstar': { displayname:'Inner Star', url:'http://i.imgur.com/Xs1lsOH.png' }, | |
'sombrero': { displayname:'Sombrero', url:'http://i.imgur.com/LqcPOIr.png' }, | |
'sunglasses': { displayname:'Shades', url:'http://i.imgur.com/xbGNFU7.png' }, | |
}; | |
/*==================================================================================================================================================================*/ | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment