danoniplus 39.2.0 → 39.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/js/danoni_main.js +23 -6
- package/js/lib/danoni_constants.js +79 -5
- package/package.json +1 -1
package/js/danoni_main.js
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Source by tickle
|
|
6
6
|
* Created : 2018/10/08
|
|
7
|
-
* Revised : 2025/02/
|
|
7
|
+
* Revised : 2025/02/09
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 39.
|
|
12
|
-
const g_revisedDate = `2025/02/
|
|
11
|
+
const g_version = `Ver 39.3.0`;
|
|
12
|
+
const g_revisedDate = `2025/02/09`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -1538,6 +1538,7 @@ const makeBgCanvas = (_ctx, { w = g_sWidth, h = g_sHeight } = {}) => {
|
|
|
1538
1538
|
const clearWindow = (_redrawFlg = false, _customDisplayName = ``) => {
|
|
1539
1539
|
resetKeyControl();
|
|
1540
1540
|
resetTransform();
|
|
1541
|
+
resetXY();
|
|
1541
1542
|
|
|
1542
1543
|
// ボタン、オブジェクトをクリア (divRoot配下のもの)
|
|
1543
1544
|
deleteChildspriteAll(`divRoot`);
|
|
@@ -9624,6 +9625,7 @@ const getArrowSettings = () => {
|
|
|
9624
9625
|
g_workObj.keyCtrl = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}`]);
|
|
9625
9626
|
g_workObj.diffList = [];
|
|
9626
9627
|
g_workObj.mainEndTime = 0;
|
|
9628
|
+
g_stateObj.layerNum = 2;
|
|
9627
9629
|
|
|
9628
9630
|
g_workObj.keyGroupMaps = tkObj.keyGroupMaps;
|
|
9629
9631
|
g_workObj.keyGroupList = tkObj.keyGroupList;
|
|
@@ -9672,9 +9674,6 @@ const getArrowSettings = () => {
|
|
|
9672
9674
|
g_workObj.stepX[j] = g_keyObj.blank * stdPos + (g_headerObj.playingWidth - C_ARW_WIDTH) / 2;
|
|
9673
9675
|
const baseLayer = g_keyObj[`layerGroup${keyCtrlPtn}`]?.[j] || 0;
|
|
9674
9676
|
g_workObj.dividePos[j] = baseLayer * 2 + ((posj <= divideCnt ? 0 : 1) + (scrollDirOptions[j] === 1 ? 0 : 1) + (g_stateObj.reverse === C_FLG_OFF ? 0 : 1)) % 2;
|
|
9675
|
-
if (g_stateObj.stepArea === `X-Flower`) {
|
|
9676
|
-
g_workObj.dividePos[j] = (g_workObj.stepX[j] < (g_headerObj.playingWidth - C_ARW_WIDTH) / 2 ? 0 : 1) * 2 + g_workObj.dividePos[j] % 2;
|
|
9677
|
-
}
|
|
9678
9677
|
g_workObj.scrollDir[j] = (posj <= divideCnt ? 1 : -1) * scrollDirOptions[j] * (g_stateObj.reverse === C_FLG_OFF ? 1 : -1);
|
|
9679
9678
|
|
|
9680
9679
|
eachOrAll.forEach(type => {
|
|
@@ -9692,6 +9691,24 @@ const getArrowSettings = () => {
|
|
|
9692
9691
|
g_workObj[`frzHitShadowColors${type}`][j] = g_headerObj.frzShadowColor[colorj][1] || ``;
|
|
9693
9692
|
});
|
|
9694
9693
|
}
|
|
9694
|
+
g_workObj.orgFlatFlg = g_workObj.dividePos.every(v => v === g_workObj.dividePos[0]);
|
|
9695
|
+
if (g_stateObj.stepArea === `X-Flower` || (g_stateObj.stepArea.includes(`Mismatched`) && g_workObj.orgFlatFlg)) {
|
|
9696
|
+
for (let j = 0; j < keyNum; j++) {
|
|
9697
|
+
g_workObj.dividePos[j] = (g_workObj.stepX[j] < (g_headerObj.playingWidth - C_ARW_WIDTH) / 2 ? 0 : 1) * 2 + g_workObj.dividePos[j] % 2;
|
|
9698
|
+
}
|
|
9699
|
+
}
|
|
9700
|
+
if (g_stateObj.stepArea === `2Step`) {
|
|
9701
|
+
for (let j = 0; j < keyNum; j++) {
|
|
9702
|
+
if (g_workObj.orgFlatFlg && g_workObj.stepX[j] >= (g_headerObj.playingWidth - C_ARW_WIDTH) / 2) {
|
|
9703
|
+
g_workObj.dividePos[j] = Math.floor(g_workObj.dividePos[j] / 2) * 2 + (g_workObj.dividePos[j] + 1) % 2;
|
|
9704
|
+
g_workObj.scrollDir[j] *= -1;
|
|
9705
|
+
}
|
|
9706
|
+
if (g_workObj.dividePos[j] % 2 === (Number(g_stateObj.reverse === C_FLG_ON) + 1) % 2) {
|
|
9707
|
+
g_workObj.dividePos[j] = g_stateObj.layerNum + g_workObj.dividePos[j] + Number(g_stateObj.reverse === C_FLG_ON ? 1 : -1);
|
|
9708
|
+
g_workObj.scrollDir[j] *= -1;
|
|
9709
|
+
}
|
|
9710
|
+
}
|
|
9711
|
+
}
|
|
9695
9712
|
g_workObj.scrollDirDefault = g_workObj.scrollDir.concat();
|
|
9696
9713
|
g_workObj.dividePosDefault = g_workObj.dividePos.concat();
|
|
9697
9714
|
g_stateObj.layerNum = Math.max(g_stateObj.layerNum, Math.ceil((Math.max(...g_workObj.dividePos) + 1) / 2) * 2);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2025/02/
|
|
8
|
+
* Revised : 2025/02/09 (v39.3.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -1068,7 +1068,7 @@ const g_settings = {
|
|
|
1068
1068
|
playWindows: [`Default`, `Stairs`, `R-Stairs`, `Slope`, `R-Slope`, `Distorted`, `R-Distorted`, `SideScroll`, `R-SideScroll`],
|
|
1069
1069
|
playWindowNum: 0,
|
|
1070
1070
|
|
|
1071
|
-
stepAreas: [`Default`, `Halfway`, `Mismatched`, `R-Mismatched`, `X-Flower`],
|
|
1071
|
+
stepAreas: [`Default`, `Halfway`, `2Step`, `Mismatched`, `R-Mismatched`, `X-Flower`],
|
|
1072
1072
|
stepAreaNum: 0,
|
|
1073
1073
|
|
|
1074
1074
|
frzReturns: [C_FLG_OFF, `X-Axis`, `Y-Axis`, `Z-Axis`, `Random`, `XY-Axis`, `XZ-Axis`, `YZ-Axis`, `Random+`],
|
|
@@ -1110,9 +1110,10 @@ const g_moveSettingWindow = (_changePageFlg = true, _direction = 1) => {
|
|
|
1110
1110
|
};
|
|
1111
1111
|
|
|
1112
1112
|
/**
|
|
1113
|
-
* transform
|
|
1113
|
+
* transform, 座標管理
|
|
1114
1114
|
*/
|
|
1115
1115
|
const g_transforms = {};
|
|
1116
|
+
const g_posXYs = {};
|
|
1116
1117
|
|
|
1117
1118
|
/**
|
|
1118
1119
|
* idごとのtransformを追加・変更
|
|
@@ -1147,6 +1148,57 @@ const resetTransform = () => {
|
|
|
1147
1148
|
Object.keys(g_transforms).forEach(_id => g_transforms[_id] = {});
|
|
1148
1149
|
};
|
|
1149
1150
|
|
|
1151
|
+
/**
|
|
1152
|
+
* 座標計算
|
|
1153
|
+
* @param {string} _id
|
|
1154
|
+
* @param {string} _typeId
|
|
1155
|
+
*/
|
|
1156
|
+
const calcXY = (_id, _typeId) => {
|
|
1157
|
+
const _posXs = [], _posYs = [];
|
|
1158
|
+
Object.keys(g_posXYs[_id]).forEach(typeId => {
|
|
1159
|
+
_posXs.push(g_posXYs[_id][typeId][0]);
|
|
1160
|
+
_posYs.push(g_posXYs[_id][typeId][1]);
|
|
1161
|
+
});
|
|
1162
|
+
$id(_id).left = `${sumData(_posXs)}px`;
|
|
1163
|
+
$id(_id).top = `${sumData(_posYs)}px`;
|
|
1164
|
+
};
|
|
1165
|
+
|
|
1166
|
+
/**
|
|
1167
|
+
* 座標加算処理
|
|
1168
|
+
* @param {string} _id
|
|
1169
|
+
* @param {string} _typeId
|
|
1170
|
+
* @param {number} _x
|
|
1171
|
+
* @param {number} _y
|
|
1172
|
+
* @param {boolean} [_overwrite=false]
|
|
1173
|
+
*/
|
|
1174
|
+
const addXY = (_id, _typeId, _x = 0, _y = 0, _overwrite = false) => {
|
|
1175
|
+
if (_overwrite) {
|
|
1176
|
+
delete g_posXYs?.[_id];
|
|
1177
|
+
}
|
|
1178
|
+
if (g_posXYs[_id] === undefined) {
|
|
1179
|
+
g_posXYs[_id] = {};
|
|
1180
|
+
}
|
|
1181
|
+
g_posXYs[_id][_typeId] = [_x, _y];
|
|
1182
|
+
calcXY(_id, _typeId);
|
|
1183
|
+
};
|
|
1184
|
+
|
|
1185
|
+
/**
|
|
1186
|
+
* 座標リセット処理
|
|
1187
|
+
* @param {string} _id
|
|
1188
|
+
* @param {string} _typeId
|
|
1189
|
+
*/
|
|
1190
|
+
const delXY = (_id, _typeId) => {
|
|
1191
|
+
delete g_posXYs[_id][_typeId];
|
|
1192
|
+
calcXY(_id, _typeId);
|
|
1193
|
+
};
|
|
1194
|
+
|
|
1195
|
+
/**
|
|
1196
|
+
* 座標位置情報の初期化
|
|
1197
|
+
*/
|
|
1198
|
+
const resetXY = () => {
|
|
1199
|
+
Object.keys(g_posXYs).forEach(_id => delete g_posXYs[_id]);
|
|
1200
|
+
};
|
|
1201
|
+
|
|
1150
1202
|
/**
|
|
1151
1203
|
* id, transformIdに合致するtransform情報の取得
|
|
1152
1204
|
* @param {string} _id
|
|
@@ -1218,12 +1270,13 @@ const g_playWindowFunc = {
|
|
|
1218
1270
|
'R-SideScroll': () => g_changeStairs(90),
|
|
1219
1271
|
};
|
|
1220
1272
|
|
|
1273
|
+
const g_arrowGroupSprite = [`stepSprite`, `arrowSprite`, `frzHitSprite`];
|
|
1221
1274
|
const g_stepAreaFunc = {
|
|
1222
1275
|
'Default': () => ``,
|
|
1223
1276
|
'Halfway': () => {
|
|
1224
|
-
|
|
1277
|
+
g_arrowGroupSprite.forEach(sprite => {
|
|
1225
1278
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1226
|
-
|
|
1279
|
+
addXY(`${sprite}${j}`, `stepArea`, 0, (j % 2 === 0 ? 1 : -1) * (g_headerObj.playingHeight / 2 - g_posObj.stepY + (g_posObj.stepYR - C_ARW_WIDTH) / 2));
|
|
1227
1280
|
}
|
|
1228
1281
|
});
|
|
1229
1282
|
},
|
|
@@ -1231,11 +1284,32 @@ const g_stepAreaFunc = {
|
|
|
1231
1284
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1232
1285
|
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * -15}deg)`);
|
|
1233
1286
|
}
|
|
1287
|
+
if (g_workObj.orgFlatFlg) {
|
|
1288
|
+
g_arrowGroupSprite.forEach(sprite => {
|
|
1289
|
+
for (let j = 2; j < Math.min(g_stateObj.layerNum, 4); j++) {
|
|
1290
|
+
addXY(`${sprite}${j}`, `stepArea`, 0, (j % 2 === 0 ? 1 : -1) * (g_headerObj.playingHeight / 2 - g_posObj.stepY + (g_posObj.stepYR - C_ARW_WIDTH) / 2));
|
|
1291
|
+
}
|
|
1292
|
+
});
|
|
1293
|
+
}
|
|
1234
1294
|
},
|
|
1235
1295
|
'R-Mismatched': () => {
|
|
1236
1296
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1237
1297
|
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * 15}deg)`);
|
|
1238
1298
|
}
|
|
1299
|
+
if (g_workObj.orgFlatFlg) {
|
|
1300
|
+
g_arrowGroupSprite.forEach(sprite => {
|
|
1301
|
+
for (let j = 0; j < Math.min(g_stateObj.layerNum, 2); j++) {
|
|
1302
|
+
addXY(`${sprite}${j}`, `stepArea`, 0, (j % 2 === 0 ? 1 : -1) * (g_headerObj.playingHeight / 2 - g_posObj.stepY + (g_posObj.stepYR - C_ARW_WIDTH) / 2));
|
|
1303
|
+
}
|
|
1304
|
+
});
|
|
1305
|
+
}
|
|
1306
|
+
},
|
|
1307
|
+
'2Step': () => {
|
|
1308
|
+
g_arrowGroupSprite.forEach(sprite => {
|
|
1309
|
+
for (let j = Math.min(g_stateObj.layerNum, 4) / 2; j < Math.min(g_stateObj.layerNum, 4); j++) {
|
|
1310
|
+
addXY(`${sprite}${j}`, `stepArea`, 0, (j % 2 === 0 ? 1 : -1) * (g_headerObj.playingHeight / 2 - g_posObj.stepY + (g_posObj.stepYR - C_ARW_WIDTH) / 2));
|
|
1311
|
+
}
|
|
1312
|
+
});
|
|
1239
1313
|
},
|
|
1240
1314
|
'X-Flower': () => {
|
|
1241
1315
|
for (let j = 0; j < Math.min(g_stateObj.layerNum, 4); j++) {
|