Beispiel #1
0
        public async Task Init(LangKeys langKey)
        {
            try
            {
                await _dbProvider.ContextActionAsync(async c =>
                {
                    var cid  = Context.ConnectionId;
                    var data = await _initUserAsync(c, cid, langKey);
                    var cu   = (ConnectionUser)data[ConnectionUser.ViewKey];
                    _gameRunner.OnConnected(cid, cu.UserId);
                    data.Add("serverTime", UnixTime.UtcNowMs());


                    await Clients.Caller.InvokeAsync("onUserInitialized", _gameRunner.OnlineUserCount, cu.UserId, cu.AllianceId, data);

                    await Clients.Others.InvokeAsync("onUserInitialized", _gameRunner.OnlineUserCount, cu.UserId,
                                                     cu.AllianceId);
                    return(true);
                });
            }
            catch (Exception e)
            {
                await Clients.Caller.InvokeAsync("disconnect", true);

                throw new HubException(e.Message, e);
            }
        }
Beispiel #2
0
    public static int GetKeyIndex(string key)
    {
        if (!string.IsNullOrEmpty(key))
        {
            return(LangKeys.IndexOf(key));
        }

        return(-1);
    }
 public static void SetCulture(LangKeys langKey)
 {
     LocalizerService.SetCulture(langKey);
 }
 public static void SetCulture(LangKeys langKey)
 {
     SetCulture(langKey.ToString());
 }
        private async Task <Dictionary <string, object> > _initUserAsync(IDbConnection connection, string curInitConnectionUserId, LangKeys langKey)
        {
            try
            {
                var user = _getPrincipalUser();
                //todo поставил заглушку, сейчас можно извлеч имя или обращатсья в базу
                var authId             = user.GetAuthUserId();
                var oldUserConnections = _getLocalUserListByAuthId(connection, authId);
                if (oldUserConnections != null && oldUserConnections.Any())
                {
                    foreach (var conItem in oldUserConnections)
                    {
                        var cId = conItem.ConnectionId;
                        var uId = conItem.UserId;
                        _removeUserFromStorage(cId);
                        await conItem.RemoveUserFromAllHubGroups(Groups);

                        _gameRunner.OnDisonnected(cId, uId);
                        await Clients.Client(conItem.ConnectionId).InvokeAsync("disconnect", true);
                    }
                }
                var data = _estateOwnService.InitUser(connection, user, _svp);
                var cr   = (ConnectionUser)data[ConnectionUser.ViewKey];
                if (cr == null)
                {
                    throw new NotImplementedException("MainGameHub.UnitUser");
                }
                cr.Lang         = langKey;
                cr.ConnectionId = curInitConnectionUserId;
                var addGroupsTasks = new List <Task> {
                    cr.AddOrReplaceAllianceGroupAsync(Groups)
                };
                var userAllianceRole = AllianceRoleHelper.GetByRoleId(cr.AllianceRoleId);

                if (cr.AllianceId != (byte)NpcAllianceId.Confederation)
                {
                    if (userAllianceRole.AcceptNewMembers)
                    {
                        addGroupsTasks.Add(cr.AddOrReplaceAllianceRecrutManagerGroupAsync(Groups));
                    }
                }

                var messages           = _channelService.InitialPlanshetChannels(connection, cr.UserId, cr.AllianceId, userAllianceRole);
                var privateChannesData = messages.Bodys[0].TemplateData as ChannelTab;

                if (privateChannesData != null && privateChannesData.Collection.Any())
                {
                    addGroupsTasks.AddRange(privateChannesData.Collection.Select(privateChannesl =>
                                                                                 cr.AddOrReplacePrivateChannelGroupNameAsync(Groups, privateChannesl.Key)));
                }
                var groupChannesData = messages.Bodys[1].TemplateData as ChannelTab;
                if (groupChannesData != null && groupChannesData.Collection.Any())
                {
                    addGroupsTasks.AddRange(groupChannesData.Collection.Select(groupChannel =>
                                                                               cr.AddOrReplaceGroupChannelGroupNameAsync(Groups, groupChannel.Key,
                                                                                                                         groupChannel.Value.ChannelName)));
                }

                await Task.WhenAll(addGroupsTasks);

                data[messages.UniqueId] = messages;

                data[ConnectionUser.ViewKey] = _hubCache.AddOrUpdateLocal(cr, true);

                var confederationPlanshet = _confederationService.InitialPlanshetConfederation(connection, _gameUserService);
                data[confederationPlanshet.UniqueId] = confederationPlanshet;
                var estates         = (IList <EstateItemOut>)data[EstateItemOut.ViewKey];
                var planetIds       = estates.Where(i => i.OwnId != 0).Select(i => i.OwnId).ToList();
                var journalPlanshet = _journalOutService.InitialPlanshet(connection, cr.UserId, planetIds);
                data[journalPlanshet.UniqueId] = journalPlanshet;
                return(data);
            }
            catch (Exception e)
            {
                throw new HubException(e.Message, e);
            }
        }
 public string this[LangKeys langKey] => Phrases.ContainsKey(langKey) ? Phrases[langKey] : null;
Beispiel #7
0
 public static void SetLangKey(DependencyObject elem, LangKeys value)
 {
     elem.SetValue(LangKeyProperty, value);
 }
 public static string ToInvariant(this LangKeys key)
 {
     return(key.ToString().ToLower());
 }