Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[0389/multi-custom-gauge2] customGaugeの複数譜面対応、デフォルト値対応(事前設定版) 他 #1024

Merged
merged 15 commits into from Mar 17, 2021

Conversation

cwtickle
Copy link
Owner

@cwtickle cwtickle commented Mar 14, 2021

補足

🔨 変更内容 / Details of Changes

  1. customGaugeの複数譜面化に対応しました。
|customGauge=Normal::V,Hard::V|
|customGauge2=Easy::V,Normal::V,SuddenDeath::F|
|customGauge3=Original::F,Normal::V,Hard::V|
  1. danoni_setting.jsにカスタムゲージ(g_presetGaugeList)が設定されていれば、
    値にDefaultを指定することでg_presetGaugeListを参照するよう変更しました。
|customGauge=Normal::V,Hard::V|
|customGauge2=Default|                       // 1譜面目では無く、g_presetGaugeListを継承
|customGauge3=Original::F,Normal::V,Hard::V| // 3譜面目は独自
// 以降を未指定にした場合(この場合は4譜面目以降)は1譜面目の設定を継承
  1. listMatching関数に適用するオブジェクトをg_checkStrに集約しました。
    (従来のg_cssCheckStrは廃止)
  2. getGaugeSetting関数の第三引数を_headerObjから_difLengthに変更しました。
  3. gaugeXXXについて、gaugeXXX2, gaugeXXX3 のような分割記法に対応しました。
    $区切りと混在した場合は、分割記法側が優先されます。
    分割記法を使用する場合、gaugeXXXの指定は省略不可です。
|gaugeHard=x,2,20,100$x,1,20,100$x,1,50,100| // 従来の記法
|gaugeHard=x,2,20,100| // 一律設定

|gaugeHard=x,2,20,100| // 分割記法
|gaugeHard2=x,1,20,100| // 分割記法 ※ $区切りは使えません
|gaugeHard3=x,1,50,100| // 分割記法 ※ $区切りは使えません
|gaugeHard5=x,1,50,100| // 分割記法 ※ $区切りは使えません(gaugeHard4を指定しないことは可能です)
  1. 譜面分割&譜面番号可変時、初期矢印・フリーズアロー色(setColor2, frzColor2, ...)を
    譜面番号固定時と同様、個別の譜面ファイルへ記載できるようになりました。

🔖 関連Issue, 変更理由 / Related Issues, Reason for Changes

  1. customGauge設定は一度設定すると固定されてしまうため。
  2. 譜面ヘッダーと共通設定ファイルとの棲み分けの利便性向上のため。
  3. CSS以外の用途でチェックにかけるケースがあるため。
    今回の変更に関連してCodeClimateより指摘があった件の対応です。
  4. 結果的に譜面数情報しか必要ないのにもかかわらず、大きなオブジェクトを渡す仕組みになっていたため。
  5. 譜面数が多い場合、どの譜面の設定かがわかりにくくなるため。
  6. 仕様を他と揃えるため。

📷 スクリーンショット / Screenshot

📝 その他コメント / Other Comments

  • カスタムを設定している場合、従来のノルマ・ライフ制のゲージ設定は使えません。

@cwtickle
Copy link
Owner Author

cwtickle commented Mar 15, 2021

今後のために記録を残しておきます。
https://twitter.com/suzume_danoni/status/1371068746895298562

変更の背景

g_gaugeOptionObj.gaugeNormals.lifeRecoverysを直接変更しているケースがあるため、
これを再定義するgetGaugeSetting関数は、customTitleInit関数(titleInit関数)が
定義される以前に置く必要があります。

今回変更対象の譜面ヘッダーcustomGaugeはあくまでゲージ設定(Gauge)の表示リストなので、
g_gaugeOptionObj.gaugeNormalsといった(ゲージ回復量などを定義する)gaugeXXXを変更する必要は
本来ありません。

|customGauge=Easy::V,Normal::V,Escape::V,SuddenDeath::F|  // リストだけ(ここは基本ヘッダで制御)
|gaugeEasy=70,3,7,40|   // ゲージノルマ、回復量、ダメージ量、初期値を定義(ここは上書きされる可能性あり)
|gaugeNormal=70,1,7,40|
|gaugeEscape=x,1,50,100|

ただ、対象のgaugeXXXを読み込むためにはXXXに何が必要かを明示する必要がありました。

仕組みの概要

対象のgaugeXXXを読み込むためのリストとしてg_gaugeOptionObj.customFullsを作成しました。

g_gaugeOptionObj.customFulls = { Original: false, Heavy: false, Easy: false, Normal: false, Escape: false, … };

対象を追加する関数はaddGaugeFullsで行っています。
二重定義された場合はプロパティ名を上書きするので、最終的に必要なゲージ名のリストが取得できます。

addGaugeFulls(g_gaugeOptionObj.survival); // Original, Heavy, NoRecovery, ...
addGaugeFulls(g_gaugeOptionObj.border); // Normal, Hard, ...
addGaugeFulls(g_gaugeOptionObj.customDefault); // Easy, Hard, Escape, ...

function addGaugeFulls(_obj) {
	_obj.map(key => g_gaugeOptionObj.customFulls[key] = false); 
}

このリストに載っているゲージ設定名に対して、
譜面ヘッダーのgaugeOriginalやgaugeNormal等を参照する仕組みです。

例外:譜面番号固定&譜面ファイルを分割している場合

例外として、譜面番号が固定&譜面ファイルを分割している場合は
譜面ヘッダーcustomGaugeが譜面ファイルにより異なる可能性があります。
これを解決するため、loadDos関数の_cyclicFlg有効時に限りgetGaugeSetting関数を呼び出しています。

この_cyclicFlgは初回、譜面の速度グラフやツール値を計算するために
まとめてデータを取るときに使用するもので、現状はtitleInitより前に実行されます。

@cwtickle cwtickle changed the title [0389/multi-custom-gauge2] customGaugeの複数譜面対応、デフォルト値対応(事前設定版) [0389/multi-custom-gauge2] customGaugeの複数譜面対応、デフォルト値対応(事前設定版) 他 Mar 15, 2021
js/danoni_main.js Outdated Show resolved Hide resolved
js/danoni_main.js Outdated Show resolved Hide resolved
@codeclimate
Copy link

codeclimate bot commented Mar 17, 2021

Code Climate has analyzed commit 4364bd1 and detected 0 issues on this pull request.

View more on Code Climate.

@cwtickle cwtickle marked this pull request as ready for review March 17, 2021 14:12
@cwtickle cwtickle merged commit 49b8f56 into develop Mar 17, 2021
@cwtickle cwtickle deleted the feature/0389-multi-custom-gauge2 branch March 20, 2021 08:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant