Example #1
0
 // Init rabbit from first launch not on editor!
 // ReSharper disable once InconsistentNaming
 // ReSharper disable once UnusedMember.Local
 private void ReadStartUpSettings()
 {
     try
     {
         string[] args       = Environment.GetCommandLineArgs();
         string   amqpBase64 = args[1];
         string   amqpJson   = Base64Decode(amqpBase64);
         _logger.Info(amqpJson);    //currently it's somewhat the only way to debug client
         Rabbitmq rabbitmq = amqpJson.JsonDeserialize <Rabbitmq>();
         AMQPClient.Init(rabbitmq);
         LoaderAdapter.Init(new ApiLoader());
         LogManager.GetCurrentClassLogger().Info("RabbitMQ init settings = " + amqpJson);
     }
     catch (Exception e)
     {
         try
         {
             ReadStartUpFile();
         }
         catch (Exception exception)
         {
             string message = "Cant read AMQP settings! Trying to get file params";
             LogManager.GetCurrentClassLogger().Fatal(message + " stackTrace = " + e.StackTrace);
             LauncherErrorManager.Instance.ShowFatal(message, exception.StackTrace);
         }
     }
 }
Example #2
0
        public static void SpawnSceneObjects(int newSceneId, int oldSceneId)
        {
            if (newSceneId == oldSceneId)
            {
                _logger.Info($"Objects for scene {newSceneId} already loaded");
                return;
            }

            _logger.Info($"Loading objects for scene {newSceneId}");
            ParentManager.Instance.ParentCommand = ParentCommand.None;

            if (oldSceneId != 0 && LoaderAdapter.LoaderType == typeof(ApiLoader))
            {
                AMQPClient.UnSubscribeLogicChange(oldSceneId);
                AMQPClient.UnSubscribeCompilationError(oldSceneId);
                AMQPClient.UnSubscribeObjectChange(oldSceneId);
            }

            GameStateData.ClearObjects();
            ProjectData.ObjectsAreChanged = false;
            Data.ServerData.Scene location      = ProjectData.ProjectStructure.Scenes.GetProjectScene(newSceneId);
            LogicInstance         logicInstance = new LogicInstance(newSceneId);

            GameStateData.RefreshLogic(logicInstance, location.AssemblyBytes);
            CreateSpawnEntities(location.SceneObjects, newSceneId);

            if (LoaderAdapter.LoaderType == typeof(ApiLoader))
            {
                AMQPClient.SubscribeLogicChange(newSceneId);
                AMQPClient.SubscribeCompilationError(newSceneId);
                AMQPClient.SubscribeObjectChange(ProjectData.ProjectId, newSceneId);
            }
        }
Example #3
0
        public async Task<bool> ConnectAsync(IotHubSettings settings = null)
        {
            bool connected = false;
            int retryCount = 0;

            await DisconnectAsync();

            while (retryCount < 5 && !connected)
            {
                System.Diagnostics.Debug.WriteLine("Try to connect.. Attempts:" + retryCount);
                _amqpClient = new AMQPClient();
                connected = await _amqpClient.ConnectAsync(settings);
                retryCount++;
            }

            if (connected)
            {
                _amqpClient.NewMessageReceived += OnNewMessageReceived;
                System.Diagnostics.Debug.WriteLine("Connection successful");
                return true;
            }
            else
            {
                System.Diagnostics.Debug.WriteLine("Connection failed");
                return false;
            }
        }
Example #4
0
        private void ShowLogicExceptionError(int errorCode, string errorMessage, Exception exception)
        {
            var logicException = new LogicException(this, exception);

            LogManager.GetCurrentClassLogger().Error($"{errorMessage} {logicException.GetStackFrameString()}");
            VRErrorManager.Instance.Show(ErrorHelper.GetErrorDescByCode(errorCode));
            AMQPClient.SendRuntimeErrorMessage(logicException);
        }
Example #5
0
        private void Start()
        {
            PlayerNameInputField inputField = FindObjectOfType <PlayerNameInputField>();
            string userName = Environment.UserName;

            inputField.SetPlayerName(userName);
            LoaderAnime.gameObject.transform.position = new Vector3(0, (float)Screen.height / 1000 - 1, 0);
            LanguageManager.SetDontDestroyOnLoad();
            Contexts.sharedInstance.game.DestroyAllEntities();

#if !UNITY_EDITOR
            ReadStartUpSettings();
#else
            Settings.ReadTestSettings();

            Rabbitmq amqmSettings = new Rabbitmq
            {
                host     = Settings.Instance().RabbitMqHost + ":" + Settings.Instance().RabbitMqPort,
                login    = Settings.Instance().RabbitMqUserName,
                password = Settings.Instance().RabbitMqPass,
                key      = "debug"
            };

            AMQPClient.Init(amqmSettings);
#endif


#if UNITY_EDITOR
            if (LoadTarFile)
            {
                Settings.CreateStorageSettings(TarFilePath);
                StartLoadFile();

                return;
            }
#endif

            LoaderSystems loaderSystems = new LoaderSystems(Contexts.sharedInstance);
            loaderSystems.Initialize();
            ProjectDataListener.OnUpdate = () => loaderSystems.Execute();

            if (LoaderAdapter.LoaderType != typeof(ApiLoader))
            {
                return;
            }

            try
            {
                AMQPClient.ReadLaunchArgs();
            }
            catch (Exception e)
            {
                LauncherErrorManager.Instance.ShowFatalErrorKey(
                    ErrorHelper.GetErrorKeyByCode(Varwin.Errors.ErrorCode.RabbitNoArgsError),
                    e.StackTrace);
                _logger.Fatal("Can not read launch args in rabbitMq");
            }
        }
Example #6
0
 private void OnApplicationQuit()
 {
     Debug.Log("Application ending after " + Time.time + " seconds");
     AMQPClient.CloseConnection();
 }
Example #7
0
 public async Task DisconnectAsync()
 {
     if (_amqpClient != null)
     {
         await _amqpClient.DisconnectAsync();
         _amqpClient.NewMessageReceived -= OnNewMessageReceived;
         _amqpClient = null;
     }
 }
Example #8
0
 private void SendBlocks()
 {
     _blocks.AddRange(_forcedBlocks);
     AMQPClient.SendRuntimeBlocks(ProjectData.SceneId, _blocks.ToArray());
     _forcedBlocks.Clear();
 }