見出し画像

【完全保存版】Magic Block 入門3 JOINモジュールについて

この記事では、ゲームへの参加を管理する、「JOIN」モジュールについて解説します。

1 JOINモジュールの構成について

構成としては、「execute」関数が存在しています。

2 Contextについて

Contextについては、「Generate」モジュールの時と同じく、Gameコンポーネントを使用します。

3 引数について

引数としては、プレイヤーインデックス参加しているか否かを渡します。

ちなみに、プレイヤーのインデックスについては参加人数が2人なので、0か1になります。


4 execute関数について

では、execute関数について見ていきましょう。

4ー1 アカウント情報の代入

まずは、「Generate」モジュールの時と同様、アカウントを可変参照して渡しています。

4ー2 ステータスの確認

次は、ステータスを確認しています。

「Lobby」でない場合はエラーにしています。

4ー3 公開鍵の設定

次に、アカウントの権限者の公開鍵を「payer」に設定しています。

次に、「game」構造体の「players」の指定されたインデックスを可変参照で「player」に渡しています。

「usize::from」を使用しているのは、Rustでは配列のインデックスには「usize」型が使われるためです。

4ー4 参加時の処理

次は参加時の処理についてです。

具体的には、こちらが押された時を想定しています。

すでに参加済みの場合はその旨を伝えてエラーとしています。

そうでない場合は、権限者を設定し、準備状態について、「true」に設定します。

4ー5 退出時の処理

次は、退出時の処理についてです。

このボタンが押された時のイメージです。

権限者がpayerではない場合はエラーとなります。

勝手に別の人に抜けさせられないようにですね。

問題ない場合は、authorityをデフォルトに設定し、準備状態は「false」にしています。

以上です。









サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