チケット #23596

【追加機能】*.score.ini でクリア回数を保存する。

登録: 2010-11-05 09:11 最終更新: 2011-04-03 04:34

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
優先度:
2
重要度:
2
解決法:
修正済み
ファイル:
なし
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

※完全に瀬名(ikanick)が私的に欲しい機能であり、ikanickが進めようと思います。助力・意見いただけると助かります;

*.score.iniに新しくクリア回数を記録するようにして欲しい。

実装例:ClearCountパラメータを置き、曲クリア時に1を加算して返す。

実装事由:私的理由(DTXイベント用:現状では曲開始→ESCの繰り返しでプレイ回数を稼げてしまうため。)

チケットの履歴 (14 件中 3 件表示)

2010-11-05 09:11 更新者: ikanick
  • 新しいチケット "【追加機能】*.score.ini でクリア回数を保存する。" が作成されました
2010-11-08 01:24 更新者: yyagi
コメント

がんばれー!

多分、CScoreIni.cs と CStage結果.cs の修正で事足りると思います。 2分しかソースを見てないので本当に多分、ですが。

なお CDTXMania.cs に「tScoreIniへBGMAdjustとHistoryとPlayCountを更新()」 ってのがいますが、ここにはその機能を追加すべきではないと思います。

あ、もう一つのチケットの方も、多分、同じです。

2010-11-13 13:38 更新者: ikanick
コメント

支援ありがとうございます!

ソース流し読みしながらやってみたいと思います。

追加すべきではない、というのも理由がありそうなのでしっかり考えてみます。

2010-11-16 08:46 更新者: ikanick
コメント

早速テスト実装させていただきました。

yyagiさんのお言葉通り、CScoreIni.cs と CStage結果.cs のみの編集となっております。

結構怪しい修正をしたので、挙動不安定などあれば報告お願い致します。

2010-11-16 22:21 更新者: yyagi
コメント

ソース拝見しました。何点かコメントをば。

  • int nオート は、フラグとして0か1の値でしか使っていないようですので、bool bオート のほうがよろしいのでは。
  • クリア回数をインクリメントするところで、(fromさんが作られている部分の) 他のswitch-case文では、想定外の値が入力された場合に例外をthrowするというお作法にしているようです。DTXManiaのソースの中では、これに合わせた方がよろしいかと。(私個人は通常の開発においてはdefault処理を加えれば十分かと思いますが。)

throwなりdefaultなりを入れた方がよいとコメントする理由は、後でループ回数を変更するような修正が発生するかもしれないためです。うっかりループ回数だけを変更することで気づかないバグを産みがちですが、defaultで拾って何か特別な目立つ処理を入れるなりthrowしておけばすぐ気づくでしょうから。要するに、後々バグができにくいように作りましょうってことです。

で、ソースとは関係ないのですが・・・

個人的にはこの機能自体はIRであまり使って欲しくないなぁと思ってます。クリア回数(のみ)を何かの解禁条件にされてしまうと、普段時間のない私は大変悲しいです・・・。

2010-11-16 23:12 更新者: from
  • 概要が更新されました
コメント

(fromさんが作られている部分の) 他のswitch-case文では、想定外の値が入力された場合に例外をthrowするというお作法にしているようです。

throw してるのは、this[index] 形式のときだけ…… のはずです。

さすがに「配列」の引数が範囲を超えたら throw しなきゃねって感じで。

他の switch では、実は default はあまり使ってません。

ていうか、ループの値というより種別(enum : int)で case してた箇所もたくさんあったのですが、すべて Reflector によってただの整数に成り下がってますね。(汗

Reflector によって if 文が switch 文に勝手に変えられているところも多々あります。コンチクショー(汗


以上、雑談でした。

2010-11-16 23:15 更新者: from
  • 概要が更新されました
コメント

あれ? 概要文が消えちゃってる。(汗

復元します。失礼しました。

2010-11-17 07:29 更新者: ikanick
コメント

yyagiさんが指摘してくださった通りにコミットしてみました。

throwというものを知らなかったので調べつつ。例外処理に使う感じですね。

bool変数に書き直し、default処理を加え、throwを使ってみました。仕組みがよくわからないので、間違っていれば指摘お願いします。

fromさんが仰ってくれたのもありますが、勉強ということでこのように編集させていただきました。

>個人的にはこの機能自体はIRであまり使って欲しくないなぁと思ってます。クリア回数(のみ)を何かの解禁条件にされてしまうと、普段時間のない私は大変悲しいです・・・。

ご意見ありがとうございます。

ですが、この実装はしっかり使わせていただこうと思います。もちろん大変な条件にするつもりはありません。

プレイ回数しかカウントされない現状として「曲開始→ESCの繰り返し」という行為をしてほしくないのです。

DMGではかなりの回数が必要だったりするので、そこは反省しています。

2010-11-17 23:44 更新者: yyagi
コメント

修正確認しました。いいと思います。

2010-11-18 07:09 更新者: ikanick
  • チケット完了時刻2010-11-18 07:09 に更新されました
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 修正済み に更新されました
コメント

では修正済み完了とします。

yyagiさんfromさんありがとうございました!

この調子で次もイケるといいなぁ(汗

2011-01-30 03:17 更新者: yyagi
  • 詳細が更新されました
  • 状況完了 から オープン に更新されました
コメント

今更のコメントで恐縮ですが・・・

例えばベース譜面しかない曲データ(ドラム, ギター譜面が含まれない曲データ)を演奏すると、 ベースだけでなくドラム・ギターの ClearCount もインクリメントされるようです。

この場合、ベースの ClearCount だけをインクリメントすべきだと思うのですが、いかがでしょうか。 (PlayCount はそうなっています)

2011-02-05 19:05 更新者: ikanick
コメント

yyagiさんの仰るとおりでしたので、rev102にて修正しました。

また書き込みの部分でPlayCountGuitar(クリア回数も)がPlayCountGuitarsとなっていて正しく読み取ってくれない不具合を
読み込み側でGuitarsにすることによって修正しました。

手持ちの054では既にGuitarsになっているので、互換性の面で読み込み側を修正することにしました。

2011-02-20 16:41 更新者: yyagi
  • チケット完了時刻2011-02-20 16:41 に更新されました
  • 状況オープン から 完了 に更新されました
2011-04-03 04:34 更新者: yyagi
  • コンポーネント(未割り当て) から DTXMania に更新されました
  • マイルストーン既存機能の仕様変更 から 新機能の追加 に更新されました
  • チケットの種類機能リクエスト から 新規機能リクエスト に更新されました

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする