예제 #1
0
        public Character(int id, IAccountManager accountManager,
                         Lazy <IZoneManager> zoneManager,
                         DockingBaseHelper dockingBaseHelper,
                         RobotHelper robotHelper,
                         ICharacterTransactionLogger transactionLogger,
                         ICharacterExtensions characterExtensions,
                         IExtensionReader extensionReader,
                         ISocialService socialService,
                         ICorporationManager corporationManager,
                         ITechTreeService techTreeService,
                         IGangManager gangManager,
                         CharacterWalletHelper walletHelper)
        {
            _accountManager      = accountManager;
            _zoneManager         = zoneManager;
            _dockingBaseHelper   = dockingBaseHelper;
            _robotHelper         = robotHelper;
            _transactionLogger   = transactionLogger;
            _characterExtensions = characterExtensions;
            _extensionReader     = extensionReader;
            _socialService       = socialService;
            _corporationManager  = corporationManager;
            _techTreeService     = techTreeService;
            _gangManager         = gangManager;
            _walletHelper        = walletHelper;

            if (id <= 0)
            {
                id = 0;
            }

            Id = id;
        }
            public static Dictionary <string, object> Build(IExtensionReader extensionReader, IRobotTemplateRelations robotTemplateRelations, EntityDefault ed)
            {
                var info = ed.ToDictionary();

                try
                {
                    Entity entity = null;

                    var robotTemplate = robotTemplateRelations.GetRelatedTemplate(ed);
                    if (robotTemplate != null)
                    {
                        entity = robotTemplate.Build();
                    }

                    if (entity == null)
                    {
                        entity = Entity.Factory.CreateWithRandomEID(ed);
                    }

                    var item = entity as Item;
                    item?.Initialize();

                    var builder = new InfoBuilder(extensionReader, info);
                    entity.AcceptVisitor(builder);
                }
                catch (Exception ex)
                {
                    Logger.Error($"troubled definition: {ed.Definition}  {ex.Message}");
                    Logger.Error($"{ex}\n{ex.Message}\n{ex.Source}\n{ex.InnerException?.Message}\n{ex.StackTrace}\n");
                }

                return(info);
            }
예제 #3
0
 private Extension[] GetAll(IExtensionReader extensionReader, Character character)
 {
     return(Db.Query().CommandText("select extensionid,extensionlevel from characterextensions where characterid = @characterId")
            .SetParameter("@characterId", character.Id)
            .Execute()
            .Select(r => new Extension(r.GetValue <int>(0), r.GetValue <int>(1)))
            .Where(ex => extensionReader.GetExtensions().ContainsKey(ex.id))
            .ToArray());
 }
        public static int GetExtensionIDByName(this IExtensionReader reader, string extensionName)
        {
            var x = reader.GetExtensions().Select(kvp => kvp.Value).FirstOrDefault(e => e.name == extensionName);

            if (x == null)
            {
                return(0);
            }
            return(x.id);
        }
        public static string GetExtensionName(this IExtensionReader reader, int extensionID)
        {
            var extensions = reader.GetExtensions();
            var info       = extensions.GetOrDefault(extensionID);

            if (info == null)
            {
                return(string.Empty);
            }
            return(info.name);
        }
예제 #6
0
 public CatalogAggregator(IExtensionAssemblyResolver assemblyResolver)
 {
     _assemblyResolver = assemblyResolver;
     _reader           = new GenericExtensionReader();
     _extensions       = new List <ExtensionDefinition>();
     _frameworks       = new List <FrameworkDefinition>();
     _profilingTypes   = new List <ProfilingTypeDefinition>();
     _profilingTargets = new List <ProfilingTargetDefinition>();
     _productivities   = new List <ProductivityDefinition>();
     _attachments      = new List <AttachmentDefinition>();
 }
        private static Dictionary <string, object> CreateCharacterWizardData(IExtensionReader extensionReader)
        {
            var extensions   = extensionReader.GetExtensions();
            var corpProfiles = Db.Query().CommandText("select eid,publicprofile from corporations where defaultcorp = 1")
                               .Execute()
                               .ToDictionary(r => r.GetValue("eid"), r => GenxyConverter.Deserialize(r.GetValue <string>("publicprofile")));

            Dictionary <string, object> LoadCwData(string name, string idName, Action <IDataRecord, Dictionary <string, object> > action = null)
            {
                var cw = Db.Query().CommandText($"select * from {name}").Execute();
                var ex = Db.Query().CommandText($"select * from {name}_extension")
                         .Execute()
                         .Where(r => extensions.ContainsKey(r.GetValue <int>("extensionid"))).ToLookup(r => r.GetValue(idName));

                return(cw.ToDictionary("w", r =>
                {
                    var id = r.GetValue(idName);
                    var dd = new Dictionary <string, object>
                    {
                        ["ID"] = id,
                        ["name"] = r.GetValue("name"),
                        ["description"] = r.GetValue("descriptiontoken"),
                        ["extension"] = ex.GetOrEmpty(id).ToDictionary("e", x =>
                        {
                            return new Dictionary <string, object>
                            {
                                { k.extensionID, x.GetValue("extensionid") },
                                { k.add, x.GetValue("levelincrement") }
                            };
                        })
                    };

                    action?.Invoke(r, dd);
                    return dd;
                }));
            }

            var result = new Dictionary <string, object>
            {
                ["race"]        = LoadCwData("cw_race", "raceid"),
                ["spark"]       = LoadCwData("cw_spark", "sparkid"),
                ["school"]      = LoadCwData("cw_school", "schoolid", (r, d) => { d["raceID"] = r.GetValue("raceid"); }),
                ["major"]       = LoadCwData("cw_major", "majorid", (r, d) => { d["schoolID"] = r.GetValue("schoolid"); }),
                ["corporation"] = LoadCwData("cw_corporation", "corporationEID", (r, d) =>
                {
                    d["baseEID"]       = r.GetValue("baseEID");
                    d["schoolID"]      = r.GetValue("schoolid");
                    d["publicProfile"] = corpProfiles[r.GetValue <long>("corporationEID")];
                })
            };

            return(result);
        }
예제 #8
0
 public ExtensionPrerequireList(IExtensionReader extensionReader)
 {
     _requiredExtensionInfos = extensionReader.GetExtensions().Values.SelectMany(info => info.RequiredExtensions, (info, reqExtension) =>
     {
         return(new Dictionary <string, object>
         {
             { k.extensionID, info.id },
             { k.requiredExtension, reqExtension.id },
             { k.requiredLevel, reqExtension.level }
         });
     }).ToDictionary("e", e => e);
 }
 public static IEnumerable <Extension> GetPrerequiredExtensionsOf(this IExtensionReader reader, int extensionId)
 {
     foreach (var info in reader.GetExtensions().Values)
     {
         foreach (var requiredExtension in info.RequiredExtensions)
         {
             if (requiredExtension.id == extensionId)
             {
                 //yes, this extension requires the incoming extension on level
                 yield return(new Extension(info.id, requiredExtension.level));
             }
         }
     }
 }
        public static IEnumerable <int> GetExtensionIDsByName(this IExtensionReader reader, IEnumerable <string> extensionNames)
        {
            var extensions = reader.GetExtensions();

            var enumerable = extensionNames as string[] ?? extensionNames.ToArray();

            foreach (var info in extensions.Values)
            {
                if (enumerable.Contains(info.name))
                {
                    yield return(info.id);
                }
            }
        }
예제 #11
0
        public Player(IExtensionReader extensionReader, ICorporationManager corporationManager, MissionHandler.Factory missionHandlerFactory, ITeleportStrategyFactories teleportStrategyFactories, DockingBaseHelper dockingBaseHelper, CombatLogger.Factory combatLoggerFactory)
        {
            _extensionReader           = extensionReader;
            _corporationManager        = corporationManager;
            _missionHandlerFactory     = missionHandlerFactory;
            _teleportStrategyFactories = teleportStrategyFactories;
            _dockingBaseHelper         = dockingBaseHelper;
            _combatLoggerFactory       = combatLoggerFactory;
            Session   = ZoneSession.None;
            _movement = new PlayerMovement(this);

            _blobEmitter = new BlobEmitter(this);
            _blobHandler = new BlobHandler <Player>(this);
        }
        public static IEnumerable <int> GetExtensionPrerequireTree(this IExtensionReader reader, int extensionId)
        {
            var info = reader.GetExtensionByID(extensionId);

            if (info == null)
            {
                yield break;
            }

            yield return(info.id);

            foreach (var extension in info.RequiredExtensions)
            {
                foreach (var i in reader.GetExtensionPrerequireTree(extension.id))
                {
                    yield return(i);
                }
            }
        }
        public static IEnumerable <Extension> GetRequiredExtensions(this IExtensionReader reader, int extensionId)
        {
            var info = reader.GetExtensionByID(extensionId);

            if (info == null)
            {
                yield break;
            }

            foreach (var requiredExtension in info.RequiredExtensions)
            {
                yield return(requiredExtension);

                foreach (var extension in reader.GetRequiredExtensions(requiredExtension.id))
                {
                    yield return(extension);
                }
            }
        }
 public SparkTeleportUse(IExtensionReader extensionReader, SparkTeleportHelper sparkTeleportHelper)
 {
     _extensionReader     = extensionReader;
     _sparkTeleportHelper = sparkTeleportHelper;
 }
 public CharacterWizardData(IExtensionReader extensionReader)
 {
     _characterWizardData = CreateCharacterWizardData(extensionReader);
 }
 public ExtensionGive(IExtensionReader extensionReader)
 {
     _extensionReader = extensionReader;
 }
예제 #17
0
 public ExtensionHistory(IExtensionReader extensionReader)
 {
     _extensionReader = extensionReader;
 }
 private InfoBuilder(IExtensionReader extensionReader, Dictionary <string, object> info)
 {
     _extensionReader = extensionReader;
     _info            = info;
 }
예제 #19
0
 public RobotLeg(IExtensionReader extensionReader) : base(RobotComponentType.Leg, extensionReader)
 {
 }
예제 #20
0
 public ExtensionGetAll(IExtensionReader extensionReader)
 {
     _extensionInfos = extensionReader.GetExtensions().ToDictionary("e", ex => ex.Value.ToDictionary());
 }
예제 #21
0
 public ExtensionBuyForPoints(IAccountManager accountManager, ExtensionPoints extensionPoints, IExtensionReader extensionReader)
 {
     _accountManager  = accountManager;
     _extensionPoints = extensionPoints;
     _extensionReader = extensionReader;
 }
 public static ExtensionInfo GetExtensionByID(this IExtensionReader reader, int extensionID)
 {
     return(reader.GetExtensions().GetOrDefault(extensionID));
 }
예제 #23
0
 public RobotHead(IExtensionReader extensionReader) : base(RobotComponentType.Head, extensionReader)
 {
 }
예제 #24
0
 public CharacterExtensions(IExtensionReader extensionReader, Func <string, ObjectCache> cacheFactory)
 {
     _extensionReader = extensionReader;
     _extensions      = cacheFactory("Extensions");
 }
예제 #25
0
 public RobotChassis(IExtensionReader extensionReader) : base(RobotComponentType.Chassis, extensionReader)
 {
 }
        public GetEntityDefaults(IExtensionReader extensionReader, IEntityDefaultReader entityDefaultReader, IRobotTemplateRelations robotTemplateRelations)
        {
            var cachedEntityDefaultsInfo = entityDefaultReader.GetAll().ToDictionary("d", ed => InfoBuilder.Build(extensionReader, robotTemplateRelations, ed));

            _message = Message.Builder.SetCommand(Commands.GetEntityDefaults).WithData(cachedEntityDefaultsInfo).Build();
        }
예제 #27
0
 protected RobotComponent(RobotComponentType type, IExtensionReader extensionReader)
 {
     _type            = type;
     _extensionReader = extensionReader;
 }
 public static ExtensionInfo[] GetExtensionsByAggregateField(this IExtensionReader extensionReader, AggregateField field)
 {
     return(extensionReader.GetExtensions().Values.Where(e => e.aggregateField == field).ToArray());
 }
 public EntityDefaultReader(IExtensionReader extensionReader)
 {
     _extensionReader = extensionReader;
 }
 public static ExtensionInfo GetExtensionByName(this IExtensionReader reader, string extensionName)
 {
     return(reader.GetExtensions().Select(kvp => kvp.Value).FirstOrDefault(e => e.name == extensionName));
 }