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()); }
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); } }
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); } }
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); } }