Exemple #1
0
 public void Send(AppMessageBase message)
 {
     NetworkServer.SendToClient(message.ConnectionId, (short)message.Type, message);
     #if NETWORK_DEBUG
     DevLogger.Log("SendAppMessage: " + message.Type + "\n" + Newtonsoft.Json.JsonConvert.SerializeObject(message, Newtonsoft.Json.Formatting.Indented));
     #endif
 }
Exemple #2
0
        static ThreadSafeContext()
        {
            if (Thread.CurrentThread.ManagedThreadId == MainThreadId)
            {
                if (_isInitialized == false)
                {
                    IsWebPlayer = Application.platform == RuntimePlatform.WebGLPlayer;

                    IsEditor = Application.isEditor;

                    BuildVersion = AppVersion;

                    PersistentDataPath = Application.persistentDataPath;

                    DeviceUniqueIdentifier = SystemInfo.deviceUniqueIdentifier;

                    Platform = Application.platform;

                    _isInitialized = true;
                }
            }
            else
            {
                DevLogger.Warning("ThreadSafeContext should be initialized from the main thread.", LogChannel.Common);
            }
        }
Exemple #3
0
        public void MakeCall(RequestMethod method, string path, string data, Dictionary <string, string> headers, ApiCallCallback callback)
        {
            if (_baseHost == null)
            {
                DevLogger.Error(string.Format("Need initialize {0} before MakeCall",
                                              GetType()), MarketLogType.MarketApi);
                return;
            }
            var uri = new Uri(_baseHost, path);

            Log(string.Format("{0} request: {1} \n{2}", method.ToString().ToUpper(),
                              GetShortUrl(uri.ToString()), data));
            switch (method)
            {
            case RequestMethod.Get:
                StartCoroutine(MakeGet(uri, headers, callback, _apiSettings.UseDebug));
                break;

            case RequestMethod.Post:
                StartCoroutine(MakePost(uri, data, headers, callback, _apiSettings.UseDebug));
                break;

            case RequestMethod.Put:
                StartCoroutine(MakePut(uri, data, headers, callback, _apiSettings.UseDebug));
                break;

            default:
                throw new ArgumentOutOfRangeException("method", method, null);
            }
        }
        private void OnAppMsgReceived(AppServerAnswerMessageBase answer)
        {
            var logString = "Client get app answer type {0} with error {1}";

            DevLogger.Log(string.Format(logString,
                                        answer.Type, answer.Error), DTanksLogChannel.Network);
        }
        private void OnErrorCallback(Error error)
        {
            DevLogger.Error(string.Format("Can't load {0} from API", Type));

            FormModel.Text = string.Format("Load text error:\n{0}", Type);
            View.SetLoadingState(false);
        }
Exemple #6
0
 public void SendToPlayer(GameMessageBase message, int connectionId)
 {
     #if NETWORK_DEBUG
     DevLogger.Log("SendToPlayer: " + connectionId + " " + message.Type + "\n" + Newtonsoft.Json.JsonConvert.SerializeObject(message, Newtonsoft.Json.Formatting.Indented));
     #endif
     NetworkServer.SendToClient(connectionId, (short)message.Type, message);
 }
Exemple #7
0
        /*    public static TComponent InstantiateAndGetSafeComponent<TComponent>(
         *  this RelativeLinkToGameObject relativeLinkToGameObject,
         *  Vector3? position = null,
         *  Quaternion? rotation = null) where TComponent : MonoBehaviour
         * {
         *  GameObject go = relativeLinkToGameObject;
         *  return go.InstantiateAndGetSafeComponent<TComponent>(position, rotation);
         * }*/

        public static TComponent InstantiateAndGetSafeComponent <TComponent>(
            this GameObject objectToInstantiate,
            Vector3?position    = null,
            Quaternion?rotation = null) where TComponent : MonoBehaviour
        {
            if (objectToInstantiate != null)
            {
                GameObject o = UnityEngine.Object.Instantiate(
                    objectToInstantiate,
                    position != null ? position.Value : Vector3.zero,
                    rotation != null ? rotation.Value : Quaternion.identity);

                if (o != null)
                {
                    return(o.GetSafeComponent <TComponent>());
                }
            }
            else
            {
                DevLogger.Error(
                    string.Format("Instantiated object with component {0} is null", typeof(TComponent)),
                    LogChannel.Common);
            }

            DevLogger.Error("Couldn't instantiate object", LogChannel.Common);

            return(default(TComponent));
        }
        public void Open(IGameIntegrationModel gameItems)
        {
            if (!IsInitialized)
            {
                DevLogger.Error("Initialize MarketWidget before use.", MarketLogType.MarketWidget);
                return;
            }

            if (gameItems == null)
            {
                DevLogger.Error("It's not impossible to Open MarketWidget. IGameIntegrationModel is null", MarketLogType.MarketWidget);
                return;
            }

            ApplyMarketStrategy();
            GameModel = gameItems;
            _formContainer.Run();
            var textPopUp = GetForm <MarketTextPopUp>();

            PopUpController.Initialize(textPopUp);
            _soundManager.IsRuning = true;

            View = GetForm <MarketView>();
            View.ApplyModel(Model);

            ApplyState <MarketOpeningState>();
        }
