/// <summary> /// ロックを取得<br /> /// <br /> /// ttl で指定した秒数 `プロパティID` のリソースをロックします。<br /> /// ロックする際には `トランザクションID` を指定する必要があります。<br /> /// 異なる `トランザクションID` による同一 `プロパティID` に対するロック取得は失敗します。<br /> /// 同一トランザクションからのロック取得リクエストの場合は参照カウントを増やします。<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="callback">コールバックハンドラ</param> /// <param name="session">ゲームセッション</param> /// <param name="namespaceName">カテゴリー名</param> /// <param name="propertyId">プロパティID</param> /// <param name="transactionId">ロックを取得するトランザクションID</param> /// <param name="ttl">ロックを取得する期限(秒)</param> public IEnumerator Lock( UnityAction <AsyncResult <EzLockResult> > callback, GameSession session, string namespaceName, string propertyId, string transactionId, long ttl ) { yield return(_profile.Run( callback, session, cb => _client.Lock( new LockRequest() .WithNamespaceName(namespaceName) .WithPropertyId(propertyId) .WithTransactionId(transactionId) .WithTtl(ttl) .WithAccessToken(session.AccessToken.token), r => cb.Invoke( new AsyncResult <EzLockResult>( r.Result == null ? null : new EzLockResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// ボックスの排出済みアイテム情報一覧を取得<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="callback">コールバックハンドラ</param> /// <param name="session">ゲームセッション</param> /// <param name="namespaceName">ネームスペース名</param> /// <param name="pageToken">データの取得を開始する位置を指定するトークン</param> /// <param name="limit">データの取得件数</param> public IEnumerator DescribeBoxes( UnityAction <AsyncResult <EzDescribeBoxesResult> > callback, GameSession session, string namespaceName, string pageToken = null, long?limit = null ) { yield return(_profile.Run( callback, session, cb => _restClient.DescribeBoxes( new DescribeBoxesRequest() .WithNamespaceName(namespaceName) .WithPageToken(pageToken) .WithLimit(limit) .WithAccessToken(session.AccessToken.token), r => cb.Invoke( new AsyncResult <EzDescribeBoxesResult>( r.Result == null ? null : new EzDescribeBoxesResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// クエストの開始を宣言<br /> /// <br /> /// すでに同一ゲームプレイヤーで開始済みのクエストがある場合は失敗します。<br /> /// それでも強制的に開始したい場合は `force` オプションに true を指定してください。<br /> /// <br /> /// クエストの開始が完了すると、そのクエストで得られる最大報酬に関する情報が応答されます。<br /> /// その内容をクエスト内の演出で排出してください。<br /> /// その際に、応答に含まれる乱数シードを使用してゲームプレイに再現性があるように設計しておくと、アプリで乱数起因の不具合が発生したときに調査しやすくなります。<br /> /// <br /> /// 進行中のクエストを一意に特定するためのIDとして `クエストトランザクションID` が応答されます。<br /> /// クエストの完了を報告する際には `クエストトランザクションID` を指定することで、どのクエストに対する完了報告かを識別します。<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="callback">コールバックハンドラ</param> /// <param name="session">ゲームセッション</param> /// <param name="namespaceName">カテゴリ名</param> /// <param name="questGroupName">クエストグループ名</param> /// <param name="questName">クエストモデル名</param> /// <param name="force">すでに開始しているクエストがある場合にそれを破棄して開始するか</param> /// <param name="config">スタンプシートの変数に適用する設定値</param> public IEnumerator Start( UnityAction <AsyncResult <EzStartResult> > callback, GameSession session, string namespaceName, string questGroupName, string questName, bool?force = null, List <EzConfig> config = null ) { yield return(_profile.Run( callback, session, cb => _restClient.Start( new StartRequest() .WithNamespaceName(namespaceName) .WithQuestGroupName(questGroupName) .WithQuestName(questName) .WithForce(force) .WithConfig(config != null ? config.Select(item => item?.ToModel()).ToList() : new List <Config>(new Config[] {})) .WithAccessToken(session.AccessToken.token), r => cb.Invoke( new AsyncResult <EzStartResult>( r.Result == null ? null : new EzStartResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// ルームの作成<br /> /// <br /> /// ネームスペースの設定でゲームプレイヤーによるルーム作成が許可されていない場合、失敗します。<br /> /// ルームにパスワードを設定すると発言する際にパスワードが一致しなければ発言できません。<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="callback">コールバックハンドラ</param> /// <param name="session">ゲームセッション</param> /// <param name="namespaceName">ネームスペース名</param> /// <param name="name">ルーム名</param> /// <param name="metadata">メタデータ</param> /// <param name="password">メッセージを投稿するために必要となるパスワード</param> /// <param name="whiteListUserIds">ルームに参加可能なユーザIDリスト</param> public IEnumerator CreateRoom( UnityAction <AsyncResult <EzCreateRoomResult> > callback, GameSession session, string namespaceName, string name = null, string metadata = null, string password = null, List <string> whiteListUserIds = null ) { yield return(_profile.Run( callback, session, cb => _client.CreateRoom( new CreateRoomRequest() .WithNamespaceName(namespaceName) .WithName(name) .WithMetadata(metadata) .WithPassword(password) .WithWhiteListUserIds(whiteListUserIds) .WithAccessToken(session.AccessToken.token), r => cb.Invoke( new AsyncResult <EzCreateRoomResult>( r.Result == null ? null : new EzCreateRoomResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// 指定したユーザIDでGS2にログイン<br /> /// <br /> /// body と signature には GS2-Account::Authentication の結果を指定します。<br /> /// body と signature の検証に成功すると、 `アクセストークン` を応答します。<br /> /// `アクセストークン` は有効期限が1時間の一時的な認証情報で、GS2内の各サービスでゲームプレイヤーを識別するために使用されます。<br /> /// なおUnityとCocos2d-x向けにGS2-Account::AuthenticationとこのAPIをひとまとめにしたGS2-Profile::Loginを用意しています。<br /> /// GS2-Profile::Loginははじめかた⇒サンプルプログラムで解説しています。<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="userId">ユーザーID</param> /// <param name="keyId">署名の作成に使用した暗号鍵 のGRN</param> /// <param name="body">アカウント認証情報の署名対象</param> /// <param name="signature">署名</param> public IEnumerator Login( UnityAction <AsyncResult <EzLoginResult> > callback, string userId, string keyId, string body, string signature ) { yield return(_profile.Run( callback, null, cb => _client.LoginBySignature( new LoginBySignatureRequest() .WithUserId(userId) .WithKeyId(keyId) .WithBody(body) .WithSignature(signature), r => cb.Invoke( new AsyncResult <EzLoginResult>( r.Result == null ? null : new EzLoginResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// インベントリモデルの一覧を取得<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="namespaceName">ネームスペース名</param> public IEnumerator ListInventoryModels( UnityAction <AsyncResult <EzListInventoryModelsResult> > callback, string namespaceName ) { yield return(_profile.Run( callback, null, cb => _restClient.DescribeInventoryModels( new DescribeInventoryModelsRequest() .WithNamespaceName(namespaceName), r => cb.Invoke( new AsyncResult <EzListInventoryModelsResult>( r.Result == null ? null : new EzListInventoryModelsResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// 引かれているトリガーの一覧を取得<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="callback">コールバックハンドラ</param> /// <param name="session">ゲームセッション</param> /// <param name="namespaceName">ネームスペース名</param> public IEnumerator ListTriggers( UnityAction <AsyncResult <EzListTriggersResult> > callback, GameSession session, string namespaceName ) { yield return(_profile.Run( callback, session, cb => _restClient.DescribeTriggers( new DescribeTriggersRequest() .WithNamespaceName(namespaceName) .WithAccessToken(session.AccessToken.token), r => cb.Invoke( new AsyncResult <EzListTriggersResult>( r.Result == null ? null : new EzListTriggersResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// 商品棚を取得します<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="callback">コールバックハンドラ</param> /// <param name="session">ゲームセッション</param> /// <param name="namespaceName">ネームスペース名</param> /// <param name="showcaseName">商品名</param> public IEnumerator GetShowcase( UnityAction <AsyncResult <EzGetShowcaseResult> > callback, GameSession session, string namespaceName, string showcaseName ) { yield return(_profile.Run( callback, session, cb => _client.GetShowcase( new GetShowcaseRequest() .WithNamespaceName(namespaceName) .WithShowcaseName(showcaseName) .WithAccessToken(session.AccessToken.token), r => cb.Invoke( new AsyncResult <EzGetShowcaseResult>( r.Result == null ? null : new EzGetShowcaseResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// ゲームプレイヤーを識別するアカウントを新規作成<br /> /// <br /> /// このAPIの実行に成功すると、作成したアカウントの情報が返ります。<br /> /// 返ったアカウント情報のうち、認証処理に使用するユーザIDとパスワードを永続化してください。<br /> /// <br /> /// ここで発行されるパスワードはランダム値であり、ゲームプレイヤーの任意の値を指定することはできません。<br /> /// `引き継ぎ設定` としてゲームプレイヤーにとってわかりやすい識別子を登録することができます。<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="namespaceName">ネームスペース名</param> public IEnumerator Create( UnityAction <AsyncResult <EzCreateResult> > callback, string namespaceName ) { yield return(_profile.Run( callback, null, cb => _client.CreateAccount( new CreateAccountRequest() .WithNamespaceName(namespaceName), r => cb.Invoke( new AsyncResult <EzCreateResult>( r.Result == null ? null : new EzCreateResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// ルームの情報を取得<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="namespaceName">ネームスペース名</param> /// <param name="roomName">ルーム名</param> public IEnumerator GetRoom( UnityAction <AsyncResult <EzGetRoomResult> > callback, string namespaceName, string roomName ) { yield return(_profile.Run( callback, null, cb => _client.GetRoom( new GetRoomRequest() .WithNamespaceName(namespaceName) .WithRoomName(roomName), r => cb.Invoke( new AsyncResult <EzGetRoomResult>( r.Result == null ? null : new EzGetRoomResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// サーバからプッシュ通知を受けるためのユーザーIDを設定<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="callback">コールバックハンドラ</param> /// <param name="session">ゲームセッション</param> /// <param name="namespaceName">ネームスペース名</param> /// <param name="allowConcurrentAccess">同時に異なるクライアントからの接続を許容するか</param> public IEnumerator SetUserId( UnityAction <AsyncResult <EzSetUserIdResult> > callback, GameSession session, string namespaceName, bool allowConcurrentAccess ) { yield return(_profile.Run( callback, session, cb => _client.SetUserId( new SetUserIdRequest() .WithNamespaceName(namespaceName) .WithAllowConcurrentAccess(allowConcurrentAccess) .WithAccessToken(session.AccessToken.token), r => cb.Invoke( new AsyncResult <EzSetUserIdResult>( r.Result == null ? null : new EzSetUserIdResult(r.Result), r.Error ) ) ) )); }
/// <summary> /// ギャザリングを新規作成<br /> /// <br /> /// Player に指定する自身のプレイヤー情報のユーザIDは省略できます。<br /> /// expiresAtを指定することでギャザリングの有効期限を設定することができます。<br /> /// 有効期限を用いない場合、古いギャザリングが残り続けマッチングが成立したときには、<br /> /// ユーザーがゲームから離脱している可能性があります。<br /> /// 有効期限を用いる場合は、有効期限が来るたびにユーザーにギャザリングの再作成を促す仕組みにしてください。<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="callback">コールバックハンドラ</param> /// <param name="session">ゲームセッション</param> /// <param name="namespaceName">ネームスペース名</param> /// <param name="player">自身のプレイヤー情報</param> /// <param name="attributeRanges">募集条件</param> /// <param name="capacityOfRoles">参加者</param> /// <param name="allowUserIds">参加を許可するユーザIDリスト</param> /// <param name="expiresAt">ギャザリングの有効期限</param> public IEnumerator CreateGathering( UnityAction <AsyncResult <EzCreateGatheringResult> > callback, GameSession session, string namespaceName, EzPlayer player, List <EzCapacityOfRole> capacityOfRoles, List <string> allowUserIds, List <EzAttributeRange> attributeRanges = null, long?expiresAt = null ) { yield return(_profile.Run( callback, session, cb => _client.CreateGathering( new CreateGatheringRequest() .WithNamespaceName(namespaceName) .WithPlayer(player.ToModel()) .WithAttributeRanges(attributeRanges != null ? attributeRanges.Select(item => item?.ToModel()).ToList() : new List <AttributeRange>(new AttributeRange[] {})) .WithCapacityOfRoles(capacityOfRoles != null ? capacityOfRoles.Select(item => item?.ToModel()).ToList() : new List <CapacityOfRole>(new CapacityOfRole[] {})) .WithAllowUserIds(allowUserIds) .WithExpiresAt(expiresAt) .WithAccessToken(session.AccessToken.token), r => cb.Invoke( new AsyncResult <EzCreateGatheringResult>( r.Result == null ? null : new EzCreateGatheringResult(r.Result), r.Error ) ) ) )); }