private static string GetTextureNameByPurpose(PropContainerPurpose purpose)
        {
            switch (purpose)
            {
            case PropContainerPurpose.CherryBrush:
            case PropContainerPurpose.Treasures:
                return("Grass");

            case PropContainerPurpose.OreDeposits:
                return("StoneBrown");

            case PropContainerPurpose.StoneDeposits:
                return("StoneBlue");

            case PropContainerPurpose.TrashHeap:
            case PropContainerPurpose.Trash:
                return("TrashHeap");

            case PropContainerPurpose.Puddle:
                return("Puddle");

            case PropContainerPurpose.Pit:
                return("Pit");

            case PropContainerPurpose.Loot:
                return("LootBag");

            default:
                Debug.Fail($"Texture for specified purpose {purpose}.");
                return("Grass");
            }
        }
Example #2
0
        public StaticObject(IGraphNode node, PropContainerPurpose purpose, int id)
        {
            _modules = new Dictionary <string, IStaticObjectModule>();

            Id      = id;
            Node    = node ?? throw new ArgumentNullException(nameof(node));
            Purpose = purpose;
        }
Example #3
0
 protected PropDepositFactoryBase(
     string[] toolTags,
     string dropTableSchemeSid,
     PropContainerPurpose propContainerPurpose,
     ISchemeService schemeService,
     IDropResolver dropResolver)
 {
     _toolTags           = toolTags ?? throw new ArgumentNullException(nameof(toolTags));
     _dropTableSchemeSid = dropTableSchemeSid ?? throw new ArgumentNullException(nameof(dropTableSchemeSid));
     _schemeService      = schemeService ?? throw new ArgumentNullException(nameof(schemeService));
     _dropResolver       = dropResolver ?? throw new ArgumentNullException(nameof(dropResolver));
     Purpose             = propContainerPurpose;
 }
        /// <inheritdoc />
        public IStaticObjectFactory SelectFactoryByStaticObjectPurpose(PropContainerPurpose purpose)
        {
            foreach (var factory in _factories)
            {
                if (factory.Purpose != purpose)
                {
                    continue;
                }

                return(factory);
            }

            throw new InvalidOperationException($"Not found factory for purpose {purpose}.");
        }
        public IStaticObject AddStaticObject(int staticObjectId, PropContainerPurpose purpose, OffsetCoords coords)
        {
            var sector = Globe.SectorNodes.First().Sector;

            var staticObjectNode = sector.Map.Nodes.SelectByHexCoords(coords.X, coords.Y);

            var factory = GetFactoryByPurpose(purpose);

            var staticObject = factory.Create(sector, staticObjectNode, staticObjectId);

            sector.StaticObjectManager.Add(staticObject);

            return(staticObject);
        }
        private IStaticObjectFactory SelectStaticObjectFactory(PropContainerPurpose staticObjectPurpose)
        {
            var factories = _staticObjectfactoryCollector.GetFactories();

            foreach (var factory in factories)
            {
                if (factory.Purpose != staticObjectPurpose)
                {
                    continue;
                }

                return(factory);
            }

            throw new InvalidOperationException($"Не обнаружена фабрика для статических объектов типа {staticObjectPurpose}");
        }
Example #7
0
        private IPropContainer CreateContainerModuleByPurpose(IDropTableScheme[] trashDropTables,
                                                              IDropTableScheme[] treasuresDropTable, PropContainerPurpose containerPurpose)
        {
            IPropContainer container;

            switch (containerPurpose)
            {
            case PropContainerPurpose.Trash:
                container = new DropTablePropChest(trashDropTables, _dropResolver)
                {
                    Purpose = PropContainerPurpose.Trash
                };
                break;

            case PropContainerPurpose.Treasures:
                container = new DropTablePropChest(treasuresDropTable, _dropResolver)
                {
                    Purpose = PropContainerPurpose.Treasures
                };
                break;

            default:
                throw new InvalidOperationException($"Не корректное назначение {containerPurpose}.");
            }

            return(container);
        }
        private IStaticObjectFactory GetFactoryByPurpose(PropContainerPurpose purpose)
        {
            var staticObjectFactoryCollector = ServiceProvider.GetRequiredService <IStaticObjectFactoryCollector>();

            return(staticObjectFactoryCollector.SelectFactoryByStaticObjectPurpose(purpose));
        }