/// <summary> /// /// </summary> /// <param name="client"></param> /// <param name="session"></param> /// <param name="unitInventoryWatcher"></param> /// <param name="config"></param> public IEnumerator Run( Gs2.Unity.Client client, GameSession session, InventoryWatcher unitInventoryWatcher, Dictionary <string, string> config ) { _client = client; _session = session; _unitInventoryWatcher = unitInventoryWatcher; _config = config; partyListWidget.Initialize( _unitInventoryWatcher, _formationWatcher ); partyListWidget.onChoiceParty.AddListener(OnChoiceParty); yield return(_formationWatcher.Run( client, session, _partySetting.formationNamespaceName, _partySetting.formModelName, _partySetting.onGetMoldModelModel, _partySetting.onGetForm, _partySetting.onUpdateForm, _partySetting.onError )); }
/// <summary> /// /// </summary> /// <param name="client"></param> /// <param name="session"></param> /// <param name="config"></param> public IEnumerator Run( Gs2.Unity.Client client, GameSession session, Dictionary <string, string> config ) { _client = client; _session = session; _config = config; void OnGetInventoryModel( string inventoryName, EzInventoryModel inventoryModel, List <EzItemModel> itemModels ) { _inventoryModel = inventoryModel; _itemModels = itemModels; } _unitSetting.onGetInventoryModel.AddListener(OnGetInventoryModel); yield return(InventoryController.GetInventoryModel( client, _unitSetting.inventoryNamespaceName, _unitSetting.inventoryModelName, _unitSetting.onGetInventoryModel, _unitSetting.onError )); _unitSetting.onGetInventoryModel.RemoveListener(OnGetInventoryModel); unitWidget.Initialize( _inventoryWatcher ); if (debugUnitControlWidget != null) { debugUnitControlWidget.Initialize( _itemModels ); debugUnitControlWidget.onClickAcquireButton.AddListener(OnAcquireItem); debugUnitControlWidget.gameObject.SetActive(true); } StartCoroutine( _inventoryWatcher.Run( client, session, _unitSetting.inventoryNamespaceName, _inventoryModel, _itemModels, _unitSetting.onGetInventory, _unitSetting.onAcquire, _unitSetting.onConsume, _unitSetting.onError ) ); }
private void Validate() { if (string.IsNullOrEmpty(setting.clientId)) { throw new InvalidProgramException( "'Gs2Setting' has no credential client ID set," + "The client ID can be created by uploading the 'initialize_credential_template.yaml' bundled with the core sample as a GS2-Deploy stack." + "Please check README.md for details." + " / " + "'Gs2Setting' にクレデンシャルのクライアントIDが設定されていません、" + "クライアントID は core サンプルに同梱されている 'initialize_credential_template.yaml' を GS2-Deploy のスタックとしてアップロードすることで作成できます。" + "詳しくは README.md をご確認ください。" ); } if (string.IsNullOrEmpty(setting.clientSecret)) { throw new InvalidProgramException( "'Gs2Setting' has no credential client secret set," + "The client secret can be created by uploading the 'initialize_credential_template.yaml' bundled with the core sample as a GS2-Deploy stack." + "Please check README.md for details." + " / " + "'Gs2Setting' にクレデンシャルのクライアントシークレットが設定されていません、" + "クライアントシークレット は core サンプルに同梱されている 'initialize_credential_template.yaml' を GS2-Deploy のスタックとしてアップロードすることで作成できます。" + "詳しくは README.md をご確認ください。" ); } // GS2 のクライアントを初期化 profile = new Profile( setting.clientId, setting.clientSecret, new Gs2BasicReopener() ); client = new Client( profile ); }
public IEnumerator CreateAndLoginAction() { if (isSatart) { yield break; } string filePath; #if !UNITY_EDITOR && UNITY_ANDROID filePath = Application.persistentDataPath + "/accountData.bad"; #else // TODO: 本来は各プラットフォームに対応した処理が必要 filePath = "./accountData.bad"; #endif Debug.Log(filePath); // GS2 SDK のクライアントを初期化 Debug.Log("GS2 SDK のクライアントを初期化"); profile = new Gs2.Unity.Util.Profile( clientId: clientId, clientSecret: clientSecret, reopener: new Gs2BasicReopener() ); { AsyncResult <object> asyncResult = null; var current = profile.Initialize( r => { asyncResult = r; } ); yield return(current); // コルーチンの実行が終了した時点で、コールバックは必ず呼ばれています // クライアントの初期化に失敗した場合は終了 if (asyncResult.Error != null) { OnError(asyncResult.Error); yield break; } } EzAccount account = null; gs2 = new Gs2.Unity.Client(profile); //ファイルが存在するか確認する。 if (!File.Exists(filePath)) { // アカウントを新規作成 Debug.Log("アカウントを新規作成"); { AsyncResult <EzCreateResult> asyncResult = null; var current = gs2.Account.Create( r => { asyncResult = r; }, accountNamespaceName ); yield return(current); // コルーチンの実行が終了した時点で、コールバックは必ず呼ばれています // アカウントが作成できなかった場合は終了 if (asyncResult.Error != null) { OnError(asyncResult.Error); yield break; } // 作成したアカウント情報を取得 account = asyncResult.Result.Item; //作成したアカウント情報を保存 BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Create(filePath); try { // 指定したオブジェクトを上で作成したストリームにシリアル化する bf.Serialize(file, account); } finally { // ファイル操作には明示的な破棄が必要です。Closeを忘れないように。 if (file != null) { file.Close(); } } } } { // バイナリ形式でデシリアライズ BinaryFormatter bf = new BinaryFormatter(); // 指定したパスのファイルストリームを開く FileStream file = File.Open(filePath, FileMode.Open); try { // 指定したファイルストリームをオブジェクトにデシリアライズ。 account = (EzAccount)bf.Deserialize(file); } finally { // ファイル操作には明示的な破棄が必要です。Closeを忘れないように。 if (file != null) { file.Close(); } } } // ログイン Debug.Log("ログイン"); { AsyncResult <GameSession> asyncResult = null; var current = profile.Login( authenticator: new Gs2AccountAuthenticator( session: profile.Gs2Session, accountNamespaceName: accountNamespaceName, keyId: accountEncryptionKeyId, userId: account.UserId, password: account.Password ), r => { asyncResult = r; } ); yield return(current); // コルーチンの実行が終了した時点で、コールバックは必ず呼ばれています // ゲームセッションオブジェクトが作成できなかった場合は終了 if (asyncResult.Error != null) { OnError(asyncResult.Error); yield break; } // ログイン状態を表すゲームセッションオブジェクトを取得 session = asyncResult.Result; } Debug.Log("ログイン完了"); titleScene.GetComponent <TitleScene>().flag = true; }