danoniplus 43.4.0 → 43.5.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 CHANGED
@@ -4,12 +4,12 @@
4
4
  *
5
5
  * Source by tickle
6
6
  * Created : 2018/10/08
7
- * Revised : 2026/01/04
7
+ * Revised : 2026/01/12
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 43.4.0`;
12
- const g_revisedDate = `2026/01/04`;
11
+ const g_version = `Ver 43.5.0`;
12
+ const g_revisedDate = `2026/01/12`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -3551,10 +3551,6 @@ const headerConvert = _dosObj => {
3551
3551
  setIntVal(getQueryParamVal(`h`), g_sHeight), g_sHeight);
3552
3552
  $id(`canvas-frame`).height = wUnit(g_sHeight);
3553
3553
  }
3554
- if (!(_dosObj.heightVariable || g_presetObj.heightVariable || false)) {
3555
- obj.heightLockFlg = true;
3556
- g_settings.playWindows = g_settings.playWindows.filter(val => !val.endsWith(`Slope`) && !val.endsWith(`SideScroll`));
3557
- }
3558
3554
 
3559
3555
  // 曲名
3560
3556
  obj.musicTitles = [`musicName`];
@@ -8408,8 +8404,6 @@ const exSettingInit = () => {
8408
8404
  const spriteList = setSpriteList(g_settingPos.exSetting);
8409
8405
 
8410
8406
  createGeneralSetting(spriteList.playWindow, `playWindow`);
8411
- lblPlayWindow.title += g_headerObj.heightLockFlg ? g_msgObj.sideScrollDisable : g_msgObj.sideScrollMsg;
8412
-
8413
8407
  createGeneralSetting(spriteList.stepArea, `stepArea`);
8414
8408
  createGeneralSetting(spriteList.frzReturn, `frzReturn`);
8415
8409
  createGeneralSetting(spriteList.shaking, `shaking`);
@@ -11337,6 +11331,7 @@ const getArrowSettings = () => {
11337
11331
  g_workObj.scrollDir = [];
11338
11332
  g_workObj.scrollDirDefault = [];
11339
11333
  g_workObj.dividePos = [];
11334
+ g_workObj.scale = g_keyObj.scale;
11340
11335
  g_workObj.stepRtn = structuredClone(g_keyObj[`stepRtn${keyCtrlPtn}`]);
11341
11336
  g_workObj.stepHitRtn = structuredClone(g_keyObj[`stepRtn${keyCtrlPtn}`]);
11342
11337
  g_workObj.arrowRtn = structuredClone(g_keyObj[`stepRtn${keyCtrlPtn}`]);
@@ -11344,6 +11339,34 @@ const getArrowSettings = () => {
11344
11339
  g_workObj.diffList = [];
11345
11340
  g_workObj.mainEndTime = 0;
11346
11341
 
11342
+ const rotateBy = (val, delta) => {
11343
+ // numeric
11344
+ const n = Number(val);
11345
+ if (Number.isFinite(n)) return n + delta;
11346
+
11347
+ // "type:deg"
11348
+ const [type, degStr = `0`] = String(val).split(`:`);
11349
+ const deg = Number(degStr);
11350
+ return Number.isFinite(deg) ? `${type}:${deg + delta}` : val;
11351
+ };
11352
+ const changeStepRtn = (_name, _angle) =>
11353
+ g_workObj[_name] = g_workObj[_name].map(v => rotateBy(v, _angle));
11354
+
11355
+ if (g_stateObj.playWindow.endsWith(`SideScroll`)) {
11356
+ if (g_stateObj.rotateEnabled) {
11357
+ const sign = g_stateObj.playWindow === `SideScroll` ? 1 : -1;
11358
+ changeStepRtn(`stepRtn`, 90 * sign);
11359
+ changeStepRtn(`stepHitRtn`, 90 * sign);
11360
+ changeStepRtn(`arrowRtn`, 90 * sign);
11361
+ }
11362
+ const div = g_keyObj[`div${keyCtrlPtn}`];
11363
+ const divMax = g_keyObj[`divMax${keyCtrlPtn}`] ?? posMax;
11364
+ const denom = (Math.max(div, divMax - div) + 1) * g_keyObj.blank;
11365
+ if (Number.isFinite(denom) && denom > 0) {
11366
+ g_workObj.scale *= Math.min(g_sHeight / denom, 1);
11367
+ }
11368
+ }
11369
+
11347
11370
  g_workObj.keyGroupMaps = tkObj.keyGroupMaps;
11348
11371
  g_workObj.keyGroupList = tkObj.keyGroupList;
11349
11372
 
@@ -11733,7 +11756,7 @@ const mainInit = () => {
11733
11756
 
11734
11757
  // ステップゾーン、矢印のメインスプライトを作成
11735
11758
  const mainSprite = createEmptySprite(divRoot, `mainSprite`, mainCommonPos);
11736
- addTransform(`mainSprite`, `root`, `scale(${g_keyObj.scale})`);
11759
+ addTransform(`mainSprite`, `root`, `scale(${g_workObj.scale})`);
11737
11760
  addXY(`mainSprite`, `root`, g_workObj.playingX, g_posObj.stepY - C_STEP_Y + g_headerObj.playingY);
11738
11761
 
11739
11762
  // 曲情報・判定カウント用スプライトを作成(メインスプライトより上位)
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2026/01/04 (v43.4.0)
8
+ * Revised : 2026/01/12 (v43.5.0)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -165,6 +165,10 @@ $id(`canvas-frame`).margin = C_DIS_AUTO;
165
165
 
166
166
  const g_btnWidth = (_multi = 1) => Math.min(g_sWidth, g_limitObj.btnBaseWidth) * _multi;
167
167
  const g_btnX = (_multi = 0) => g_btnWidth(_multi) + Math.max((g_sWidth - g_limitObj.btnBaseWidth) / 2, 0);
168
+ const g_slopeAngle = () => (Math.atan2(
169
+ g_sHeight,
170
+ g_keyObj[`minWidth${g_headerObj.keyLabels[g_stateObj.scoreId]}`] || g_keyObj.minWidthDefault
171
+ ) * 180) / Math.PI * 2 - 40;
168
172
 
169
173
  // 固定ウィンドウサイズ
170
174
  const g_windowObj = {
@@ -1543,8 +1547,8 @@ const g_playWindowFunc = new Map([
1543
1547
  ['Default', () => ``],
1544
1548
  ['Stairs', () => g_changeStairs(-8)],
1545
1549
  ['R-Stairs', () => g_changeStairs(8)],
1546
- ['Slope', () => g_changeStairs(-45)],
1547
- ['R-Slope', () => g_changeStairs(45)],
1550
+ ['Slope', () => g_changeStairs(-g_slopeAngle())],
1551
+ ['R-Slope', () => g_changeStairs(g_slopeAngle())],
1548
1552
  ['Distorted', () => g_changeSkew(-15)],
1549
1553
  ['R-Distorted', () => g_changeSkew(15)],
1550
1554
  ['SideScroll', () => g_changeStairs(-90)],
@@ -4288,9 +4292,8 @@ const g_lang_msgObj = {
4288
4292
  d_arroweffect: `矢印・フリーズアローモーションの有効化設定`,
4289
4293
  d_special: `作品固有の特殊演出の有効化設定`,
4290
4294
 
4291
- playWindow: `ステップゾーン及び矢印の位置を全体的に回転する等の設定です。\n[Stairs/Slope] ステップゾーンを階段状にします\n[Distorted] 画面を歪ませます`,
4292
- sideScrollMsg: `\n[SideScroll] 横スクロールモードになります\n\nSlope, SideScrollを設定する場合は高さが足りているかを確認してください\nクエリパラメータ ?h=600 などで設定できます`,
4293
- sideScrollDisable: `\n\nウィンドウの高さの自動拡張が無効のため、Slope, SideScrollは使用できません`,
4295
+ playWindow: `ステップゾーン及び矢印の位置を全体的に回転する等の設定です。\n[Stairs/Slope] ステップゾーンを階段状にします\n[Distorted] 画面を歪ませます\n` +
4296
+ `[SideScroll] 横スクロールモードになります`,
4294
4297
  stepArea: `ステップゾーンの位置を変更します。\n[Halfway] ステップゾーンが中央に表示されます\n[2Step] ステップゾーンが2段に分かれて流れてきます\n` +
4295
4298
  `[Mismatched/R-Mismatched] スクロールの向きが上下で異なる方向に流れます\n` +
4296
4299
  `[X-Flower] レーンが花びらのように広がります\n[Alt-Crossing] レーンが交互に違う方向から流れます`,
@@ -4382,9 +4385,8 @@ const g_lang_msgObj = {
4382
4385
  d_arroweffect: `Enable sequences' animations`,
