【追加機能】*.score.ini でクリア回数を保存する。
がんばれー!
多分、CScoreIni.cs と CStage結果.cs の修正で事足りると思います。 2分しかソースを見てないので本当に多分、ですが。
なお CDTXMania.cs に「tScoreIniへBGMAdjustとHistoryとPlayCountを更新()」 ってのがいますが、ここにはその機能を追加すべきではないと思います。
あ、もう一つのチケットの方も、多分、同じです。
支援ありがとうございます!
ソース流し読みしながらやってみたいと思います。
追加すべきではない、というのも理由がありそうなのでしっかり考えてみます。
早速テスト実装させていただきました。
yyagiさんのお言葉通り、CScoreIni.cs と CStage結果.cs のみの編集となっております。
結構怪しい修正をしたので、挙動不安定などあれば報告お願い致します。
ソース拝見しました。何点かコメントをば。
throwなりdefaultなりを入れた方がよいとコメントする理由は、後でループ回数を変更するような修正が発生するかもしれないためです。うっかりループ回数だけを変更することで気づかないバグを産みがちですが、defaultで拾って何か特別な目立つ処理を入れるなりthrowしておけばすぐ気づくでしょうから。要するに、後々バグができにくいように作りましょうってことです。
で、ソースとは関係ないのですが・・・
個人的にはこの機能自体はIRであまり使って欲しくないなぁと思ってます。クリア回数(のみ)を何かの解禁条件にされてしまうと、普段時間のない私は大変悲しいです・・・。
(fromさんが作られている部分の) 他のswitch-case文では、想定外の値が入力された場合に例外をthrowするというお作法にしているようです。
throw してるのは、this[index] 形式のときだけ…… のはずです。
さすがに「配列」の引数が範囲を超えたら throw しなきゃねって感じで。
他の switch では、実は default はあまり使ってません。
ていうか、ループの値というより種別(enum : int)で case してた箇所もたくさんあったのですが、すべて Reflector によってただの整数に成り下がってますね。(汗
Reflector によって if 文が switch 文に勝手に変えられているところも多々あります。コンチクショー(汗
以上、雑談でした。
yyagiさんが指摘してくださった通りにコミットしてみました。
throwというものを知らなかったので調べつつ。例外処理に使う感じですね。
bool変数に書き直し、default処理を加え、throwを使ってみました。仕組みがよくわからないので、間違っていれば指摘お願いします。
fromさんが仰ってくれたのもありますが、勉強ということでこのように編集させていただきました。
>個人的にはこの機能自体はIRであまり使って欲しくないなぁと思ってます。クリア回数(のみ)を何かの解禁条件にされてしまうと、普段時間のない私は大変悲しいです・・・。
ご意見ありがとうございます。
ですが、この実装はしっかり使わせていただこうと思います。もちろん大変な条件にするつもりはありません。
プレイ回数しかカウントされない現状として「曲開始→ESCの繰り返し」という行為をしてほしくないのです。
DMGではかなりの回数が必要だったりするので、そこは反省しています。
修正確認しました。いいと思います。
では修正済み完了とします。
yyagiさんfromさんありがとうございました!
この調子で次もイケるといいなぁ(汗
今更のコメントで恐縮ですが・・・
例えばベース譜面しかない曲データ(ドラム, ギター譜面が含まれない曲データ)を演奏すると、 ベースだけでなくドラム・ギターの ClearCount もインクリメントされるようです。
この場合、ベースの ClearCount だけをインクリメントすべきだと思うのですが、いかがでしょうか。 (PlayCount はそうなっています)
yyagiさんの仰るとおりでしたので、rev102にて修正しました。
また書き込みの部分でPlayCountGuitar(クリア回数も)がPlayCountGuitarsとなっていて正しく読み取ってくれない不具合を
読み込み側でGuitarsにすることによって修正しました。
手持ちの054では既にGuitarsになっているので、互換性の面で読み込み側を修正することにしました。
※完全に瀬名(ikanick)が私的に欲しい機能であり、ikanickが進めようと思います。助力・意見いただけると助かります;
*.score.iniに新しくクリア回数を記録するようにして欲しい。
実装例:ClearCountパラメータを置き、曲クリア時に1を加算して返す。
実装事由:私的理由(DTXイベント用:現状では曲開始→ESCの繰り返しでプレイ回数を稼げてしまうため。)