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

kclist.html
<html>
<head>
<title>kclist</title>
<script src="api_start2.js"></script>
<script>var api_start2 = svdata;</script>
<script src="slot_item.js"></script>
<script>var slot_item = svdata;</script>
<script src="api_port.js"></script>
<script>var api_port = svdata;</script>
<script>
<!--
svdata = null;
 
var mst_ship = {};	// 艦マスタ
var mst_stype = {};	// 艦種マスタ
var mst_item = {};	// 装備マスタ
var lst_item = {};	// 装備リスト
 
CreateHash(mst_ship,	api_start2.api_data.api_mst_ship);
CreateHash(mst_stype,	api_start2.api_data.api_mst_stype);
CreateHash(mst_item,	api_start2.api_data.api_mst_slotitem);
CreateHash(lst_item,	slot_item.api_data);
 
function CreateHash(mst, obj)
{
	for (var i in obj) {
		mst[obj[i].api_id] = obj[i];
	}
}
 
var fld_ship = [
//["api_id", "ID", 0],
["api_sortno", "No", 0],
["api_ship_id", "艦種", 1],
["api_ship_id", "艦船名", 2],
["api_lv", "レベル", 0],
["api_exp", "経験値(累,次,%)", 0],	// 累積,次のLvまで,%
["api_nowhp", "現HP", 0],
["api_maxhp", "最大HP", 0],
["api_leng", "射程", 0],
["api_slot", "装備", 3],
["api_onslot", "搭載", 4],
["api_kyouka", "強化", 0],		// 火力,雷装,対空,装甲,運
["api_backs", "背景", 0],
["api_fuel", "燃料", 0],
["api_bull", "弾薬", 0],
["api_slotnum", "スロット", 0],
["api_ndock_time", "入渠時間", 5],
["api_ndock_item", "入渠資源", 0],	// 燃料,鋼材
["api_srate", "srate", 0],
["api_cond", "cond", 0],
["api_karyoku", "火力", 0],		// 現,最大
["api_raisou", "雷装", 0],
["api_taiku", "対空", 0],
["api_soukou", "装甲", 0],
["api_kaihi", "回避", 0],
["api_taisen", "対潜", 0],
["api_sakuteki", "索敵", 0],
["api_lucky", "運", 0],
["api_locked", "ロック", 0],
];
 
var sortfunc = [];
 
sortfunc.lv = function(a, b)
{
	var lv = b.api_lv - a.api_lv;
	if (lv != 0) return lv;
	return a.api_sortno - b.api_sortno;
}
 
sortfunc.stype = function(a, b)
{
	var stype = mst_ship[b.api_ship_id].api_stype - mst_ship[a.api_ship_id].api_stype;
	if (stype != 0) return stype;
	return a.api_sortno - b.api_sortno;
}
 
sortfunc.id = function(a, b)
{
	return b.api_id - a.api_id;
}
 
sortfunc.ndock_time = function(a, b)
{
	var time = b.api_ndock_time - a.api_ndock_time;
	if (time != 0) return time;
	return a.api_sortno - b.api_sortno;
}
 
function ShipList()
{
	var table = CreateTable();
	var ship = api_port.api_data.api_ship;
 
	// ソート
	var func = null;
	for (var i = 0; i < document.f1.r1.length; i++) {
		if (document.f1.r1[i].checked) {
			func = document.f1.r1[i].value;
			break;
		}
	}
	ship.sort(sortfunc[func]);
 
	// head
	var thead = table.createTHead();
	CreateTitleField(thead, fld_ship);
 
	// body
	for (var r = 0; r < ship.length; r++) {
		var record = ship[r];
		var row = table.insertRow();
		row.bgColor = (r & 1) ? "WHEAT" : "WHITE";
		AppendCell(row, r + 1);
		for (var i in fld_ship) {
			var value = record[fld_ship[i][0]];
			switch (fld_ship[i][2]) {
			case 1:	// 艦種
				var stype = mst_ship[value].api_stype;
				value = mst_stype[stype].api_name;
				break;
			case 2:	// 艦船名
				value = mst_ship[value].api_name;
				break;
			case 3:	// 装備
				var slot = [];
				for (var v in value) {
					if (value[v] < 0) break;
					var id = lst_item[value[v]].api_slotitem_id;
					slot.push(mst_item[id].api_name);
				}
				value = slot.join("/");
				break;
			case 4:	// 搭載
				var sum = 0;
				var slot = [];
				for (var v in value) {
					if (value[v] == 0) break;
					sum += value[v];
					slot.push(value[v]);
				}
				if (sum == 0) {
					value = 0;
				} else {
					value = sum + " (" + slot.join("/") + ")";
				}
				break;
			case 5:	// 入渠時間
				if (value != 0) {
					var sec = Math.floor(value / 1000);
					var h = Math.floor(sec / 3600);
					var m = Math.floor(sec / 60) % 60;
					var s = sec % 60;
					value = h+":"+("0"+m).slice(-2)+":"+("0"+s).slice(-2);
				}
				break;
			}
			AppendCell(row, value);
		}
	}
 
	// foot
	var tfoot = table.createTFoot();
	CreateTitleField(tfoot, fld_ship);
}
 
function ItemList()
{
	var table = CreateTable();
	var item = slot_item.api_data;
 
	// head
	var thead = table.createTHead();
	CreateTitle(thead, item[0]);
 
	// body
	for (var r = 0; r < item.length; r++) {
		var record = item[r];
		var row = table.insertRow();
		row.bgColor = (r & 1) ? "WHEAT" : "WHITE";
		AppendCell(row, r + 1);
		for (var key in record) {
			var value = record[key];
			switch (key) {
			case "api_slotitem_id":
				value = mst_item[value].api_name;
				break;
			}
			AppendCell(row, value);
		}
	}
 
	// foot
	var tfoot = table.createTFoot();
	CreateTitle(tfoot, item[0]);
}
 
function CreateTable()
{
	var table = document.createElement("table");
	table.border = 1;
	table.cellSpacing = 0;
	table.cellPadding = 3;
	table.style.setAttribute("border-collapse", "collapse");
 
	var d1 = document.getElementById("d1");
	for (var i = d1.childNodes.length - 1; 0 <= i; i--) {
		d1.removeChild(d1.childNodes[i]);
	}
	d1.appendChild(table);
 
	return table;
}
 
function CreateTitle(elem, record)
{
	var row = elem.insertRow();
	row.bgColor = "KHAKI";
	AppendCell(row, "#");
	for (var key in record) {
		AppendCell(row, key);
	}
}
 
function CreateTitleField(elem, field)
{
	var row = elem.insertRow();
	row.bgColor = "KHAKI";
	AppendCell(row, "#");
	for (var i in field) {
		AppendCell(row, field[i][1]);
	}
}
 
function AppendCell(row, str)
{
	var cell = row.insertCell();
	var text = document.createTextNode(str);
	cell.appendChild(text);
}
// -->
</script>
</head>
 
<body>
<button onclick="ItemList()">装備アイテム一覧</button>
<hr>
<form name="f1">
ソート
<input type="radio" name="r1" value="lv">Lv
<input type="radio" name="r1" value="stype" checked>艦種
<input type="radio" name="r1" value="id">NEW
<input type="radio" name="r1" value="ndock_time">入渠時間
<br><br>
<input type="button" value="保有艦一覧" onclick="ShipList()"><br>
</form>
<div id="d1"></div>
</body>
</html>
 
最終更新:2014年05月15日 16:35