コード例 #1
0
ファイル: Helper.cs プロジェクト: RobboVariwn/VarBot
        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);
            }
        }
コード例 #2
0
        private static void Main(string[] args)
        {
            HostFactory.Run(serviceConfig =>
            {
                serviceConfig.UseNLog();
                serviceConfig.Service <Converter>(
                    LogicInstance =>
                {
                    LogicInstance.ConstructUsing(() => new Converter());

                    LogicInstance.WhenStarted(
                        execute => execute.Start());

                    LogicInstance.WhenStopped(
                        execute => execute.Stop());
                });

                serviceConfig.SetServiceName("Converter");
                serviceConfig.SetDisplayName("Reporting data converter");
                serviceConfig.SetDescription("Runs stored SQLs in Reporting Web Service.");
                serviceConfig.StartAutomatically();
                serviceConfig.EnableServiceRecovery(x =>
                {
                    x.RestartService(0);
                    x.RestartComputer(5, "Converter service stopped second time!");
                    x.OnCrashOnly();
                    x.SetResetPeriod(1);
                });
            });
        }
コード例 #3
0
        public static void RefreshLogic(LogicInstance logicInstance, string codeCs)
        {
            DestroyLogic();
            WrappersCollection.Clear();
            GameEntity logicEntity = Contexts.sharedInstance.game.CreateEntity();

            logicEntity.AddType(null);
            logicEntity.AddLogic(logicInstance);
            logicEntity.AddCsCode(codeCs);
            _logicEntity = logicEntity;
            LogManager.GetCurrentClassLogger().Info("Logic was refreshed");
        }
コード例 #4
0
ファイル: Helper.cs プロジェクト: RobboVariwn/VarBot
        public static void ReloadSceneObjects()
        {
            _logger.Info($"Reloading objects on scene {ProjectData.SceneId}");
            ParentManager.Instance.ParentCommand = ParentCommand.None;
            GameStateData.ClearObjects();
            ProjectData.ObjectsAreChanged = false;
            Data.ServerData.Scene location      = ProjectData.ProjectStructure.Scenes.GetProjectScene(ProjectData.SceneId);
            LogicInstance         logicInstance = new LogicInstance(ProjectData.SceneId);

            GameStateData.RefreshLogic(logicInstance, location.AssemblyBytes);
            CreateSpawnEntities(location.SceneObjects, ProjectData.SceneId);
        }
コード例 #5
0
        public static void ReloadLocationObjects()
        {
            _logger.Info($"Reloading location objects for world location {WorldData.WorldLocationId}");
            ParentManager.Instance.ParentCommand = ParentCommand.None;
            GameStateData.ClearObjects();
            WorldData.ObjectsAreChanged = false;
            WorldLocation location      = WorldData.WorldStructure.WorldLocations.GetWorldLocation(WorldData.WorldLocationId);
            LogicInstance logicInstance = new LogicInstance(WorldData.WorldLocationId);

            GameStateData.RefreshLogic(logicInstance, WorldData.LogicCode);
            CreateSpawnEntities(location.WorldLocationObjects, WorldData.WorldLocationId);
            WorldDataListener.Instance.ReadyToGetNewMessages();
        }
コード例 #6
0
        public static void LoadLocationObjects(int newWorldLocationId, int oldWorldLocationId)
        {
            _logger.Info($"Loading location objects for world location {newWorldLocationId}");
            ParentManager.Instance.ParentCommand = ParentCommand.None;

            GameStateData.ClearObjects();
            WorldData.ObjectsAreChanged = false;
            WorldLocation location      = WorldData.WorldStructure.WorldLocations.GetWorldLocation(newWorldLocationId);
            LogicInstance logicInstance = new LogicInstance(newWorldLocationId);

            GameStateData.RefreshLogic(logicInstance, WorldData.LogicCode);
            CreateSpawnEntities(location.WorldLocationObjects, newWorldLocationId);
        }
コード例 #7
0
 public static void SetLogic(LogicInstance logicInstance)
 {
     _logicInstance = logicInstance;
 }