Exemple #9
0
        public void SendToAll(GameMessageBase message)
        {
            #if NETWORK_DEBUG
            DevLogger.Log("SendToAll: " + message.Type + "\n" + Newtonsoft.Json.JsonConvert.SerializeObject(message, Newtonsoft.Json.Formatting.Indented));
            #endif

            NetworkServer.SendToAll((short)message.Type, message);
        }
Exemple #10
0
        private void CheckTransactionsStatuses()
        {
            if (_pendingTransactions.Count > 0)
            {
                for (int i = 0; i < _pendingTransactions.Count; i++)
                {
                    var    transaction             = _pendingTransactions[i];
                    int    transactionConnectionId = transaction.Sender.ConnectionId;
                    string playerMarketAccessToken = Model.GetPlayerMarketAccessToken(transactionConnectionId);

                    DMarketApi.CheckAsyncOperation(playerMarketAccessToken, transaction.OperationIds,
                                                   (response, request) =>
                    {
                        var answerMessage = new AppChangingItemsAnswerMessage(new ItemsChangingResponse());

                        foreach (var transactionItem in response.Items)
                        {
                            var status = _apiResponseAdapter.GetTransactionStatusType(transactionItem.status);
                            switch (status)
                            {
                            case DMarketTransactionStatusType.Fail:
                                {
                                    answerMessage.Response.MarketError = (ErrorCode)transactionItem.transferError.code;
                                    transaction.RemoveOperation(transactionItem.operationId);
                                    break;
                                }

                            case DMarketTransactionStatusType.Success:
                                {
                                    OnSuccessMarketOperation(transactionItem, transaction);
                                    transaction.RemoveOperation(transactionItem.operationId);
                                    break;
                                }
                            }
                        }

                        var transactionLog = string.Format("Transaction for connection: {0}, operation left: {1}", transaction.Sender.ConnectionId,
                                                           transaction.OperationsCount);
                        DevLogger.Log(transactionLog, DTanksLogChannel.GameServer);

                        if (transaction.OperationsCount == 0)
                        {
                            SendMessageToClient(answerMessage, transactionConnectionId);
                            _pendingTransactions.Remove(transaction);
                        }
                        Storage.Change(GetPlayer(transactionConnectionId));
                    },
                                                   error =>
                    {
                        foreach (var transactionInfo in _pendingTransactions)
                        {
                            OnItemOperationError(transactionInfo.Sender, error);
                        }
                        _pendingTransactions.Clear();
                    });
                }
            }
        }
Exemple #11
0
        protected void SendMessageToClient(AppServerAnswerMessageBase answerMessage, int connectionId)
        {
            answerMessage.ConnectionId = connectionId;
            var logString = "Server send to {0} app answer type {1} with error {2}";

            DevLogger.Log(string.Format(logString, answerMessage.ConnectionId,
                                        answerMessage.Type, answerMessage.Error), DTanksLogChannel.Network);
            Server.Send(answerMessage);
        }
Exemple #12
0
        public void Send(GameMessageBase message)
        {
            message.ClientId = _currentClient.connection.connectionId;
            _currentClient.Send((short)message.Type, message);

            #if NETWORK_DEBUG
            DevLogger.Log("Send GameMessageBase: " + message.Type + " body: \n" + Newtonsoft.Json.JsonConvert.SerializeObject(message, Newtonsoft.Json.Formatting.Indented));
            #endif
        }
Exemple #13
0
 public void AddItem(PlayerItemInfo item)
 {
     if (Items.Any(c => c.WorldId == item.WorldId))
     {
         DevLogger.Error("Item already in game inventory");
         return;
     }
     Items.Add(item);
 }
Exemple #14
0
 Vector3 IBattleField.GetSpawnPoint(int spawnPointIndex)
 {
     if (spawnPointIndex >= _spawnPoints.Count)
     {
         DevLogger.Warning("spawn point index {0} not exist", DTanksLogChannel.GameClient);
         spawnPointIndex = 0;
     }
     return(_spawnPoints[spawnPointIndex].Pos);
 }
        protected string GetTargetString(ShowType showType, MarketItemModel model)
        {
            var result = string.Empty;

            switch (showType)
            {
            case ShowType.Tittle:
                result = model.Tittle;
                break;

            case ShowType.Description:
                result = model.Description;
                break;

            case ShowType.ClassId:
                result = model.ClassId;
                break;

            case ShowType.AssetId:
                result = model.AssetId;
                break;

            case ShowType.CreationDate:
                result = GetDateString(model.Created);
                break;

            case ShowType.LastUpdate:
                result = GetDateString(model.Updated);
                break;

            case ShowType.Price:
                result = model.Price.GetStringWithCurrencySprite(_text.color);
                break;

            case ShowType.Fee:
                result = model.Fee.GetStringWithCurrencySprite(_text.color);
                break;

            case ShowType.OrderStatus:
                result = model.Status.GetText();
                break;

            case ShowType.OffersCount:
                result = model.OffersCount.ToString();
                break;

            case ShowType.SellOfferId:
                result = model.SellOfferId;
                break;

            default:
                result = "NOT IMPLEMENT";
                DevLogger.Warning("Need implement for " + showType);
                break;
            }
            return(result);
        }
        private void CheckTransactionsStatuses()
        {
            if (_pendingOperations.Count == 0)
            {
                return;
            }

            var transactionIds = _pendingOperations.Keys;

            DMarketApi.CheckAsyncOperation(Model.GetPlayerMarketAccessToken(_connectionId), transactionIds.ToArray(),
                                           (response, request) =>
            {
                foreach (var item in response.Items)
                {
                    string itemAssetId    = item.assetId;
                    string operationId    = item.operationId;
                    var transactionStatus = _apiResponseAdapter.GetTransactionStatusType(item.status);

                    switch (transactionStatus)
                    {
                    case DMarketTransactionStatusType.Fail:
                        _pendingOperations.Remove(operationId);
                        DevLogger.Error(string.Format("Transaction for item: {0} was failed.", itemAssetId));
                        break;

                    case DMarketTransactionStatusType.Pending:
                        break;

                    case DMarketTransactionStatusType.Success:
                        _pendingOperations.Remove(operationId);
                        _successItemsIds.Add(itemAssetId);
                        break;
                    }
                }

                if (_pendingOperations.Count == 0)
                {
                    if (_actionType == ItemActionType.FromMarket)
                    {
                        AddMovedItemsToInventory();
                    }
                    else
                    {
                        RemoveMovedItemsFromInventory();
                    }

                    SendLoadInventoryData();
                    Terminate();
                }
            },
                                           error =>
            {
                _pendingOperations.Clear();;
                OnItemOperationError(error);
            });
        }
Exemple #17
0
        private void OnAppMessageReceive(NetworkMessage msg)
        {
            AppMessageBase appMessage = NetworkingUtil.ReadAppMessage(msg);

            #if NETWORK_DEBUG
            DevLogger.Log("OnAppMessageReceive received: " + appMessage.Type + "\n" + Newtonsoft.Json.JsonConvert.SerializeObject(appMessage, Newtonsoft.Json.Formatting.Indented));
            #endif

            AppMsgReceived.SafeRaise(appMessage);
        }
        protected void SendAnswer(AppServerAnswerMessageBase answer,
                                  AppMessageBase senderMessage)
        {
            answer.ConnectionId = senderMessage.ConnectionId;
            var logString = "Server send to {0} app answer type {1} with error {2}";

            DevLogger.Log(string.Format(logString, answer.ConnectionId,
                                        answer.Type, answer.Error), TankGameLogChannel.Network);
            Server.Send(answer);
        }
