Esempio n. 1
0
 public ServerCallback(Fancyauth fancyauth, Steam.SteamListener steamListener, Server server, ContextCallbackManager contextCallbackMgr, CommandManager cmdmgr)
     : base(fancyauth.StashCallback)
 {
     Fancyauth     = fancyauth;
     SteamListener = steamListener;
     Server        = server;
     CommandMgr    = cmdmgr;
 }
Esempio n. 2
0
        async Task ISteamEventForwarder.OnChatMessage(SteamListener steamListener, SteamID sender, string message)
        {
            using (var context = await FancyContext.Connect())
                using (var transact = context.Database.BeginTransaction(IsolationLevel.Serializable))
                {
                    var steam64     = unchecked ((long)sender.ConvertToUInt64());
                    var currentGame = unchecked ((int)(steamListener.GetCurrentGameId(sender) ?? 0));
                    var user        = await context.Users.Where(x => x.Membership.SteamId == steam64).SingleAsync();

                    if (message == "@fancy-ng forward")
                    {
                        context.SteamChatForwardingAssociations.Add(new Model.SteamChatForwardingAssociation
                        {
                            User  = user,
                            AppId = currentGame,
                        });
                    }
                    else if (message == "@fancy-ng noforward")
                    {
                        var assoc = await context.SteamChatForwardingAssociations.FindAsync(user.Id, currentGame);

                        if (assoc != null)
                        {
                            context.SteamChatForwardingAssociations.Remove(assoc);
                        }
                    }
                    else if (message.StartsWith("@fancy-ng "))
                    {
                        steamListener.SendMessage(sender, "Unknown command. Commands are: forward, noforward");
                    }
                    else
                    {
                        // foward to mumble
                        var mumbleUser = (await Server.GetUsers()).Values.Single(x => x.userid == user.Id);
                        await Server.SendMessageChannel(mumbleUser.channel, false, user.Name + "(via Steam): " + message);
                    }

                    await context.SaveChangesAsync();

                    transact.Commit();
                }
        }