public void Init() { _prototypes = Database.CreateCache <int, int>("prototypes", "definition", "prototype"); _researchlevels = Database.CreateCache <int, ItemResearchLevel>("itemresearchlevels", "definition", r => { var level = new ItemResearchLevel { definition = r.GetValue <int>(k.definition), researchLevel = r.GetValue <int>(k.researchLevel.ToLower()), calibrationProgramDefinition = r.GetValue <int?>(k.calibrationProgram.ToLower()) }; return(level); }, ItemResearchLevelFilter); _productionComponents = Database.CreateLookupCache <int, ProductionComponent>("components", "definition", r => { var ed = _entityDefaultReader.Get(r.GetValue <int>(k.componentDefinition.ToLower())); var amount = r.GetValue <int>(k.componentAmount.ToLower()); return(new ProductionComponent(ed, amount)); }, r => _entityDefaultReader.Exists(r.GetValue <int>(k.definition))); _productionDurations = Database.CreateCache <CategoryFlags, double>("productionduration", "category", "durationmodifier"); _calibrationDefaults = Database.CreateCache <int, CalibrationDefault>("calibrationdefaults", "definition", r => new CalibrationDefault(r)); _productionDecalibrations = Database.CreateCache <CategoryFlags, ProductionDecalibration>("productiondecalibration", "categoryflag", r => { var distorsionMin = r.GetValue <double>(k.distorsionMin.ToLower()); var distorsionMax = r.GetValue <double>(k.distorsionMax.ToLower()); var decrease = r.GetValue <double>("decrease"); return(new ProductionDecalibration(distorsionMin, distorsionMax, decrease)); }); }
private RobotTemplateRelation CreateRobotTemplateRelationFromRecord(IDataRecord record) { var relation = new RobotTemplateRelation { EntityDefault = _entityDefaultReader.Get(record.GetValue <int>("definition")), Template = _robotTemplateReader.Get(record.GetValue <int>("templateid")), RaceID = record.GetValue <int>("raceid"), missionLevel = record.GetValue <int?>("missionlevel"), missionLevelOverride = record.GetValue <int?>("missionleveloverride") }; return(relation); }
private static Dictionary <MaterialType, MaterialInfo> LoadMaterials(IEntityDefaultReader entityDefaultReader) { return(Db.Query().CommandText("select * from minerals").Execute().Select(r => { var mineral = new MaterialInfo { Type = r.GetValue <string>("name").ToMaterialType(), EntityDefault = entityDefaultReader.Get(r.GetValue <int>("definition")), Amount = r.GetValue <int>("amount"), EnablerExtensionRequired = r.GetValue <bool>("enablereffectrequired") }; return mineral; }).ToDictionary(m => m.Type)); }
public void HandleRequest(IZoneRequest request) { var definitionz = request.Data.GetOrDefault <int[]>(k.definition); foreach (var definition in definitionz) { var ed = _defaultReader.Get(definition); if (ed == EntityDefault.None) { Logger.Error("definition not found:" + definition); continue; } request.Zone.DrawBlockingByDefinition(ed); } Message.Builder.FromRequest(request).WithOk().Send(); }
public void HandleRequest(IZoneRequest request) { using (var scope = Db.CreateTransaction()) { var ID = request.Data.GetOrDefault <int>(k.ID); var presenceID = request.Data.GetOrDefault <int>(k.presenceID); var definition = request.Data.GetOrDefault <int>(k.definition); var spawnOriginX = request.Data.GetOrDefault <int>(k.spawnOriginX); var spawnOriginY = request.Data.GetOrDefault <int>(k.spawnOriginY); var respawnMultiplierLow = request.Data.GetOrDefault(k.respawnMultiplierLow, 0.75); //instafix dict request.Data[k.respawnMultiplierLow] = respawnMultiplierLow; var ed = _defaultReader.Get(definition); if (!ed.CategoryFlags.IsCategory(CategoryFlags.cf_npc)) { throw new PerpetuumException(ErrorCodes.DefinitionNotSupported); } var presence = request.Zone.PresenceManager.GetPresences().GetPresenceOrThrow(presenceID); var origFlock = presence.Flocks.GetFlockOrThrow(ID); presence.RemoveFlock(origFlock); var inputDict = new Dictionary <string, object>(request.Data) { { k.spawnOrigin, new Position(spawnOriginX, spawnOriginY) } }; var builder = _flockConfigurationBuilderFactory(); builder.FromDictionary(inputDict); builder.SetID(ID); var configuration = builder.Build(); _repository.Update(configuration); presence.CreateAndAddFlock(configuration); var result = request.Zone.PresenceManager.GetPresences().ToDictionary("p", p => p.ToDictionary(true)); Message.Builder.FromRequest(request).WithData(result).Send(); scope.Complete(); } }
public FlockConfigurationBuilder WithDefinition(int definition) { _configuration.EntityDefault = _entityDefaultReader.Get(definition); return(this); }
public Entity Create(int definition, IIDGenerator <long> idGenerator) { var ed = _defaultReader.Get(definition); return(Create(ed, idGenerator)); }
public EntityDefault Activate() { CalibrationCapsuleRecord record = CalibrationTemplateItemLookup.GetOrDefault(Definition); return(_entityDefaultReader.Get(record.TargetDefinition)); }