Skip to content

Commit

Permalink
Merge pull request #449 from cwtickle/develop
Browse files Browse the repository at this point in the history
[ver8.5.0] 譜面毎のファイル分割に対応
  • Loading branch information
cwtickle committed Sep 28, 2019
2 parents e8b30f1 + 674f283 commit b6f4925
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 67 deletions.
4 changes: 3 additions & 1 deletion danoni/danoni2.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@

<body>
<table><tr><td>
<input type="hidden" name="externalDos" id="externalDos" value="danoni2.txt">
<input type="hidden" name="externalDos" id="externalDos" value="danoniA.txt">
<input type="hidden" name="externalDosDivide" id="externalDosDivide" value="false">
<input type="hidden" name="externalDosLock" id="externalDosLock" value="false">
<input type="hidden" name="externalDosCharset" id="externalDosCharset" value="Shift_JIS">
<div id="canvas-frame" style="width:500px;margin:auto;">
<canvas id="layer0" width="500" height="500"></canvas>
Expand Down
File renamed without changes.
11 changes: 11 additions & 0 deletions danoni/danoniA2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
function externalDosInit() {

g_externalDos = `

|oni_data=355,1032,1117,1202,1286,3510,4526,6051,6390,7406,8147|left_data=376,397,418,439,460,482,503,524,545,566,587,609,630,651,672,693,1053,1223,1392,1562,1710,2578,2599,2663,2705,3467,3531,3616,3700,4336,4484,5543,5564,5585,5606,5860,5882,5903,5945,6729,6898,7427,7512,7607,7692,7713|leftdia_data=1731,1816,1879,2070,2155,2218,2409,2430,2493,2536,2747,2769,2832,2875,3171,3256,3340,3743,3827,3997,4187,4293,4399,4442,4611,4632,4653,4674,4780,4802,5204,5225,5289,5310,5373,5394,5458,5522,5966,5987,6093,6178,6263,6358,6432,6517,6602,6697,6834,6845,6856,6866,6877,7173,7184,7194,7205,7216,7766,7851|down_data=1075,1138,1244,1307,1371,1413,1477,1583,1689,3489,3552,3637,3722,4251,4484,5596,5627,5649,5670,5691,5839,5924,6760,6930,7491,7554,7576,7660,7724|space_data=1456,1540,1625,1763,1847,1932,2017,2102,2186,2271,2356,3192,3298,3362,3446,3573,3764,3785,3912,4209,4272,4378,4526,4547,4569,4590,4780,4823,5236,5320,5405,5500,6009,6051,6083,6136,6167,6220,6252,6347,6390,6422,6474,6506,6559,6591,6686,6707,6813,6983,7152,7322,7745,7830,7893|up_data=1096,1159,1265,1350,1435,1498,1604,1667,2620,2642,2684,2726,3510,3595,3679,4420,4505,5680,5712,5733,5754,5776,5818,5924,6199,6538,6760,6930,7406,7438,7491,7523,7660,7682|rightdia_data=1900,1985,2049,2239,2324,2387,2451,2472,2515,2557,2790,2811,2853,2896,3150,3213,3277,3383,3425,3658,3806,4082,4230,4315,4357,4463,4696,4717,4738,4759,4823,4844,5246,5267,5331,5352,5416,5437,5479,5966,5987,6072,6157,6242,6369,6411,6496,6580,7004,7014,7025,7036,7046,7343,7353,7364,7374,7385,7745,7777,7830,7862,8105|right_data=1180,1329,1519,1646,4505,5765,5797,5882,5903,5945,6199,6538,6729,6898,7576,7597,8126|sleft_data=2917,2938,3002,3044,3129,3319,3849,3933,4018,4166,4865,4886,4907,4929,5183,6030,6316,6654,7067,7237,7914,7936,7999,8020|sdown_data=3235,3404,3891,3976,4060,4103,4124,4950,4971,4992,5013,5162,6114,6284,6453,6623,7099,7237,7269,8063|sup_data=3086,3107,3129,3319,5119,6305,6326,6644,6665,7067,7946,8031|sright_data=291,312,333,2959,2980,3023,3065,3235,3404,3870,3955,4039,4145,5034,5056,5077,5098,5140,6030,6114,6284,6453,6623,7099,7269,7914,7999,8052,8084|foni_data=|frzLeft_data=|frzLdia_data=|frzDown_data=715,863|frzSpace_data=|frzUp_data=884,947|frzRdia_data=|frzRight_data=969,1032|sfrzLeft_data=|sfrzDown_data=|sfrzUp_data=|sfrzRight_data=|speed_change=|boost_data=|

|oni2_data=2763,6192,6268,6344,6514|left2_data=1569,1674,1702,1844,2024,2052,2176,2214,2308,2327,2517,2592,2611,2649,4601,4714,4885,4923,5037,6041|leftdia2_data=2706,4298,4326,4563,4582,5889,5927,6003,6230,6306|down2_data=1607,1645,1721,1825,1854,1948,1977,2081,2157,2232,2289,2346,2460,2498,2536,2574,2668,2744,4620,4696,4733,4809,4866,4942,4999,5074,6060|space2_data=3995,4023,4449,4478,5851,5870,5946,5984,6022,6211,6249,6287,6325,6514|up2_data=1626,1749,1873,1901,2005,2100,2270,2365,2403,2441,2687,2725,4639,4677,4752,4790,4847,4961,5018,5169,6079,6117,6154,6173|rightdia2_data=2479,2555,2630,4146,4174,4904,4980,5056,5093,5131,5188,5889,5965,6192,6268|right2_data=1550,1778,1797,1929,2147,2176,2251,2384,2706,4658,4771,4828,5112,5150,6098|sleft2_data=281,319,338,660,698,717,812,849,868,2782,2810,3388,5264,5359,5434,5539,5558,5643,5738,6382,6476|sdown2_data=357,395,414,584,622,641,736,774,793,2934,2962,3540,3843,3957,3976,5283,5340,5387,5463,5586,5614,5719,5766,5813,6363,6401,6458|sup2_data=508,546,565,3085,3113,5415,5491,5567,5794,6420|sright2_data=433,470,489,3237,3265,3691,5321,5510,5662,5690,6344,6439|frzOni2_data=|frzLeft2_data=1494,1508|frzLdia2_data=887,944,1342,1399,1418,1456,5207,5221|frzDown2_data=1513,1527|frzSpace2_data=963,1020,1115,1171,1266,1323,5226,5240|frzUp2_data=1531,1546|frzRdia2_data=1039,1096,1190,1247,5245,5259|frzRight2_data=|sfrzLeft2_data=|sfrzDown2_data=|sfrzUp2_data=|sfrzRight2_data=|speed2_change=|boost2_data=|


`;
}
156 changes: 90 additions & 66 deletions js/danoni_main.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
*
* Source by tickle
* Created : 2018/10/08
* Revised : 2019/09/26
* Revised : 2019/09/28
*
* https://github.com/cwtickle/danoniplus
*/
const g_version = `Ver 8.4.0`;
const g_revisedDate = `2019/09/26`;
const g_version = `Ver 8.5.0`;
const g_revisedDate = `2019/09/28`;
const g_alphaVersion = ``;

