見出し画像

ダンスゲーを作りたい#48 【内部処理】ギフト配信、受信、使用

さて、前回のガチャに続き、データをちゃんとするシリーズ第二回の今回はギフトデータを受け取る一連の流れをやっていきます。

前回はほんとにデータだけだったんでよかったですが、今回はデータ+処理の分岐によるデータ指定がある程度必要です。

画像1

受信

ギフトはある程度配信方式に違いがあるため、配信モードを置いておいて処理で分岐させる部分を設けます。現状の分岐は以下の通り

・デイリーギフト:次回受け取り可能期日が翌日更新時刻
・イベントギフト:次回受け取り可能期日が配信の終了日
・クエストギフト:配信受け取りはなし。クエストのクリア処理でのみ追加。

なお、クエスト等の初回クリア受け取りギフトは、クエスト処理時にギフトを配信し、ギフトマスタにデータ登録するが、定期受け取りはしないという構成にする予定です。

以上より、ギフトの受け取り処理は

・まず配信してるギフトを取得
・所持ギフトの次回受け取り可能日と現在を比較し受け取れるギフトをピックアップ
・同時に使用済みかつ次回受け取り可能日を過ぎているデータは削除
・配信モードに応じて次回受け取り可能日を設定してユーザに対し保存

の流れで保存し、保存されたデータは一覧画面で参照できるという構成になります。

基本的にこの条件をクリアすれば同じIDのデータでも無限に保存できます。

使用

使用した場合削除する仕様にしていましたが、これでは次いつから受け取れるかの情報が消えるため、その期日を過ぎるまでは消せません。

よって、使用した場合は使用フラグを立てておき、フラグが立っているものは非表示にしておいて、次回受け取り期日を過ぎていてかつ使用済みのデータは削除していく処理を更新のタイミングで行う形に変更します。

なので、使用処理はフラグを立てて、IDから内容を取得し反映するのみですが、ここで問題になってくるのがIDが一意じゃねぇ問題が発生します。今回は同一IDも複数持てる形なので、どのギフトかはギフトIDだけで判別不可です。

そこでどのギフトか判別するために受け取りごとにユニークIDを振らないといけません。めんどくせぇ。

内容の反映は、どのオブジェクトに何を追加するという形式で行い、オブジェクトがIDを保有するものだった場合反映内容を増加数分追加、数値で保存されるものだった場合その数値に増加数を追加という形で反映します。

ID保有のイメージはアイテムとか、コインなんかは数値だと思っていただくと、わかりやすいかと思いますが、厳密にはすべていつ追加されたとかそういう情報を紐づけたIDをもつ形式にした方がいいかもしれませんが、現実的にデータ量がアホになるのでそんなめんどくさいことはしません。あくまで家で僕が楽しくローコストで遊ぶのがメイン目的だからです。商用をメインに考えるなら圧倒的に全部IDでしょうけど。

反映内容は基本1オブジェクトに対してのみ行い、経験値とレベルのような連携して他のカラムの値も変化するようなオブジェクトに対するギフトは仕様上NGとします。

挙動は以下の感じ。

画像2

意味不明にガチャ画面開いてるのはヘッダー表示の更新メゾットへの接続が存在しないため、Phaseを変えて画面そのものを更新させるためです。

デイリーギフトが石10個という想定なので、右上の膨大過ぎて数字ちっちゃいし見切れてる数字の下二けたが29から39になりました。

ギフトの受け取り処理後にガチャ画面が開けてるので、データチェックを通過して正常に更新できていますね。ばっちりです。

ヘッダの更新処理は、今回特段触っていませんが、これは後程ヘッダ単位ではなく所持している石の数等、表示中に更新される可能性のある要素として更新処理を持つテンプレートを作ることにします。

今回はとりあえず以上です。

この記事が気に入ったらサポートをしてみませんか?