'
).css({
'display': 'flex',
'margin-left': '30px'
}).appendTo('#soldier_bulk_set');
var setUnitValue = function() {
var id_name = $(this).attr('id');
each_setting.set_unit[id_name] = $(this).val();
setStorage('ixamoko_each_setting', each_setting);
},
$select = $('#soldier_bulk_set select').change(setUnitValue);
var select_skill_s1 = getStorage(null, 'ixamoko_select_skill_s1');
if (select_skill_s1) {
for (var key in select_skill_s1) {
$('input[id="' + key + '"]').prop('checked', select_skill_s1[key]);
}
}
else {
select_skill_s1 = {
'select_skill_syuugeki': false,
'select_skill_singeki': false,
'select_skill_kensyu': false,
'select_skill_sonae': false
}
}
$('#select_skill_s1 input').on('change', function(){
var id_name = $(this).attr('id');
select_skill_s1[id_name] = $(this).prop('checked');
setStorage('ixamoko_select_skill_s1', select_skill_s1);
});
if (!each_setting.set_unit) {
each_setting.set_unit = {};
$select.each(setUnitValue);
}
for (var key in each_setting.set_unit) {
$('select[id="' + key + '"]').val(each_setting.set_unit[key]);
}
var $select_target_branch = $('#select_target_branch'),
$select_target_num = $('#select_target_num'),
$select_set_branch = $('#select_set_branch'),
$select_set_num = $('#select_set_num');
$select_target_num.on('change', function() {
var value = $(this).val();
if ((value == 1 || value == 2) && !$select_target_branch.val()) {
$select_target_branch.val('all').change();
}
if (value >= 4) {
$('input[id^="select_skill_"]').prop('disabled', false);
}
else {
$('input[id^="select_skill_"]').prop('disabled', true);
}
});
$select_target_branch.on('change', function() {
var value = $(this).val();
if (!value) {
$select_target_num.val('0').change();
}
});
$select_set_branch.on('change', function() {
var value = $(this).val();
if (value == 'no_type') {
$select_set_num.val('0').change();
}
});
$select_set_num.on('change', function() {
var value = $(this).val();
if (value != '0' && $select_set_branch.val() == 'no_type') {
$select_set_branch.val('current_type').change();
}
});
// 一括セットクリック
$('#heisi_set').on('click', function() {
nowLoading();
var select_target_branch = $select_target_branch.val(),
select_target_num = $select_target_num.val(),
select_set_branch = $select_set_branch.val(),
select_set_num = $select_set_num.val();
// プールの取得 ※存在兵種
var pool_unit = {};
$('td[id^="unit_count_"]').each(function() {
var type = $(this).attr('id').match(/\d+/g);
if (type >= 347) {
return true;
}
pool_unit[type] = parseInt($(this).text());
});
var $tr = $('table.busho_info').find('tr.tr_gradient').slice(1),
// 兵種変更の指揮兵数があれば全て0にする
numReduction = function(keys) {
var select_card_group = $('#select_card_group').val(),
c = keys.length,
post_query = function(data) {
$.ajax({
type: 'post',
url: '/facility/set_unit_list.php',
data: data,
beforeSend: xrwStatusText,
})
.then(function(html) {
c--;
if (c === 0) {
return setCardArray(pool_unit);
}
});
};
for (var i = 0, len = keys.length; i < len; i++) {
var data = {
show_deck_card_count: $('input[name="show_deck_card_count"]').val(),
show_num: $('input[name="show_num"]').val(),
select_card_group: select_card_group,
select_filter_num: $('#select_filter_num').val(),
p: $('#p').val(),
now_unit_type: keys[i],
now_group_type: select_card_group,
edit_unit_type: 'now_unit',
edit_unit_count: '0',
btnlumpsum: 'true'
};
post_query(data);
}
},
// 兵種変更の兵種の指揮兵数の判定
confirmType = function(obj, pool_unit) {
var key, keys;
for (key in obj) {
if (obj[key] === 0) {
delete obj[key];
}
}
keys = Object.keys(obj);
if (!keys.length) {
return setCardArray(pool_unit);
} else {
if (!confirm('兵数が不足している兵種が存在します\n選択中の組分けの武将を兵数0にしてから再セットします\n\n実行してよろしいですか?')) {
return nowLoading(true);
}
for (key in obj) {
pool_unit[key] += obj[key];
}
return numReduction(keys);
}
},
// 兵種変更の兵種の指揮兵数を取得
getSoldiersNum = function(object, pool_unit) {
$tr.each(function() {
var type = $(this).find('input[id^="now_unit_type"]').val(),
$now_unit_cnt = $(this).find('span[id^="now_unit_cnt"]'),
value = parseInt($now_unit_cnt.text());
for (var key in object) {
if (key != type) { continue; }
object[key] += value;
$now_unit_cnt.text('0');
}
});
return confirmType(object, pool_unit);
},
object = {};
/** セット兵種が基本兵種、兵種変更カード有り、兵種変更の兵種のプールが0
* 表示ページ内の指揮兵種に兵種変更の兵種があれば、還元して利用する
*/
// セット兵種 != 0 && セット兵種 == 基本兵種
if (select_set_num != '0' && select_set_branch == 'default_type') {
$tr.each(function() {
var type = $(this).find('input[id^="now_unit_type"]').val(),
defa = $(this).find('select[id^="unit_default_select"]').val();
// 兵種変更の兵種のプール === 0
if (type != defa && pool_unit[defa] === 0) {
object[defa] = 0;
}
});
return getSoldiersNum(object, pool_unit);
} else {
return setCardArray(pool_unit);
}
});
}
// 兵士編成 部隊
function soldierSetSupport() {
if (location.pathname != '/facility/set_unit_list.php') {
return;
}
if ($('img.iepngfix.mb5').length < 2) {
return;
}
var html = '' +
'
' +
'' +
'' +
'
';
$('table.busho_info').before(html);
// 部隊長と同兵種
$('.same_kind').on('click', function () {
var value;
$(this).closest('div.soldierset').next('table').find('select[id^="unit_id_select_"]').each(function (i, el) {
i === 0 ? value = $(this).val() : $(this).val(value);
});
});
// 同兵数セット
$('.constant').on('change', function() {
var all_constant = function(data) {
var ano = $('#select_assign_no').val(),
c = data.length,
post_query = function() {
$.ajax({
type: 'post',
url: '/facility/set_unit_list_if.php',
data: data[i],
beforeSend: xrwStatusText,
})
.then(function(html) {
c--;
if (c === 0) {
location.href = '/facility/set_unit_list.php?&ano=' + ano;
}
}, null);
};
for (var i = 0, len = data.length; i < len; i++) {
post_query(data[i]);
}
},
$card_id_arr = $(this).closest('div.soldierset').next('table').find('input[id^="card_id_arr_"]'),
quantity = $(this).val(),
c_num = $card_id_arr.eq(0).closest('tr.tr_gradient').find('input[id^="unit_cnt_text_"]').val(),
list = [],
card_id, set_type, data, set_count;
if (!quantity) {
return;
}
for (var i = 0, len = $card_id_arr.length; i < len; i++) {
card_id = $card_id_arr.eq(i).val();
set_type = $card_id_arr.eq(i).closest('tr.tr_gradient').find('select[id^="unit_id_select_"]').val();
data = get_card_data($('#cardWindow_' + card_id));
if (quantity == 'captain') {
set_count = c_num;
} else if (quantity == 'att_cap') {
set_count = Math.floor(data.att * 0.02);
} else if (quantity == 'def_cap') {
set_count = Math.floor(data.def * 0.02);
} else {
set_count = quantity;
}
list.push({
card_id: card_id,
unit_type: set_type,
unit_count: set_count
});
$('#unit_cnt_text_' + i).val(set_count);
}
all_constant(list);
});
var html = '
現状兵種で ' +
'' +
'' +
'
';
$('#deck_file').find('h3:eq(0)').before( html );
$('#change_all').css({'margin': '8px 50px 0px 0px', 'float':'right'});
$('#elite_bulk_set').click( elite_bulk );
}
// 兵士編成 ページ読み込み
function plusNestpage(object, flag) {
if (!plusNestpage.flag) {
plusNestpage.flag = true;
} else if (plusNestpage.flag) {
return;
}
$('#read').text('読込中... (' + object.start + '/' + object.max_page + ')');
var data = {
show_num: object.show_num,
p: object.start,
select_card_group: object.scg,
select_filter_num: object.select_filter_num
};
$.ajax({
type: 'post',
url: '/facility/set_unit_list.php?show_num=' + object.show_num + '&select_card_group=' + object.scg,
data: data,
beforeSend: xrwStatusText,
})
.then(function(html) {
var $html = $(html).find('#box'),
$tr = $html.find('table.busho_info > tbody > tr.tr_gradient').slice(1),
$card = $(html).find('div[id^="cardWindow"]');
$tr.each(trGradientCheck);
$('table.busho_info > tbody').append($tr);
$('div[id^="cardWindow"]:last').after($card);
$tr = null;
$card = null;
var str = object.start + '/' + object.max_page;
object.start++;
if (flag) {
if (object.start > object.max_page) {
moko_notice('全ページ読み込み完了', true);
$('#unit_list_add_page span').text(str);
} else {
plusNestpage.flag = false;
$('ul.pager').eq(0).attr('next', object.start);
$('#unit_list_add_page span').text(str);
}
tb_init('a.thickbox');
setUnitGroupsFilter();
return setUnitCategoryFilter(getActive());
} else {
if (object.start > object.max_page) {
tb_init('a.thickbox');
// 完了確認で表示
$('#read').remove();
$('#frame_01_spacer').css({'overflow':'', 'height':''});
setUnitGroupsFilter();
return punitiveSortMode();
} else {
plusNestpage.flag = false;
return plusNestpage(object);
}
}
});
}
function unitNextQuery() {
var object = {};
object.show_num = $('select[name="show_num"]').val();
object.scg = $('#select_card_group').val();
object.start = parseInt($('ul.pager').eq(0).find('span').text()) + 1;
object.max_page = html_max_page($('#deck_file'));
object.select_filter_num = $('#select_filter_num').val();
return object;
}
// 兵士編成 全表示
function unitListAllView() {
var object = unitNextQuery();
$('select[name="show_num"] option:last').text('全表示');
$('ul.pager').remove();
$('#now_group_type').find('option:first').remove();
unitListCheck();
// 完了確認の為不可視
$('#frame_01_spacer').css({'overflow':'hidden', 'height':'1em'})
.prepend('
読込中...
');
return plusNestpage(object);
}
// 兵士編成 全表示の切り替え
function unitListChange() {
if (location.pathname != '/facility/set_unit_list.php') {
return;
}
var punitive_step = getStorage(null, 'punitive_step');
if (punitive_step === 3) {
setStorage('punitive_step', 4);
return unitListAllView();
}
var $pager = $('ul.pager').eq(0),
show_num = $('select[name="show_num"]').val(),
now_page = parseInt($pager.find('span').text()),
max_page = html_max_page($('#deck_file'));
if (options.unit_list_view) {
if (options.unit_list_view_mod == '0') {
if ($pager.length && show_num == 100) {
return unitListAllView();
} else {
unitListCheck();
return punitiveSortMode();
}
} else {
unitListCheck();
if (!$pager.length) {
return;
}
$pager.attr('next', now_page + 1);
if (now_page == max_page) {
return;
}
$('
次頁を読み込む
')
.on('click', function() {
var object = unitNextQuery();
object.start = $pager.attr('next');
return plusNestpage(object, true);
})
.appendTo('#frame_01_spacer');
}
} else {
return unitListCheck();
}
}
// 兵種データ表示
var unitListPowerOutput = function(cid, type_list) {
var $preview = $('#preview_' + cid),
data = get_card_data($('#cardWindow_' + cid)),
excel = Math.max.apply(null, [data.att, data.def, data.int]),
html = '',
power, r_num, r_cost, perce, cost_defense;
for (var i = 0, len = type_list.length; i < len; i++) {
data.type = type_list[i]; // 各兵種別計算に置き換え
power = power_calculation(data);
r_num = data.max * power.apt;
r_cost = r_num / data.cost;
perce = (power.apt * 100).toFixed(1) + '%';
cost_defense = power.def / data.cost;
html += '' +
'
' +
'' + data.att + ' | ' +
'' + data.def + ' | ' +
'' + data.int + ' | ' +
'' + Math.floor(power.att) + ' | ' +
'' + Math.floor(power.def) + ' | ' +
'' + cost_defense.toFixed(0) + ' | ' +
'' + data.type + ' | ' +
'' + perce + ' | ' +
'' + r_num.toFixed(0) + ' | ' +
'' + r_cost.toFixed(0) + ' | ' +
'
';
}
$preview.find('tbody').append(html);
$('td.status_num').each(function() {
var num = parseFloat($(this).text());
if (excel === num) {
var type = $(this).attr('type'),
color;
switch (type) {
case 'att':
color = 'brown';
break;
case 'def':
color = 'steelblue';
break;
case 'int':
color = 'seagreen';
break;
}
$(this).css({
'color': 'white',
'background-color': color
});
}
});
var $td = $preview.find('td.soltype'),
command = $td.eq(0).text();
$td.slice(1).each(function() {
if ($(this).text() == command) {
$(this).parent().css('background-color', 'slategrey');
}
});
},
unitListPowerView = function($this) {
$this.find('div.force_type').css('cursor', 'pointer').on('click', function() {
if ($(this).parent('td').hasClass('squad_overlay')) {
return;
}
var $tr = $(this).closest('tr.tr_gradient'),
cid = $tr.find('input[id^="card_id_arr_"]').val(),
cut = $tr.find('span[id^="now_unit_cnt_"]').text(),
$preview = $('#preview_' + cid);
if (cut == '0') {
return;
}
if ($preview.length) {
$preview.remove();
} else {
var $newpreview = $('
' +
'' +
'' +
'' +
'攻撃 | 防御 | 兵法 | ' +
'攻撃力 | 防御力 | 防コスト@ | ' +
'全兵種 ▼ | 統率 | 実指揮数 | コスト比 | ' +
' ' +
'' +
' ' +
' | ' +
'
'
).insertAfter($tr);
var type_list = [];
type_list.push($tr.find('img[id^="now_unit_img_"]').attr('alt'));
unitListPowerOutput(cid, type_list);
$('#all_type_' + cid).on('click', function() {
var str = $(this).text(),
$line = $(this).closest('table').find('tbody tr');
if (str == '全兵種 ▼') {
$(this).text('指揮兵 ▲');
$line.hide();
unitListPowerOutput(cid, SOLDIER.lineupsNames);
} else {
$(this).text('全兵種 ▼');
$line.eq(0).show();
$line.slice(1).remove();
}
});
$tr.find('select[id^="unit_id_select_"]').on('change', function() {
$newpreview.remove();
});
}
});
};
// 兵士編成の武将画像を非表示
function offFace() {
if (!options.off_face) {
return;
}
style('#busho_info div[class^="icon_rarity_"] { left: 10px; } #busho_info .img_face { width: 36px; background-image: none !important; } #busho_info .icon_protect { left: 13px; }');
}
// 基本兵種 兵種メニューの更新
function updateTypeMenu() {
var type_list = '
' + createSoldiersList()[1],
$select_set_branch = $('#select_set_branch'),
id_name = $select_set_branch.attr('id'),
default_list, tmpl;
if (options.unit_list_default) {
default_list = '
' + type_list;
} else {
default_list = type_list;
}
tmpl = '
' + default_list;
$select_set_branch.html(tmpl);
each_setting = getStorage({}, 'ixamoko_each_setting');
$select_set_branch.val(each_setting.set_unit[id_name]);
}
// 基本兵種 保存
function defaultUnitSet() {
var default_unit = getStorage({}, 'ixamoko_default_unit');
// 全カードが表示されている場合はリフレッシュさせる(※出品中は除外)
var grp = $('#select_card_group').val(),
pager = $('ul.pager').length;
if (Unit.tablen() == 1 && grp == '0' && !pager) {
default_unit = {};
}
$('span[id^="now_unit_cnt_"]').each(function() {
var id_num = $(this).attr('id').match(/\d+/g)[0];
var card_id = $('#card_id_arr_' + id_num).val();
var unit = $('#unit_default_select_' + id_num).val();
default_unit[card_id] = unit;
});
setStorage('ixamoko_default_unit', default_unit);
}
// 基本兵種 layout
function unitListDefault() {
if (!options.unit_list_default) {
return;
}
var default_unit = getStorage({}, 'ixamoko_default_unit');
$('#default_bulk_set').append('
現在の指揮兵種で
');
$('#branch_container').append('
基本兵種一括
');
$('#sub_view').on('click', function() {
if (!$(this).hasClass('selected')) {
$(this).html('閉じる');
$('#default_bulk_set').slideDown('fast');
$(this).addClass('selected');
} else {
$(this).html('基本兵種一括');
$('#default_bulk_set').slideUp('fast');
$(this).removeClass('selected');
}
});
// 指揮兵種を基本兵種記録
$('#now_unit_default').on('click', function() {
$('input[id^="now_unit_type_"]').each(function() {
var id_num = $(this).attr('id').match(/\d+/g);
$('#unit_default_select_' + id_num).val($(this).val());
});
defaultUnitSet();
});
// 基本兵種選択毎の更新
$('body').on('change', 'select[id^="unit_default_select_"]', function() {
if ($(this).parent('td').hasClass('squad_overlay')) {
return;
}
var id_num = mekeIdNum($(this).attr('id')),
card_id = $('#card_id_arr_' + id_num).val();
default_unit[card_id] = $(this).val();
setStorage('ixamoko_default_unit', default_unit);
});
}
// 兵士編成 フィルター
function setUnitCategoryFilter(mode) {
var set_unit_active_select = function(elem, text, type) {
if (mode == 1) {
return groups_filter(elem);
} else {
return select_set_branch_filter(elem, text, type);
}
},
// 表示中カード枚数・兵数のカウント
categoryCount = function(elem) {
var max = 0,
now = 0,
len = elem.length,
data, html;
for (var i = 0; i < len; i++) {
data = getGradientData(elem.eq(i));
max += data.max;
now += data.num;
}
if (max > 0 && max == now) {
now = '
' + now + '';
}
$('#crd_num').html(len);
$('#max_sol').html(max);
$('#set_sol').html(now);
$('#sol_detail').show();
},
// 簡易配置ステータスチェック
simpleSetStatusCheck = function(elem) {
var data, _elem;
_elem = elem.filter(function() {
data = getGradientData($(this));
if ($('#set_deck').prop('checked')) {
if (data.hp == data.hp_max && data.rare != 'miyabi' && data.rare != 'shuku' && data.rare != 'bake') {
return this;
}
} else if ($('#set_union').prop('checked')) {
if (data.rare !='miyabi' && data.rare !='shuku' && data.rare !='bake') {
return this;
}
} else {
return this;
}
}).show();
cardSortOrder();
categoryCount(_elem);
},
// グループ
groups_filter = function(elem) {
var $selected = $('#unit_list_bar img.selected');
if (!options.unit_list_group || !$selected.length) {
return simpleSetStatusCheck(elem);
}
var group_idx = $selected.attr('group'),
_elem, group_num;
_elem = elem.filter(function() {
group_num = $(this).find('img[id^="ixamoko_grp"]').attr('id').match(/\d+/g)[0];
if (group_idx == group_num) {
return this;
}
});
return simpleSetStatusCheck(_elem);
},
// 兵種
select_set_branch_filter = function(elem, text, type) {
var _elem, data;
_elem = elem.filter(function() {
data = getGradientData($(this));
if (!type) {
return this;
} else if ((type == 'なし' && !data.type) || type == '未設定') {
return this;
} else if (type == '槍' || type == '弓' || type == '馬' || type == '砲' || type == '器') {
if (SOLDIER.filterType[data.type] == type) {
return this;
}
} else {
if (SOLDIER.nameKey[type] == data.type) {
return this;
}
}
});
return groups_filter(_elem);
},
// 配置可能
set_unit_possible = function(elem, text, type) {
var hp, rare, _elem, data;
_elem = elem.filter(function() {
data = getGradientData($(this));
if (data.hp == data.hp_max &&
(data.rare != 'miyabi' && data.rare != 'shuku' && data.rare != 'bake')) {
return this;
}
});
return set_unit_active_select(_elem, text, type);
},
// 配置不可
set_unit_not_possible = function(elem, text, type) {
var hp, rare, _elem, data;
_elem = elem.filter(function() {
data = getGradientData($(this));
if (data.hp != data.hp_max || data.rare == 'miyabi' ||
data.rare == 'shuku' || data.rare == 'bake') {
return this;
}
});
return set_unit_active_select(_elem, text, type);
},
// 兵数
set_unit_command_num = function(elem, text, type) {
var _elem, data;
_elem = elem.filter(function() {
data = getGradientData($(this));
if ((text == '兵数最大' && data.num === data.max) ||
(text == '兵数2以上' && data.num >= 2) ||
(text == '兵数1以上' && data.num >= 1) ||
(text == '兵数1' && data.num === 1) ||
(text == '兵数0' && data.num === 0)) {
return this;
}
});
return set_unit_active_select(_elem, text, type);
},
// LV
set_unit_level_filter = function(elem, text, type) {
var _elem, data;
_elem = elem.filter(function() {
data = getGradientData($(this));
if (text == 'Lv.20' && data.level === 20) {
return this;
} else if (text == 'Lv.20未満' && data.level < 20) {
return this;
} else if (text == 'Lv.0' && data.level === 0) {
return this;
}
});
return set_unit_active_select(_elem, text, type);
},
// ランク
set_unit_rank_filter = function(elem, text, type) {
var _elem, data, number;
_elem = elem.filter(function() {
data = getGradientData($(this));
number = text.replace(/★/, '');
if (number == data.rank) {
return this;
}
});
return set_unit_active_select(_elem, text, type);
},
// コスト
set_unit_cost_filter = function(elem, text, type) {
var _elem, data, num;
_elem = elem.filter(function() {
data = getGradientData($(this));
num = text.replace(/cost/, '');
if (num == data.cost) {
return this;
}
});
return set_unit_active_select(_elem, text, type);
},
// 追加クラス
set_unit_class_filter = function(elem, text, type) {
var _elem;
_elem = elem.filter(function() {
if (text == '栞壱' && $(this).hasClass('bookmark1')) {
return this;
} else if (text == '栞弐' && $(this).hasClass('bookmark2')) {
return this;
} else if (text == 'お気に入り' && $(this).hasClass('favorites')) {
return this;
} else if (text == '精鋭部隊' && $(this).hasClass('elite_card')) {
return this;
} else if (text == '登録なし' && !$(this).hasClass('bookmark1') && !$(this).hasClass('bookmark2') &&
!$(this).hasClass('favorites') && !$(this).hasClass('elite_card')) {
return this;
}
});
return set_unit_active_select(_elem, text, type);
},
set_unit_switching = function(elem, text, type) {
switch (text) {
case '配置可能':
set_unit_possible(elem, text, type);
break;
case '配置不可':
set_unit_not_possible(elem, text, type);
break;
case '兵数最大':
case '兵数2以上':
case '兵数1以上':
case '兵数1':
case '兵数0':
set_unit_command_num(elem, text, type);
break;
case '栞壱':
case '栞弐':
case 'お気に入り':
case '精鋭部隊':
case '登録なし':
set_unit_class_filter(elem, text, type);
break;
case 'Lv.20未満':
case 'Lv.20':
case 'Lv.0':
set_unit_level_filter(elem, text, type);
break;
case '★0':
case '★1':
case '★2':
case '★3':
case '★4':
case '★5':
case '限界/極限':
set_unit_rank_filter(elem, text, type);
break;
case 'cost0':
case 'cost0.5':
case 'cost1':
case 'cost1.5':
case 'cost2':
case 'cost2.5':
case 'cost3':
case 'cost3.5':
case 'cost4':
case 'cost4.5':
set_unit_cost_filter(elem, text, type);
break;
}
};
// 実行
var elem = $('table.busho_info').find('TR.tr_gradient').slice(1).hide(),
text = $('#category_filter_menu').find('SPAN.now_branch').text(),
type = $('#type_filter_menu').find('SPAN.now_branch').text();
if (mode === 0) {
return groups_filter(elem);
} else if (mode === 2) {
return select_set_branch_filter(elem, text, type);
} else if (mode === 1 || mode === 3) {
return set_unit_switching(elem, text, type);
}
}
// 兵士編成 フィルターlayout
function setUnitCardFilter() {
installMenulist();
var $unit_filter_menu = $('#unit_filter_menu');
if (!$unit_filter_menu.length) {
return;
}
var cf = false;
$(window).scroll(function() {
var winTop = $(this).scrollTop(),
target = $('#bar_card').offset().top;
if (winTop >= target && !cf) {
$unit_filter_menu.css({
'position': 'fixed',
'top': '0',
'z-index': '10',
'width': '720px',
'margin-left': '-10px',
'padding': '5px 10px',
'color': 'white',
'background-color': 'rgba(0, 0, 0, 0.8)'
});
cf = true;
}
if (winTop <= target && cf) {
$unit_filter_menu.removeAttr('style');
cf = false;
}
});
}
// 簡易配置・強化合成モード
function setUnitModeChange() {
if (!options.card_tool) {
return;
}
if ($('img.iepngfix.mb5').length) {
return;
}
var busho_info = function() {
return $('#busho_info');
},
tr_gradient = function() {
return busho_info().find('tr.tr_gradient').slice(1);
};
$('#busho_info').after(
'
' +
'' +
'' +
'' +
'最初の選択へ' +
'' +
'
'
);
var $top_card_move = $('#top_card_move');
// 通常
$('#set_default').on('change', function() {
var $tr = tr_gradient();
$tr.removeClass('deck_leader deck_platoon union_main union_adding');
$top_card_move.hide();
return setUnitCategoryFilter(getActive());
});
// 簡易配置
$('#set_deck').on('change', function() {
var $tr = tr_gradient();
$tr.removeClass('union_main union_adding');
$top_card_move.show();
return setUnitCategoryFilter(getActive());
});
// 強化合成
$('#set_union').on('change', function() {
var $tr = tr_gradient();
$tr.removeClass('deck_leader deck_platoon');
$top_card_move.show();
return setUnitCategoryFilter(getActive());
});
$top_card_move.on('click', function() {
var $deck_leader = $('tr.deck_leader'),
$union_main = $('tr.union_main'),
sctop;
if ($deck_leader.length) {
sctop = $deck_leader.offset().top - 50;
} else if ($union_main.length) {
sctop = $union_main.offset().top - 50;
} else {
return moko_alert('選択されていません');
}
return scrollView(sctop);
});
// 簡易配置の選択
var simplePlacement = function($this) {
var $table = busho_info();
var $input = $this.find('input[id^="key_str_array_"]'),
hp = $input.prev('table').find('td').eq(1).text(),
rare = $this.find('div[class^="icon_rarity_"]').attr('class').split('_')[2];
var limit = 8;
if (hp != '100/100' || rare == 'miyabi' || rare == 'shuku' || rare == 'bake') {
return moko_alert('配置不可能なカードです');
}
if (Unit.tablen() > limit) {
return moko_alert('空きデッキがありません');
}
var command = $this.find('span[id^="now_unit_cnt_"]').text(),
le_len = $table.find('.deck_leader').length,
pl_len = $table.find('.deck_platoon').length;
if (command == '0') {
$this.removeClass('deck_leader deck_platoon');
return moko_alert('兵がセットされていません');
}
if ($this.hasClass('deck_leader')) {
$this.removeClass('deck_leader');
$table.find('.deck_platoon').removeClass('deck_platoon');
} else if (!le_len) {
if (pl_len) {
$table.find('.deck_platoon').removeClass('deck_platoon');
} else {
$this.addClass('deck_leader');
}
} else if (le_len) {
$this.removeClass('deck_leader');
if ($this.hasClass('deck_platoon')) {
$this.removeClass('deck_platoon');
} else if (pl_len < 3) {
$this.addClass('deck_platoon');
}
}
var name_list = [],
check = [];
$('tr.deck_leader, tr.deck_platoon').each(function() {
var card_name = $this.find('a.busho_name').text();
name_list.push(card_name);
});
var select_name = $this.find('a.busho_name').text();
check = checkCardName(name_list, select_name);
if (check.length) {
$this.removeClass('deck_platoon');
return moko_alert(makeLog('武将名が重複しています', check));
}
},
// 強化合成の選択
syntheticSelection = function($this) {
var rare = $this.find('div[class^="icon_rarity_"]').attr('class').split('_')[2];
if (rare == 'miyabi' || rare == 'shuku' || rare == 'bake') {
return;
}
var $table = busho_info();
var ma_len = $table.find('.union_main').length,
ad_len = $table.find('.union_adding').length,
protect = $this.find('div[id^="card_protect_icon_"]:visible').length;
if ($this.hasClass('union_main')) {
$this.removeClass('union_main');
$table.find('.union_adding').removeClass('union_adding');
} else if (!ma_len) {
$this.addClass('union_main');
} else if (ma_len) {
$this.removeClass('union_main');
if ($this.hasClass('union_adding')) {
$this.removeClass('union_adding');
} else if (ad_len < 12) {
if (protect) {
return moko_alert('保護カードです');
}
$this.addClass('union_adding');
}
}
};
$('body').on('click', '#busho_info tr.tr_gradient', function(e) {
if (e.target.tagName == 'A' || e.target.tagName == 'IMG' || e.target.tagName == 'SELECT' ||
e.target.tagName == 'INPUT' || e.target.tagName == 'OPTION' || e.target.tagName == 'TH' ||
e.target.tagName == 'SPAN' && e.target.className != 'rank_glay' || e.target.className == 'force_type') {
return;
}
if ($('#set_deck').prop('checked')) {
return simplePlacement($(this));
}
if ($('#set_union').prop('checked')) {
return syntheticSelection($(this));
}
});
}
// グループ機能 layout
function setUnitGroupsLayout() {
if (!options.unit_list_group || !Object.keys(groups_img_data).length || location.pathname != '/facility/set_unit_list.php') {
return;
}
var $div = $('#default_bulk_set'),
html = '
' +
'
グループが' +
'
' +
'
の武将に' +
'
';
$div.append(html);
$('#grp_img').on('click', function() {
if ($('#grps_list').length) {
return;
}
var $panel = $('
').appendTo($div),
html = '';
for (var key in groups_img_data) {
html += '
';
}
$panel.append(html);
var group = $(this).attr('group');
$('img.bulk_grps_img').each(function() {
if (group == $(this).attr('group')) {
$(this).css('opacity', 1);
}
}).on('click', function() {
var idx = $(this).attr('group'),
src = groups_img_data[idx].src;
$('#grp_img').attr({
'src': src,
'group': idx
});
$(this).parent().remove();
});
});
var unit = createSoldiersList()[0];
$('
' +
'
で')
.appendTo('div.sub_box');
$('#grp_default_set').on('click', function() {
var group = $('#grp_img').attr('group'),
type = $('#grp_default').val();
$('table.busho_info').find('img[id^="ixamoko_grp_' + group + '_"]').each(function() {
$(this).closest('tr').find('select[id^="unit_default_select_"]').val(type);
defaultUnitSet();
});
});
$('
アイコン' +
'' +
'' +
'
')
.appendTo('#unit_filter_menu');
$('input[name="icon_view"]').on('change', function() {
$('#busho_info img[id^="ixamoko_grp"]')
.css('opacity', $(this).val());
});
}
// グループアイコンの変更
function setUnitGroupsChange() {
// 変更パネル表示
$('body').on('click', 'img[id^="ixamoko_grp"]', function() {
if ($('#grps_list').length) {
return;
}
$(this).css({
'border': '2px solid orange',
'margin': '-5px 0 0 -5px'
});
var panel = $('
').insertAfter($(this).parent('div'));
if (options.off_face) {
panel.css({
'top': '45px',
'left': '-2px'
});
}
for (var key in groups_img_data) {
panel.append('
');
}
var idx = $(this).attr('id').match(/\d+/g)[0];
$('img.grps_img').each(function() {
if (idx == $(this).attr('group')) {
$(this).css('opacity', 1);
}
});
});
// アイコンの変更
$('body').on('click', 'img.grps_img', function() {
var idx = $(this).attr('group'),
target = $(this).closest('td').find('img[id^="ixamoko_grp"]'),
source = target.attr('id').match(/\d+/g),
card_id = source[1],
src = groups_img_data[idx].src;
target.attr({
'id': 'ixamoko_grp_' + idx + '_' + card_id,
'src': src
}).removeAttr('style');
var $tr = $(this).closest('tr.tr_gradient'),
status = parseInt($tr.find('table:first').find('td').eq(1).text().match(/\d+/g)[0]);
if (status >= 100) {
$tr.css('background-color', groups_img_data[idx].color);
}
groups_set[card_id] = idx;
setStorage('ixamoko_groups_set', groups_set);
$(this).parent().remove();
});
}
// グループアイコンの設置
function installGroupsIcon(target) {
target.each(function() {
var card_id = $(this).val(),
$tr = $(this).closest('tr.tr_gradient'),
$td = $tr.children('td').eq(1),
$a = $td .children('a.thickbox'),
$div = $a.children('div'),
$rarity = $div.children('div[class^="icon_rarity_"]');
$a.replaceWith($div);
if (Object.keys(groups_img_data).length) {
var idx = groups_set[card_id] || '0';
var data = groups_img_data[idx];
$rarity.append('
');
// 背景色
if (data.color) {
var hpstatus = parseInt($tr.find('table:first td').eq(1).text().split('/')[0]);
if (hpstatus >= 100) {
$tr.css('background-color', data.color);
}
}
}
});
}
// 合成 グループアイコンの設置
function unitInstallGroupsIcon(target) {
target.each(function() {
var card_id = $(this).val(),
$tr = $(this).closest('tr.tr_gradient'),
$td = $tr.children('td').eq(1),
$rarity = $td.find('div[class^="icon_rarity_"]');
if (Object.keys(groups_img_data).length) {
var idx = groups_set[card_id] || '0';
var data = groups_img_data[idx];
$rarity.append('
');
}
});
}
// 合成 グループアイコン (onload)
function unionGroupImgView() {
if (location.pathname != '/union/levelup.php' && location.pathname != '/union/remove.php' &&
location.pathname != '/union/learn.php' && location.pathname != '/union/additional.php') {
return;
}
if (!options.unit_list_group || !groups_img_data) {
return;
}
return unitInstallGroupsIcon($('input[id^="card_id_arr"]'));
}
// 合成 グループアイコン (addpage)
function addUnionGroupImgView(target) {
return options.unit_list_group && groups_img_data ?
unitInstallGroupsIcon(target) : void 0;
}
// グループフィルター用アイコン
function setUnitGroupsFilter() {
if (!options.unit_list_group || !groups_img_data) {
return;
}
if ($('#bar_card_elite').length) {
return;
}
var $img = $('#busho_info img[id^="ixamoko_grp"]'),
$content = $('#groups_img_content'),
grp_type = [],
html = '
全',
num,
selected;
$img.each(function() {
num = parseInt($(this).attr('id').match(/\d+/g)[0]);
grp_type.push(num);
});
grp_type = arrayUnique(grp_type);
grp_type.sort(function(a, b) {
return a - b;
});
for (var j = 0, len = grp_type.length; j < len; j++) {
for (var key in groups_img_data) {
if (key != grp_type[j]) {
continue;
}
html += '
';
}
}
selected = $content.find('img.selected');
if (selected.length) {
selected = selected.attr('group');
}
$content.html(html);
$('img.bar_grps_img').on('click', function() {
$content.children('img').removeClass('selected');
$(this).addClass('selected');
setUnitCategoryFilter(getActive());
scrollView(seekOffsetTop());
});
$('#bar_grps_all').on('click', function() {
$content.children('img').removeClass('selected');
setUnitCategoryFilter(getActive());
scrollView(seekOffsetTop());
});
$('img[class="bar_grps_img"][group="' + selected + '"]').click();
}
// 兵士編成 全般
function unitListCheck() {
if (location.pathname != '/facility/set_unit_list.php') {
return;
}
// 精鋭部隊と重複回避
if ($('div.elite_busho_info').length) {
return;
}
//load
offFace(); // 武将画像を不可視
auto_btn_change(); // 変更ボタン自動押下
setUnitCardFilter(); // フィルター
setUnitModeChange(); // 合成・簡易配置モード
setUnitGroupsLayout();
setUnitGroupsChange();
unitListDefault(); // 基本兵種
add_event_unit_set(); // 兵1・定数セット イベント
var $busho_info_array = $('table.busho_info');
$busho_info_array.each(function(){
let $busho_info = $(this);
// スペース用のTRを削除
var notTR = $busho_info.find('tr:has(td.tb_space)');
notTR.remove();
// THの書き換え
var $tr = $busho_info.find('tr.tr_gradient').eq(0);
$tr.find('th').eq(3).html('槍/弓').addClass('mk-rank');
$tr.find('th').eq(5).html('馬/器').addClass('mk-rank');
$tr.find('th').eq(7).width(85);
if (options.unit_list_default) {
$tr.find('th').eq(8).html('基本兵種/兵種');
}
$tr.find('th:eq(4), th:eq(6)').remove();
// loop
$busho_info.find('tr.tr_gradient').slice(1).each(trGradientCheck);
});
// end
setUnitGroupsFilter(); // グループフィルター
$('div.select_filter ul').css('white-space', 'nowrap');
}
// 兵士編成・精鋭部隊 チェック
function trGradientCheck(i, element) {
var target = $(element);
var card_id = target.find('input[id^="card_id_arr"]').val();
var id_num = target.find('input[id^="key_str_array"]').val();
// お気に入り部隊にマーク
function unit_hold_mark() {
if (!options.favorites_troops_regist) {
return;
}
var favorites_troops = getStorage({}, 'ixamoko_favorites_troops'),
displayList = function() {
createFavoritesDialog();
return createRecordList([$(this).attr('id').match(/\d+/g)[0]]);
},
$img;
for (var key in favorites_troops) {
for (var i = 0, len = favorites_troops[key].unit.length; i < len; i++) {
if (card_id != favorites_troops[key].unit[i].cid) {
continue;
}
$img = target.find('img.img_heart');
if (!target.hasClass('favorites')) {
$img.replaceWith('
★');
target.addClass('favorites');
target.find('a[id^="favorites_id_"]').click(displayList);
}
}
}
}
// 精鋭部隊にマーク
function eliteWriteMark() {
if ($('#bar_card_elite').length) {
return;
}
var elite_list = getStorage({}, 'ixamoko_elite_troops');
for (var key in elite_list) {
for (var i = 0, len = elite_list[key].unit.length; i < len; i++) {
if (card_id != elite_list[key].unit[i].cid) {
continue;
}
target.find('a.busho_name').addClass('elite_mark');
target.addClass('elite_card');
}
}
}
// 栞
function unitAddBookmark() {
if (options.card_tool) {
var bookmarks = getStorage({}, 'ixamoko_bookmarks');
var setBookmark = function(array, key) {
var $td;
for (var i = 0, len = array.length; i < len; i++) {
if (card_id != array[i]) {
continue;
}
$td = target.find('td').slice(1, 3);
$td.css('background-color', BOOKMARK_COLOR[key]);
target.addClass(key);
}
};
for (var key in bookmarks) {
setBookmark(bookmarks[key], key);
}
}
}
// 基本兵種リスト作成
function createDefaultSelect() {
var default_unit = getStorage({}, 'ixamoko_default_unit'),
type_list = createSoldiersList()[0],
$td, $select, type;
$td = target.find('select[id^="unit_id_select"]').parent('td');
type = default_unit[card_id];
$select = $('
').prependTo($td);
$select.val(type);
if ($td.hasClass('squad_overlay')) {
$select.prop('disabled', true);
}
}
// グループアイコン
function setUnitGroupsImgView() {
if (!options.unit_list_group || !groups_img_data) {
return;
}
var $td = target.children('td').eq(1),
$a = $td.children('a.thickbox'),
$div = $a.children('div'),
$rarity = $div.children('div[class^="icon_rarity_"]');
$a.replaceWith($div);
if (Object.keys(groups_img_data).length) {
var idx = groups_set[card_id] || '0';
var data = groups_img_data[idx];
$rarity.append('
');
// 背景色
if (data.color) {
var hpstatus = parseInt(target.find('table').eq(0).find('td').eq(1).text().split('/')[0]);
if (hpstatus >= 100) {
target.css('background-color', data.color);
}
}
}
}
// 兵種の色分け
function setUnitColor() {
if (!options.set_unit_color) {
return;
}
var $img = target.find('img[id^="now_unit_img"]'),
type_name = $img.attr('alt');
$img.parent('div').css('background-color', SOLDIER_COLOR[type_name]);
}
unit_hold_mark();
eliteWriteMark();
unitAddBookmark();
setUnitColor();
unit_set_one(target, id_num);
addEventBtnChange(target, id_num);
unitListPowerView(target);
createDefaultSelect();
setUnitGroupsImgView();
var $icon = target.find('div[class^="icon_rank_"]'),
$rank = target.find('td.icon_rank'),
rank = target.find('div.rank').next(),
rank_num = rank.text(),
type = target.find('img[id^="now_unit_img_"]').attr('alt'),
hpstatus = target.find('table').eq(0).find('td').eq(1).text().split('/'),
$unit_cnt_text = target.find('input[id^="unit_cnt_text"]'),
$btn = target.find('input[id^="btn_change"], input[name^="btn_change"]').css('margin-left', '10px');
// 統率覧を移動
$icon.addClass('mk-rank-img');
$rank.eq(0).append($icon.eq(1));
$rank.eq(2).append($icon.eq(3));
target.find('td.icon_rank:odd').remove();
target.find('div.force_type').parent('td').addClass('mk-force-type');
$unit_cnt_text.after($btn);
target.children('td:last').remove();
// LV.20
if (rank_num == '20') {
rank.addClass('max_level');
}
// HP100未満
if (hpstatus[1] - hpstatus[0] != 0) {
target.css('background-color', '#600');
}
}
// カードデータの再構築
function cardDataRebuilding(flag) {
if (location.pathname != '/facility/set_unit_list.php') {
return;
}
if ($('#bar_card_elite').length || $('#select_filter_num').val() != '0') {
return;
}
var get_card_id = function(index_page, cid_list) {
Info.title('カードIDを収集中...');
var data = {
show_num: '100',
p: index_page,
select_card_group: '0',
select_filter_num: '0'
};
$.ajax({
type: 'post',
url: '/facility/set_unit_list.php',
data: data,
beforeSend: xrwStatusText,
}).then(function(html) {
var $html = $(html),
max_page = html_max_page($html),
$arr = $html.find('input[id^="card_id_arr_"]'),
cid;
$arr.each(function() {
cid = $(this).val();
cid_list.push(cid);
});
if (index_page == max_page) {
return refresh_card_array(cid_list);
} else {
index_page++;
get_card_id(index_page, cid_list);
}
});
},
refresh_card_array = function(cid_list) {
var new_array = function(a, b) {
var x = [],
f;
for (var i = 0, len = a.length; i < len; i++) {
f = false;
for (var j = 0, jlen = b.length; j < jlen; j++) {
if (a[i] === b[j]) {
f = true;
break;
}
}
if (f) {
x.push(a[i]);
}
}
return x;
};
var new_obj = function(a, b) {
var o = {},
f;
for (var i = 0, len = b.length; i < len; i++) {
f = false;
for (var key in a) {
if (key == b[i]) {
f = true;
break;
}
}
if (f) {
o[key] = a[key];
}
}
return o;
};
if (getStorage(null, 'ixamoko_bookmarks')) {
var bookmarks = getStorage({}, 'ixamoko_bookmarks');
var obj = {};
for (var key in bookmarks) {
obj[key] = new_array(bookmarks[key], cid_list);
}
setStorage('ixamoko_bookmarks', obj);
}
if (getStorage(null, 'ixamoko_groups_set')) {
var groups_set = getStorage({}, 'ixamoko_groups_set');
groups_set = new_obj(groups_set, cid_list);
setStorage('ixamoko_groups_set', groups_set);
}
if (getStorage(null, 'ixamoko_default_unit')) {
var default_unit = getStorage({}, 'ixamoko_default_unit');
default_unit = new_obj(default_unit, cid_list);
setStorage('ixamoko_default_unit', default_unit);
}
$('#data_rebu').prop('disabled', true);
return Info.title('再構築完了', true);
};
$('
')
.css({ 'position': 'absolute', 'right': '125px', 'top': '12px' })
.on('click', function() {
if (Unit.tablen() > 1) {
window.alert('デッキに配置中のカードがある場合は実行できません');
return false;
}
if (!confirm('カードデータの再構築を行います\n実行してよろしいですか?')) {
return;
}
if (!flag) {
flag = true;
} else if (flag) {
return;
}
nowLoading();
get_card_id(1, []);
}).appendTo('#frame_00_top');
}
// ^ 兵士編成
```