Last active
November 18, 2015 17:58
HabitRpg Litle
This file contains hidden or 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 HabitRpg Litle | |
// @namespace HabitRpgLitle | |
// @include https://habitica.com/* | |
// @exclude https://habitica.com/bower* | |
// @version 1.2.2 | |
// @grant none | |
// @run-at document-end | |
// ==/UserScript== | |
function exec(fn) { | |
var script = document.createElement('script'); | |
script.setAttribute('type', 'application/javascript'); | |
script.textContent = '(' + fn + ')();'; | |
document.body.appendChild(script); // run the script | |
document.body.removeChild(script); // clean up | |
} | |
window.addEventListener('load', function () { | |
// script injection | |
exec(function () { | |
//ajout du forEach pour les Array | |
var arrayMethods = Object.getOwnPropertyNames(Array.prototype); | |
arrayMethods.forEach(attachArrayMethodsToNodeList); | |
function attachArrayMethodsToNodeList(methodName) { | |
NodeList.prototype[methodName] = Array.prototype[methodName]; | |
}; | |
function getRandomInt(min, max) { | |
return Math.floor(Math.random() * (max - min)) + min; | |
} | |
function addStyleString(str) { | |
var node = document.createElement('style'); | |
node.innerHTML = str; | |
document.body.appendChild(node); | |
} | |
function merge_options(obj1,obj2){ | |
var obj3 = {}; | |
for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; } | |
for (var attrname in obj2) { obj3[attrname] = obj2[attrname]; } | |
return obj3; | |
} | |
var Ajax = { | |
get: function(url, callback) { | |
var request = new XMLHttpRequest(); | |
request.open('GET', url, true); | |
request.onload = function() { | |
callback(request) | |
}; | |
request.onerror = function() { | |
// There was a connection error of some sort | |
}; | |
request.send(); | |
} | |
} | |
var hre = {}; | |
//settings par default | |
hre.settings = { | |
debug: false, | |
module: { | |
portraits: { | |
activated: true, | |
pet: true, | |
party: true, | |
level: true | |
}, | |
previewBackground: { | |
activated: true | |
}, | |
items: { | |
activated: true | |
} | |
} | |
}; | |
hre.utils = { | |
dot: function(obj, dot) { | |
var keys = dot.split('.'); | |
var tmpVar = null; | |
if(typeof keys == 'string' || keys.length == 1) { | |
return obj[dot]; | |
} | |
for(var i = 0; i < keys.length; i++) { | |
if( obj.hasOwnProperty( keys[i] ) ) { | |
tmpVar = obj[keys[i]]; | |
} | |
if(i == keys.length - 1) { | |
return tmpVar; | |
} | |
} | |
}, | |
moduleActivated: function (module) { | |
if (!hre.utils.dot(hre.settings.module, module).activated) { | |
hre.debug('Module non activé : '+module) | |
return false; | |
} | |
if (this.moduleAllDesactivated(hre.utils.dot(hre.settings.module, module))) { | |
hre.debug('Tous les modules sont désactivé : '+module) | |
return false; | |
} | |
return true; | |
}, | |
moduleAllDesactivated: function (module) { | |
for (var index in module) { | |
if (module[index]) { | |
return false; | |
} | |
} | |
return true; | |
}, | |
findUserById: function(id, users) { | |
for(var index in users) { | |
if(users[index]._id == id) { | |
return users[index]; | |
} | |
} | |
}, | |
findUserByName: function(name, users) { | |
for(var index in users) { | |
if(users[index].profile.name == name) { | |
return users[index]; | |
} | |
} | |
}, | |
refreshDatasParty: function(time, callback) { | |
setInterval(function () { | |
callback() | |
}, time); | |
} | |
}; | |
hre.debug = function (debug) { | |
if (hre.settings.debug) { | |
console.log(debug); | |
} | |
} | |
var getAjaxProfileTimeout = function(time) { | |
var intervalCheck = setInterval(function(){ | |
var id = ajaxProfileTimeout.shift(); | |
if(id) { | |
Ajax.get('https://habitrpg.com:443/api/v2/members/'+id.id, function(request){ | |
if (request.status >= 200 && request.status < 400) { | |
// Success! | |
var resp = request.responseText; | |
var data = JSON.parse(resp); | |
/*data.stats.hp = getRandomInt(0, 45);*/ | |
hre.datas.party.group.members[id.index] = data; | |
} else { | |
// We reached our target server, but it returned an error | |
} | |
}); | |
} | |
if(!ajaxProfileTimeout.length > 0) { | |
clearInterval(intervalCheck); | |
} | |
}, time); | |
var promise = new Promise(function(resolve, reject) { | |
var it = setInterval(function(){ | |
if(ajaxProfileTimeout.length == 0) { | |
clearInterval(it); | |
resolve(true); | |
} | |
}, 1000); | |
}); | |
return promise; | |
} | |
var ajaxProfileTimeout = []; | |
hre.datas = { | |
setParty: function(){ | |
this.party = angular.element('[ng-controller="PartyCtrl"]').scope(); | |
return this.party; | |
}, | |
party: null, | |
updatePartyMembersDatas: function(time) { | |
var $this = this; | |
var promise = new Promise(function(resolve, reject) { | |
var currentUser = angular.element('[ng-controller="UserCtrl"]').scope().profile | |
for(var index in hre.datas.party.group.members ) { | |
if(currentUser._id != hre.datas.party.group.members[index]._id ) { | |
var id = hre.datas.party.group.members[index]._id; | |
ajaxProfileTimeout[index] = {id:id, index:index}; | |
} | |
} | |
getAjaxProfileTimeout(time).then(function(result){ | |
resolve(true); | |
}) | |
}); | |
return promise; | |
} | |
} | |
hre.storage = { | |
get: function (key, d) { | |
if (this.__activated()) { | |
if (this.__exist(key)) { | |
return localStorage.getItem(key); | |
} else { | |
return d; | |
} | |
} | |
return d; | |
}, | |
set: function (key, value) { | |
if (this.__activated()) { | |
localStorage.setItem(key, value); | |
return true; | |
} | |
return false; | |
}, | |
__exist: function (key) { | |
return (key in localStorage) ? true : false; | |
}, | |
__activated: function () { | |
return (typeof localStorage != 'undefined') ? true : false; | |
} | |
} | |
hre.run = function () { | |
hre.debug('Run App'); | |
settings = hre.storage.get(hre.options.storage.options); | |
if(settings) { | |
hre.settings = merge_options(JSON.parse(settings), hre.settings); | |
} | |
hre.datas.setParty(); | |
hre.portraits.init(); | |
hre.items.init(); | |
hre.previewBackground.init(); | |
hre.options.init(); | |
} | |
hre.waitToExist = function (selector, exec, obj) { | |
var nameVar = 'i' + Math.floor(Math.random()*1000001); | |
hre.debug('var setInterval : ' + nameVar); | |
window[nameVar] = setInterval(function () { | |
var elements = document.querySelectorAll(selector); | |
if (elements.length >= 1) { | |
clearInterval(window[nameVar]); | |
hre.debug('clear interval '+nameVar) | |
exec(elements, obj); | |
} | |
}, 3000); | |
} | |
hre.waitToPage = function (page, exec, obj) { | |
if(location.hash == page) { | |
exec(obj) | |
} | |
window.addEventListener('hashchange', function(e){ | |
if(location.hash == page) { | |
exec(obj) | |
} | |
}, false); | |
} | |
var Player = function (player) { | |
this.datas = { | |
pet: null, | |
level: null, | |
name: null | |
} | |
this.fullDatas = null; | |
this.selectors = { | |
level: '.avatar-level', | |
pet: '.current-pet', | |
name: '.avatar-name' | |
} | |
this.dom = player; | |
this.level = function () { | |
if (this.datas.level) { | |
return this.datas.level; | |
} | |
this.datas.level = this.dom.querySelector(this.selectors.level); | |
return this.datas.level; | |
} | |
this.pet = function () { | |
if (this.datas.pet) { | |
return this.datas.pet; | |
} | |
this.datas.pet = this.dom.querySelector(this.selectors.pet); | |
return this.datas.pet; | |
} | |
this.name = function () { | |
if (this.datas.name) { | |
return this.datas.name; | |
} | |
this.datas.name = this.dom.querySelector(this.selectors.name); | |
return this.datas.name; | |
} | |
this.setFullDatas = function(players) { | |
var $this = this; | |
players.forEach(function(p){ | |
if(p.profile.name == $this.name().textContent) { | |
$this.fullDatas = p; | |
} | |
}); | |
} | |
}; | |
hre.portraits = { | |
selectors: { | |
players: '.herobox-wrap' | |
}, | |
storage: {}, | |
players: null, | |
player: null, | |
colorHealth: function(p) { | |
if(p.stats.hp == 50) { | |
return '#71B05B' | |
} | |
if(p.stats.hp >= 45) { | |
return '#8BBF79' | |
} | |
if(p.stats.hp >= 40) { | |
return '#D9EAD3' | |
} | |
if(p.stats.hp >= 35) { | |
return '#FFE26D' | |
} | |
if(p.stats.hp >= 30) { | |
return '#FFEA97' | |
} | |
if(p.stats.hp >= 25) { | |
return '#FCE5CD' | |
} | |
if(p.stats.hp >= 20) { | |
return '#F4A24C' | |
} | |
if(p.stats.hp >= 15) { | |
return '#F28B21' | |
} | |
if(p.stats.hp >= 10) { | |
return '#E6B8AF' | |
} | |
if(p.stats.hp >= 5) { | |
return '#C96652' | |
} | |
if(p.stats.hp >= 5) { | |
return '#B94F3A' | |
} | |
}, | |
petTo: function (d, player) { | |
if (d == 'left') { | |
if (hre.settings.module.portraits.level) { | |
player.level().style.display = 'none'; | |
} | |
player.level().style.left = 'inherit'; | |
player.level().style.right = '0px'; | |
player.pet().style.right = 'inherit'; | |
player.pet().style.left = '4px'; | |
player.pet().style.transform = 'none'; | |
} else if (d == 'right') { | |
if (hre.settings.module.portraits.level) { | |
player.level().style.display = 'none'; | |
} | |
player.level().style.left = '4px'; | |
player.level().style.right = 'inherit'; | |
player.pet().style.right = '0px'; | |
player.pet().style.left = 'inherit'; | |
player.pet().style.transform = 'scaleX(-1)'; | |
}else if (d == 'level') { | |
player.level().style.display = 'block'; | |
} else { | |
player.level().style.display = 'block'; | |
if (false) { | |
player.level().style.left = 'inherit'; | |
player.level().style.right = '0px'; | |
player.pet().style.right = 'inherit'; | |
player.pet().style.left = '4px'; | |
player.pet().style.transform = 'none'; | |
} | |
} | |
}, | |
petDirection: function (p) { | |
if (!hre.settings.module.portraits.pet) { | |
return; | |
} | |
var player = new Player(p); | |
var pet = player.pet(); | |
var name = player.name().textContent; | |
var petOption = hre.storage.get('habitPersoPet-' + name, 'left'); | |
this.petTo(petOption, player); | |
pet.onclick = function (e) { | |
e.stopPropagation(); | |
if (petOption == 'left') { | |
petOption = 'right'; | |
} else { | |
petOption = 'left'; | |
} | |
hre.storage.set('habitPersoPet-' + name, petOption); | |
} | |
p.onmouseover = function () { | |
hre.portraits.petTo('level', player); | |
} | |
p.onmouseout = function () { | |
hre.portraits.petTo(petOption, player) | |
} | |
}, | |
setHealthColor: function(player) { | |
var ctnBarPv = player.dom.querySelector('.health') | |
ctnBarPv.style.borderColor = this.colorHealth(player.fullDatas) + ' transparent transparent transparent'; | |
}, | |
refresh: function(time){ | |
var $that = this; | |
if (!hre.utils.moduleActivated('portraits')) { | |
return; | |
} | |
hre.datas.updatePartyMembersDatas(time).then(function(result){ | |
$that.players = hre.datas.party.group.members; | |
hre.waitToExist(hre.portraits.selectors.players, function (players, $this) { | |
players.forEach(function (p) { | |
var player = new Player(p); | |
player.setFullDatas(hre.datas.party.group.members); | |
$this.setHealthColor(player) | |
}); | |
}, $that) | |
}); | |
}, | |
stats: function(p) { | |
//var $this = this; | |
var player = new Player(p); | |
if(p.hasAttribute('ng-controller')) { | |
player.fullDatas = this.player; | |
} else { | |
player.setFullDatas(this.players); | |
} | |
//var figure = player.dom.querySelector('.herobox'); | |
var ctnBarPv = document.createElement('div'); | |
ctnBarPv.className = ctnBarPv.className + "health"; | |
ctnBarPv.style.borderColor = this.colorHealth(player.fullDatas) + ' transparent transparent transparent'; | |
player.name().parentNode.insertBefore(ctnBarPv, player.name()); | |
}, | |
init: function () { | |
if (!hre.utils.moduleActivated('portraits')) { | |
return; | |
} | |
hre.waitToExist(this.selectors.players, function (players, $this) { | |
$this.players = hre.datas.setParty().group.members | |
$this.player = angular.element('[ng-controller="UserCtrl"]').scope().profile | |
angular.element('[ng-click="castStart(skill)"]').on('click', function(e){ | |
var li = e.currentTarget.parentNode.parentNode | |
if(li) { | |
if(li.querySelector('.shop_heallAll')) { | |
$this.refresh(2000); | |
} | |
} | |
}); | |
//angular.element('[ng-controller="UserCtrl"]').scope().party.$get() | |
addStyleString('[ng-controller="PartyCtrl"] .health { width: 0; height: 0; border-style: solid; border-width: 15px 15px 0 0; border-color: #71B05B transparent transparent transparent; position: absolute; top: 0px; }') | |
players.forEach(function (player) { | |
$this.petDirection(player); | |
$this.stats(player); | |
}); | |
hre.debug('Module portraits ready') | |
}, this) | |
} | |
} | |
hre.items = { | |
page: '#/options/inventory/equipment', | |
selectors: { | |
equipementTitle: 'h3.equipment-title' | |
}, | |
text: { | |
btnSet: { | |
default: 'Enregistrer le Set', | |
success: 'Set enregistré' | |
}, | |
btnLoad: { | |
default: 'Charger le Set', | |
success: 'Set chargé', | |
error: 'Pas de set enregistré' | |
}, | |
btnDelete: { | |
default: 'Supprimer le Set', | |
success: 'Set supprimé' | |
} | |
}, | |
class: { | |
btnSet: { | |
default: 'btn btn-default', | |
success: 'btn btn-success' | |
}, | |
btnLoad: { | |
default: 'btn btn-default', | |
success: 'btn btn-success', | |
error: 'btn btn-error' | |
}, | |
btnDelete: { | |
default: 'btn btn-warning', | |
success: 'btn btn-success', | |
error: 'btn btn-error' | |
} | |
}, | |
storage: { | |
save: 'habitSetItems', | |
save2: 'habitSetItems2' | |
}, | |
buildUi: function(equipementTitle) { | |
var $this = this; | |
var divParent = equipementTitle.parentNode; | |
var customEquipementUl = document.createElement('ul'); | |
var customEquipementSet = document.createElement('li'); | |
var customEquipementLoad = document.createElement('li'); | |
var customEquipementSetButton = document.createElement('button'); | |
var customEquipementLoadButton = document.createElement('button'); | |
customEquipementSet.style.float = 'left'; | |
customEquipementSet.style.listStyle = 'none'; | |
customEquipementLoad.style.float = 'left'; | |
customEquipementLoad.style.listStyle = 'none'; | |
customEquipementSetButton.className = this.class.btnSet.default; | |
customEquipementSetButton.innerHTML = this.text.btnSet.default; | |
customEquipementLoadButton.className = this.class.btnLoad.default; | |
customEquipementLoadButton.innerHTML = this.text.btnLoad.default; | |
customEquipementSet.appendChild(customEquipementSetButton); | |
customEquipementLoad.appendChild(customEquipementLoadButton); | |
customEquipementUl.appendChild(customEquipementSet); | |
customEquipementUl.appendChild(customEquipementLoad); | |
equipementTitle.parentNode.insertBefore(customEquipementUl, equipementTitle.nextSibling); | |
customEquipementSetButton.onclick = function (e) { | |
var setItems = [ | |
]; | |
var itemsSelected = divParent.querySelectorAll('li.inventory-gear button.selectableInventory'); | |
if (itemsSelected.length > 1) { | |
itemsSelected.forEach(function (item) { | |
var classe = item.className; | |
var match = classe.match(/shop_[a-z0-9_]+/i); | |
if (match.length > 0) { | |
var name = match[0]; | |
setItems.push(name); | |
} | |
}); | |
if (setItems.length > 0) { | |
localStorage.setItem($this.storage.save, setItems); | |
customEquipementSetButton.innerHTML = $this.text.btnSet.success; | |
customEquipementSetButton.className = $this.class.btnSet.success; | |
setTimeout(function () { | |
customEquipementSetButton.className = $this.class.btnSet.default; | |
customEquipementSetButton.innerHTML =$this.text.btnSet.default; | |
}, 1000); | |
} | |
} | |
} | |
customEquipementLoad.onclick = function (e) { | |
if (localStorage.getItem($this.storage.save)) { | |
var setItems = localStorage.getItem($this.storage.save).split(','); | |
var btnClean = divParent.querySelector('button.ng-binding'); | |
btnClean.click(); | |
setItems.forEach(function (item) { | |
divParent.querySelector('li.inventory-gear button.' + item).click() | |
}); | |
customEquipementLoadButton.innerHTML = $this.text.btnLoad.success; | |
customEquipementLoadButton.className = $this.class.btnLoad.success; | |
setTimeout(function () { | |
customEquipementLoadButton.className = $this.class.btnLoad.default; | |
customEquipementLoadButton.innerHTML = $this.text.btnLoad.default; | |
}, 1000); | |
} else { | |
customEquipementLoadButton.innerHTML = $this.text.btnLoad.error; | |
customEquipementLoadButton.className = $this.class.btnLoad.error; | |
setTimeout(function () { | |
customEquipementLoadButton.className = $this.class.btnLoad.default; | |
customEquipementLoadButton.innerHTML = $this.text.btnLoad.default; | |
}, 1000); | |
} | |
} | |
}, | |
buildUi2: function(equipementTitle) { | |
var $this = this; | |
var divParent = equipementTitle.parentNode; | |
var customEquipementUl = document.createElement('ul'); | |
var customEquipementSet = document.createElement('li'); | |
var customEquipementLoad = document.createElement('li'); | |
var customEquipementSetButton = document.createElement('button'); | |
var customEquipementLoadButton = document.createElement('button'); | |
var customEquipementDeleteButton = document.createElement('button'); | |
customEquipementSet.style.float = 'left'; | |
customEquipementSet.style.listStyle = 'none'; | |
customEquipementLoad.style.float = 'left'; | |
customEquipementLoad.style.listStyle = 'none'; | |
customEquipementSetButton.className = this.class.btnSet.default; | |
customEquipementSetButton.innerHTML = this.text.btnSet.default; | |
customEquipementLoadButton.className = this.class.btnLoad.default; | |
customEquipementLoadButton.innerHTML = this.text.btnLoad.default; | |
customEquipementSet.appendChild(customEquipementSetButton); | |
customEquipementLoad.appendChild(customEquipementLoadButton); | |
customEquipementUl.appendChild(customEquipementSet); | |
customEquipementUl.appendChild(customEquipementLoad); | |
equipementTitle.parentNode.insertBefore(customEquipementUl, equipementTitle.nextSibling); | |
customEquipementDeleteButton.className = this.class.btnDelete.default; | |
customEquipementDeleteButton.innerHTML = this.text.btnDelete.default; | |
var customEquipementSelect = false; | |
var costumesItems = {}; | |
if (localStorage.getItem($this.storage.save2)) { | |
var costumesItems = JSON.parse(localStorage.getItem($this.storage.save2)); | |
if(Object.keys(costumesItems).length) { | |
customEquipementSelect = document.createElement('select'); | |
customEquipementSelect.style.padding = '4px'; | |
customEquipementSelect.style.marginLeft = '10px'; | |
customEquipementSelect.style.marginRight = '10px'; | |
for(var index in costumesItems) { | |
var customEquipementOption = document.createElement('option') | |
customEquipementOption.innerHTML = index; | |
customEquipementOption.value = index; | |
customEquipementSelect.appendChild(customEquipementOption) | |
} | |
customEquipementLoad.appendChild(customEquipementDeleteButton) | |
customEquipementLoad.appendChild(customEquipementSelect) | |
} | |
} | |
customEquipementSetButton.onclick = function (e) { | |
var setItems = [ | |
]; | |
var itemsSelected = divParent.querySelectorAll('li[ng-if="user.preferences.costume"] button.selectableInventory'); | |
if (itemsSelected.length > 1) { | |
itemsSelected.forEach(function (item) { | |
var classe = item.className; | |
var match = classe.match(/shop_[a-z0-9_]+/i); | |
if (match.length > 0) { | |
var name = match[0]; | |
setItems.push(name); | |
} | |
}); | |
if (setItems.length > 0) { | |
var nameSet = prompt('Nom du set'); | |
costumesItems[nameSet] = setItems; | |
localStorage.setItem($this.storage.save2, JSON.stringify(costumesItems)); | |
if(!customEquipementSelect) { | |
customEquipementSelect = document.createElement('select'); | |
customEquipementSelect.style.padding = '4px'; | |
customEquipementSelect.style.marginLeft = '10px'; | |
customEquipementSelect.style.marginRight = '10px'; | |
customEquipementLoad.appendChild(customEquipementSelect) | |
} | |
var customEquipementOption = document.createElement('option') | |
customEquipementOption.innerHTML = nameSet; | |
customEquipementOption.value = nameSet; | |
customEquipementSelect.appendChild(customEquipementOption); | |
customEquipementSelect.value = nameSet; | |
customEquipementSetButton.innerHTML = $this.text.btnSet.success; | |
customEquipementSetButton.className = $this.class.btnSet.success; | |
setTimeout(function () { | |
customEquipementSetButton.className = $this.class.btnSet.default; | |
customEquipementSetButton.innerHTML =$this.text.btnSet.default; | |
}, 1000); | |
} | |
} | |
} | |
customEquipementLoadButton.onclick = function (e) { | |
if (localStorage.getItem($this.storage.save2)) { | |
var setItems = costumesItems[customEquipementSelect.value]; | |
var btnClean = divParent.querySelector('button.ng-binding'); | |
btnClean.click(); | |
setItems.forEach(function (item) { | |
divParent.querySelector('li[ng-if="user.preferences.costume"] button.' + item).click() | |
}); | |
customEquipementLoadButton.innerHTML = $this.text.btnLoad.success; | |
customEquipementLoadButton.className = $this.class.btnLoad.success; | |
setTimeout(function () { | |
customEquipementLoadButton.className = $this.class.btnLoad.default; | |
customEquipementLoadButton.innerHTML = $this.text.btnLoad.default; | |
}, 1000); | |
} else { | |
customEquipementLoadButton.innerHTML = $this.text.btnLoad.error; | |
customEquipementLoadButton.className = $this.class.btnLoad.error; | |
setTimeout(function () { | |
customEquipementLoadButton.className = $this.class.btnLoad.default; | |
customEquipementLoadButton.innerHTML = $this.text.btnLoad.default; | |
}, 1000); | |
} | |
} | |
customEquipementDeleteButton.onclick = function (e) { | |
if (localStorage.getItem($this.storage.save2)) { | |
if(!confirm('Etes-vous sûr ?')) { | |
return; | |
} | |
var btnClean = divParent.querySelector('button[ng-click=\'dequip("costume");\']'); | |
btnClean.click(); | |
delete costumesItems[customEquipementSelect.value]; | |
var optionDelete = divParent.querySelector('option[value="'+customEquipementSelect.value+'"]') | |
optionDelete.parentNode.removeChild(optionDelete) | |
localStorage.setItem($this.storage.save2, JSON.stringify(costumesItems)); | |
customEquipementDeleteButton.innerHTML = $this.text.btnDelete.success; | |
customEquipementDeleteButton.className = $this.class.btnDelete.success; | |
setTimeout(function () { | |
customEquipementDeleteButton.className = $this.class.btnDelete.default; | |
customEquipementDeleteButton.innerHTML = $this.text.btnDelete.default; | |
}, 1000); | |
} else { | |
customEquipementDeleteButton.innerHTML = $this.text.btnDelete.error; | |
customEquipementDeleteButton.className = $this.class.btnDelete.error; | |
setTimeout(function () { | |
customEquipementDeleteButton.className = $this.class.btnDelete.default; | |
customEquipementDeleteButton.innerHTML = $this.text.btnDelete.default; | |
}, 1000); | |
} | |
} | |
}, | |
init: function(){ | |
if(!hre.utils.moduleActivated('items')) { | |
return; | |
} | |
hre.waitToPage(this.page, function($this){ | |
equipementTitle = document.querySelectorAll($this.selectors.equipementTitle); | |
equipementTitleItems = equipementTitle[0]; | |
equipementTitleSets = equipementTitle[1]; | |
$this.buildUi(equipementTitleItems); | |
$this.buildUi2(equipementTitleSets); | |
hre.debug('Module items ready') | |
}, this); | |
} | |
} | |
hre.previewBackground = { | |
page: '#/options/profile/backgrounds', | |
selectors: { | |
backgroundsExist: '.background-locked', | |
backgrounds: '.customize-option', | |
heroBox: '.herobox' | |
}, | |
text: { | |
preview: 'Preview' | |
}, | |
buildUi: function() { | |
var $this = this; | |
var heroBox = document.querySelector(this.selectors.heroBox); | |
var backgrounds = document.querySelectorAll(this.selectors.backgrounds); | |
var nobackground = 'noBackgroundImage'; | |
var currentBackground = heroBox.className.match(/background_[a-z_]+/, ''); | |
if( !currentBackground ) { | |
currentBackground = nobackground; | |
} else { | |
currentBackground = currentBackground[0]; | |
} | |
var count = 0; | |
backgrounds.forEach(function (background) { | |
count++; | |
var backgroundName = /background_[a-z_]+/.exec(background.className)[0]; | |
background.addEventListener('mouseover', function(e) { | |
heroBox.className = heroBox.className.replace(/noBackgroundImage/, '').replace(/background_[a-z_]+/, '').replace(/background_/, '') | |
heroBox.className = heroBox.className + ' ' + backgroundName | |
}) | |
background.addEventListener('mouseleave', function(e) { | |
heroBox.className = heroBox.className.replace(/noBackgroundImage/, '').replace(/background_[a-z_]+/, '').replace(/background_/, '') | |
heroBox.className = heroBox.className + ' ' + currentBackground | |
}) | |
}); | |
}, | |
init: function() { | |
if(!hre.utils.moduleActivated('previewBackground')) { | |
return; | |
} | |
hre.waitToPage(this.page, function ($this) { | |
$this.buildUi(); | |
hre.debug('Module previewBackground ready') | |
}, this) | |
} | |
} | |
hre.options = { | |
page: '#/options/settings/settings', | |
storage: { | |
options: 'hre-settings' | |
}, | |
selectors: { | |
optionsExist: 'input[ng-model="user.preferences.dayStart"]', | |
toAppend: 'div.tab-content:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1)' | |
}, | |
text: { | |
preview: 'Preview' | |
}, | |
template: { | |
box: | |
'<div class="panel panel-default">' + | |
'<div class="panel-heading">' + | |
'<span>Options d\'HabitRpg Extended</span>' + | |
'</div>' + | |
'<div class="panel-body">' + | |
'<div class="checkbox"><label><input type="checkbox" name="hre[pet]" value="1"><span>Module pour changer le pet de place</span></label></div>' + | |
'<div class="checkbox"><label><input type="checkbox" name="hre[level]" value="1"><span>Module pour masquer le niveau</span></label></div>' + | |
'<div class="checkbox"><label><input type="checkbox" name="hre[background]" value="1"><span>Module pour visualiser l\'arrière-plans</span></label></div>' + | |
'<div class="checkbox"><label><input type="checkbox" name="hre[items]" value="1"><span>Module pour le gestionnaire de set</span></label></div>' + | |
'<div class="checkbox"><label><input type="checkbox" name="hre[debug]" value="1"><span>Afficher du debug dans la console</span></label></div>' + | |
'</div>' + | |
'</div>' | |
}, | |
buildUi: function() { | |
var $this = this; | |
var box = document.createElement('div'); | |
box.classList.add('personal-options'); | |
box.classList.add('col-md-6'); | |
box.innerHTML = $this.template.box | |
document.querySelector($this.selectors.toAppend).appendChild(box); | |
var pet = document.querySelector('input[name="hre[pet]"]'); | |
pet.checked = hre.settings.module.portraits.pet; | |
pet.onclick = function(){ | |
var v; | |
if(this.checked) { | |
v = true; | |
} else { | |
v = false; | |
} | |
hre.settings.module.portraits.pet = v; | |
var json = JSON.stringify(hre.settings); | |
hre.storage.set($this.storage.options, json) | |
} | |
var level = document.querySelector('input[name="hre[level]"]'); | |
level.checked = hre.settings.module.portraits.level | |
level.onclick = function(){ | |
var v; | |
if(this.checked) { | |
v = true; | |
} else { | |
v = false; | |
} | |
hre.settings.module.portraits.level = v; | |
var json = JSON.stringify(hre.settings); | |
hre.storage.set($this.storage.options, json) | |
} | |
var background = document.querySelector('input[name="hre[background]"]'); | |
background.checked = hre.settings.module.previewBackground.activated | |
background.onclick = function(){ | |
var v; | |
if(this.checked) { | |
v = true; | |
} else { | |
v = false; | |
} | |
hre.settings.module.previewBackground.activated = v; | |
var json = JSON.stringify(hre.settings); | |
hre.storage.set($this.storage.options, json) | |
} | |
var items = document.querySelector('input[name="hre[items]"]'); | |
items.checked = hre.settings.module.items.activated; | |
items.onclick = function(){ | |
var v; | |
if(this.checked) { | |
v = true; | |
} else { | |
v = false; | |
} | |
hre.settings.module.items.activated = v; | |
var json = JSON.stringify(hre.settings); | |
hre.storage.set($this.storage.options, json) | |
} | |
var debug = document.querySelector('input[name="hre[debug]"]'); | |
debug.checked = hre.settings.debug; | |
debug.onclick = function(){ | |
var v; | |
if(this.checked) { | |
v = true; | |
} else { | |
v = false; | |
} | |
hre.settings.debug = v; | |
var json = JSON.stringify(hre.settings); | |
hre.storage.set($this.storage.options, json) | |
} | |
}, | |
init: function() { | |
hre.waitToPage(this.page, function ($this) { | |
$this.buildUi() | |
hre.debug('Module options ready') | |
}, this) | |
} | |
} | |
//alert('ok'); | |
hre.run(); | |
}); | |
}, false); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment