public MessageEventArgs(NetUser from, string message, MessageSource source, string sourceInfo) { this.message = message; this.from = from; this.source = source; this.sourceInfo = sourceInfo; }
internal void HandleLeft(NetUser user) { if (Left != null) { Left(this, new UserEventArgs(user)); } UpdateUsers(); }
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; }
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]); } }
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); }
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); }
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."; }
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; } } }
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."); }
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); } }
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>()); }
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; } }
protected void OnQueryMessage(NetUser user, string message) { user.HandleMessage(user, message); if (UserQuery != null) { UserQuery(this, new MessageEventArgs(user, message, MessageSource.Query)); } }
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; } }
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) { }
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); }
protected void UserLeft(NetChannel channel, NetUser user) { if (channel != null) { channel.HandleLeft(user); } }
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)); } }
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); }
internal virtual void HandleCommand(NetUser from, CommandParser parser) { HandleCommand(this, from, parser); }