Ticket #23596

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

Date d'ouverture: 2010-11-05 09:11 Dernière mise à jour: 2011-04-03 04:34

Rapporteur:
Propriétaire:
État:
Atteints
Composant:
Priorité:
2
Sévérité:
2
Résolution:
Fixed
Fichier:
Aucun
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Détails

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

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

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

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

Ticket History (3/14 Histories)

2010-11-05 09:11 Updated by: ikanick
  • New Ticket "【追加機能】*.score.ini でクリア回数を保存する。" created
2010-11-08 01:24 Updated by: yyagi
Commentaire

がんばれー!

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

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

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

2010-11-13 13:38 Updated by: ikanick
Commentaire

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

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

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

2010-11-16 08:46 Updated by: ikanick
Commentaire

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

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

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

2010-11-16 22:21 Updated by: yyagi
Commentaire

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

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

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

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

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

2010-11-16 23:12 Updated by: from
  • Summary Updated
Commentaire

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

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

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

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

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

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


以上、雑談でした。

2010-11-16 23:15 Updated by: from
  • Summary Updated
Commentaire

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

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

2010-11-17 07:29 Updated by: ikanick
Commentaire

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

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

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

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

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

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

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

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

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

2010-11-17 23:44 Updated by: yyagi
Commentaire

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

2010-11-18 07:09 Updated by: ikanick
  • Ticket Close date is changed to 2010-11-18 07:09
  • État Update from Ouvert to Atteints
  • Résolution Update from Aucun to Fixed
Commentaire

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

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

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

2011-01-30 03:17 Updated by: yyagi
  • Details Updated
  • État Update from Atteints to Ouvert
Commentaire

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

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

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

2011-02-05 19:05 Updated by: ikanick
Commentaire

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

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

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

2011-02-20 16:41 Updated by: yyagi
  • État Update from Ouvert to Atteints
  • Ticket Close date is changed to 2011-02-20 16:41
2011-04-03 04:34 Updated by: yyagi

Attachment File List

No attachments

Modifier

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Connexion