Created
October 14, 2018 20:36
-
-
Save Nishisonic/a36f73493369765f539336bdee3db3c2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const fs = require('fs-extra') | |
| const csvSync = require('csv-parse/lib/sync') | |
| const iconv = require('iconv-lite') | |
| const SHIP_DATA = {} | |
| const STYPE_DATA = {} | |
| const ITEM_DATA = {} | |
| fs.readFile('START2.json','utf8',(err, data) => { | |
| if (err) reject(err) | |
| const master = JSON.parse(data).api_data | |
| master.api_mst_stype.forEach(stype => { | |
| STYPE_DATA[stype.api_id] = stype.api_name | |
| }) | |
| master.api_mst_slotitem.forEach(item => { | |
| ITEM_DATA[item.api_id] = item | |
| }) | |
| fs.readFile('ShipParameterRecord.csv',(err, data) => { | |
| if (err) reject(err) | |
| const rawdata = csvSync(iconv.decode(new Buffer(data, 'binary'), "Shift_JIS")) | |
| const csvdata = [] | |
| rawdata.filter((v,i) => i > 0).forEach(row => { | |
| const rowdata = {} | |
| row.forEach((cell, j) => { | |
| rowdata[rawdata[0][j]] = cell | |
| }) | |
| csvdata.push(rowdata) | |
| }) | |
| let result = `|||CENTER:|CENTER:BGCOLOR(#FFF0F5):|CENTER:BGCOLOR(#FA8072):|CENTER:BGCOLOR(#B0C4DE):|CENTER:BGCOLOR(#90EE90):|CENTER:BGCOLOR(#F0E68C):|CENTER:BGCOLOR(#B0E0E6):|CENTER:BGCOLOR(#FAEBD7):|||||||c\n` | |
| master.api_mst_ship.filter(data => data.api_id > 1500).forEach(data => { | |
| const csv = csvdata.find(element => Number(element['艦船ID']) === data.api_id) | |
| SHIP_DATA[data.api_id] = {csv:csv, master:data} | |
| }) | |
| for (let i = 1501;i <= Math.max(...Object.keys(SHIP_DATA));i++) { | |
| const ship = SHIP_DATA[i] ? SHIP_DATA[i].csv : null | |
| if (i % 20 === 1) { | |
| result += `|~[[No.>練習ページ/24/深海棲艦]]|~艦級|~[[艦種>練習ページ/24/深海棲艦/艦種]]|~[[耐久>練習ページ/24/深海棲艦/耐久]]|~[[火力>練習ページ/24/深海棲艦/火力]]|~[[雷装>練習ページ/24/深海棲艦/雷装]]|~[[対空>練習ページ/24/深海棲艦/対空]]|~[[装甲>練習ページ/24/深海棲艦/装甲]]|~[[速力>練習ページ/24/深海棲艦/速力]]|~[[射程>練習ページ/24/深海棲艦/射程]]|~装備1|~装備2|~装備3|~装備4|~装備5|~備考|${i === 1501 ? 'h' : ''}\n` | |
| } | |
| if (ship && ship['艦船名'] !== "") { | |
| result += `|${i}&aname(s${i});|${ship['艦船名']}|${stype(SHIP_DATA[i].master)}|${ship['耐久最大']}|${ship['火力最大']}|${ship['雷装最大']}|${ship['対空最大']}|${ship['装甲最大']}|${soku(SHIP_DATA[i].master)}|${leng(ship)}|${item(ship['装備1'])}|${item(ship['装備2'])}|${item(ship['装備3'])}|${item(ship['装備4'])}|${item(ship['装備5'])}||\n` | |
| } else { | |
| result += `|${i}&aname(s${i});||||||||||||||||\n` | |
| } | |
| } | |
| fs.writeFile('result2.txt', result) | |
| }) | |
| }) | |
| function item (id) { | |
| if (id > 0) { | |
| return `[[${ITEM_DATA[id].api_name}>練習ページ/24/装備/テーブル#i${id}]]` | |
| } else { | |
| return '' | |
| } | |
| } | |
| function soku (status) { | |
| switch (status.api_soku) { | |
| case 0: return '陸上' | |
| case 5: return '低速' | |
| case 10: return '高速' | |
| case 15: return '高速+' | |
| case 20: return '最速' | |
| default: return '不明' | |
| } | |
| } | |
| function stype (status) { | |
| return status.api_soku === 0 ? '陸上施設' : STYPE_DATA[status.api_stype] | |
| } | |
| function leng (ship) { | |
| const leng = Math.max(ship['射程'] | 0, ...Array.apply(null, { length:5 }).map((v, i) => ship[`装備${i + 1}`] | 0).filter(id => id > 0).map(id => ITEM_DATA[id].api_leng)) | |
| switch (leng) { | |
| case 0: return '無' | |
| case 1: return '短' | |
| case 2: return '中' | |
| case 3: return '長' | |
| case 4: return '超長' | |
| case 5: return '超長+' | |
| default: return '不明' | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment