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"); } }
public StaticObject(IGraphNode node, PropContainerPurpose purpose, int id) { _modules = new Dictionary <string, IStaticObjectModule>(); Id = id; Node = node ?? throw new ArgumentNullException(nameof(node)); Purpose = purpose; }
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}"); }
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)); }