// カスタム用バージョン (danoni_custom.js 等で指定可)
Expand Down Expand Up @@ -324,6 +324,7 @@ let g_rootObj = {};
let g_headerObj = {};
let g_scoreObj = {};
const g_stateObj = {
scoreLockFlg: false,
scoreId: 0,
dummyId: ``,
speed: 3.5,
Expand Down Expand Up @@ -1883,12 +1884,12 @@ function initialControl() {
}

// 譜面データの読み込み
loadDos(`true`);
loadDos(true);
}

/**
* 譜面読込
* @param {string} _initFlg
* @param {boolean} _initFlg
*/
function loadDos(_initFlg) {

Expand All @@ -1902,9 +1903,9 @@ function loadDos(_initFlg) {

// HTML埋め込みdos
if (dosInput !== null) {
g_rootObj = dosConvert(dosInput.value);
Object.assign(g_rootObj, dosConvert(dosInput.value));
if (externalDosInput === null) {
if (_initFlg === `true`) {
if (_initFlg === true) {
const randTime = new Date().getTime();
loadScript(`../js/danoni_setting.js?${randTime}`, _ => {
initAfterDosLoaded(_initFlg);
Expand All @@ -1918,23 +1919,48 @@ function loadDos(_initFlg) {
// 外部dos読み込み
if (externalDosInput !== null) {
let charset = document.characterSet;
let dosDivideFlg = false;
const charsetInput = document.querySelector(`#externalDosCharset`);
const dosDivideInput = document.querySelector(`#externalDosDivide`);
const dosLockInput = document.querySelector(`#externalDosLock`);
if (charsetInput !== null) {
charset = charsetInput.value;
}
if (dosDivideInput !== null) {
dosDivideFlg = setVal(dosDivideInput.value, false, `boolean`);
}
if (dosLockInput !== null) {
g_stateObj.scoreLockFlg = setVal(dosLockInput.value, false, `boolean`);
}
const filenameBase = externalDosInput.value.match(/.+\..*/)[0];
const filenameExtension = filenameBase.split(`.`).pop();
const filenameCommon = filenameBase.split(`.${filenameExtension}`)[0];
const scoreIdHeader = (g_stateObj.scoreId > 0 ? g_stateObj.scoreId + 1 : ``);
const filename = (_initFlg === true || dosDivideFlg === false ?
`${filenameCommon}.${filenameExtension}` : `${filenameCommon}${scoreIdHeader}.${filenameExtension}`);

const filename = externalDosInput.value.match(/.+\..*/)[0];
const randTime = new Date().getTime();
loadScript(`${filename}?${randTime}`, _ => {
if (typeof externalDosInit === `function`) {

// 譜面データを一時クリア
const scoreList = Object.keys(g_rootObj).filter(data => {
return data.endsWith(`_data`) || data.endsWith(`_change`);
});
scoreList.forEach(scoredata => {
g_rootObj[scoredata] = ``;
});

// 外部データを読込
externalDosInit();
Object.assign(g_rootObj, dosConvert(g_externalDos));

} else {
makeWarningWindow(C_MSG_E_0022);
}

// danoni_setting.jsは初回時のみ読込
if (_initFlg === `true`) {
if (_initFlg === true) {
const randTime = new Date().getTime();
loadScript(`../js/danoni_setting.js?${randTime}`, _ => {
initAfterDosLoaded(_initFlg);
Expand All @@ -1948,84 +1974,82 @@ function loadDos(_initFlg) {

function initAfterDosLoaded(_initFlg) {

// 初回時のみ譜面ヘッダー、一時キー設定を行う
if (_initFlg === `true`) {
// 初回時のみ譜面ヘッダー、一時キー設定、画像の再読込を行う
if (_initFlg === true) {
g_headerObj = headerConvert(g_rootObj);
keysConvert(g_rootObj);
g_keyObj.currentPtn = 0;
}
g_keyObj.currentKey = g_headerObj.keyLabels[g_stateObj.scoreId];

// 画像ファイルの読み込み
preloadFile(`image`, C_IMG_ARROW, ``, ``);
preloadFile(`image`, C_IMG_ARROWSD, ``, ``);
preloadFile(`image`, C_IMG_ONIGIRI, ``, ``);
preloadFile(`image`, C_IMG_AASD, ``, ``);
preloadFile(`image`, C_IMG_GIKO, ``, ``);
preloadFile(`image`, C_IMG_IYO, ``, ``);
preloadFile(`image`, C_IMG_C, ``, ``);
preloadFile(`image`, C_IMG_MORARA, ``, ``);
preloadFile(`image`, C_IMG_MONAR, ``, ``);
preloadFile(`image`, C_IMG_CURSOR, ``, ``);
preloadFile(`image`, C_IMG_FRZBAR, ``, ``);
preloadFile(`image`, C_IMG_LIFEBORDER, ``, ``);

// その他の画像ファイルの読み込み
for (let j = 0, len = g_headerObj.preloadImages.length; j < len; j++) {
if (setVal(g_headerObj.preloadImages[j], ``, `string`) !== ``) {

// Pattern A: |preloadImages=file.png|
// Pattern B: |preloadImages=file*.png@10| -> file01.png ~ file10.png
// Pattern C: |preloadImages=file*.png@2-9| -> file2.png ~ file9.png
// Pattern D: |preloadImages=file*.png@003-018| -> file003.png ~ file018.png

const tmpPreloadImages = g_headerObj.preloadImages[j].split(`@`);
if (tmpPreloadImages.length > 1) {
const termRoopCnts = tmpPreloadImages[1].split(`-`);
let startCnt;
let lastCnt;
let paddingLen;

if (termRoopCnts.length > 1) {
// Pattern C, Dの場合
startCnt = setVal(termRoopCnts[0], 1, `number`);
lastCnt = setVal(termRoopCnts[1], 1, `number`);
paddingLen = String(setVal(termRoopCnts[1], 1, `string`)).length;
// 画像ファイルの読み込み
preloadFile(`image`, C_IMG_ARROW, ``, ``);
preloadFile(`image`, C_IMG_ARROWSD, ``, ``);
preloadFile(`image`, C_IMG_ONIGIRI, ``, ``);
preloadFile(`image`, C_IMG_AASD, ``, ``);
preloadFile(`image`, C_IMG_GIKO, ``, ``);
preloadFile(`image`, C_IMG_IYO, ``, ``);
preloadFile(`image`, C_IMG_C, ``, ``);
preloadFile(`image`, C_IMG_MORARA, ``, ``);
preloadFile(`image`, C_IMG_MONAR, ``, ``);
preloadFile(`image`, C_IMG_CURSOR, ``, ``);
preloadFile(`image`, C_IMG_FRZBAR, ``, ``);
preloadFile(`image`, C_IMG_LIFEBORDER, ``, ``);

// その他の画像ファイルの読み込み
for (let j = 0, len = g_headerObj.preloadImages.length; j < len; j++) {
if (setVal(g_headerObj.preloadImages[j], ``, `string`) !== ``) {

// Pattern A: |preloadImages=file.png|
// Pattern B: |preloadImages=file*.png@10| -> file01.png ~ file10.png
// Pattern C: |preloadImages=file*.png@2-9| -> file2.png ~ file9.png
// Pattern D: |preloadImages=file*.png@003-018| -> file003.png ~ file018.png

const tmpPreloadImages = g_headerObj.preloadImages[j].split(`@`);
if (tmpPreloadImages.length > 1) {
const termRoopCnts = tmpPreloadImages[1].split(`-`);
let startCnt;
let lastCnt;
let paddingLen;

if (termRoopCnts.length > 1) {
// Pattern C, Dの場合
startCnt = setVal(termRoopCnts[0], 1, `number`);
lastCnt = setVal(termRoopCnts[1], 1, `number`);
paddingLen = String(setVal(termRoopCnts[1], 1, `string`)).length;
} else {
// Pattern Bの場合
startCnt = 1;
lastCnt = setVal(tmpPreloadImages[1], 1, `number`);
paddingLen = String(setVal(tmpPreloadImages[1], 1, `string`)).length;
}
for (let k = startCnt; k <= lastCnt; k++) {
preloadFile(`image`, tmpPreloadImages[0].replace(`*`, paddingLeft(String(k), paddingLen, `0`)), ``, ``);
}
} else {
// Pattern Bの場合
startCnt = 1;
lastCnt = setVal(tmpPreloadImages[1], 1, `number`);
paddingLen = String(setVal(tmpPreloadImages[1], 1, `string`)).length;
}
for (let k = startCnt; k <= lastCnt; k++) {
preloadFile(`image`, tmpPreloadImages[0].replace(`*`, paddingLeft(String(k), paddingLen, `0`)), ``, ``);
// Pattern Aの場合
preloadFile(`image`, g_headerObj.preloadImages[j], ``, ``);
}
} else {
// Pattern Aの場合
preloadFile(`image`, g_headerObj.preloadImages[j], ``, ``);
}
}
}

// クエリで譜面番号が指定されていればセット
if (_initFlg === `true`) {
// クエリで譜面番号が指定されていればセット
const specifiedScoreId = getQueryParamVal(`scoreId`);
g_stateObj.scoreId = g_headerObj.keyLabels[specifiedScoreId] ? specifiedScoreId : 0;
}
g_keyObj.currentKey = g_headerObj.keyLabels[g_stateObj.scoreId];

// customjs、音楽ファイルの読み込み
// customjsの読み込み
const randTime = new Date().getTime();
loadScript(`../js/${g_headerObj.customjs}?${randTime}`, _ => {
if (g_headerObj.customjs2 !== ``) {
loadScript(`../js/${g_headerObj.customjs2}?${randTime}`, _ => {
if (_initFlg === `true`) {
if (_initFlg === true) {
titleInit();
} else {
loadingScoreInit2();
}
});
} else {
if (_initFlg === `true`) {
if (_initFlg === true) {
titleInit();
} else {
loadingScoreInit2();
Expand Down Expand Up @@ -5268,7 +5292,7 @@ function resetCursorALL(_width, _divideCnt, _keyCtrlPtn) {
*/
function loadingScoreInit() {
// 譜面データの読み込み
loadDos(`false`);
loadDos(false);
}

function loadingScoreInit2() {
Expand All @@ -5285,7 +5309,7 @@ function loadingScoreInit2() {

let scoreIdHeader = ``;
let dummyIdHeader = ``;
if (g_stateObj.scoreId > 0) {
if (g_stateObj.scoreId > 0 && g_stateObj.scoreLockFlg === false) {
scoreIdHeader = Number(g_stateObj.scoreId) + 1;
}
if (g_stateObj.dummyId !== ``) {
Expand Down

0 comments on commit b6f4925

Please sign in to comment.