Merge branch 'general-devel' of github.com:TShock/TShock into general-devel
This commit is contained in:
commit
ee5e465218
3 changed files with 37 additions and 8 deletions
|
|
@ -195,7 +195,7 @@ namespace TShockAPI
|
||||||
|
|
||||||
[Description("Allows users to register any username with /register")] public bool AllowRegisterAnyUsername;
|
[Description("Allows users to register any username with /register")] public bool AllowRegisterAnyUsername;
|
||||||
|
|
||||||
[Description("Allows users to register any username with /register")]
|
[Description("Allows users to login with any username with /login")]
|
||||||
public bool AllowLoginAnyUsername;
|
public bool AllowLoginAnyUsername;
|
||||||
|
|
||||||
public static ConfigFile Read(string path)
|
public static ConfigFile Read(string path)
|
||||||
|
|
|
||||||
|
|
@ -58,9 +58,12 @@ namespace TShockAPI
|
||||||
public int Type { get; set; }
|
public int Type { get; set; }
|
||||||
public byte EditType { get; set; }
|
public byte EditType { get; set; }
|
||||||
}
|
}
|
||||||
public static HandlerList<TileEditEventArgs> TileEdit = new HandlerList<TileEditEventArgs>();
|
public static HandlerList<TileEditEventArgs> TileEdit;
|
||||||
public static bool OnTileEdit(int x, int y, int type, byte editType)
|
public static bool OnTileEdit(int x, int y, int type, byte editType)
|
||||||
{
|
{
|
||||||
|
if (TileEdit == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
var args = new TileEditEventArgs
|
var args = new TileEditEventArgs
|
||||||
{
|
{
|
||||||
X = x,
|
X = x,
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
public class HandlerList<T> where T : EventArgs
|
public class HandlerList<T> where T : EventArgs
|
||||||
{
|
{
|
||||||
protected class HandlerObject
|
public class HandlerItem
|
||||||
{
|
{
|
||||||
public EventHandler<T> Handler { get; set; }
|
public EventHandler<T> Handler { get; set; }
|
||||||
public HandlerPriority Priority { get; set; }
|
public HandlerPriority Priority { get; set; }
|
||||||
|
|
@ -19,10 +19,10 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
protected object HandlerLock = new object();
|
protected object HandlerLock = new object();
|
||||||
protected List<HandlerObject> Handlers { get; set; }
|
protected List<HandlerItem> Handlers { get; set; }
|
||||||
public HandlerList()
|
public HandlerList()
|
||||||
{
|
{
|
||||||
Handlers = new List<HandlerObject>();
|
Handlers = new List<HandlerItem>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -32,10 +32,15 @@ namespace TShockAPI
|
||||||
/// <param name="priority">Priority of the delegate</param>
|
/// <param name="priority">Priority of the delegate</param>
|
||||||
/// <param name="gethandled">Should the handler receive a call even if it has been handled</param>
|
/// <param name="gethandled">Should the handler receive a call even if it has been handled</param>
|
||||||
public void Register(EventHandler<T> handler, HandlerPriority priority = HandlerPriority.Normal, bool gethandled = false)
|
public void Register(EventHandler<T> handler, HandlerPriority priority = HandlerPriority.Normal, bool gethandled = false)
|
||||||
|
{
|
||||||
|
Register(Create(handler, priority, gethandled));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Register(HandlerItem obj)
|
||||||
{
|
{
|
||||||
lock (HandlerLock)
|
lock (HandlerLock)
|
||||||
{
|
{
|
||||||
Handlers.Add(new HandlerObject { Handler = handler, Priority = priority, GetHandled = gethandled });
|
Handlers.Add(obj);
|
||||||
Handlers = Handlers.OrderBy(h => (int)h.Priority).ToList();
|
Handlers = Handlers.OrderBy(h => (int)h.Priority).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -50,11 +55,11 @@ namespace TShockAPI
|
||||||
|
|
||||||
public void Invoke(object sender, T e)
|
public void Invoke(object sender, T e)
|
||||||
{
|
{
|
||||||
List<HandlerObject> handlers;
|
List<HandlerItem> handlers;
|
||||||
lock (HandlerLock)
|
lock (HandlerLock)
|
||||||
{
|
{
|
||||||
//Copy the list for invoking as to not keep it locked during the invokes
|
//Copy the list for invoking as to not keep it locked during the invokes
|
||||||
handlers = new List<HandlerObject>(Handlers);
|
handlers = new List<HandlerItem>(Handlers);
|
||||||
}
|
}
|
||||||
|
|
||||||
var hargs = e as HandledEventArgs;
|
var hargs = e as HandledEventArgs;
|
||||||
|
|
@ -66,6 +71,27 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static HandlerItem Create(EventHandler<T> handler, HandlerPriority priority = HandlerPriority.Normal, bool gethandled = false)
|
||||||
|
{
|
||||||
|
return new HandlerItem { Handler = handler, Priority = priority, GetHandled = gethandled };
|
||||||
|
}
|
||||||
|
public static HandlerList<T> operator +(HandlerList<T> hand, HandlerItem obj)
|
||||||
|
{
|
||||||
|
if (hand == null)
|
||||||
|
hand = new HandlerList<T>();
|
||||||
|
|
||||||
|
hand.Register(obj);
|
||||||
|
return hand;
|
||||||
|
}
|
||||||
|
public static HandlerList<T> operator +(HandlerList<T> hand, EventHandler<T> handler)
|
||||||
|
{
|
||||||
|
if (hand == null)
|
||||||
|
hand = new HandlerList<T>();
|
||||||
|
|
||||||
|
hand.Register(Create(handler));
|
||||||
|
return hand;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum HandlerPriority
|
public enum HandlerPriority
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue