private CreatureEntity[] GetCreatureToUpdate(string creatureName, IWurmServer server)
        {
            if (server == null)
            {
                logger.Info("Skipped creature lookup at GetCreatureToUpdate due to unknown current server");
                return(new CreatureEntity[0]);
            }

            IEnumerable <HerdEntity> herdsQuery = context.Herds;

            if (!parentModule.Settings.DoNotBlockDataUpdateUnlessMultiplesInEntireDb)
            {
                herdsQuery = herdsQuery.Where(x => x.Selected);
            }
            var herdsToCheck = herdsQuery.Select(x => x.HerdId).ToArray();

            var creaturesQuery =
                context.Creatures.Where(
                    x => x.Name.Equals(creatureName, StringComparison.CurrentCultureIgnoreCase) &&
                    herdsToCheck.Contains(x.Herd));

            if (UseServerAsCreatureId)
            {
                creaturesQuery =
                    creaturesQuery.Where(
                        entity =>
                        string.IsNullOrEmpty(entity.ServerName) || server.ServerName.Matches(entity.ServerName));
            }
            return(creaturesQuery.ToArray());
        }
示例#2
0
        public bool UpdateSkill([NotNull] SkillInfo newSkillInfo, [NotNull] IWurmServer server)
        {
            if (newSkillInfo == null)
            {
                throw new ArgumentNullException(nameof(newSkillInfo));
            }
            if (server == null)
            {
                throw new ArgumentNullException(nameof(server));
            }

            var  key          = new CompositeSkillKey(newSkillInfo.NameNormalized, server.ServerGroup);
            bool skillUpdated = false;

            lock (locker)
            {
                SkillInfo info;
                if (skillsMap.TryGetValue(key, out info))
                {
                    if (info.Stamp < newSkillInfo.Stamp)
                    {
                        skillsMap[key] = newSkillInfo;
                        skillUpdated   = true;
                    }
                }
                else
                {
                    skillsMap.Add(key, newSkillInfo);
                    skillUpdated = true;
                }
            }
            return(skillUpdated);
        }
            public override void Setup()
            {
                base.Setup();
                event201412Writer =
                    new LogWriter(
                        Path.Combine(ClientMock.InstallDirectory.FullPath,
                                     "players",
                                     "Testguy",
                                     "Logs",
                                     "_Event.2014-12.txt"),
                        new DateTime(2014, 12, 1),
                        true);

                server = System.GetByName(serverName);
            }
示例#4
0
            public override void Setup()
            {
                base.Setup();
                event201412Writer =
                    new LogWriter(
                        Path.Combine(ClientMock.InstallDirectory.FullPath,
                            "players",
                            "Testguy",
                            "Logs",
                            "_Event.2014-12.txt"),
                        new DateTime(2014, 12, 1),
                        true);

                server = System.GetByName(serverName);
            }
示例#5
0
        async void UpdateCurrentServer()
        {
            try
            {
                var server = await character.TryGetCurrentServerAsync().ConfigureAwait(false);

                if (server != null)
                {
                    currentServer = server;
                }
                else
                {
                    logger.Log(LogLevel.Warn, "Current server unknown for: " + character.Name.Capitalized, this, null);
                }
            }
            catch (Exception exception)
            {
                logger.Log(LogLevel.Error, "error on updating current server", this, exception);
            }
            await Task.Run(() => currentServerLookupFinished.TrySetResult(Time.Get.LocalNow));
        }
        async Task AttemptToEstablishCurrentServer(TimeSpan timestampToSearch)
        {
            var scanResults =
                await
                character.Logs.ScanLogsServerGroupRestrictedAsync(DateTime.Now - timestampToSearch,
                                                                  DateTime.Now,
                                                                  LogType.Event,
                                                                  new ServerGroup(ServerGroupId),
                                                                  ScanResultOrdering.Descending);

            foreach (var entry in scanResults)
            {
                var serverStamp = entry.TryGetServerFromLogEntry();
                if (serverStamp != null)
                {
                    var server = wurmApi.Servers.GetByName(serverStamp.ServerName);
                    if (server.ServerGroup.ServerGroupId == ServerGroupId)
                    {
                        currentServerOnTheGroup = server;
                        break;
                    }
                }
            }
        }
 void CharacterOnLogInOrCurrentServerPotentiallyChanged(object sender, PotentialServerChangeEventArgs potentialServerChangeEventArgs)
 {
     currentServerOnTheGroup = wurmApi.Servers.GetByName(potentialServerChangeEventArgs.ServerName);
 }