Esempio n. 1
0
        public SimulationManager(ISettings settings, UpdateHub updateHub)
        {
            mainLock       = new object();
            this.settings  = settings;
            this.updateHub = updateHub;


            TypeContainer.Register <ExtensionLoader>(InstanceBehaviour.Singleton);
            TypeContainer.Register <IExtensionLoader, ExtensionLoader>(InstanceBehaviour.Singleton);
            TypeContainer.Register <IExtensionResolver, ExtensionLoader>(InstanceBehaviour.Singleton);
            TypeContainer.Register <DefinitionManager>(InstanceBehaviour.Singleton);
            TypeContainer.Register <IDefinitionManager, DefinitionManager>(InstanceBehaviour.Singleton);
            TypeContainer.Register <DiskPersistenceManager>(InstanceBehaviour.Singleton);
            TypeContainer.Register <IPersistenceManager, DiskPersistenceManager>(InstanceBehaviour.Singleton);
            TypeContainer.Register <ResourceManager>(InstanceBehaviour.Singleton);
            TypeContainer.Register <IResourceManager, ResourceManager>(InstanceBehaviour.Singleton);

            extensionLoader = TypeContainer.Get <ExtensionLoader>();
            extensionLoader.LoadExtensions();

            ResourceManager = TypeContainer.Get <ResourceManager>();
            ResourceManager.InsertUpdateHub(updateHub);

            Service    = new GameService(ResourceManager);
            simulation = new Simulation(ResourceManager, extensionLoader, Service)
            {
                IsServerSide = true
            };
            backgroundThread = new Thread(SimulationLoop)
            {
                Name         = "Simulation Loop",
                IsBackground = true
            };
        }
Esempio n. 2
0
        public SimulationManager(ISettings settings, UpdateHub updateHub)
        {
            mainLock = new object();

            this.settings = settings; //TODO: Where are the settings?

            extensionLoader = new ExtensionLoader(settings);
            extensionLoader.LoadExtensions();

            definitionManager = new DefinitionManager(extensionLoader);

            var persistenceManager = new DiskPersistenceManager(extensionLoader, definitionManager, settings);

            ResourceManager = new ResourceManager(extensionLoader, definitionManager, settings, persistenceManager);
            ResourceManager.InsertUpdateHub(updateHub);

            chunkSubscription = updateHub.Subscribe(ResourceManager.GlobalChunkCache, DefaultChannels.Chunk);
            ResourceManager.GlobalChunkCache.InsertUpdateHub(updateHub);
            Service    = new GameService(ResourceManager);
            simulation = new Simulation(ResourceManager, extensionLoader, Service)
            {
                IsServerSide = true
            };
            backgroundThread = new Thread(SimulationLoop)
            {
                Name         = "Simulation Loop",
                IsBackground = true
            };
        }
Esempio n. 3
0
        public LoaderForm()
        {
            InitializeComponent();
            Size = new Size(Size.Width, 133);
            updateTimer.Enabled = true;

            Task t = new Task(() =>
            {
                try
                {
                    string[] pathes = new string[] {
                        Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
                        Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Extensions",
                        Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\AntMe\\Extensions"
                    };

                    ExtensionLoader.LoadExtensions(pathes, token, true);
                    Invoke((MethodInvoker) delegate
                    {
                        HandleSuccess();
                    });
                }
                catch (AggregateException ex)
                {
                    Invoke((MethodInvoker) delegate
                    {
                        HandleExceptions(ex);
                    });
                }
            });

            t.Start();
        }
Esempio n. 4
0
        /// <summary>
        /// Handles the extension loader.
        /// </summary>
        private static void HandleExtensionLoader()
        {
            IExtensionLoader extensionLoader = new ExtensionLoader(_dependencyUtility);

            extensionLoader.LoadExtensions();

            _dependencyUtility.Register <IExtensionLoader>(extensionLoader);
        }
Esempio n. 5
0
        public void ExtensionLoaderThrowsExceptionWhenFileDoesNotExist()
        {
            string json = "{\"host\":\"0.0.0.0\",\"port\":1337,\"extensions\":{\"extension1\":{\"path\":\"\",\"config\":{\"key\":\"value\"}}}}";
            IConfigurationHandler config = GetConfigurationHandler(json, out string path);

            IDependencyUtility dependencyUtility = new DependencyUtility();

            dependencyUtility.Register <ILogger>(new Mock <ILogger>().Object);
            dependencyUtility.Register <IConfigurationHandler>(config);

            IExtensionLoader loader = new ExtensionLoader(dependencyUtility);

            try
            {
                Assert.Throws(typeof(ConfigurationItemMissingException), () => loader.LoadExtensions());
            }
            finally
            {
                File.Delete(path);
            }
        }
Esempio n. 6
0
        public OctoGame() : base()
        {
            //graphics = new GraphicsDeviceManager(this);
            //graphics.PreferredBackBufferWidth = 1080;
            //graphics.PreferredBackBufferHeight = 720;

            //Content.RootDirectory = "Content";


            Title          = "OctoAwesome";
            IsMouseVisible = true;
            Icon           = Properties.Resources.octoawesome;

            //Window.AllowUserResizing = true;
            Settings = new Settings();

            ExtensionLoader = new ExtensionLoader(Settings);
            ExtensionLoader.LoadExtensions();

            Service = new GameService(ResourceManager);
            //TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 15);

            int width  = Settings.Get("Width", 1080);
            int height = Settings.Get("Height", 720);

            Window.ClientSize = new Size(width, height);

            Window.Fullscreen = Settings.Get("EnableFullscreen", false);

            if (Settings.KeyExists("Viewrange"))
            {
                var viewrange = Settings.Get <int>("Viewrange");

                if (viewrange < 1)
                {
                    throw new NotSupportedException("Viewrange in app.config darf nicht kleiner 1 sein");
                }

                SceneControl.VIEWRANGE = viewrange;
            }

            Assets = new AssetComponent(this);
            Components.Add(Assets);


            Screen             = new ScreenComponent(this);
            Screen.UpdateOrder = 1;
            Screen.DrawOrder   = 1;
            Components.Add(Screen);


            KeyMapper = new KeyMapper(Screen, Settings);

            #region GameComponents
            DefinitionManager = new DefinitionManager(ExtensionLoader);

            //var persistenceManager = new DiskPersistenceManager(ExtensionLoader, DefinitionManager, Settings);
            //ResourceManager = new ResourceManager(ExtensionLoader, DefinitionManager, Settings, persistenceManager);
            ResourceManager = new ContainerResourceManager();


            Player             = new PlayerComponent(this, ResourceManager);
            Player.UpdateOrder = 2;
            Components.Add(Player);

            Simulation = new Components.SimulationComponent(this,
                                                            ExtensionLoader, ResourceManager);

            Entity             = new Components.EntityComponent(this, Simulation);
            Entity.UpdateOrder = 2;
            Components.Add(Entity);

            Camera             = new CameraComponent(this);
            Camera.UpdateOrder = 3;
            Components.Add(Camera);

            Simulation.UpdateOrder = 4;
            Components.Add(Simulation);

            #endregion GameComponents

            /*Resize += (s, e) =>
             * {
             *  //if (Window.ClientBounds.Height == graphics.PreferredBackBufferHeight &&
             *  //   Window.ClientBounds.Width == graphics.PreferredBackBufferWidth)
             *  //    return;
             *
             *  //graphics.PreferredBackBufferHeight = Window.ClientBounds.Height;
             *  //graphics.PreferredBackBufferWidth = Window.ClientBounds.Width;
             *  //graphics.ApplyChanges();
             * };*/
            SetKeyBindings();
        }