Пример #1
0
        public override Task OnConnected()
        {
            var name = User.Identity.Name;

            if (UserMapping.GetConnections(name).Count() < 0)
            {
                Clients.AllExcept(Context.ConnectionId).userConnect(name);
            }
            Clients.Caller.connectedUsers(UserMapping.Content().Union(new[] { name }));
            return(base.OnConnected());
        }
Пример #2
0
        public void InitBattle()
        {
            var userUnit = new BattleUnit()
            {
                UserName        = Context.User.Identity.Name,
                ID              = User.UserId,
                Bot             = false,
                Characteristics = ChService.GetFullUserCharacteristics(User.UserId)
            };

            battleQueue.Enqueue(userUnit);
            if (battleQueue.Count >= 2)
            {
                Debug.WriteLine(battleQueue.Count);
                BattleUnit u1;
                BattleUnit u2;
                battleQueue.TryDequeue(out u1);
                battleQueue.TryDequeue(out u2);
                Debug.WriteLine(u1);
                Debug.WriteLine(u2);


                IBattle battle = Factory.Battle(u1, u2);
                foreach (var con in UserMapping.GetConnections(u1.UserName))
                {
                    Groups.Add(con, battle.ID).Wait();
                }
                foreach (var con in UserMapping.GetConnections(u2.UserName))
                {
                    Groups.Add(con, battle.ID).Wait();
                }
                Engine.RegisterBattle(battle);

                Clients.Group(battle.ID).sendData(
                    new
                {
                    UserName = u1.UserName,
                    Hp       = u1.Characteristics.Health,
                    Hp_Full  = u1.Characteristics.Health_Full
                },
                    new
                {
                    UserName = u2.UserName,
                    Hp       = u2.Characteristics.Health,
                    Hp_Full  = u2.Characteristics.Health_Full
                }
                    );
                Clients.Group(battle.ID).battleRegistered(battle.ID);
            }
        }
Пример #3
0
        public void Send(string message)
        {
            string pat   = @"^[\s]*private[\s]*\[[a-zA-Z1-9]*]:[\s]*";
            Regex  regex = new Regex(pat);

            if (regex.IsMatch(message))
            {
                string priv = regex.Match(message).Value;
                regex = new Regex(@"\[[a-zA-Z1-9]*]");
                string user = regex.Match(priv).Value.Trim('[', ']');
                Clients.Clients(UserMapping.GetConnections(user).ToList()).addNewMessageToPage(Context.User.Identity.Name, message);
                Clients.Caller.addNewMessageToPage(Context.User.Identity.Name, message);
            }
            else
            {
                Clients.All.addNewMessageToPage(Context.User.Identity.Name, message);
            }
        }
Пример #4
0
        private bool ExecuteMessage(IMessage message)
        {
            var result = Engine.Execute(message);

            if (result.Result.Status == BattleStatus.Killed)
            {
                foreach (var user in result.UserSpecificReward.Keys)
                {
                    var reward = result.UserSpecificReward[user];
                    ChService.SaveReward(reward, result.UsersStates[user].Characteristics);
                    Clients.Clients(UserMapping.GetConnections(user).ToList()).battleFinished(result.Result, reward);
                }
                return(true);
            }
            else
            {
                Clients.Group(message.BattleId).battleResult(result.Result);
                return(false);
            }
        }