public MessageEventArgs(NetUser from, string message, MessageSource source, string sourceInfo)
 {
     this.message = message;
     this.from = from;
     this.source = source;
     this.sourceInfo = sourceInfo;
 }
Exemple #2
0
 internal void HandleLeft(NetUser user)
 {
     if (Left != null) {
         Left(this, new UserEventArgs(user));
     }
     UpdateUsers();
 }
Exemple #3
0
        public IGame CreateGame(NetUser creator, string name, string type)
        {
            System.Diagnostics.Debug.Assert(bot.Master != null);
            System.Diagnostics.Debug.Assert(bot.Config != null);

            if(games.Any(g => g.Name.ToLower() == name.ToLower())) {
                throw new DuplicateNameException("A game with the name " + name + " already exists.");
            }

            IGame game = null;
            switch(type) {
                case "mafia":
                    game = new MafiaGame.MafiaGame(bot, creator, name);
                    break;
                case "barebones":
                    game = new Barebones.BarebonesGame(bot, creator, name);
                    break;
                default:
                    throw new InvalidGameTypeException("Gametype " + type + " not found.");

            }
            game.Creator = creator;

            if(game == null) {
                throw new InvalidGameTypeException("Unknown game type " + type);
            }

            games.Add(game);

            creator.Commands.Add(new Commands.DestroyCommand(this, game));

            return game;
        }
Exemple #4
0
 internal void HandleJoined(NetUser user)
 {
     if (Joined != null) {
         Joined(this, new UserEventArgs(user));
     }
     UpdateUsers();
 }
 public string Execute(NetUser from, NetObject source, string[] args)
 {
     if(args.Length == 0) {
         return ListVariants();
     }
     else {
         return GetDescription(args[0]);
     }
 }
Exemple #6
0
        public BasicGame(Bot bot, NetUser creator, string name, string channelPrefix)
        {
            this.name = name;
            this.creator = creator;

            this.bot = bot;
            this.channel = Bot.Master.GetChannel("#" + channelPrefix + name);

            this.channel.Joined += new EventHandler<UserEventArgs>(OnJoin);
            this.channel.Left += new EventHandler<UserEventArgs>(OnLeft);
        }
Exemple #7
0
 public void Replace(NetUser oldUser, NetUser newUser)
 {
     oldUser.Commands.RemoveAll(c => c.Parent == this);
     Players.Remove(oldUser);
     Players.Add(newUser);
     VillageMember member = mapper.Remove(oldUser);
     member.Name = newUser.Name;
     mapper.Add(newUser, member);
     member.Outside = new MafiaUser(this, newUser, member);
     AddCommands(newUser);
 }
        public BarebonesGame(Bot bot, NetUser creator, string name)
            : base(bot, creator, name, bot.Config.Descendants("Games").Descendants("Mafia").Descendants("Prefix").First().Value)
        {
            Channel.Commands.Add(new Commands.VoteCommand(this));
            Channel.Commands.Add(new Commands.UnvoteCommand(this));
            Channel.Commands.Add(new Commands.VotecountCommand(this));

            votes = new VoteCounter<NetUser>(Players, bot.Master.GetUser("Nolynch"));

            votes.MajorityReached += new EventHandler<MajorityReachedEventArgs<NetUser>>(OnMajorityReached);

            IgnoredPlayers.Add(creator);
        }
Exemple #9
0
        public MafiaUser(MafiaGame game, NetUser user, VillageMember member)
        {
            this.user = user;
            this.game = game;
            this.member = member;

            AddMafiaCommands();

            member.PowerGained += new EventHandler<PowerEventArgs>(OnPowerGained);
            member.PowerLost += new EventHandler<PowerEventArgs>(OnPowerLost);

            member.Faction.PowerGained += new EventHandler<PowerEventArgs>(OnFactionPowerGained);
            member.Faction.PowerLost += new EventHandler<PowerEventArgs>(OnFactionPowerLost);
        }
        public string Kill(NetUser player)
        {
            if(!Players.Contains(player)) {
                return player.Name + " is not a player.";
            }
            if(IgnoredPlayers.Contains(player)) {
                return player.Name + " is already dead.";
            }

            IgnoredPlayers.Add(player);
            Channel.Devoice(player.Name);
            votes.Voters.Remove(player);

            return player.Name + " has been killed.";
        }
Exemple #11
0
        internal virtual void HandleCommand(NetObject source, NetUser from, CommandParser parser)
        {
            foreach(ICommand command in this.commands.FindAll(c => c.Name.ToLower() == parser.Command.ToLower())) {
                Log.Debug("Command ##" + parser.Command + " from " + from.Name + " >> " + command.GetType().FullName);
                if (command.AllowedInPublic || !(this is NetChannel)) {
                    string result = null;
                    try {
                        result = command.Execute(from, source, parser.Args);
                    }
                    catch(MafiaException ex) {
                        result = ex.Message;
                    }
                    catch(Exception ex) {
                        result = "Error: " + ex.ToString();
                        Log.Warn("Error executing command: " + ex.ToString() + " (" + ex.StackTrace + ")");
                    }
                    if (!String.IsNullOrEmpty(result)) {
                        source.SendMessage(result);
                    }

                    break;
                }
            }
        }