Exemple #19
0
 void IWidget.Open()
 {
     if ((this as IWidget).IsInitialize)
     {
         ApplyState <WidgetOpeningState>();
     }
     else
     {
         DevLogger.Error("Need initialize widget before opening");
     }
 }
Exemple #20
0
 void IWidget.Logout()
 {
     if (Model.IsLogin)
     {
         ClientApi.Logout(Model.BasicAccessToken, Model.MarketAccessToken,
                          OnLogoutCallback, OnErrorCallback);
     }
     else
     {
         DevLogger.Warning("Try logout when user is not login");
     }
 }
 private void ApplyMarketStrategy()
 {
     if (SceneManager.GetActiveScene().name.Equals("TestMarket"))
     {
         DevLogger.Log("Apply mockup models");
         Strategy = new MarketMockupStrategy();
     }
     else
     {
         Strategy = new MarketOnlineStrategy();
     }
 }
Exemple #22
0
        protected static TPoolObject GetObjectOfType <TPoolObject>(PoolControllerBase instance)
            where TPoolObject : IPoolObject
        {
            if (instance != null)
            {
                return(instance.GetObject <TPoolObject>());
            }

            DevLogger.Error("Pool controller is not exists", LogChannel.Common);

            return(default(TPoolObject));
        }
Exemple #23
0
        public void EquipItem(long worldId)
        {
            if (EquippedItems.Contains(worldId))
            {
                DevLogger.Error(string.Format("Item with Id:{0} already equipped.", worldId));
                return;
            }
            PlayerItemInfo item = GetItem(worldId);

            TakeOffEquipItems(item.ItemCategory);
            EquippedItems.Add(worldId);
        }
Exemple #24
0
 public void Initialize()
 {
     if (!IsInitialize)
     {
         _components = new List <ItemComponentBase>();
         gameObject.GetComponentsInChildren(true, _components);
         _components.ForEach(component => component.ApplyItem(this));
     }
     else
     {
         DevLogger.Warning("Try initialize twice");
     }
 }
Exemple #25
0
 public void Start(string serverIP, int port)
 {
     _currentClient = new NetworkClient();
     RegisterHandles();
     try
     {
         _currentClient.Connect(serverIP, port);
     }
     catch (Exception e)
     {
         DevLogger.Error(e.Message);
     }
 }
Exemple #26
0
        SoundInfo IMarketSoundCatalog.GetSoundInfo(MarketSoundType sound)
        {
            var result = Sounds.Find(item => item.SoundType == sound);

            if (result == null)
            {
                DevLogger.Warning(string.Format("{0} sound missing", sound),
                                  MarketLogType.Sound);
                result = new SoundInfo();
            }

            return(result);
        }
 public GameItemType GetItemType(string classId)
 {
     try
     {
         return((GameItemType)Enum.Parse(typeof(GameItemType), classId));
     }
     catch (Exception e)
     {
         DevLogger.Error("Cannot find game item type for " + classId
                         + " " + e.Message);
         return(GameItemType.Unknow);
     }
 }
Exemple #28
0
 private static string GetCurrencySpriteName(string currency)
 {
     if (string.IsNullOrEmpty(currency))
     {
         return(string.Empty);
     }
     if (BindedCurrencyNames.ContainsKey(currency))
     {
         return(BindedCurrencyNames[currency]);
     }
     DevLogger.Error(string.Format("Currency {0} not binded", currency));
     return(string.Empty);
 }
Exemple #29
0
        public static AppMessageBase ReadAppMessage(NetworkMessage msg)
        {
            var type = (AppMsgType)msg.msgType;

            if (AppMsgHandlers.ContainsKey(type))
            {
                var result = AppMsgHandlers[type](msg);
                result.ConnectionId = msg.conn.connectionId;
                return(result);
            }

            DevLogger.Error("Have no receive method for " + type, DTanksLogChannel.Network);
            return(null);
        }
Exemple #30
0
 protected virtual void OnServerCallback(ItemsChangingResponse parameters)
 {
     View.WaitingForm.Hide();
     if (parameters.IsSuccess)
     {
         //TODO change to notification
         DevLogger.Warning("Add notification here");
         //FormView.ShowSuccesOperation();
     }
     else
     {
         MessageBox.Show("Error", parameters.ErrorText);
     }
 }