4383
4386
  d_special: `Enable setting of special effects to the work`,
4384
4387
 
4385
- playWindow: `This is the setting for overall rotation of the step zone and arrow position, etc.\n[Stairs/Slope] The step zone is in a staircase shape.\n[Distorted] Distorts the screen.`,
4386
- sideScrollMsg: `\n[SideScroll] It becomes a side scroll mode.\n\nWhen setting Slope or SideScroll, please make sure that the height is\nsufficient. Can be set with query parameter ?h=600, etc.`,
4387
- sideScrollDisable: `\n\nSlope, SideScroll cannot be used because \nautomatic window height expansion is disabled.`,
4388
+ playWindow: `This is the setting for overall rotation of the step zone and arrow position, etc.\n[Stairs/Slope] The step zone is in a staircase shape.\n[Distorted] Distorts the screen.\n` +
4389
+ `[SideScroll] It becomes a side scroll mode.`,
4388
4390
  stepArea: `Change the position of the step zone.\n[Halfway] Step zones are centered.\n[2Step] Step zones are divided into two layers.\n` +
4389
4391
  `[Mismatched/R-Mismatched] Scroll direction flows in different directions up and down.\n` +
4390
4392
  `[X-Flower] Lanes spread out like flower petals.\n[Alt-Crossing] Lanes flow from different directions alternately.`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "43.4.0",
3
+ "version": "43.5.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "./js/danoni_main.js",
6
6
  "scripts": {