#region Arthea License
/***********************************************************************
* Arthea MUD by R. Jennings (2007) http://arthea.googlecode.com/ *
* By using this code you comply with the Artistic and GPLv2 Licenses. *
***********************************************************************/
#endregion
using Arthea.Connections.Players;
using Arthea.Continents.Areas.Characters;
using Arthea.Continents.Areas.Items;
using Arthea.Environment;
namespace Arthea
{
/// <summary>
/// Social messages
/// </summary>
public class Social
{
#region [rgn] Fields (11)
private string charFound;
private string charNoArg;
private string charNotFound;
private string charObjFound;
private string charSelf;
private string name;
private string othersFound;
private string othersNoArg;
private string othersObjFound;
private string othersSelf;
private string victimFound;
#endregion [rgn]
#region [rgn] Constructors (2)
/// <summary>
/// Initializes a new instance of the <see cref="Social"/> class.
/// </summary>
/// <param name="name">The name.</param>
public Social(string name)
{
this.name = name;
}
/// <summary>
/// Initializes a new instance of the <see cref="Social"/> class.
/// </summary>
public Social()
{
}
#endregion [rgn]
#region [rgn] Properties (11)
/// <summary>
/// Gets or sets the char's message when a victim found.
/// </summary>
/// <value>The message.</value>
public string CharFound
{
get { return charFound; }
set { charFound = value; }
}
/// <summary>
/// Gets or sets the char message with no arg.
/// </summary>
/// <value>The message.</value>
public string CharNoArg
{
get { return charNoArg; }
set { charNoArg = value; }
}
/// <summary>
/// Gets or sets the char's message when a victim is not found.
/// </summary>
/// <value>The message.</value>
public string CharNotFound
{
get { return charNotFound; }
set { charNotFound = value; }
}
/// <summary>
/// Gets or sets the char's message when an obj is found.
/// </summary>
/// <value>The message.</value>
public string CharObjFound
{
get { return charObjFound; }
set { charObjFound = value; }
}
/// <summary>
/// Gets or sets the char message when applied to themself.
/// </summary>
/// <value>The message.</value>
public string CharSelf
{
get { return charSelf; }
set { charSelf = value; }
}
/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>The name.</value>
public string Name
{
get { return name; }
set { name = value; }
}
/// <summary>
/// Gets or sets the others message when victim is found.
/// </summary>
/// <value>The message.</value>
public string OthersFound
{
get { return othersFound; }
set { othersFound = value; }
}
/// <summary>
/// Gets or sets the others message with no arg.
/// </summary>
/// <value>The message.</value>
public string OthersNoArg
{
get { return othersNoArg; }
set { othersNoArg = value; }
}
/// <summary>
/// Gets or sets the others message when an obj is found.
/// </summary>
/// <value>The others obj found.</value>
public string OthersObjFound
{
get { return othersObjFound; }
set { othersObjFound = value; }
}
/// <summary>
/// Gets or sets the others message when char uses themself.
/// </summary>
/// <value>The message.</value>
public string OthersSelf
{
get { return othersSelf; }
set { othersSelf = value; }
}
/// <summary>
/// Gets or sets the victims message.
/// </summary>
/// <value>The message.</value>
public string VictimFound
{
get { return victimFound; }
set { victimFound = value; }
}
#endregion [rgn]
#region [rgn] Methods (3)
// [rgn] Public Methods (3)
/// <summary>
/// Creates an instance for editing.
/// </summary>
/// <param name="player">the player creating</param>
/// <param name="argument">additional arguments</param>
public static void Create(Player player, String argument)
{
Social social = new Social(argument);
Lists.Socials.Add(social);
player.Connection.Edit(social);
player.WriteLine("Social created.");
}
/// <summary>
/// Parses a social caused by a player
/// </summary>
/// <param name="player">the player socializing</param>
/// <param name="argument">additional arguments</param>
public void Parse(Player player, String argument)
{
if (!argument)
{
player.Act(null, null, Act.ToRoom, othersNoArg);
player.Act(null, null, Act.ToPlayer, charNoArg);
return;
}
Character victim = player.Room.Characters.FindPlayer(argument);
if (victim == null)
{
victim = player.Room.Characters.FindName(argument);
}
if (victim == null)
{
Item obj = player.Room.Items.FindName(argument);
if (obj == null)
{
player.WriteLine("That person or object is not here.");
return;
}
player.Act(obj, obj, Act.ToPlayer, charObjFound);
player.Act(obj, obj, Act.ToRoom, othersObjFound);
return;
}
if (victim == player)
{
player.Act(null, victim, Act.ToPlayer, charSelf);
player.Act(null, victim, Act.ToRoom, othersSelf);
return;
}
player.Act(null, victim, Act.ToPlayer, charFound);
player.Act(null, victim, Act.ToRoom, othersFound);
return;
}
/// <summary>
/// Removes all links to this social
/// </summary>
public void Release()
{
Lists.Socials.Remove(this);
}
#endregion [rgn]
}
}