Beispiel #1
0
        /// <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
                             ));
        }
Beispiel #2
0
        /// <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
                    )
                );
        }
Beispiel #3
0
        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
                );
        }
Beispiel #4
0
    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;
    }