private IActor CreateCitizen(IDropTableScheme traderDropTable, IMapNode startNode, IBotPlayer botPlayer) { var person = new CitizenPerson(traderDropTable, _dropResolver); var actor = new Actor(person, botPlayer, startNode); _actorManager.Add(actor); return(actor); }
public PropDepositModule(IPropContainer propContainer, IDropTableScheme dropTableScheme, IDropResolver dropResolver, string[] toolTags, int exhaustingValue, DepositMiningDifficulty depositMiningDifficulty) { _propContainer = propContainer ?? throw new ArgumentNullException(nameof(propContainer)); _dropTableScheme = dropTableScheme ?? throw new ArgumentNullException(nameof(dropTableScheme)); _dropResolver = dropResolver ?? throw new ArgumentNullException(nameof(dropResolver)); _toolTags = toolTags ?? throw new ArgumentNullException(nameof(toolTags)); _exhaustingValue = exhaustingValue; _exhaustingCounter = exhaustingValue; Difficulty = depositMiningDifficulty; }
private static void CheckDropTableScheme(IDropTableScheme dropTableScheme, ISchemeService schemeService) { Action act = () => { foreach (var record in dropTableScheme.Records) { var propSid = record.SchemeSid; if (propSid == null) { continue; } schemeService.GetScheme <IPropScheme>(propSid); } }; act.Should().NotThrow(); }
private IDropTableScheme[] GetMonsterDropTables(IMonsterScheme monsterScheme) { if (monsterScheme.DropTableSids == null) { return(new IDropTableScheme[0]); } var dropTableCount = monsterScheme.DropTableSids.Length; var schemes = new IDropTableScheme[dropTableCount]; for (var i = 0; i < dropTableCount; i++) { var sid = monsterScheme.DropTableSids[i]; schemes[i] = _schemeService.GetScheme <IDropTableScheme>(sid); } return(schemes); }
protected void FillSlot(HumanPerson person, IDropTableScheme dropScheme, int slotIndex) { // Генерируем предметы. // Выбираем предмет, как экипировку в слот. // Если он может быть экипирован, то устанавливаем в слот. // Остальные дропнутые предметы складываем просто в инвентарь. // Если текущий предмет невозможно экипировать, то его тоже помещаем в инвентарь. var inventory = person.GetModule <IInventoryModule>(); var dropedProps = DropResolver.Resolve(new[] { dropScheme }); var usedEquipment = dropedProps.OfType <Equipment>().FirstOrDefault(); if (usedEquipment != null) { var equipmentModule = person.GetModule <IEquipmentModule>(); var canBeEquiped = CanBeEquiped(equipmentModule, slotIndex, usedEquipment); if (canBeEquiped) { AddEquipment(equipmentModule, slotIndex, usedEquipment); var unusedMainWeaponDrops = dropedProps.Where(x => x != usedEquipment).ToArray(); foreach (var prop in unusedMainWeaponDrops) { AddPropToInventory(inventory, prop); } } else { foreach (var prop in dropedProps) { AddPropToInventory(inventory, prop); } } } else { foreach (var prop in dropedProps) { AddPropToInventory(inventory, prop); } } }
private IDropTableScheme[] GetMonsterDropTables(IMonsterScheme monsterScheme) { if (monsterScheme.DropTableSids == null) { return(Array.Empty <IDropTableScheme>()); } var dropTableCount = monsterScheme.DropTableSids.Length; var schemes = new IDropTableScheme[dropTableCount]; for (var i = 0; i < dropTableCount; i++) { var sid = monsterScheme.DropTableSids[i]; if (sid is null) { throw new InvalidOperationException(); } schemes[i] = _schemeService.GetScheme <IDropTableScheme>(sid); } return(schemes); }
public CitizenPerson(IDropTableScheme goodsDropTable, IDropResolver dropResolver) { CitizenType = CitizenType.Trader; _goodsDropTable = goodsDropTable; _dropResolver = dropResolver; }
/// <summary> /// Создаёт экземпляр торговца <see cref="Trader"/>. /// </summary> /// <param name="goodsDropTable"> Таблица дропа, на основе которой будут выдаваться товары.</param> /// <param name="node"> Узел карты, в котором стоит торговец. </param> /// <param name="dropResolver"> Сервис для работы с таблицами дропа. </param> /// <exception cref="ArgumentNullException"> /// goodsDropTable /// or /// node /// or /// dropResolver /// </exception> public Trader(IDropTableScheme goodsDropTable, IMapNode node, IDropResolver dropResolver) { _goodsDropTable = goodsDropTable ?? throw new ArgumentNullException(nameof(goodsDropTable)); Node = node ?? throw new ArgumentNullException(nameof(node)); _dropResolver = dropResolver ?? throw new ArgumentNullException(nameof(dropResolver)); }