danoniplus 37.2.1 → 37.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.
Files changed (2) hide show
  1. package/js/danoni_main.js +53 -26
  2. package/package.json +1 -1
package/js/danoni_main.js CHANGED
@@ -8,8 +8,8 @@
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 37.2.1`;
12
- const g_revisedDate = `2024/06/30`;
11
+ const g_version = `Ver 37.3.0`;
12
+ const g_revisedDate = `2024/07/06`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -8463,9 +8463,24 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
8463
8463
  /** Motionの適用フレーム数 */
8464
8464
  g_workObj.motionFrame = [];
8465
8465
 
8466
- const setNotes = (_j, _k, _data, _startPoint, _header, _frzFlg = false) => {
8466
+ const setNotes = (_j, _k, _data, _startPoint, _header, _frzFlg = false, { initY, initBoostY, arrivalFrame, motionFrame } = {}) => {
8467
8467
  if (_startPoint >= 0) {
8468
- g_workObj[`mk${_header}Arrow`][_startPoint]?.push(_j) || (g_workObj[`mk${_header}Arrow`][_startPoint] = [_j]);
8468
+ const arrowAttrs = { pos: _j, initY, initBoostY, arrivalFrame, motionFrame };
8469
+ if (g_workObj[`mk${_header}Arrow`][_startPoint] === undefined) {
8470
+ g_workObj[`mk${_header}Arrow`][_startPoint] = [arrowAttrs];
8471
+ } else {
8472
+ let insertFlg = false;
8473
+ for (let m = 0; m < g_workObj[`mk${_header}Arrow`][_startPoint].length; m++) {
8474
+ if (arrowAttrs.arrivalFrame < g_workObj[`mk${_header}Arrow`][_startPoint][m].arrivalFrame) {
8475
+ g_workObj[`mk${_header}Arrow`][_startPoint].splice(m, 0, arrowAttrs);
8476
+ insertFlg = true;
8477
+ break;
8478
+ }
8479
+ }
8480
+ if (!insertFlg) {
8481
+ g_workObj[`mk${_header}Arrow`][_startPoint].push(arrowAttrs);
8482
+ }
8483
+ }
8469
8484
  if (_frzFlg) {
8470
8485
  g_workObj[`mk${_header}Length`][_j][_k] = getFrzLength(_speedOnFrame, _data[_k], _data[_k + 1]);
8471
8486
  }
@@ -8502,7 +8517,8 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
8502
8517
  if (_frzFlg) {
8503
8518
  g_workObj[`mk${camelHeader}Length`][_j] = [];
8504
8519
  }
8505
- setNotes(_j, lastk, _data, startPoint[lastk], camelHeader, _frzFlg);
8520
+ setNotes(_j, lastk, _data, startPoint[lastk], camelHeader, _frzFlg,
8521
+ { initY: tmpObj.startY, initBoostY: g_workObj.initBoostY[frmPrev], arrivalFrame: tmpObj.arrivalFrm, motionFrame: tmpObj.motionFrm });
8506
8522
 
8507
8523
  // 矢印は1つずつ、フリーズアローは2つで1セット
8508
8524
  for (let k = lastk - setcnt; k >= 0; k -= setcnt) {
@@ -8546,7 +8562,9 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
8546
8562
  }
8547
8563
 
8548
8564
  // 出現タイミングを保存
8549
- setNotes(_j, k, _data, startPoint[k], camelHeader, _frzFlg);
8565
+ setNotes(_j, k, _data, startPoint[k], camelHeader, _frzFlg,
8566
+ { initY: tmpObj.startY, initBoostY: g_workObj.initBoostY[frmPrev], arrivalFrame: tmpObj.arrivalFrm, motionFrame: tmpObj.motionFrm }
8567
+ );
8550
8568
  }
8551
8569
  };
8552
8570
 
@@ -8994,6 +9012,11 @@ const getArrowSettings = _ => {
8994
9012
  g_keyCopyLists.simpleDef.forEach(header => updateKeyInfo(header, keyCtrlPtn));
8995
9013
  g_headerObj.tuning = g_headerObj.creatorNames[g_stateObj.scoreId];
8996
9014
 
9015
+ delete g_workObj.initY;
9016
+ delete g_workObj.initBoostY;
9017
+ delete g_workObj.arrivalFrame;
9018
+ delete g_workObj.motionFrame;
9019
+
8997
9020
  g_workObj.stepX = [];
8998
9021
  g_workObj.scrollDir = [];
8999
9022
  g_workObj.scrollDirDefault = [];
@@ -10002,27 +10025,30 @@ const mainInit = _ => {
10002
10025
 
10003
10026
  /**
10004
10027
  * 矢印生成
10005
- * @param {number} _j 矢印の位置
10028
+ * @param {number} _attrs 矢印個別の属性
10029
+ * (pos: 矢印種類, arrivalFrame: 到達フレーム数, initY: 初期表示位置,
10030
+ * initBoostY: Motion有効時の初期表示位置加算, motionFrame: アニメーション有効フレーム数)
10006
10031
  * @param {number} _arrowCnt 現在の判定矢印順
10007
10032
  * @param {string} _name 矢印名
10008
10033
  * @param {string} _color 矢印色
10009
10034
  * @param {string} _shadowColor 矢印塗りつぶし部分の色
10010
10035
  */
10011
- const makeArrow = (_j, _arrowCnt, _name, _color, _shadowColor) => {
10036
+ const makeArrow = (_attrs, _arrowCnt, _name, _color, _shadowColor) => {
10037
+ const _j = _attrs.pos;
10012
10038
  const dividePos = g_workObj.dividePos[_j];
10013
10039
  const colorPos = g_keyObj[`color${keyCtrlPtn}`][_j];
10014
10040
 
10015
10041
  const arrowName = `${_name}${_j}_${_arrowCnt}`;
10016
10042
  const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
10017
- (g_workObj.initY[g_scoreObj.frameNum] * g_workObj.boostSpd +
10018
- g_workObj.initBoostY[g_scoreObj.frameNum] * g_workObj.boostDir) * g_workObj.scrollDir[_j];
10043
+ (_attrs.initY * g_workObj.boostSpd +
10044
+ _attrs.initBoostY * g_workObj.boostDir) * g_workObj.scrollDir[_j];
10019
10045
 
10020
10046
  const stepRoot = createEmptySprite(arrowSprite[dividePos], arrowName, {
10021
10047
  x: g_workObj.stepX[_j], y: firstPosY, w: C_ARW_WIDTH, h: C_ARW_WIDTH,
10022
10048
  });
10023
10049
  g_attrObj[arrowName] = {
10024
- cnt: g_workObj.arrivalFrame[g_scoreObj.frameNum] + 1,
10025
- boostCnt: g_workObj.motionFrame[g_scoreObj.frameNum],
10050
+ cnt: _attrs.arrivalFrame + 1,
10051
+ boostCnt: _attrs.motionFrame,
10026
10052
  boostSpd: g_workObj.boostSpd, dividePos: dividePos,
10027
10053
  dir: g_workObj.scrollDir[_j], boostDir: g_workObj.boostDir,
10028
10054
  prevY: firstPosY, y: firstPosY,
@@ -10032,7 +10058,7 @@ const mainInit = _ => {
10032
10058
 
10033
10059
  if (g_workObj[`${_name}CssMotions`][_j] !== ``) {
10034
10060
  stepRoot.classList.add(g_workObj[`${_name}CssMotions`][_j]);
10035
- stepRoot.style.animationDuration = `${g_workObj.arrivalFrame[g_scoreObj.frameNum] / g_fps}s`;
10061
+ stepRoot.style.animationDuration = `${_attrs.arrivalFrame / g_fps}s`;
10036
10062
  }
10037
10063
 
10038
10064
  // 内側塗りつぶし矢印は、下記の順で作成する。
@@ -10084,28 +10110,29 @@ const mainInit = _ => {
10084
10110
 
10085
10111
  /**
10086
10112
  * フリーズアロー生成
10087
- * @param {number} _j
10113
+ * @param {number} _attrs
10088
10114
  * @param {number} _arrowCnt
10089
10115
  * @param {string} _name
10090
10116
  * @param {string} _normalColor
10091
10117
  * @param {string} _barColor
10092
10118
  * @param {string} _shadowColor
10093
10119
  */
10094
- const makeFrzArrow = (_j, _arrowCnt, _name, _normalColor, _barColor, _shadowColor) => {
10120
+ const makeFrzArrow = (_attrs, _arrowCnt, _name, _normalColor, _barColor, _shadowColor) => {
10121
+ const _j = _attrs.pos;
10095
10122
  const dividePos = g_workObj.dividePos[_j];
10096
10123
  const frzNo = `${_j}_${_arrowCnt}`;
10097
10124
  const frzName = `${_name}${frzNo}`;
10098
10125
  const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
10099
- (g_workObj.initY[g_scoreObj.frameNum] * g_workObj.boostSpd +
10100
- g_workObj.initBoostY[g_scoreObj.frameNum] * g_workObj.boostDir) * g_workObj.scrollDir[_j];
10126
+ (_attrs.initY * g_workObj.boostSpd +
10127
+ _attrs.initBoostY * g_workObj.boostDir) * g_workObj.scrollDir[_j];
10101
10128
  const firstBarLength = g_workObj[`mk${toCapitalize(_name)}Length`][_j][(_arrowCnt - 1) * 2] * g_workObj.boostSpd;
10102
10129
 
10103
10130
  const frzRoot = createEmptySprite(arrowSprite[dividePos], frzName, {
10104
10131
  x: g_workObj.stepX[_j], y: firstPosY, w: C_ARW_WIDTH, h: C_ARW_WIDTH + firstBarLength,
10105
10132
  });
10106
10133
  g_attrObj[frzName] = {
10107
- cnt: g_workObj.arrivalFrame[g_scoreObj.frameNum] + 1,
10108
- boostCnt: g_workObj.motionFrame[g_scoreObj.frameNum],
10134
+ cnt: _attrs.arrivalFrame + 1,
10135
+ boostCnt: _attrs.motionFrame,
10109
10136
  judgEndFlg: false, isMoving: true, frzBarLength: firstBarLength, keyUpFrame: 0,
10110
10137
  boostSpd: g_workObj.boostSpd, dividePos: dividePos, dir: g_workObj.scrollDir[_j], boostDir: g_workObj.boostDir,
10111
10138
  y: firstPosY, barY: C_ARW_WIDTH / 2 - firstBarLength * dividePos, btmY: firstBarLength * g_workObj.scrollDir[_j],
@@ -10115,7 +10142,7 @@ const mainInit = _ => {
10115
10142
 
10116
10143
  if (g_workObj[`${_name}CssMotions`][_j] !== ``) {
10117
10144
  frzRoot.classList.add(g_workObj[`${_name}CssMotions`][_j]);
10118
- frzRoot.style.animationDuration = `${g_workObj.arrivalFrame[g_scoreObj.frameNum] / g_fps}s`;
10145
+ frzRoot.style.animationDuration = `${_attrs.arrivalFrame / g_fps}s`;
10119
10146
  }
10120
10147
  let shadowColor = _shadowColor === `Default` ? _normalColor : _shadowColor;
10121
10148
 
@@ -10312,21 +10339,21 @@ const mainInit = _ => {
10312
10339
 
10313
10340
  // ダミー矢印生成(背面に表示するため先に処理)
10314
10341
  g_workObj.mkDummyArrow[currentFrame]?.forEach(data =>
10315
- makeArrow(data, ++dummyArrowCnts[data], `dummyArrow`, g_workObj.dummyArrowColors[data], g_workObj.dummyArrowShadowColors[data]));
10342
+ makeArrow(data, ++dummyArrowCnts[data.pos], `dummyArrow`, g_workObj.dummyArrowColors[data.pos], g_workObj.dummyArrowShadowColors[data.pos]));
10316
10343
 
10317
10344
  // 矢印生成
10318
10345
  g_workObj.mkArrow[currentFrame]?.forEach(data =>
10319
- makeArrow(data, ++arrowCnts[data], `arrow`, g_workObj.arrowColors[data], g_workObj.arrowShadowColors[data]));
10346
+ makeArrow(data, ++arrowCnts[data.pos], `arrow`, g_workObj.arrowColors[data.pos], g_workObj.arrowShadowColors[data.pos]));
10320
10347
 
10321
10348
  // ダミーフリーズアロー生成
10322
10349
  g_workObj.mkDummyFrzArrow[currentFrame]?.forEach(data =>
10323
- makeFrzArrow(data, ++dummyFrzCnts[data], `dummyFrz`, g_workObj.dummyFrzNormalColors[data],
10324
- g_workObj.dummyFrzNormalBarColors[data], g_workObj.dummyFrzNormalShadowColors[data]));
10350
+ makeFrzArrow(data, ++dummyFrzCnts[data.pos], `dummyFrz`, g_workObj.dummyFrzNormalColors[data.pos],
10351
+ g_workObj.dummyFrzNormalBarColors[data.pos], g_workObj.dummyFrzNormalShadowColors[data.pos]));
10325
10352
 
10326
10353
  // フリーズアロー生成
10327
10354
  g_workObj.mkFrzArrow[currentFrame]?.forEach(data =>
10328
- makeFrzArrow(data, ++frzCnts[data], `frz`, g_workObj.frzNormalColors[data],
10329
- g_workObj.frzNormalBarColors[data], g_workObj.frzNormalShadowColors[data]));
10355
+ makeFrzArrow(data, ++frzCnts[data.pos], `frz`, g_workObj.frzNormalColors[data.pos],
10356
+ g_workObj.frzNormalBarColors[data.pos], g_workObj.frzNormalShadowColors[data.pos]));
10330
10357
 
10331
10358
  // 矢印・フリーズアロー移動&消去
10332
10359
  for (let j = 0; j < keyNum; j++) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "37.2.1",
3
+ "version": "37.3.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {