From 275ca6f9d107532b63c4e447f2b9ae0fc1149759 Mon Sep 17 00:00:00 2001 From: White Date: Mon, 16 May 2016 15:30:56 +0930 Subject: [PATCH] Added a ConcurrentDictionary for plugin data to TSPlayer --- TShockAPI/TSPlayer.cs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index ce4d3e10..031a3b95 100755 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -17,6 +17,7 @@ along with this program. If not, see . */ using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.IO; @@ -352,6 +353,11 @@ namespace TShockAPI /// The current region this player is in, or null if none. /// public Region CurrentRegion = null; + + /// + /// Contains data stored by plugins + /// + protected ConcurrentDictionary data => new ConcurrentDictionary(); /// /// Whether the player is a real, human, player on the server. @@ -535,6 +541,37 @@ namespace TShockAPI } } + /// + /// Stores an object on this player, accessible with the given key + /// + /// Type of the object being stored + /// Key with which to access the object + /// Object to store + public void SetData(string key, T value) + { + data.TryAdd(key, value); + } + + /// + /// Returns the stored object associated with the given key + /// + /// Type of the object being retrieved + /// Key with which to access the object + /// Stored object, or default(T) if not found + /// True if the value was retrieved, else False + public bool GetData(string key, out T value) + { + object obj; + if (!data.TryGetValue(key, out obj)) + { + value = default(T); + return false; + } + + value = (T)obj; + return true; + } + public TSPlayer(int index) { TilesDestroyed = new Dictionary();