Exemple #12
0
 public void AddUser(NetUser user)
 {
     players.Add(user);
     channel.SendMessage(user.Name + " has joined the game (" + GetPlayerCount() + " now). To leave the game, leave the channel or use the ##leave command.");
 }
Exemple #13
0
        internal virtual void HandleMessage(NetUser from, string message)
        {
            if (MessageReceived != null) {
                MessageReceived(this, new MessageEventArgs(from, message, source));
            }

            CommandParser parser = new CommandParser(CommandPrefix);
            parser.Parse(message);
            if(parser.IsValid) {
                HandleCommand(from, parser);
            }
        }
Exemple #14
0
 public MafiaGame(Bot bot, NetUser creator, string name)
     : base(bot, creator, name, bot.Config.Descendants("Games").Descendants("Mafia").Descendants("Prefix").First().Value)
 {
     SetVariant("random", new List<string>());
 }
Exemple #15
0
 protected override void AddCommands(NetUser user)
 {
     base.AddCommands(user);
     switch (State) {
         case GameState.Forming:
             if (user == Creator) {
                 this.Creator.Commands.Add(new Commands.VariantCommand(this));
                 this.Creator.Commands.Add(new Commands.AdminCommand(this));
             }
             break;
         case GameState.Running:
             if (Players.Contains(user) && !IgnoredPlayers.Contains(user)) {
                 (Mapper[user].Outside as MafiaUser).AddMafiaCommands();
                 user.Commands.Add(new Commands.RoleCommand(this));
             }
             if (user == Creator) {
                 this.Creator.Commands.Add(new Commands.ReplaceCommand(this));
                 this.Creator.Commands.Add(new Commands.ModkillCommand(this));
                 this.Creator.Commands.Add(new Commands.DeadlineCommand(this));
             }
             break;
     }
 }
Exemple #16
0
 protected void OnQueryMessage(NetUser user, string message)
 {
     user.HandleMessage(user, message);
     if (UserQuery != null) {
         UserQuery(this, new MessageEventArgs(user, message, MessageSource.Query));
     }
 }
Exemple #17
0
 protected void OnChannelMessage(NetUser user, string channel, string message)
 {
     if (channels.ContainsKey(channel)) {
         channels[channel].HandleMessage(user, message);
     }
     if (ChannelMessage != null) {
         ChannelMessage(this, new MessageEventArgs(user, message, MessageSource.Channel, channel));
     }
 }
        protected override void AddCommands(NetUser user)
        {
            base.AddCommands(user);

            switch(State) {
                case GameState.Running:
                    if(user == Creator) {
                        user.Commands.Add(new Commands.VoiceCommand(this, !voiceState));
                        user.Commands.Add(new Commands.KillCommand(this));
                        user.Commands.Add(new Commands.ResetCommand(this));
                        user.Commands.Add(new Commands.AddCommand(this));
                    }
                    break;
            }
        }
Exemple #19
0
 protected void UserJoined(NetChannel channel, NetUser user)
 {
     if (channel != null) {
         channel.HandleJoined(user);
     }
 }
 public UserEventArgs(NetUser user)
 {
     this.user = user;
 }
        public string Vote(NetUser source, NetUser target)
        {
            if(!Players.Contains(target)) {
                return target.Name + " is not in the game.";
            }

            if(votes.Vote(source, target)) {
                return votes.GetVoteCount(true);
            }
            else {
                return "You are already voting for someone.";
            }
        }
 public MessageEventArgs(NetUser from, string message, MessageSource source)
     : this(from,message,source,null)
 {
 }
 public MessageEventArgs(NetUser from, string message)
     : this(from, message, MessageSource.Unknown)
 {
 }
Exemple #24
0
        public void RemoveUser(NetUser user)
        {
            players.Remove(user);
            channel.SendMessage(user.Name + " has left the game (" + GetPlayerCount() + " players now).");

            user.Commands.RemoveAll(c => c.Parent == this);
        }
Exemple #25
0
 protected void UserLeft(NetChannel channel, NetUser user)
 {
     if (channel != null) {
         channel.HandleLeft(user);
     }
 }
Exemple #26
0
        protected virtual void AddCommands(NetUser user)
        {
            user.Commands.RemoveAll(c => c.Parent == this);
            switch(State) {
                case GameState.Forming:
                    user.Commands.Add(new Commands.LeaveCommand(this));
                    if(user == creator) {
                        user.Commands.Add(new Commands.StartCommand(this));
                    }
                    break;
            }

            user.Commands.Add(new Commands.HelpCommand());

            if(user == creator) {
                user.Commands.Add(new Commands.DestroyCommand(Bot.Games, this));
            }
        }
Exemple #27
0
 internal override void HandleCommand(NetUser from, CommandParser parser)
 {
     base.HandleCommand(from, parser);
     from.HandleCommand(this, from, parser);
 }
 public string Unvote(NetUser source)
 {
     votes.Unvote(source);
     return votes.GetVoteCount(true);
 }
Exemple #29
0
 internal virtual void HandleCommand(NetUser from, CommandParser parser)
 {
     HandleCommand(this, from, parser);
 }