549 lines
22 KiB
JavaScript

var points_max = 51;
var points_spent_t1 = 0;
var points_spent_t2 = 0;
var points_spent_t3 = 0;
function skilltree(){
console.log("-MojoWoW: load skilltree")
$('.icon').mousedown(function(event) {
event.preventDefault();
var id = '#'+this.id;
var id_count = '#'+this.id +'c';
var id_img = '#'+this.id +'i';
switch (event.which) {
case 1:
if(is_icon_skillable(id) && !is_point_max() && !is_icon_max(id_count)){
write_icon(id,id_count,id_img,1,true);}
break;
case 3:
if(is_icon_deskillable(id) && !is_icon_min(id_count)){
write_icon(id,id_count,id_img,-1,true);}
break;
default:
}
});
$('.reset').click(function(){
write_reset(parseInt($(this).attr('t')));
});
write_start_spec();
}
function write_start_spec(){
for(var t=1; t<=3; t++){
var treestr = $('#tree'+t).attr('skill');
var pos = 0;
$('#tree'+t+' .icon').each(function(){
var id = '#'+this.id;
var id_count = '#'+this.id +'c';
var id_img = '#'+this.id +'i';
if($('#'+this.id+'i').hasClass('talent_icon') &&
!$('#'+this.id+'i').hasClass('icon_empty') &&
pos < treestr.length){
for(var i=0; i<parseInt(treestr.charAt(pos)); i++){
if(is_icon_skillable(id) && !is_point_max() && !is_icon_max(id_count)){
write_icon(id,id_count,id_img,1,false);}
}
pos++;
}
});
}
}
function write_reset(tree){
switch(tree){
case 1:
points_spent_t1 = 0;
break;
case 2:
points_spent_t2 = 0;
break;
case 3:
points_spent_t3 = 0;
break;
}
write_points_spent(tree,0);
$('#tree'+tree+' .icon').each(function(){
var id = '#'+this.id;
var id_count = '#'+this.id +'c';
var id_img = '#'+this.id +'i';
if(parseInt($(id).attr('r')) == 1){
write_icon_green(id,id_count,id_img);
write_icon_cur_null(id_count);
write_icon_cur(id_count,0);
}else{
write_icon_grey(id,id_count,id_img);
write_icon_cur_null(id_count);
}
});
}
function is_icon_skillable(id){
tree = parseInt($(id).attr('t'));
row = parseInt($(id).attr('r'));
column = parseInt($(id).attr('r'));
parent_row = parseInt($(id).attr('parent_row'));
parent_column = parseInt($(id).attr('parent_column'));
count = 0;
if(parent_row && parent_column && parent_row != 0 && parent_column != 0 && !is_icon_max('#t'+tree+'r'+parent_row+'c'+parent_column+'c')){
return false;}
$('#tree'+tree+' .icon').each(function(){
if($(this).attr('r') < row){
count += parseInt($('#'+this.id+'c').attr('cur'));}
});
if(count < 5*(row-1)){
return false;}
if( $('#'+this.id+'i').hasClass('icon_border_grey_inc_left') ||
$('#'+this.id+'i').hasClass('icon_border_green_inc_left') ||
$('#'+this.id+'i').hasClass('icon_border_yellow_inc_left')){
alert("abc");
}
if( $('#'+this.id+'i').hasClass('icon_border_grey_inc') ||
$('#'+this.id+'i').hasClass('icon_border_green_inc') ||
$('#'+this.id+'i').hasClass('icon_border_yellow_inc')){
alert("abc2");
}
return true;
}
function is_icon_deskillable(id){
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var count = 0;
var count_row = 0;
$('#tree'+tree+' .icon').each(function(){
if($(this).attr('r') == row){
count_row += parseInt($('#'+this.id+'c').attr('cur'));}
if($(this).attr('r') > row){
count += parseInt($('#'+this.id+'c').attr('cur'));}
});
if(count > 0 && count_row <= 5){
return false;}
return true;
}
function is_point_max(){
return points_max <= points_spent_t1 + points_spent_t2 +points_spent_t3;}
function is_icon_max(id){
return $(id).attr('max') <= $(id).attr('cur');}
function is_icon_min(id){
return 0 >= $(id).attr('cur');}
function write_points_spent(tree,amount){
switch(tree){
case 1:
points_spent_t1 += amount;
break;
case 2:
points_spent_t2 += amount;
break;
case 3:
points_spent_t3 += amount;
break;
}
$('#treeheader1 .stdText').html(' - '+points_spent_t1+' Points');
$('#treeheader2 .stdText').html(' - '+points_spent_t2+' Points');
$('#treeheader3 .stdText').html(' - '+points_spent_t3+' Points');
}
function write_icon_cur(id_count,amount){
var current = parseInt($(id_count).attr('cur'))+amount;
$(id_count).attr('cur',current);
$(id_count).html(current+'/'+$(id_count).attr('max'));
}
function write_icon_cur_null(id_count){
$(id_count).attr('cur',0);
$(id_count).html('');
}
function write_url(){
var result = '?t='+$('.skilltree').attr('skill_class')+'_';
$('#tree1'+' .icon').each(function(){
if($('#'+this.id+'i').hasClass('talent_icon') &&
!$('#'+this.id+'i').hasClass('icon_empty')){
result += parseInt($('#'+this.id+'c').attr('cur'));}});
result += '_';
$('#tree2'+' .icon').each(function(){
if($('#'+this.id+'i').hasClass('talent_icon') &&
!$('#'+this.id+'i').hasClass('icon_empty')){
result += parseInt($('#'+this.id+'c').attr('cur'));}});
result += '_';
$('#tree3'+' .icon').each(function(){
if($('#'+this.id+'i').hasClass('talent_icon') &&
!$('#'+this.id+'i').hasClass('icon_empty')){
result += parseInt($('#'+this.id+'c').attr('cur'));}});
history.pushState(null, null, document.location.origin + document.location.pathname + result + window.location.hash);
}
function insertParam(key, value)
{
key = encodeURI(key); value = encodeURI(value);
var kvp = document.location.search.substr(1).split('&');
var i=kvp.length; var x; while(i--)
{
x = kvp[i].split('=');
if (x[0]==key)
{
x[1] = value;
kvp[i] = x.join('=');
break;
}
}
if(i<0) {kvp[kvp.length] = [key,value].join('=');}
//this will reload the page, it's likely better to store this until finished
document.location.search = kvp.join('&');
}
function write_icon(id,id_count,id_img,amount,pushstate){
write_icon_cur(id_count,amount);
write_points_spent(tree,amount);
if(pushstate){
write_url();
if(is_point_max()){
window.location.reload();}
}
if(is_icon_max(id_count)){
write_icon_yellow(id,id_count,id_img);
} else {
write_icon_green(id,id_count,id_img);}
tree = parseInt($(id).attr('t'));
row = parseInt($(id).attr('r'));
var count = 0;
$('#tree'+tree+' .icon').each(function(){
count += parseInt($('#'+this.id+'c').attr('cur'));
if((parseInt($('#'+this.id).attr('r'))-1)*5 <= count){
if(!$('#'+this.id+'i').hasClass('talent_arrow')){
current = parseInt($('#'+this.id+'c').attr('cur'));
$('#'+this.id+'c').html(current+'/'+$('#'+this.id+'c').attr('max'));
}
if(is_icon_max('#'+this.id+'c')){
write_icon_yellow('#'+this.id,'#'+this.id+'c','#'+this.id+'i');
} else if(is_icon_skillable('#'+this.id)){
write_icon_green('#'+this.id,'#'+this.id+'c','#'+this.id+'i');
} else {
$('#'+this.id+'c').html('');
write_icon_grey('#'+this.id,'#'+this.id+'c','#'+this.id+'i');
}
} else if(is_icon_skillable('#'+this.id)){
current = parseInt($('#'+this.id+'c').attr('cur'));
$('#'+this.id+'c').html(current+'/'+$('#'+this.id+'c').attr('max'));
if(is_icon_max('#'+this.id+'c')){
write_icon_yellow('#'+this.id,'#'+this.id+'c','#'+this.id+'i');
} else if(is_icon_skillable('#'+this.id)){
write_icon_green('#'+this.id,'#'+this.id+'c','#'+this.id+'i');
}
} else {
$('#'+this.id+'c').html('');
write_icon_grey('#'+this.id,'#'+this.id+'c','#'+this.id+'i');
}
});
}
function write_icon_green(id,id_count,id_img){
if($(id_img).hasClass('icon_empty')){
return;}
$(id_count).removeClass('icon_text_yellow');
$(id_count).addClass('icon_text_green');
if($(id).attr('icon')){
if($(id).attr('style') !== 'background: url(./api.php?call=files&cat=skilltree_skills&id='+$(id).attr('icon')+') 50% 50% no-repeat;'){
$(id).attr('style','background: url(./api.php?call=files&cat=skilltree_skills&id='+$(id).attr('icon')+') 50% 50% no-repeat;');}
}
if( $(id_img).hasClass('icon_border_grey') ||
$(id_img).hasClass('icon_border_yellow')){
$(id_img).removeClass('icon_border_grey');
$(id_img).removeClass('icon_border_yellow');
$(id_img).addClass('icon_border_green');}
if( $(id_img).hasClass('icon_border_grey_down') ||
$(id_img).hasClass('icon_border_yellow_down')){
$(id_img).removeClass('icon_border_grey_down');
$(id_img).removeClass('icon_border_yellow_down');
$(id_img).addClass('icon_border_green_down');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'));
write_arrow_grey('#t'+tree+'r'+(row+1)+'c'+column+'i');
write_arrow_grey('#t'+tree+'r'+(row+2)+'c'+column+'i');
}
if( $(id_img).hasClass('icon_border_grey_down_right') ||
$(id_img).hasClass('icon_border_yellow_down_right')){
$(id_img).removeClass('icon_border_grey_down_right');
$(id_img).removeClass('icon_border_yellow_down_right');
$(id_img).addClass('icon_border_green_down_right');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'));
write_arrow_grey('#t'+tree+'r'+(row+1)+'c'+column+'i');
write_arrow_grey('#t'+tree+'r'+row+'c'+(column+1)+'i');
}
if( $(id_img).hasClass('icon_border_grey_right') ||
$(id_img).hasClass('icon_border_yellow_right')){
$(id_img).removeClass('icon_border_grey_right');
$(id_img).removeClass('icon_border_yellow_right');
$(id_img).addClass('icon_border_green_right');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'))+1;
write_arrow_grey('#t'+tree+'r'+row+'c'+column+'i');
}
if( $(id_img).hasClass('icon_border_grey_inc') ||
$(id_img).hasClass('icon_border_yellow_inc')){
$(id_img).removeClass('icon_border_grey_inc');
$(id_img).removeClass('icon_border_yellow_inc');
$(id_img).addClass('icon_border_green_inc');}
if( $(id_img).hasClass('icon_border_grey_inc_left') ||
$(id_img).hasClass('icon_border_yellow_inc_left')){
$(id_img).removeClass('icon_border_grey_inc_left');
$(id_img).removeClass('icon_border_yellow_inc_left');
$(id_img).addClass('icon_border_green_inc_left');}
if( $(id_img).hasClass('icon_border_grey_left') ||
$(id_img).hasClass('icon_border_yellow_left')){
$(id_img).removeClass('icon_border_grey_left');
$(id_img).removeClass('icon_border_yellow_left');
$(id_img).addClass('icon_border_green_left');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'))-1;
write_arrow_grey('#t'+tree+'r'+row+'c'+column+'i');
}
if( $(id_img).hasClass('icon_border_grey_inc_top_down') ||
$(id_img).hasClass('icon_border_yellow_inc_top_down')){
$(id_img).removeClass('icon_border_grey_inc_top_down');
$(id_img).removeClass('icon_border_yellow_inc_top_down');
$(id_img).addClass('icon_border_green_inc_top_down');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'));
write_arrow_grey('#t'+tree+'r'+(row+1)+'c'+column+'i');
write_arrow_grey('#t'+tree+'r'+(row+2)+'c'+column+'i');
}
}
function write_arrow_yellow(id){
if($(id).hasClass('talent_arrow')){
if($(id).hasClass('icon_arrow_grey_down')){
$(id).removeClass('icon_arrow_grey_down');
$(id).addClass('icon_arrow_yellow_down');
}
if($(id).hasClass('icon_arrow_grey_down_right')){
$(id).removeClass('icon_arrow_grey_down_right');
$(id).addClass('icon_arrow_yellow_down_right');
}
if($(id).hasClass('icon_arrow_grey_right')){
$(id).removeClass('icon_arrow_grey_right');
$(id).addClass('icon_arrow_yellow_right');
}
if($(id).hasClass('icon_arrow_grey_left')){
$(id).removeClass('icon_arrow_grey_left');
$(id).addClass('icon_arrow_yellow_left');
}
}
}
function write_arrow_grey(id){
if($(id).hasClass('talent_arrow')){
if($(id).hasClass('icon_arrow_yellow_down')){
$(id).removeClass('icon_arrow_yellow_down');
$(id).addClass('icon_arrow_grey_down');
}
if($(id).hasClass('icon_arrow_yellow_down_right')){
$(id).removeClass('icon_arrow_yellow_down_right');
$(id).addClass('icon_arrow_grey_down_right');
}
if($(id).hasClass('icon_arrow_yellow_right')){
$(id).removeClass('icon_arrow_yellow_right');
$(id).addClass('icon_arrow_grey_right');
}
if($(id).hasClass('icon_arrow_yellow_left')){
$(id).removeClass('icon_arrow_yellow_left');
$(id).addClass('icon_arrow_grey_left');
}
}
}
function write_icon_yellow(id,id_count,id_img){
if($(id_img).hasClass('icon_empty')){
return;}
$(id_count).removeClass('icon_text_green');
$(id_count).addClass('icon_text_yellow');
if($(id).attr('icon')){
if($(id).attr('style') !== 'background: url(./api.php?call=files&cat=skilltree_skills&id='+$(id).attr('icon')+') 50% 50% no-repeat;'){
$(id).attr('style','background: url(./api.php?call=files&cat=skilltree_skills&id='+$(id).attr('icon')+') 50% 50% no-repeat;');}
}
if( $(id_img).hasClass('icon_border_grey') ||
$(id_img).hasClass('icon_border_green')){
$(id_img).removeClass('icon_border_grey');
$(id_img).removeClass('icon_border_green');
$(id_img).addClass('icon_border_yellow');}
if( $(id_img).hasClass('icon_border_grey_down') ||
$(id_img).hasClass('icon_border_green_down')){
$(id_img).removeClass('icon_border_grey_down');
$(id_img).removeClass('icon_border_green_down');
$(id_img).addClass('icon_border_yellow_down');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'));
write_arrow_yellow('#t'+tree+'r'+(row+1)+'c'+column+'i');
write_arrow_yellow('#t'+tree+'r'+(row+2)+'c'+column+'i');
}
if( $(id_img).hasClass('icon_border_grey_down_right') ||
$(id_img).hasClass('icon_border_green_down_right')){
$(id_img).removeClass('icon_border_grey_down_right');
$(id_img).removeClass('icon_border_green_down_right');
$(id_img).addClass('icon_border_yellow_down_right');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'));
write_arrow_yellow('#t'+tree+'r'+(row+1)+'c'+column+'i');
write_arrow_yellow('#t'+tree+'r'+row+'c'+(column+1)+'i');
}
if( $(id_img).hasClass('icon_border_grey_right') ||
$(id_img).hasClass('icon_border_green_right')){
$(id_img).removeClass('icon_border_grey_right');
$(id_img).removeClass('icon_border_green_right');
$(id_img).addClass('icon_border_yellow_right');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'))+1;
write_arrow_yellow('#t'+tree+'r'+row+'c'+column+'i');
}
if( $(id_img).hasClass('icon_border_grey_inc') ||
$(id_img).hasClass('icon_border_green_inc')){
$(id_img).removeClass('icon_border_grey_inc');
$(id_img).removeClass('icon_border_green_inc');
$(id_img).addClass('icon_border_yellow_inc');}
if( $(id_img).hasClass('icon_border_grey_inc_left') ||
$(id_img).hasClass('icon_border_green_inc_left')){
$(id_img).removeClass('icon_border_grey_inc_left');
$(id_img).removeClass('icon_border_green_inc_left');
$(id_img).addClass('icon_border_yellow_inc_left');}
if( $(id_img).hasClass('icon_border_grey_left') ||
$(id_img).hasClass('icon_border_green_left')){
$(id_img).removeClass('icon_border_grey_left');
$(id_img).removeClass('icon_border_green_left');
$(id_img).addClass('icon_border_yellow_left');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'))-1;
write_arrow_yellow('#t'+tree+'r'+row+'c'+column+'i');
}
if( $(id_img).hasClass('icon_border_grey_inc_top_down') ||
$(id_img).hasClass('icon_border_green_inc_top_down')){
$(id_img).removeClass('icon_border_grey_inc_top_down');
$(id_img).removeClass('icon_border_green_inc_top_down');
$(id_img).addClass('icon_border_yellow_inc_top_down');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'));
write_arrow_yellow('#t'+tree+'r'+(row+1)+'c'+column+'i');
write_arrow_yellow('#t'+tree+'r'+(row+2)+'c'+column+'i');
}
}
function write_icon_grey(id,id_count,id_img){
if($(id_img).hasClass('icon_empty')){
return;}
$(id_count).removeClass('icon_text_green');
$(id_count).removeClass('icon_text_yellow');
if($(id).attr('icon')){
if($(id).attr('style') !== 'background: url(./api.php?call=files&cat=skilltree_skills_grey&id='+$(id).attr('icon')+') 50% 50% no-repeat;'){
$(id).attr('style', 'background: url(./api.php?call=files&cat=skilltree_skills_grey&id='+$(id).attr('icon')+') 50% 50% no-repeat;');}
}
if( $(id_img).hasClass('icon_border_yellow') ||
$(id_img).hasClass('icon_border_green')){
$(id_img).removeClass('icon_border_yellow');
$(id_img).removeClass('icon_border_green');
$(id_img).addClass('icon_border_grey');}
if( $(id_img).hasClass('icon_border_yellow_down') ||
$(id_img).hasClass('icon_border_green_down')){
$(id_img).removeClass('icon_border_yellow_down');
$(id_img).removeClass('icon_border_green_down');
$(id_img).addClass('icon_border_grey_down');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'));
write_arrow_grey('#t'+tree+'r'+(row+1)+'c'+column+'i');
write_arrow_grey('#t'+tree+'r'+(row+2)+'c'+column+'i');
}
if( $(id_img).hasClass('icon_border_yellow_down_right') ||
$(id_img).hasClass('icon_border_green_down_right')){
$(id_img).removeClass('icon_border_yellow_down_right');
$(id_img).removeClass('icon_border_green_down_right');
$(id_img).addClass('icon_border_grey_down_right');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'));
write_arrow_yellow('#t'+tree+'r'+(row+1)+'c'+column+'i');
write_arrow_yellow('#t'+tree+'r'+row+'c'+(column+1)+'i');
}
if( $(id_img).hasClass('icon_border_yellow_right') ||
$(id_img).hasClass('icon_border_green_right')){
$(id_img).removeClass('icon_border_yellow_right');
$(id_img).removeClass('icon_border_green_right');
$(id_img).addClass('icon_border_grey_right');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'))+1;
write_arrow_grey('#t'+tree+'r'+row+'c'+column+'i');
}
if( $(id_img).hasClass('icon_border_yellow_inc') ||
$(id_img).hasClass('icon_border_green_inc')){
$(id_img).removeClass('icon_border_yellow_inc');
$(id_img).removeClass('icon_border_green_inc');
$(id_img).addClass('icon_border_grey_inc');}
if( $(id_img).hasClass('icon_border_yellow_inc_left') ||
$(id_img).hasClass('icon_border_green_inc_left')){
$(id_img).removeClass('icon_border_yellow_inc_left');
$(id_img).removeClass('icon_border_green_inc_left');
$(id_img).addClass('icon_border_grey_inc_left');}
if( $(id_img).hasClass('icon_border_yellow_left') ||
$(id_img).hasClass('icon_border_green_left')){
$(id_img).removeClass('icon_border_yellow_left');
$(id_img).removeClass('icon_border_green_left');
$(id_img).addClass('icon_border_grey_left');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'))-1;
write_arrow_grey('#t'+tree+'r'+row+'c'+column+'i');
}
if( $(id_img).hasClass('icon_border_yellow_inc_top_down') ||
$(id_img).hasClass('icon_border_green_inc_top_down')){
$(id_img).removeClass('icon_border_yellow_inc_top_down');
$(id_img).removeClass('icon_border_green_inc_top_down');
$(id_img).addClass('icon_border_grey_inc_top_down');
var tree = parseInt($(id).attr('t'));
var row = parseInt($(id).attr('r'));
var column = parseInt($(id).attr('c'));
write_arrow_grey('#t'+tree+'r'+(row+1)+'c'+column+'i');
write_arrow_grey('#t'+tree+'r'+(row+2)+'c'+column+'i');
}
}