var templateGeneralCard = '
\

<%name%>

\

\

<%leadership%> / <%strength%> / <%intel%>
\ <%nation%>
\ <%personalText%>
\ <%specialText%> / <%special2Text%>

\ \ \
'; var templateSpecial = '<%text%>\ \ <%info%>\ \ \ '; var templateGeneralRow = '\ \ <%name%><%nameAux%>\ <%age%>세\ <%personalWithTooltip%>\ <%specialDomesticWithTooltip%> / <%speicalWarWithTooltip%>\ Lv <%explevel%>\ <%nation%>\ <%experience%>\ <%dedication%>\ <%officerLevel%>\ <%total%>\ <%leadership%>\ <%strength%>\ <%intel%>\ <%killturn%>\ '; function pickGeneral(){ $btn = $(this); if (!confirm('빙의할까요? : {0}'.format($btn.data('name')))) { return false; } $.post({ url:'j_select_npc.php', dataType:'json', data:{ pick:$btn.val() } }).then(function(result){ if(!result.result){ alert(result.reason); location.refresh(); } alert('빙의에 성공했습니다.'); location.href = './'; }); return false; } function updateOutdateTimer(){ var $validUntilText = $('#valid_until_text'); var now = Date.now(); var validUntil = $validUntilText.data('until'); if(validUntil <= 0){ return; } else if(validUntil < now){ $validUntilText.data('until',0); $('#valid_until').hide(); $('#outdate_token').show(); return; } else if(validUntil - now <= 30000){ $validUntilText.css('color', "rgb(255, {0}, {0})".format(255*(validUntil - now)/30000)); } setTimeout(updateOutdateTimer, 1000); } function updatePickMoreTimer(){ var $btn = $('#btn_pick_more'); var now = Date.now(); var remain = ($btn.data('available') - now) / 1000; if(remain <= 0){ $btn.prop('disabled', false) $btn.html('다른 장수 보기'); return; } $btn.html('다른 장수 보기({0}초)'.format(Math.ceil(remain))); setTimeout(updatePickMoreTimer, 250); } function printGenerals(value){ $('.card_holder').empty(); $('#valid_until').show(); $('#valid_until_text').html(value.validUntil).data('until', (new Date(value.validUntil)).getTime()).css('color','white'); $('#outdate_token').hide(); var time = Date.now() + value.pickMoreSeconds*1000; $('#btn_pick_more').data('available', time).prop('disabled',true); var pick = $.map(value.pick, function(value, key) { return value; }); pick.sort(function(lhs, rhs){ var lsum = lhs.leadership+lhs.strength+lhs.intel; var rsum = rhs.leadership+rhs.strength+rhs.intel; return lsum - rsum; }); $.each(pick, function(idx, cardData){ cardData.iconPath = getIconPath(cardData.imgsvr, cardData.picture); if(cardData.special in specialInfo){ cardData.specialText = TemplateEngine(templateSpecial, { text:cardData.special, info:specialInfo[cardData.special] }); } else{ cardData.specialText = cardData.special; } if(cardData.special2 in specialInfo){ cardData.special2Text = TemplateEngine(templateSpecial, { text:cardData.special2, info:specialInfo[cardData.special2] }); } else{ cardData.special2Text = cardData.special2; } if(cardData.personal in characterInfo){ cardData.personalText = TemplateEngine(templateSpecial, { text:cardData.personal, info:characterInfo[cardData.personal] }); } else{ cardData.personalText = cardData.personal; } var $card = $(TemplateEngine(templateGeneralCard, cardData)); $('.card_holder').append($card); $card.find('.select_btn').click(pickGeneral); $card.find('.obj_tooltip').tooltip({ title:function(){ return $.trim($(this).find('.tooltiptext').html()); }, html:true }); }); updatePickMoreTimer(); updateOutdateTimer(); } function printGeneralList(value){ var tokenList = value.token; var generalList = $.map(value.list, function(general){ general = { no:general[0], picture:general[1], imgsvr:general[2], npc:general[3], age:general[4], nation:general[5], special:general[6], special2:general[7], personal:general[8], name:general[9], ownerName:general[10], injury:general[11], leadership:general[12], lbonus:general[13], strength:general[14], intel:general[15], explevel:general[16], experience:general[17], dedication:general[18], officerLevel:general[19], killturn:general[20], connect:general[21], reserved:0 }; if(general.npc < 2){ general.reserved = 2; } if(general.no in tokenList){ general.reserved = 1; } general.userCSS = ""; general.nameAux = ""; if(general.reserved == 1){ general.userCSS = 'color:violet'; } else if(general.npc >= 2){ general.userCSS = 'color:cyan'; } else if(general.npc == 1){ general.userCSS = 'color:skyblue'; } if(general.ownerName){ general.nameAux += '
({0})'.format(general.ownerName); } if(general.reserved == 1){ general.nameAux += '
({0}회)'.format(tokenList[general.no]); } general.total = general.leadership + general.strength + general.intel; general.iconPath = getIconPath(general.imgsvr, general.picture); general.specialDomesticWithTooltip = TemplateEngine(templateSpecial, { text:general.special, info:specialInfo[general.special] }); general.speicalWarWithTooltip = TemplateEngine(templateSpecial, { text:general.special2, info:specialInfo[general.special2] }); general.personalWithTooltip = TemplateEngine(templateSpecial, { text:general.personal, info:characterInfo[general.personal] }); return general; }); generalList.sort(function(lhs, rhs){ if(lhs.reserved > rhs.reserved){ return -1; } if(lhs.reserved < rhs.reserved){ return 1; } if(lhs.total != rhs.total){ return rhs.total - lhs.total; } if(lhs.leadership != rhs.leadership){ return rhs.leadership - lhs.total; } if(lhs.name < rhs.name){ return -1; } if(lhs.name > rhs.name){ return 1; } return 0; }); window.generalList = generalList; _printGeneralList(true); } function _printGeneralList(clear){ var $generalTable = $('#general_list'); if(clear){ $generalTable.empty(); $generalTable.data('lastIdx', 0); $('#row_print_more').show(); } generalList = window.generalList; var idxFrom = $generalTable.data('lastIdx'); var idxTo = Math.min(idxFrom + 50, generalList.length); $generalTable.data('lastIdx', idxTo); for(var idx = idxFrom; idx < idxFrom + 50; idx++){ var general = generalList[idx]; $generalTable.append(TemplateEngine(templateGeneralRow, general)); } if(idxTo == generalList.length){ $('#row_print_more').hide(); } $generalTable.find('.obj_tooltip').tooltip({ title:function(){ return $.trim($(this).find('.tooltiptext').html()); }, html:true }); $('#tb_general_list').show(); } $(function($){ window.generalList = []; $.post('j_get_select_npc_token.php').then(function(value){ if(!value.result){ alert(value.reason); return; } console.log(value); printGenerals(value); }); $('#btn_pick_more').click(function(){ var generals = $.map($('.keep_select:checked'), function(value){ return $(value).val(); }); console.log(generals); $.post({ url:'j_get_select_npc_token.php', dataType:'json', data:{ refresh:true, keep:generals } }).then(function(result){ if(!result.result){ alert(result.reason); location.refresh(); } console.log(result); printGenerals(result); }); }); $('#btn_load_general_list').click(function(){ $.post({ url:'j_get_general_list.php', dataType:'json', data:{ with_token:true } }).then(function(result){ if(!result.result){ alert(result.reason); return false; } printGeneralList(result); }); }); $('#btn_print_more').click(function(){ _printGeneralList(); }) });