<html>
<head>
<title>kcslot</title>
<script src="../kcsapi/api_start2.js"></script>
<script>var api_start2 = svdata;</script>
<script src="../kcsapi/slot_item.js"></script>
<script>var slot_item = svdata;</script>
<script src="../kcsapi/api_port.js"></script>
<script>var api_port = svdata;</script>
<script>
<!--
svdata = null;
var mst_ship = []; // 艦マスタ
var mst_slot = []; // 装備マスタ
var lst_slot = []; // 装備リスト
CreateHash(mst_ship, api_start2.api_data.api_mst_ship);
CreateHash(mst_slot, api_start2.api_data.api_mst_slotitem);
CreateHash(lst_slot, slot_item.api_data);
{
var ship = api_port.api_data.api_ship;
for (var sh in ship) {
var slot = ship[sh].api_slot;
for (var sl in slot) {
if (slot[sl] < 0) break;
lst_slot[slot[sl]].api_ship_id = ship[sh].api_ship_id;
}
}
}
function CreateHash(mst, obj)
{
for (var i in obj) {
mst[obj[i].api_id] = obj[i];
}
}
var type3 = [
0x000000,
0xff8080, // 1.短射程主砲
0xff8080, // 2.中射程主砲
0xff8080, // 3.長射程主砲
0xffff80, // 4.副砲
0xc0c0ff, // 5.魚雷
0x80ff80, // 6.艦戦
0xff8080, // 7.艦爆
0xc0c0ff, // 8.艦攻
0xffff80, // 9.艦偵
0x80ff80, // 10.水上機
0xffc080, // 11.電探
0x80ff80, // 12.三式弾
0xff8080, // 13.徹甲弾
0xffffff, // 14.ダメコン
0x80ff80, // 15.対空機銃
0x80ff80, // 16.両用砲
0xc0ffff, // 17.爆雷投射機
0xc0ffff, // 18.ソナー
0xffff80, // 19.機関
0xc0c0c0, // 20.大発
0x80ff80, // 21.オートジャイロ
0xc0ffff, // 22.対潜哨戒機
0xffc0ff, // 23.バルジ
0xffc080, // 24.探照灯
0xc0c0c0, // 25.ドラム缶
0xc0c080, // 26.艦艇修理施設
];
var range = [null, "短", "中", "長", "超長"];
var detail = [
["api_souk", "装甲"],
["api_houg", "火力"],
["api_raig", "雷装"],
["api_baku", "爆装"],
["api_tyku", "対空"],
["api_tais", "対潜"],
["api_houm", "命中"],
["api_houk", "回避"],
["api_saku", "索敵"],
];
var fld_slot = [
//["api_id", "ID", 0],
["api_slotitem_id", "装備名", 1],
["api_slotitem_id", "#", 2],
["api_ship_id", "艦船名", 3],
];
var page = 20;
var line = 0;
var save_slot_id = -1;
var save_detail = "";
function CreateSlotTable()
{
lst_slot.sort(function(a, b) {
var c;
c = mst_slot[a.api_slotitem_id].api_type[2] - mst_slot[b.api_slotitem_id].api_type[2];
if (c) return c;
c = a.api_slotitem_id - b.api_slotitem_id;
if (c) return c;
if (a.api_ship_id || b.api_ship_id) {
if (!a.api_ship_id) return -1;
if (!b.api_ship_id) return 1;
c = mst_ship[a.api_ship_id].api_stype - mst_ship[b.api_ship_id].api_stype;
if (c) return -c;
c = a.api_ship_id - b.api_ship_id;
if (c) return c;
}
return a.api_id - b.api_id;
});
var d1 = document.getElementById("d1");
var text = document.createTextNode("装備アイテム保有数:" + Object.keys(lst_slot).length);
d1.appendChild(text);
var table = CreateTable();
d1.appendChild(table);
var count;
var prev_slot = -1;
var prev_count = 0;
var prev_ship; // undefined
for (var r in lst_slot) {
var record = lst_slot[r];
if (prev_slot != record.api_slotitem_id) {
count = 0;
}
if (count == 0 || record.api_ship_id) {
InsertRow(table, prev_slot, prev_count, prev_ship);
}
prev_slot = record.api_slotitem_id;
prev_count = ++count;
prev_ship = record.api_ship_id;
}
InsertRow(table, prev_slot, prev_count, prev_ship);
}
function InsertRow(elem, slot_id, count, ship_id)
{
if (count < 1) return;
if (line++ % page == 0) {
CreateTitle(elem, fld_slot);
}
var row = elem.insertRow();
AppendCheckbox(row);
for (var i in fld_slot) {
var value;
var bgColor = null;
switch (fld_slot[i][2]) {
case 1: // 装備名
bgColor = type3[mst_slot[slot_id].api_type[3]];
value = mst_slot[slot_id].api_name;
break;
case 2:
value = (ship_id) ? "#" + count : "x" + count;
break;
case 3:
value = (ship_id) ? mst_ship[ship_id].api_name : "";
break;
}
var cell = AppendText(row, value);
if (bgColor) cell.bgColor = bgColor;
}
AppendText(row, ItemDetail(slot_id));
}
function CreateTable()
{
var table = document.createElement("table");
table.border = 1;
table.cellSpacing = 0;
table.cellPadding = 3;
table.style.setAttribute("border-collapse", "collapse");
return table;
}
function CreateTitle(elem, field)
{
var row = elem.insertRow();
row.bgColor = 0xc0c0c0;
AppendText(row, "");
for (var i in field) {
AppendText(row, field[i][1]);
}
AppendText(row, "アイテム詳細");
}
function AppendText(row, str)
{
var obj = document.createTextNode(str);
var cell = row.insertCell();
cell.appendChild(obj);
return cell;
}
function AppendCheckbox(row)
{
var obj = document.createElement("input");
obj.setAttribute("type", "checkbox");
var cell = row.insertCell();
cell.appendChild(obj);
return cell;
}
function ItemDetail(slot_id)
{
if (save_slot_id == slot_id) {
return save_detail;
}
var slot = mst_slot[slot_id];
var array = [];
if (slot.api_leng) {
array.push("射程 " + range[slot.api_leng]);
}
for (var i in detail) {
var value = slot[detail[i][0]];
if (value) {
array.push(detail[i][1] + "+" + value);
}
}
save_slot_id = slot_id;
save_detail = array.join("/");
return save_detail;
}
// -->
</script>
</head>
<body onload="CreateSlotTable()">
<div id="d1"></div>
</body>
</html>