Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="stampSheet"></param>
        /// <param name="encryptionKeyId"></param>
        /// <returns></returns>
        public IEnumerator Run(
            string stampSheet,
            string encryptionKeyId,
            UnityEvent <Gs2Exception> onError
            )
        {
            var stateMachine = new StampSheetStateMachine(
                stampSheet,
                _client,
                encryptionKeyId
                );

            foreach (var handler in _onDoneStampTasks)
            {
                stateMachine.OnDoneStampTask.AddListener(handler);
            }
            foreach (var handler in _onCompleteStampSheets)
            {
                stateMachine.OnCompleteStampSheet.AddListener(handler);
            }

            yield return(stateMachine.Execute(
                             onError
                             ));
        }
Пример #2
0
        /// <summary>
        /// スタミナを購入する
        /// </summary>
        /// <param name="callback"></param>
        /// <returns></returns>
        public IEnumerator Buy(
            UnityAction <AsyncResult <object> > callback
            )
        {
            var request = Gs2Util.LoadGlobalGameObject <StaminaRequest>("StaminaRequest");

            string stampSheet = null;

            {
                AsyncResult <EzExchangeResult> result = null;
                yield return(gs2Client.client.Exchange.Exchange(
                                 r => { result = r; },
                                 request.gameSession,
                                 gs2StaminaSetting.exchangeNamespaceName,
                                 gs2StaminaSetting.exchangeRateName,
                                 1,
                                 new List <Gs2.Unity.Gs2Exchange.Model.EzConfig>
                {
                    new Gs2.Unity.Gs2Exchange.Model.EzConfig
                    {
                        Key = "slot",
                        Value = MoneyController.Slot.ToString(),
                    }
                }
                                 ));

                if (result.Error != null)
                {
                    gs2StaminaSetting.onError.Invoke(
                        result.Error
                        );
                    callback.Invoke(new AsyncResult <object>(null, result.Error));
                    yield break;
                }

                stampSheet = result.Result.StampSheet;
            }
            {
                var machine = new StampSheetStateMachine(
                    stampSheet,
                    gs2Client.client,
                    gs2StaminaSetting.distributorNamespaceName,
                    gs2StaminaSetting.exchangeKeyId
                    );

                Gs2Exception exception = null;
                void OnError(Gs2Exception e)
                {
                    exception = e;
                }

                gs2StaminaSetting.onError.AddListener(OnError);
                yield return(machine.Execute(gs2StaminaSetting.onError));

                gs2StaminaSetting.onError.RemoveListener(OnError);

                if (exception != null)
                {
                    callback.Invoke(new AsyncResult <object>(null, exception));
                    yield break;
                }
            }

            gs2StaminaSetting.onBuy.Invoke();

            callback.Invoke(new AsyncResult <object>(null, null));
        }