v50.0.0
·
45 commits
to develop
since this release
Immutable
release. Only release title and notes can be modified.
▼ 更新用ファイルは下記 Files changed より
▼ 本体更新方法 / サポートバージョン / ソース構成 / 譜面の作成概要
▼ 要望・不具合報告 ( Discord )
v49.6.1 -> v50.0.0 ( vs. latest v50 ) 📁 ▶️
🔃 Files changed (v50)
- danoni_setting.js の変更は、追加した設定を使用しない限り、更新不要です。
- legacy_functions.js は過去関数群です。
| フォルダ Directory |
ファイル名 FileName |
最終更新 Last Updated |
|
|---|---|---|---|
| /js | danoni_main.js | 📥 | v50.0.0 |
| /js/lib | danoni_constants.js | 📥 | v50.0.0 |
(参考)v49以前の差分ファイル一覧
| フォルダ | ファイル名 | 最終更新 | |
|---|---|---|---|
| /js/lib | legacy_functions.js | 📥 | v42.0.0 |
| /js/lib | danoni_localbinary.js | 📥 | v15.1.0 |
| /js/template | danoni_setting(-template).js | 📥 | v45.0.0 |
| /css | danoni_main.css | 📥 | v48.0.0 |
| /skin | danoni_skin_default.css danoni_skin_light.css danoni_skin_skyblue.css |
📥 | v48.0.0 |
| /img | aaShadow.svg arrow.svg arrowShadow.svg borderline.svg c.svg cursor.svg giko.svg iyo.svg monar.svg morara.svg onigiri.svg |
📥 | v15.1.0 |
Details (詳細)
⭐ New Features
- 特定のカスタムキー(系統)への切替時に、関連設定を自動的に入れ替え・復元する仕組み(registerKeyFamily/resolveKeyFamily)を追加 ( PR #2203 )
📝 Chores
- Migrate Wiki Changelog Links to Support Branchにおいて除外mdファイルを更新 ( PR #2201 )
🐝 Functions & Variables Changed
| Functions & Variables | |
|---|---|
| Add | registerKeyFamily, resolveKeyFamily, applyIfChanged, getPathVal, setPathVal |
| Change | ー |
| Delete | ー |
🍀 Remarks
1. 特定のカスタムキーへの切替時に一部設定を入れ替えるための補助関数を追加
- キリズマ、パンパネのカスタムJSでは、一部の設定を有効にすると動作に支障が出るため、外部からブロックする処理を入れています。
- ただ、これまではキリズマ、パンパネのカスタムJSが同居した場合、それぞれのカスタムJSが状態を意識しておかないと、別のキーモードに切り替えた時にうまく動作しない問題が発生していました。
- こういった切り替え制御をカスタムJSに任せるのではなく、本体側で制御することで、カスタムJS側で複雑なフラグ管理を不要にします。
キリズマでの設定例
const origImgTypeArr = g_headerObj.imgType;
const origImgTypeNames = g_keycons.imgTypes;
const kirizmaImgTypeArr = [...];
const kirizmaImgTypeNames = [`kirizma`];
const origLocalImg = { C_IMG_AASD, C_IMG_C };
const kirizmaLocalImg = { ... };
registerKeyFamily(`kirizma`, isKirizmaKey, {
'g_diffObj.arrowJdgY': -10,
'g_diffObj.frzJdgY': -50,
'g_posObj.distY': () => DIST_KIRIZMA - C_STEP_Y g_posObj.stepYR,
'g_posObj.reverseStepY': () => g_posObj.distY - g_posObj.stepY - g_posObj.stepDiffY - C_ARW_WIDTH,
'g_posObj.arrowHeight': () => DIST_KIRIZMA g_posObj.stepYR - g_posObj.stepDiffY * 2,
}, {
onAcquire: () => {
g_headerObj.imgType = kirizmaImgTypeArr;
g_keycons.imgTypes = kirizmaImgTypeNames;
if (g_imgType !== `kirizma`) {
g_imgType = `kirizma`;
g_stateObj.rotateEnabled = kirizmaImgTypeArr[0].rotateEnabled;
g_stateObj.flatStepHeight = kirizmaImgTypeArr[0].flatStepHeight;
if (g_isFile) {
C_IMG_AASD = kirizmaLocalImg.C_IMG_AASD;
C_IMG_C = kirizmaLocalImg.C_IMG_C;
reloadImgObj();
} else {
updateImgType(kirizmaImgTypeArr[0]);
}
}
if (!g_headerObj.keyLists.every(isKirizmaKey)) {
// (既存のクレジットボタン表示処理)
}
},
onRelease: () => {
g_headerObj.imgType = origImgTypeArr;
g_keycons.imgTypes = origImgTypeNames;
if (g_imgType !== origImgTypeNames[0]) {
g_imgType = origImgTypeNames[0];
g_stateObj.rotateEnabled = origImgTypeArr[0].rotateEnabled;
g_stateObj.flatStepHeight = origImgTypeArr[0].flatStepHeight;
if (g_isFile) {
C_IMG_AASD = origLocalImg.C_IMG_AASD;
C_IMG_C = origLocalImg.C_IMG_C;
reloadImgObj();
} else {
updateImgType(origImgTypeArr[0]);
}
}
// (既存のクレジットボタン削除処理)
},
});パンパネでの設定例
const origLblReverse = g_lblNameObj.Reverse;
const origLblUReverse = g_lblNameObj[`u_Reverse`];
const origMsgReverse = g_msgObj.reverse;
const panelReverseMsg = { ... };
const origImgTypeArr = g_headerObj.imgType;
const origImgTypeNames = g_keycons.imgTypes;
const panelsImgTypeArr = [...];
const panelsImgTypeNames = [`panels`];
const origLocalImg = { C_IMG_AASD, C_IMG_C };
const panelLocalImg = { ... };
registerKeyFamily(`panel`, isPanelKey, {
'g_headerObj.arrowEffectUseOrg': false,
'g_stateObj.d_arroweffect': C_FLG_ON,
'g_headerObj.stepAreaUse': false,
'g_headerObj.effectUse': false,
'g_headerObj.camoufrageUse': false,
'g_headerObj.swappingUse': false,
'g_stateObj.stepArea': `Default`,
'g_stateObj.effect': C_FLG_OFF,
'g_stateObj.camoufrage': C_FLG_OFF,
'g_stateObj.swapping': C_FLG_OFF,
'g_diffObj.arrowJdgY': -160,
'--panel-offset-x': () => `${(g_sWidth - g_keyObj[`minWidth${g_keyObj.currentKey}`]) / 2}px`,
}, {
onAcquire: () => {
g_lblNameObj.Reverse = `Dynamic`;
g_lblNameObj[`u_Reverse`] = `Dynamic`;
g_msgObj.reverse = panelReverseMsg[g_localeObj.val] ?? panelReverseMsg.Ja;
lblReverse.innerText = `Dynamic`;
btnReverse.innerText = `Dynamic:${getStgDetailName(g_stateObj.reverse)}`;
lblReverse.title = g_msgObj.reverse;
g_headerObj.imgType = panelsImgTypeArr;
g_keycons.imgTypes = panelsImgTypeNames;
if (!g_headerObj.keyLists.every(isPanelKey)) {
// (既存のクレジットボタン表示処理)
}
if (g_imgType !== `panels`) {
// (既存のimgType切替処理・file://分岐)
}
},
onRelease: () => {
g_lblNameObj.Reverse = origLblReverse;
g_lblNameObj[`u_Reverse`] = origLblUReverse;
g_msgObj.reverse = origMsgReverse;
lblReverse.innerText = origLblReverse;
btnReverse.innerText = `${origLblReverse}:${getStgDetailName(g_stateObj.reverse)}`;
lblReverse.title = origMsgReverse;
deleteDiv(divRoot, `lnkCreditP`);
g_headerObj.imgType = origImgTypeArr;
g_keycons.imgTypes = origImgTypeNames;
if (g_imgType !== origImgTypeNames[0]) {
// (既存のimgType復元処理・file://分岐)
}
},
}, {
'--panel-offset-x': value => document.documentElement.style.setProperty(`--panel-offset-x`, value),
});