예제 #1
0
 public ContainerResourceManager(IUpdateHub updateHub, IExtensionResolver extensionResolver, IDefinitionManager definitionManager, ISettings settings)
 {
     UpdateHub = updateHub;
     this.extensionResolver = extensionResolver;
     this.definitionManager = definitionManager;
     this.settings          = settings;
 }
예제 #2
0
 public DiskPersistenceManager(IExtensionResolver extensionResolver, ISettings Settings, IUpdateHub updateHub)
 {
     this.extensionResolver = extensionResolver;
     settings                     = Settings;
     databaseProvider             = new DatabaseProvider(GetRoot(), TypeContainer.Get <ILogger>());
     awaiterPool                  = TypeContainer.Get <IPool <Awaiter> >();
     blockChangedNotificationPool = TypeContainer.Get <IPool <BlockChangedNotification> >();
     chunkSubscription            = updateHub.Subscribe(this, DefaultChannels.Chunk);
 }
예제 #3
0
        public DefinitionManager(IExtensionResolver extensionResolver)
        {
            this.extensionResolver = extensionResolver;

            definitions = extensionResolver.GetDefinitions <IDefinition>().ToArray();

            // Items sammeln
            itemDefinitions = definitions.OfType <IItemDefinition>().ToArray();

            // Blöcke sammeln
            blockDefinitions = definitions.OfType <IBlockDefinition>().ToArray();
        }
예제 #4
0
        public DefaultBootstrapperTest()
        {
            this.extensionHost     = A.Fake <IExtensionHost <IExtension> >();
            this.reporter          = A.Fake <IReporter>();
            this.strategy          = A.Fake <IStrategy <IExtension> >();
            this.runExecutor       = A.Fake <IExecutor <IExtension> >();
            this.shutdownExecutor  = A.Fake <IExecutor <IExtension> >();
            this.reportingContext  = A.Fake <IReportingContext>();
            this.extensionResolver = A.Fake <IExtensionResolver <IExtension> >();

            this.testee = new DefaultBootstrapper <IExtension>(this.extensionHost, this.reporter);
        }
예제 #5
0
        /// <summary>
        /// Erzeugt eine neue Instaz der Klasse Simulation.
        /// </summary>
        public Simulation(IResourceManager resourceManager, IExtensionResolver extensionResolver, IGameService service)
        {
            ResourceManager         = resourceManager;
            simmulationSubscription = resourceManager.UpdateHub.Subscribe(this, DefaultChannels.Simulation);

            this.extensionResolver = extensionResolver;
            State      = SimulationState.Ready;
            UniverseId = Guid.Empty;
            Service    = service;

            Components = new ComponentList <SimulationComponent>(
                ValidateAddComponent, ValidateRemoveComponent, null, null);

            extensionResolver.ExtendSimulation(this);
        }
 public DiskPersistenceManager(IExtensionResolver extensionResolver, IDefinitionManager definitionManager, ISettings Settings)
 {
     this.extensionResolver = extensionResolver;
     this.definitionManager = definitionManager;
     this.Settings          = Settings;
 }
예제 #7
0
        public void CreateManager(IExtensionResolver extensionResolver, IDefinitionManager definitionManager,
                                  ISettings settings, bool multiplayer)
        {
            IPersistenceManager persistenceManager;

            if (resourceManager != null)
            {
                if (resourceManager.CurrentUniverse != null)
                {
                    resourceManager.UnloadUniverse();
                }

                resourceManager = null;
            }


            if (multiplayer)
            {
                var       rawIpAddress = settings.Get <string>("server").Trim();
                string    host;
                IPAddress iPAddress;
                int       port = -1;
                if (rawIpAddress[0] == '[' || !IPAddress.TryParse(rawIpAddress, out iPAddress)) //IPV4 || IPV6 without port
                {
                    string stringIpAddress;
                    if (rawIpAddress[0] == '[') // IPV6 with Port
                    {
                        port            = int.Parse(rawIpAddress.Split(':').Last());
                        stringIpAddress = rawIpAddress.Substring(1, rawIpAddress.IndexOf(']') - 1);
                    }
                    else if (rawIpAddress.Contains(':') &&
                             IPAddress.TryParse(rawIpAddress.Substring(0, rawIpAddress.IndexOf(':')), out iPAddress)) //IPV4 with Port
                    {
                        port            = int.Parse(rawIpAddress.Split(':').Last());
                        stringIpAddress = iPAddress.ToString();
                    }
                    else if (rawIpAddress.Contains(':')) //Domain with Port
                    {
                        port            = int.Parse(rawIpAddress.Split(':').Last());
                        stringIpAddress = rawIpAddress.Split(':').First();
                    }
                    else //Domain without Port
                    {
                        stringIpAddress = rawIpAddress;
                    }
                    host = stringIpAddress;
                }
                else
                {
                    host = rawIpAddress;
                }

                var client = new Network.Client();
                client.Connect(host, port > 0 ? (ushort)port : (ushort)8888);
                persistenceManager   = new NetworkPersistenceManager(client, definitionManager);
                networkUpdateManager = new NetworkUpdateManager(client, UpdateHub, definitionManager);
            }
            else
            {
                persistenceManager = new DiskPersistenceManager(extensionResolver, definitionManager, settings);
            }

            resourceManager = new ResourceManager(extensionResolver, definitionManager, settings, persistenceManager);
            resourceManager.InsertUpdateHub(UpdateHub as UpdateHub);

            chunkSubscription = UpdateHub.Subscribe(GlobalChunkCache, DefaultChannels.Chunk);
            GlobalChunkCache.InsertUpdateHub(UpdateHub);

            IsMultiplayer = multiplayer;

            if (multiplayer)
            {
                resourceManager.GlobalChunkCache.ChunkColumnChanged += (s, c) =>
                {
                    var networkPersistence = (NetworkPersistenceManager)persistenceManager;
                    networkPersistence.SendChangedChunkColumn(c);
                };
            }
        }
 public DecoratedExtensionResolver(IExtensionResolver <ISensor> extensionResolver, Func <ISensor, bool> selector)
 {
     this.selector          = selector;
     this.extensionResolver = extensionResolver;
 }
예제 #9
0
 public SimulationComponent(OctoGame game, IExtensionResolver extensionResolver, IResourceManager resourceManager) : base(game)
 {
     Service = game.Service;
     this.extensionResolver = extensionResolver;
     this.resourceManager   = resourceManager;
 }