開発環境 メモ帳
実行環境 Internet Explorer 11

kcslot.html
<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>
 
最終更新:2014年05月24日 11:03