danoniplus 37.2.0 → 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.
@@ -4,7 +4,7 @@
4
4
  本体cssファイル
5
5
 
6
6
  Created : 2018/10/08
7
- Revised : 2024/05/18 (v36.4.1)
7
+ Revised : 2024/06/30 (v37.2.1)
8
8
 
9
9
  https://github.com/cwtickle/danoniplus
10
10
  ------------------------------------------ */
@@ -869,5 +869,6 @@ input[type="color"] {
869
869
  .result_Cleared,
870
870
  .result_Failed {
871
871
  background-clip: text;
872
+ -webkit-background-clip: text;
872
873
  color: rgba(255, 255, 255, 0.0);
873
874
  }
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 : 2024/06/29
7
+ * Revised : 2024/06/30
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 37.2.0`;
12
- const g_revisedDate = `2024/06/29`;
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 = ``;
@@ -1147,6 +1147,8 @@ const createColorObject2 = (_id,
1147
1147
 
1148
1148
  style.maskImage = `url("${g_imgObj[charaStyle]}")`;
1149
1149
  style.maskSize = `contain`;
1150
+ style.webkitMaskImage = `url("${g_imgObj[charaStyle]}")`;
1151
+ style.webkitMaskSize = `contain`;
1150
1152
  Object.keys(rest).forEach(property => style[property] = rest[property]);
1151
1153
  setAttrs(div, { color: rest.background ?? ``, type: charaStyle, cnt: 0, });
1152
1154
 
@@ -4163,6 +4165,7 @@ const titleInit = _ => {
4163
4165
  font-family:${g_headerObj.titlefonts[0]};
4164
4166
  background: ${titlegrds[0]};
4165
4167
  background-clip: text;
4168
+ -webkit-background-clip: text;
4166
4169
  color: rgba(255,255,255,0.0);
4167
4170
  ${txtAnimations[0]}
4168
4171
  " class="${g_headerObj.titleAnimationClass[0]}">
@@ -4175,6 +4178,7 @@ const titleInit = _ => {
4175
4178
  font-family:${g_headerObj.titlefonts[1]};
4176
4179
  background: ${titlegrds[1]};
4177
4180
  background-clip: text;
4181
+ -webkit-background-clip: text;
4178
4182
  color: rgba(255,255,255,0.0);
4179
4183
  ${txtAnimations[1]}
4180
4184
  " class="${g_headerObj.titleAnimationClass[1]}">
@@ -8459,9 +8463,24 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
8459
8463
  /** Motionの適用フレーム数 */
8460
8464
  g_workObj.motionFrame = [];
8461
8465
 
8462
- const setNotes = (_j, _k, _data, _startPoint, _header, _frzFlg = false) => {
8466
+ const setNotes = (_j, _k, _data, _startPoint, _header, _frzFlg = false, { initY, initBoostY, arrivalFrame, motionFrame } = {}) => {
8463
8467
  if (_startPoint >= 0) {
8464
- 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
+ }
8465
8484
  if (_frzFlg) {
8466
8485
  g_workObj[`mk${_header}Length`][_j][_k] = getFrzLength(_speedOnFrame, _data[_k], _data[_k + 1]);
8467
8486
  }
@@ -8498,7 +8517,8 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
8498
8517
  if (_frzFlg) {
8499
8518
  g_workObj[`mk${camelHeader}Length`][_j] = [];
8500
8519
  }
8501
- 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 });
8502
8522
 
8503
8523
  // 矢印は1つずつ、フリーズアローは2つで1セット
8504
8524
  for (let k = lastk - setcnt; k >= 0; k -= setcnt) {
@@ -8542,7 +8562,9 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
8542
8562
  }
8543
8563
 
8544
8564
  // 出現タイミングを保存
8545
- 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
+ );
8546
8568
  }
8547
8569
  };
8548
8570
 
@@ -8990,6 +9012,11 @@ const getArrowSettings = _ => {
8990
9012
  g_keyCopyLists.simpleDef.forEach(header => updateKeyInfo(header, keyCtrlPtn));
8991
9013
  g_headerObj.tuning = g_headerObj.creatorNames[g_stateObj.scoreId];
8992
9014
 
9015
+ delete g_workObj.initY;
9016
+ delete g_workObj.initBoostY;
9017
+ delete g_workObj.arrivalFrame;
9018
+ delete g_workObj.motionFrame;
9019
+
8993
9020
  g_workObj.stepX = [];
8994
9021
  g_workObj.scrollDir = [];
8995
9022
  g_workObj.scrollDirDefault = [];
@@ -9998,27 +10025,30 @@ const mainInit = _ => {
9998
10025
 
9999
10026
  /**
10000
10027
  * 矢印生成
10001
- * @param {number} _j 矢印の位置
10028
+ * @param {number} _attrs 矢印個別の属性
10029
+ * (pos: 矢印種類, arrivalFrame: 到達フレーム数, initY: 初期表示位置,
10030
+ * initBoostY: Motion有効時の初期表示位置加算, motionFrame: アニメーション有効フレーム数)
10002
10031
  * @param {number} _arrowCnt 現在の判定矢印順
10003
10032
  * @param {string} _name 矢印名
10004
10033
  * @param {string} _color 矢印色
10005
10034
  * @param {string} _shadowColor 矢印塗りつぶし部分の色
10006
10035
  */
10007
- const makeArrow = (_j, _arrowCnt, _name, _color, _shadowColor) => {
10036
+ const makeArrow = (_attrs, _arrowCnt, _name, _color, _shadowColor) => {
10037
+ const _j = _attrs.pos;
10008
10038
  const dividePos = g_workObj.dividePos[_j];
10009
10039
  const colorPos = g_keyObj[`color${keyCtrlPtn}`][_j];
10010
10040
 
10011
10041
  const arrowName = `${_name}${_j}_${_arrowCnt}`;
10012
10042
  const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
10013
- (g_workObj.initY[g_scoreObj.frameNum] * g_workObj.boostSpd +
10014
- 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];
10015
10045
 
10016
10046
  const stepRoot = createEmptySprite(arrowSprite[dividePos], arrowName, {
10017
10047
  x: g_workObj.stepX[_j], y: firstPosY, w: C_ARW_WIDTH, h: C_ARW_WIDTH,
10018
10048
  });
10019
10049
  g_attrObj[arrowName] = {
10020
- cnt: g_workObj.arrivalFrame[g_scoreObj.frameNum] + 1,
10021
- boostCnt: g_workObj.motionFrame[g_scoreObj.frameNum],
10050
+ cnt: _attrs.arrivalFrame + 1,
10051
+ boostCnt: _attrs.motionFrame,
10022
10052
  boostSpd: g_workObj.boostSpd, dividePos: dividePos,
10023
10053
  dir: g_workObj.scrollDir[_j], boostDir: g_workObj.boostDir,
10024
10054
  prevY: firstPosY, y: firstPosY,
@@ -10028,7 +10058,7 @@ const mainInit = _ => {
10028
10058
 
10029
10059
  if (g_workObj[`${_name}CssMotions`][_j] !== ``) {
10030
10060
  stepRoot.classList.add(g_workObj[`${_name}CssMotions`][_j]);
10031
- stepRoot.style.animationDuration = `${g_workObj.arrivalFrame[g_scoreObj.frameNum] / g_fps}s`;
10061
+ stepRoot.style.animationDuration = `${_attrs.arrivalFrame / g_fps}s`;
10032
10062
  }
10033
10063
 
10034
10064
  // 内側塗りつぶし矢印は、下記の順で作成する。
@@ -10080,28 +10110,29 @@ const mainInit = _ => {
10080
10110
 
10081
10111
  /**
10082
10112
  * フリーズアロー生成
10083
- * @param {number} _j
10113
+ * @param {number} _attrs
10084
10114
  * @param {number} _arrowCnt
10085
10115
  * @param {string} _name
10086
10116
  * @param {string} _normalColor
10087
10117
  * @param {string} _barColor
10088
10118
  * @param {string} _shadowColor
10089
10119
  */
10090
- const makeFrzArrow = (_j, _arrowCnt, _name, _normalColor, _barColor, _shadowColor) => {
10120
+ const makeFrzArrow = (_attrs, _arrowCnt, _name, _normalColor, _barColor, _shadowColor) => {
10121
+ const _j = _attrs.pos;
10091
10122
  const dividePos = g_workObj.dividePos[_j];
10092
10123
  const frzNo = `${_j}_${_arrowCnt}`;
10093
10124
  const frzName = `${_name}${frzNo}`;
10094
10125
  const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
10095
- (g_workObj.initY[g_scoreObj.frameNum] * g_workObj.boostSpd +
10096
- 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];
10097
10128
  const firstBarLength = g_workObj[`mk${toCapitalize(_name)}Length`][_j][(_arrowCnt - 1) * 2] * g_workObj.boostSpd;
10098
10129
 
10099
10130
  const frzRoot = createEmptySprite(arrowSprite[dividePos], frzName, {
10100
10131
  x: g_workObj.stepX[_j], y: firstPosY, w: C_ARW_WIDTH, h: C_ARW_WIDTH + firstBarLength,
10101
10132
  });
10102
10133
  g_attrObj[frzName] = {
10103
- cnt: g_workObj.arrivalFrame[g_scoreObj.frameNum] + 1,
10104
- boostCnt: g_workObj.motionFrame[g_scoreObj.frameNum],
10134
+ cnt: _attrs.arrivalFrame + 1,
10135
+ boostCnt: _attrs.motionFrame,
10105
10136
  judgEndFlg: false, isMoving: true, frzBarLength: firstBarLength, keyUpFrame: 0,
10106
10137
  boostSpd: g_workObj.boostSpd, dividePos: dividePos, dir: g_workObj.scrollDir[_j], boostDir: g_workObj.boostDir,
10107
10138
  y: firstPosY, barY: C_ARW_WIDTH / 2 - firstBarLength * dividePos, btmY: firstBarLength * g_workObj.scrollDir[_j],
@@ -10111,7 +10142,7 @@ const mainInit = _ => {
10111
10142
 
10112
10143
  if (g_workObj[`${_name}CssMotions`][_j] !== ``) {
10113
10144
  frzRoot.classList.add(g_workObj[`${_name}CssMotions`][_j]);
10114
- frzRoot.style.animationDuration = `${g_workObj.arrivalFrame[g_scoreObj.frameNum] / g_fps}s`;
10145
+ frzRoot.style.animationDuration = `${_attrs.arrivalFrame / g_fps}s`;
10115
10146
  }
10116
10147
  let shadowColor = _shadowColor === `Default` ? _normalColor : _shadowColor;
10117
10148
 
@@ -10308,21 +10339,21 @@ const mainInit = _ => {
10308
10339
 
10309
10340
  // ダミー矢印生成(背面に表示するため先に処理)
10310
10341
  g_workObj.mkDummyArrow[currentFrame]?.forEach(data =>
10311
- 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]));
10312
10343
 
10313
10344
  // 矢印生成
10314
10345
  g_workObj.mkArrow[currentFrame]?.forEach(data =>
10315
- 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]));
10316
10347
 
10317
10348
  // ダミーフリーズアロー生成
10318
10349
  g_workObj.mkDummyFrzArrow[currentFrame]?.forEach(data =>
10319
- makeFrzArrow(data, ++dummyFrzCnts[data], `dummyFrz`, g_workObj.dummyFrzNormalColors[data],
10320
- 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]));
10321
10352
 
10322
10353
  // フリーズアロー生成
10323
10354
  g_workObj.mkFrzArrow[currentFrame]?.forEach(data =>
10324
- makeFrzArrow(data, ++frzCnts[data], `frz`, g_workObj.frzNormalColors[data],
10325
- 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]));
10326
10357
 
10327
10358
  // 矢印・フリーズアロー移動&消去
10328
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.0",
3
+ "version": "37.3.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {