Changeset 325 for binary-improvements


Ignore:
Timestamp:
Sep 4, 2018, 1:00:48 PM (10 months ago)
Author:
alloc
Message:

Code style cleanup (mostly whitespace changes, enforcing braces, using cleanup)

Location:
binary-improvements
Files:
86 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/src/API.cs

    r324 r325  
    1 using System;
    21using System.Collections.Generic;
    32
    4 namespace AllocsFixes
    5 {
     3namespace AllocsFixes {
    64        public class API : IModApi {
     5                public void InitMod () {
     6                        ModEvents.GameAwake.RegisterHandler (GameAwake);
     7                        ModEvents.GameShutdown.RegisterHandler (GameShutdown);
     8                        ModEvents.SavePlayerData.RegisterHandler (SavePlayerData);
     9                        ModEvents.PlayerSpawning.RegisterHandler (PlayerSpawning);
     10                        ModEvents.PlayerDisconnected.RegisterHandler (PlayerDisconnected);
     11                        ModEvents.ChatMessage.RegisterHandler (ChatMessage);
     12                }
    713
    814                public void GameAwake () {
     
    1319                        StateManager.Shutdown ();
    1420                }
    15                
     21
    1622                public void SavePlayerData (ClientInfo _cInfo, PlayerDataFile _playerDataFile) {
    1723                        PlayerDataStuff.GM_SavePlayerData (_cInfo, _playerDataFile);
     
    2127                        AllocsLogFunctions.RequestToSpawnPlayer (_cInfo, _chunkViewDim, _playerProfile);
    2228                }
    23                
     29
    2430                public void PlayerDisconnected (ClientInfo _cInfo, bool _bShutdown) {
    2531                        AllocsLogFunctions.PlayerDisconnected (_cInfo, _bShutdown);
    2632                }
    2733
    28                 public bool ChatMessage (ClientInfo _cInfo, EChatType _type, int _senderId, string _msg, string _mainName, bool _localizeMain, List<int> _recipientEntityIds) {
     34                public bool ChatMessage (ClientInfo _cInfo, EChatType _type, int _senderId, string _msg, string _mainName,
     35                        bool _localizeMain, List<int> _recipientEntityIds) {
    2936                        return ChatHookExample.Hook (_cInfo, _type, _msg, _mainName);
    30                 }
    31 
    32                 public void InitMod () {
    33                         ModEvents.GameAwake.RegisterHandler (GameAwake);
    34                         ModEvents.GameShutdown.RegisterHandler (GameShutdown);
    35                         ModEvents.SavePlayerData.RegisterHandler (SavePlayerData);
    36                         ModEvents.PlayerSpawning.RegisterHandler (PlayerSpawning);
    37                         ModEvents.PlayerDisconnected.RegisterHandler (PlayerDisconnected);
    38                         ModEvents.ChatMessage.RegisterHandler (ChatMessage);
    3937                }
    4038        }
    4139}
    42 
  • binary-improvements/7dtd-server-fixes/src/AllocsLogFunctions.cs

    r273 r325  
     1using System;
    12using AllocsFixes.PersistentData;
    2 using System;
    3 using System.Collections.Generic;
    4 using UnityEngine;
    53
    6 namespace AllocsFixes
    7 {
    8         public class AllocsLogFunctions
    9         {
    10                 public static void RequestToSpawnPlayer (ClientInfo _cInfo, int _chunkViewDim, PlayerProfile _playerProfile)
    11                 {
     4namespace AllocsFixes {
     5        public class AllocsLogFunctions {
     6                public static void RequestToSpawnPlayer (ClientInfo _cInfo, int _chunkViewDim, PlayerProfile _playerProfile) {
    127                        try {
    138                                Log.Out ("Player connected" +
    14                                         ", entityid=" + _cInfo.entityId +
    15                                         ", name=" + _cInfo.playerName +
    16                                         ", steamid=" + _cInfo.playerId +
    17                                         ", steamOwner=" + _cInfo.ownerId +
    18                                         ", ip=" + _cInfo.ip
     9                                         ", entityid=" + _cInfo.entityId +
     10                                         ", name=" + _cInfo.playerName +
     11                                         ", steamid=" + _cInfo.playerId +
     12                                         ", steamOwner=" + _cInfo.ownerId +
     13                                         ", ip=" + _cInfo.ip
    1914                                );
    2015
    2116                                PersistentContainer.Instance.Players [_cInfo.playerId, true].SetOnline (_cInfo);
    22                                 PersistentData.PersistentContainer.Instance.Save ();
     17                                PersistentContainer.Instance.Save ();
    2318                        } catch (Exception e) {
    2419                                Log.Out ("Error in AllocsLogFunctions.RequestToSpawnPlayer: " + e);
     
    2621                }
    2722
    28                 public static void PlayerDisconnected (ClientInfo _cInfo, bool _bShutdown)
    29                 {
     23                public static void PlayerDisconnected (ClientInfo _cInfo, bool _bShutdown) {
    3024                        try {
    3125                                Player p = PersistentContainer.Instance.Players [_cInfo.playerId, true];
     
    3529                                        Log.Out ("Disconnected player not found in client list...");
    3630                                }
    37                                 PersistentData.PersistentContainer.Instance.Save ();
     31
     32                                PersistentContainer.Instance.Save ();
    3833                        } catch (Exception e) {
    3934                                Log.Out ("Error in AllocsLogFunctions.PlayerDisconnected: " + e);
  • binary-improvements/7dtd-server-fixes/src/AllocsUtils.cs

    r253 r325  
    1 using System;
     1using UnityEngine;
    22
    3 namespace AllocsFixes
    4 {
     3namespace AllocsFixes {
    54        public static class AllocsUtils {
    6 
    7                 public static string ColorToHex (UnityEngine.Color _color) {
    8                         return string.Format ("{0:X02}{1:X02}{2:X02}", (int)(_color.r * 255), (int)(_color.g * 255), (int)(_color.b * 255));
     5                public static string ColorToHex (Color _color) {
     6                        return string.Format ("{0:X02}{1:X02}{2:X02}", (int) (_color.r * 255), (int) (_color.g * 255),
     7                                (int) (_color.b * 255));
    98                }
    10 
    119        }
    1210}
    13 
  • binary-improvements/7dtd-server-fixes/src/AssemblyInfo.cs

    r244 r325  
    11using System.Reflection;
    2 using System.Runtime.CompilerServices;
    32
    43// Information about this assembly is defined by the following attributes.
    54// Change them to the values specific to your project.
    65
    7 [assembly: AssemblyTitle("7dtd-server-fixes")]
    8 [assembly: AssemblyDescription("")]
    9 [assembly: AssemblyConfiguration("")]
    10 [assembly: AssemblyCompany("")]
    11 [assembly: AssemblyProduct("")]
    12 [assembly: AssemblyCopyright("Alloc")]
    13 [assembly: AssemblyTrademark("")]
    14 [assembly: AssemblyCulture("")]
     6[assembly: AssemblyTitle ("7dtd-server-fixes")]
     7[assembly: AssemblyDescription ("")]
     8[assembly: AssemblyConfiguration ("")]
     9[assembly: AssemblyCompany ("")]
     10[assembly: AssemblyProduct ("")]
     11[assembly: AssemblyCopyright ("Alloc")]
     12[assembly: AssemblyTrademark ("")]
     13[assembly: AssemblyCulture ("")]
    1514
    1615// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
     
    1817// and "{Major}.{Minor}.{Build}.*" will update just the revision.
    1918
    20 [assembly: AssemblyVersion("0.0.0.0")]
     19[assembly: AssemblyVersion ("0.0.0.0")]
    2120
    2221// The following attributes are used to specify the signing key for the assembly,
     
    2524//[assembly: AssemblyDelaySign(false)]
    2625//[assembly: AssemblyKeyFile("")]
    27 
  • binary-improvements/7dtd-server-fixes/src/BlockingQueue.cs

    r190 r325  
    1 using System;
    21using System.Collections.Generic;
    32using System.Threading;
    43
    5 namespace AllocsFixes
    6 {
    7         public class BlockingQueue<T>
    8         {
    9                 private bool closing = false;
    10                 private Queue<T> queue = new Queue<T> ();
     4namespace AllocsFixes {
     5        public class BlockingQueue<T> {
     6                private readonly Queue<T> queue = new Queue<T> ();
     7                private bool closing;
    118
    12                 public void Enqueue (T item)
    13                 {
     9                public void Enqueue (T item) {
    1410                        lock (queue) {
    1511                                queue.Enqueue (item);
     
    1814                }
    1915
    20                 public T Dequeue ()
    21                 {
     16                public T Dequeue () {
    2217                        lock (queue) {
    2318                                while (queue.Count == 0) {
    2419                                        if (closing) {
    25                                                 return default(T);
     20                                                return default (T);
    2621                                        }
     22
    2723                                        Monitor.Wait (queue);
    2824                                }
     25
    2926                                return queue.Dequeue ();
    3027                        }
    3128                }
    3229
    33                 public void Close ()
    34                 {
     30                public void Close () {
    3531                        lock (queue) {
    3632                                closing = true;
     
    3834                        }
    3935                }
    40 
    4136        }
    4237}
    43 
  • binary-improvements/7dtd-server-fixes/src/ChatHookExample.cs

    r324 r325  
    1 using System;
    2 
    3 namespace AllocsFixes
    4 {
     1namespace AllocsFixes {
    52        public class ChatHookExample {
    6                 private const string ANSWER = "     [ff0000]I[-] [ff7f00]W[-][ffff00]A[-][80ff00]S[-] [00ffff]H[-][0080ff]E[-][0000ff]R[-][8b00ff]E[-]";
     3                private const string ANSWER =
     4                        "     [ff0000]I[-] [ff7f00]W[-][ffff00]A[-][80ff00]S[-] [00ffff]H[-][0080ff]E[-][0000ff]R[-][8b00ff]E[-]";
    75
    86                public static bool Hook (ClientInfo _cInfo, EChatType _type, string _message, string _playerName) {
     
    119                                        if (_cInfo != null) {
    1210                                                Log.Out ("Sent chat hook reply to {0}", _cInfo.playerId);
    13                                                 _cInfo.SendPackage (new NetPackageChat(EChatType.Whisper, -1, ANSWER, "", false, null));
     11                                                _cInfo.SendPackage (new NetPackageChat (EChatType.Whisper, -1, ANSWER, "", false, null));
    1412                                        } else {
    1513                                                Log.Error ("ChatHookExample: Argument _cInfo null on message: {0}", _message);
    1614                                        }
     15
    1716                                        return false;
    1817                                }
     
    2120                        return true;
    2221                }
    23 
    2422        }
    2523}
  • binary-improvements/7dtd-server-fixes/src/FileCache/AbstractCache.cs

    r324 r325  
    11namespace AllocsFixes.FileCache {
    2     public abstract class AbstractCache {
    3         public AbstractCache () {
    4         }
    5 
    6         public abstract byte[] GetFileContent (string filename);
    7     }
     2        public abstract class AbstractCache {
     3                public abstract byte[] GetFileContent (string filename);
     4        }
    85}
  • binary-improvements/7dtd-server-fixes/src/FileCache/DirectAccess.cs

    r199 r325  
    11using System;
    2 using System.Collections.Generic;
    32using System.IO;
    43
    5 namespace AllocsFixes.FileCache
    6 {
     4namespace AllocsFixes.FileCache {
    75        // Not caching at all, simply reading from disk on each request
    8         public class DirectAccess : AbstractCache
    9         {
    10 
    11                 public DirectAccess ()
    12                 {
    13                 }
    14 
    15                 public override byte[] GetFileContent (string filename)
    16                 {
     6        public class DirectAccess : AbstractCache {
     7                public override byte[] GetFileContent (string filename) {
    178                        try {
    189                                if (!File.Exists (filename)) {
     
    2415                                Log.Out ("Error in DirectAccess.GetFileContent: " + e);
    2516                        }
     17
    2618                        return null;
    2719                }
    28 
    2920        }
    3021}
    31 
  • binary-improvements/7dtd-server-fixes/src/FileCache/MapTileCache.cs

    r324 r325  
    22using System.IO;
    33using UnityEngine;
     4using Object = UnityEngine.Object;
    45
    5 namespace AllocsFixes.FileCache
    6 {
     6namespace AllocsFixes.FileCache {
    77        // Special "cache" for map tile folder as both map rendering and webserver access files in there.
    88        // Only map rendering tiles are cached. Writing is done by WriteThrough.
    9         public class MapTileCache : AbstractCache
    10         {
    11                 private struct CurrentZoomFile
    12                 {
    13                         public string filename;
    14                         public byte[] data;
    15                 }
    16 
     9        public class MapTileCache : AbstractCache {
     10                private readonly byte[] transparentTile;
    1711                private CurrentZoomFile[] cache;
    1812
    19                 private byte[] transparentTile;
    20 
    21                 public MapTileCache (int _tileSize)
    22                 {
     13                public MapTileCache (int _tileSize) {
    2314                        Texture2D tex = new Texture2D (_tileSize, _tileSize);
    2415                        Color nullColor = new Color (0, 0, 0, 0);
     
    2819                                }
    2920                        }
     21
    3022                        transparentTile = tex.EncodeToPNG ();
    31                         UnityEngine.Object.Destroy (tex);
     23                        Object.Destroy (tex);
    3224                }
    3325
    34                 public void SetZoomCount (int count)
    35                 {
     26                public void SetZoomCount (int count) {
    3627                        cache = new CurrentZoomFile[count];
    3728                }
    3829
    39                 public byte[] LoadTile (int zoomlevel, string filename)
    40                 {
     30                public byte[] LoadTile (int zoomlevel, string filename) {
    4131                        try {
    4232                                lock (cache) {
     
    5141                                                cache [zoomlevel].data = File.ReadAllBytes (filename);
    5242                                        }
     43
    5344                                        return cache [zoomlevel].data;
    5445                                }
     
    5647                                Log.Out ("Error in MapTileCache.LoadTile: " + e);
    5748                        }
     49
    5850                        return null;
    5951                }
    6052
    61                 public void SaveTile (int zoomlevel, byte[] content)
    62                 {
     53                public void SaveTile (int zoomlevel, byte[] content) {
    6354                        try {
    6455                                lock (cache) {
     
    7364                }
    7465
    75                 public override byte[] GetFileContent (string filename)
    76                 {
     66                public override byte[] GetFileContent (string filename) {
    7767                        try {
    7868                                lock (cache) {
    7969                                        foreach (CurrentZoomFile czf in cache) {
    80                                                 if (czf.filename != null && czf.filename.Equals (filename))
     70                                                if (czf.filename != null && czf.filename.Equals (filename)) {
    8171                                                        return czf.data;
     72                                                }
    8273                                        }
    8374
     
    8576                                                return transparentTile;
    8677                                        }
     78
    8779                                        return File.ReadAllBytes (filename);
    8880                                }
     
    9082                                Log.Out ("Error in MapTileCache.GetFileContent: " + e);
    9183                        }
     84
    9285                        return null;
    9386                }
    9487
     88                private struct CurrentZoomFile {
     89                        public string filename;
     90                        public byte[] data;
     91                }
    9592        }
    9693}
    97 
  • binary-improvements/7dtd-server-fixes/src/FileCache/SimpleCache.cs

    r199 r325  
    33using System.IO;
    44
    5 namespace AllocsFixes.FileCache
    6 {
     5namespace AllocsFixes.FileCache {
    76        // Caching all files, useful for completely static folders only
    8         public class SimpleCache : AbstractCache
    9         {
     7        public class SimpleCache : AbstractCache {
     8                private readonly Dictionary<string, byte[]> fileCache = new Dictionary<string, byte[]> ();
    109
    11                 private Dictionary<string, byte[]> fileCache = new Dictionary<string, byte[]> ();
    12 
    13                 public SimpleCache ()
    14                 {
    15                 }
    16 
    17                 public override byte[] GetFileContent (string filename)
    18                 {
     10                public override byte[] GetFileContent (string filename) {
    1911                        try {
    2012                                lock (fileCache) {
     
    3224                                Log.Out ("Error in SimpleCache.GetFileContent: " + e);
    3325                        }
     26
    3427                        return null;
    3528                }
    36 
    3729        }
    3830}
    39 
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONArray.cs

    r315 r325  
    1 using System;
    21using System.Collections.Generic;
    32using System.Text;
    43
    5 namespace AllocsFixes.JSON
    6 {
    7         public class JSONArray : JSONNode
    8         {
    9                 private List<JSONNode> nodes = new List<JSONNode> ();
     4namespace AllocsFixes.JSON {
     5        public class JSONArray : JSONNode {
     6                private readonly List<JSONNode> nodes = new List<JSONNode> ();
    107
    118                public JSONNode this [int index] {
     
    1815                }
    1916
    20                 public void Add (JSONNode node)
    21                 {
     17                public void Add (JSONNode node) {
    2218                        nodes.Add (node);
    2319                }
    2420
    25                 public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    26                 {
     21                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0) {
    2722                        stringBuilder.Append ("[");
    28                         if (prettyPrint)
     23                        if (prettyPrint) {
    2924                                stringBuilder.Append ('\n');
     25                        }
     26
    3027                        foreach (JSONNode n in nodes) {
    31                                 if (prettyPrint)
    32                                         stringBuilder.Append (new String ('\t', currentLevel + 1));
     28                                if (prettyPrint) {
     29                                        stringBuilder.Append (new string ('\t', currentLevel + 1));
     30                                }
     31
    3332                                n.ToString (stringBuilder, prettyPrint, currentLevel + 1);
    3433                                stringBuilder.Append (",");
    35                                 if (prettyPrint)
     34                                if (prettyPrint) {
    3635                                        stringBuilder.Append ('\n');
     36                                }
    3737                        }
    38                         if (nodes.Count > 0)
     38
     39                        if (nodes.Count > 0) {
    3940                                stringBuilder.Remove (stringBuilder.Length - (prettyPrint ? 2 : 1), 1);
    40                         if (prettyPrint)
    41                                 stringBuilder.Append (new String ('\t', currentLevel));
     41                        }
     42
     43                        if (prettyPrint) {
     44                                stringBuilder.Append (new string ('\t', currentLevel));
     45                        }
     46
    4247                        stringBuilder.Append ("]");
    4348                }
    4449
    45                 public static JSONArray Parse (string json, ref int offset)
    46                 {
     50                public static JSONArray Parse (string json, ref int offset) {
    4751                        //Log.Out ("ParseArray enter (" + offset + ")");
    4852                        JSONArray arr = new JSONArray ();
     
    5862                                                        nextElemAllowed = true;
    5963                                                        offset++;
    60                                                 } else
    61                                                         throw new MalformedJSONException ("Could not parse array, found a comma without a value first");
     64                                                } else {
     65                                                        throw new MalformedJSONException (
     66                                                                "Could not parse array, found a comma without a value first");
     67                                                }
     68
    6269                                                break;
    6370                                        case ']':
    6471                                                offset++;
     72
    6573                                                //Log.Out ("JSON:Parsed Array: " + arr.ToString ());
    6674                                                return arr;
     
    7280                        }
    7381                }
    74 
    7582        }
    7683}
    77 
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONBoolean.cs

    r309 r325  
    1 using System;
    21using System.Text;
    32
    4 namespace AllocsFixes.JSON
    5 {
    6         public class JSONBoolean : JSONValue
    7         {
    8                 private bool value;
     3namespace AllocsFixes.JSON {
     4        public class JSONBoolean : JSONValue {
     5                private readonly bool value;
    96
    10                 public JSONBoolean (bool value)
    11                 {
     7                public JSONBoolean (bool value) {
    128                        this.value = value;
    139                }
    1410
    15                 public bool GetBool ()
    16                 {
     11                public bool GetBool () {
    1712                        return value;
    1813                }
    1914
    20                 public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    21                 {
     15                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0) {
    2216                        stringBuilder.Append (value ? "true" : "false");
    2317                }
    2418
    25                 public static JSONBoolean Parse (string json, ref int offset)
    26                 {
     19                public static JSONBoolean Parse (string json, ref int offset) {
    2720                        //Log.Out ("ParseBool enter (" + offset + ")");
    2821
     
    3124                                offset += 4;
    3225                                return new JSONBoolean (true);
    33                         } else if (json.Substring (offset, 5).Equals ("false")) {
     26                        }
     27
     28                        if (json.Substring (offset, 5).Equals ("false")) {
    3429                                //Log.Out ("JSON:Parsed Bool: false");
    3530                                offset += 5;
    3631                                return new JSONBoolean (false);
    37                         } else {
    38                                 throw new MalformedJSONException ("No valid boolean found");
    3932                        }
     33
     34                        throw new MalformedJSONException ("No valid boolean found");
    4035                }
    41 
    4236        }
    4337}
    44 
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONNode.cs

    r309 r325  
    1 using System;
    21using System.Text;
    32
    4 namespace AllocsFixes.JSON
    5 {
    6         public abstract class JSONNode
    7         {
    8                 public abstract void ToString(StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0);
     3namespace AllocsFixes.JSON {
     4        public abstract class JSONNode {
     5                public abstract void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0);
    96
    107                public override string ToString () {
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONNull.cs

    r309 r325  
    1 using System;
    21using System.Text;
    32
    4 namespace AllocsFixes.JSON
    5 {
    6         public class JSONNull : JSONValue
    7         {
    8                 public JSONNull ()
    9                 {
    10                 }
    11 
    12                 public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    13                 {
     3namespace AllocsFixes.JSON {
     4        public class JSONNull : JSONValue {
     5                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0) {
    146                        stringBuilder.Append ("null");
    157                }
    168
    17                 public static JSONNull Parse (string json, ref int offset)
    18                 {
     9                public static JSONNull Parse (string json, ref int offset) {
    1910                        //Log.Out ("ParseNull enter (" + offset + ")");
    2011
     
    2314                                offset += 4;
    2415                                return new JSONNull ();
    25                         } else {
    26                                 throw new MalformedJSONException ("No valid null value found");
    2716                        }
     17
     18                        throw new MalformedJSONException ("No valid null value found");
    2819                }
    29 
    3020        }
    3121}
    32 
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONNumber.cs

    r324 r325  
    22using System.Text;
    33
    4 namespace AllocsFixes.JSON
    5 {
    6         public class JSONNumber : JSONValue
    7         {
    8                 private double value;
     4namespace AllocsFixes.JSON {
     5        public class JSONNumber : JSONValue {
     6                private readonly double value;
    97
    10                 public JSONNumber (double value)
    11                 {
     8                public JSONNumber (double value) {
    129                        this.value = value;
    1310                }
    1411
    15                 public double GetDouble ()
    16                 {
     12                public double GetDouble () {
    1713                        return value;
    1814                }
    1915
    20                 public int GetInt ()
    21                 {
    22                         return (int)Math.Round(value);
     16                public int GetInt () {
     17                        return (int) Math.Round (value);
    2318                }
    2419
    25                 public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    26                 {
     20                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0) {
    2721                        stringBuilder.Append (value.ToCultureInvariantString ());
    2822                }
    2923
    30                 public static JSONNumber Parse (string json, ref int offset)
    31                 {
     24                public static JSONNumber Parse (string json, ref int offset) {
    3225                        //Log.Out ("ParseNumber enter (" + offset + ")");
    3326                        StringBuilder sbNum = new StringBuilder ();
     
    3730                        while (offset < json.Length) {
    3831                                if (json [offset] >= '0' && json [offset] <= '9') {
    39                                         if (hasExp)
     32                                        if (hasExp) {
    4033                                                sbExp.Append (json [offset]);
    41                                         else
     34                                        } else {
    4235                                                sbNum.Append (json [offset]);
     36                                        }
    4337                                } else if (json [offset] == '.') {
    4438                                        if (hasExp) {
    4539                                                throw new MalformedJSONException ("Decimal separator in exponent");
     40                                        }
     41
     42                                        if (hasDec) {
     43                                                throw new MalformedJSONException ("Multiple decimal separators in number found");
     44                                        }
     45
     46                                        if (sbNum.Length == 0) {
     47                                                throw new MalformedJSONException ("No leading digits before decimal separator found");
     48                                        }
     49
     50                                        sbNum.Append ('.');
     51                                        hasDec = true;
     52                                } else if (json [offset] == '-') {
     53                                        if (hasExp) {
     54                                                if (sbExp.Length > 0) {
     55                                                        throw new MalformedJSONException ("Negative sign in exponent after digits");
     56                                                }
     57
     58                                                sbExp.Append (json [offset]);
    4659                                        } else {
    47                                                 if (hasDec)
    48                                                         throw new MalformedJSONException ("Multiple decimal separators in number found");
    49                                                 else if (sbNum.Length == 0) {
    50                                                         throw new MalformedJSONException ("No leading digits before decimal separator found");
    51                                                 } else {
    52                                                         sbNum.Append ('.');
    53                                                         hasDec = true;
     60                                                if (sbNum.Length > 0) {
     61                                                        throw new MalformedJSONException ("Negative sign in mantissa after digits");
    5462                                                }
    55                                         }
    56                                 } else  if (json [offset] == '-') {
    57                                         if (hasExp) {
    58                                                 if (sbExp.Length > 0)
    59                                                         throw new MalformedJSONException ("Negative sign in exponent after digits");
    60                                                 else
    61                                                         sbExp.Append (json [offset]);
    62                                         } else {
    63                                                 if (sbNum.Length > 0)
    64                                                         throw new MalformedJSONException ("Negative sign in mantissa after digits");
    65                                                 else
    66                                                         sbNum.Append (json [offset]);
     63
     64                                                sbNum.Append (json [offset]);
    6765                                        }
    6866                                } else if (json [offset] == 'e' || json [offset] == 'E') {
    69                                         if (hasExp)
     67                                        if (hasExp) {
    7068                                                throw new MalformedJSONException ("Multiple exponential markers in number found");
    71                                         else if (sbNum.Length == 0) {
     69                                        }
     70
     71                                        if (sbNum.Length == 0) {
    7272                                                throw new MalformedJSONException ("No leading digits before exponential marker found");
    73                                         } else {
    74                                                 sbExp = new StringBuilder ();
    75                                                 hasExp = true;
    7673                                        }
     74
     75                                        sbExp = new StringBuilder ();
     76                                        hasExp = true;
    7777                                } else if (json [offset] == '+') {
    7878                                        if (hasExp) {
    79                                                 if (sbExp.Length > 0)
     79                                                if (sbExp.Length > 0) {
    8080                                                        throw new MalformedJSONException ("Positive sign in exponent after digits");
    81                                                 else
    82                                                         sbExp.Append (json [offset]);
     81                                                }
     82
     83                                                sbExp.Append (json [offset]);
    8384                                        } else {
    8485                                                throw new MalformedJSONException ("Positive sign in mantissa found");
     
    8687                                } else {
    8788                                        double number;
    88                                         if (!StringParsers.TryParseDouble(sbNum.ToString (), out number)) {
    89                                                 throw new MalformedJSONException ("Mantissa is not a valid decimal (\"" + sbNum.ToString () + "\")");
     89                                        if (!StringParsers.TryParseDouble (sbNum.ToString (), out number)) {
     90                                                throw new MalformedJSONException ("Mantissa is not a valid decimal (\"" + sbNum + "\")");
    9091                                        }
    9192
     
    9394                                                int exp;
    9495                                                if (!int.TryParse (sbExp.ToString (), out exp)) {
    95                                                         throw new MalformedJSONException ("Exponent is not a valid integer (\"" + sbExp.ToString () + "\")");
     96                                                        throw new MalformedJSONException ("Exponent is not a valid integer (\"" + sbExp + "\")");
    9697                                                }
    9798
     
    102103                                        return new JSONNumber (number);
    103104                                }
     105
    104106                                offset++;
    105107                        }
     108
    106109                        throw new MalformedJSONException ("End of JSON reached before parsing number finished");
    107110                }
    108 
    109111        }
    110112}
    111 
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONObject.cs

    r315 r325  
    1 using System;
    21using System.Collections.Generic;
    32using System.Text;
    43
    5 namespace AllocsFixes.JSON
    6 {
    7         public class JSONObject : JSONNode
    8         {
    9                 private Dictionary<string, JSONNode> nodes = new Dictionary<string, JSONNode> ();
     4namespace AllocsFixes.JSON {
     5        public class JSONObject : JSONNode {
     6                private readonly Dictionary<string, JSONNode> nodes = new Dictionary<string, JSONNode> ();
    107
    118                public JSONNode this [string name] {
     
    2219                }
    2320
    24                 public bool ContainsKey (string name)
    25                 {
     21                public bool ContainsKey (string name) {
    2622                        return nodes.ContainsKey (name);
    2723                }
    2824
    29                 public void Add (string name, JSONNode node)
    30                 {
     25                public void Add (string name, JSONNode node) {
    3126                        nodes.Add (name, node);
    3227                }
    3328
    34                 public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    35                 {
     29                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0) {
    3630                        stringBuilder.Append ("{");
    37                         if (prettyPrint)
     31                        if (prettyPrint) {
    3832                                stringBuilder.Append ('\n');
     33                        }
     34
    3935                        foreach (KeyValuePair<string, JSONNode> kvp in nodes) {
    40                                 if (prettyPrint)
    41                                         stringBuilder.Append (new String ('\t', currentLevel + 1));
    42                                 stringBuilder.Append (String.Format ("\"{0}\":", kvp.Key));
    43                                 if (prettyPrint)
     36                                if (prettyPrint) {
     37                                        stringBuilder.Append (new string ('\t', currentLevel + 1));
     38                                }
     39
     40                                stringBuilder.Append (string.Format ("\"{0}\":", kvp.Key));
     41                                if (prettyPrint) {
    4442                                        stringBuilder.Append (" ");
     43                                }
     44
    4545                                kvp.Value.ToString (stringBuilder, prettyPrint, currentLevel + 1);
    4646                                stringBuilder.Append (",");
    47                                 if (prettyPrint)
     47                                if (prettyPrint) {
    4848                                        stringBuilder.Append ('\n');
     49                                }
    4950                        }
    50                         if (nodes.Count > 0)
     51
     52                        if (nodes.Count > 0) {
    5153                                stringBuilder.Remove (stringBuilder.Length - (prettyPrint ? 2 : 1), 1);
    52                         if (prettyPrint)
    53                                 stringBuilder.Append (new String ('\t', currentLevel));
     54                        }
     55
     56                        if (prettyPrint) {
     57                                stringBuilder.Append (new string ('\t', currentLevel));
     58                        }
     59
    5460                        stringBuilder.Append ("}");
    5561                }
    5662
    57                 public static JSONObject Parse (string json, ref int offset)
    58                 {
     63                public static JSONObject Parse (string json, ref int offset) {
    5964                        //Log.Out ("ParseObject enter (" + offset + ")");
    6065                        JSONObject obj = new JSONObject ();
     
    7075                                                        Parser.SkipWhitespace (json, ref offset);
    7176                                                        if (json [offset] != ':') {
    72                                                                 throw new MalformedJSONException ("Could not parse object, missing colon (\":\") after key");
     77                                                                throw new MalformedJSONException (
     78                                                                        "Could not parse object, missing colon (\":\") after key");
    7379                                                        }
     80
    7481                                                        offset++;
    7582                                                        JSONNode val = Parser.ParseInternal (json, ref offset);
     
    7784                                                        nextElemAllowed = false;
    7885                                                } else {
    79                                                         throw new MalformedJSONException ("Could not parse object, found new key without a separating comma");
     86                                                        throw new MalformedJSONException (
     87                                                                "Could not parse object, found new key without a separating comma");
    8088                                                }
     89
    8190                                                break;
    8291                                        case ',':
     
    8493                                                        nextElemAllowed = true;
    8594                                                        offset++;
    86                                                 } else
    87                                                         throw new MalformedJSONException ("Could not parse object, found a comma without a key/value pair first");
     95                                                } else {
     96                                                        throw new MalformedJSONException (
     97                                                                "Could not parse object, found a comma without a key/value pair first");
     98                                                }
     99
    88100                                                break;
    89101                                        case '}':
    90102                                                offset++;
     103
    91104                                                //Log.Out ("JSON:Parsed Object: " + obj.ToString ());
    92105                                                return obj;
     
    94107                        }
    95108                }
    96 
    97109        }
    98110}
    99 
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONString.cs

    r309 r325  
    1 using System;
    21using System.Text;
    32
    4 namespace AllocsFixes.JSON
    5 {
    6         public class JSONString : JSONValue
    7         {
    8                 private string value;
     3namespace AllocsFixes.JSON {
     4        public class JSONString : JSONValue {
     5                private readonly string value;
    96
    10                 public JSONString (string value)
    11                 {
     7                public JSONString (string value) {
    128                        this.value = value;
    139                }
    1410
    15                 public string GetString ()
    16                 {
     11                public string GetString () {
    1712                        return value;
    1813                }
    1914
    20                 public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    21                 {
     15                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0) {
    2216                        if (value == null || value.Length == 0) {
    2317                                stringBuilder.Append ("\"\"");
     
    2721                        int len = value.Length;
    2822
    29                         stringBuilder.EnsureCapacity (stringBuilder.Length + 2*len);
    30                         String t;
     23                        stringBuilder.EnsureCapacity (stringBuilder.Length + 2 * len);
    3124
    3225                        stringBuilder.Append ('"');
     
    3629                                        case '\\':
    3730                                        case '"':
     31
    3832//                                      case '/':
    3933                                                stringBuilder.Append ('\\');
     
    5852                                                if (c < ' ') {
    5953                                                        stringBuilder.Append ("\\u");
    60                                                         stringBuilder.Append (((int)c).ToString ("X4"));
     54                                                        stringBuilder.Append (((int) c).ToString ("X4"));
    6155                                                } else {
    6256                                                        stringBuilder.Append (c);
    6357                                                }
     58
    6459                                                break;
    6560                                }
     
    6964                }
    7065
    71                 public static JSONString Parse (string json, ref int offset)
    72                 {
     66                public static JSONString Parse (string json, ref int offset) {
    7367                        //Log.Out ("ParseString enter (" + offset + ")");
    7468                        StringBuilder sb = new StringBuilder ();
     
    10397                                                                break;
    10498                                                }
     99
    105100                                                offset++;
    106101                                                break;
    107102                                        case '"':
    108103                                                offset++;
     104
    109105                                                //Log.Out ("JSON:Parsed String: " + sb.ToString ());
    110106                                                return new JSONString (sb.ToString ());
     
    115111                                }
    116112                        }
     113
    117114                        throw new MalformedJSONException ("End of JSON reached before parsing string finished");
    118115                }
    119 
    120116        }
    121117}
    122 
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONValue.cs

    r279 r325  
    1 using System;
    2 
    3 namespace AllocsFixes.JSON
    4 {
     1namespace AllocsFixes.JSON {
    52        public abstract class JSONValue : JSONNode {
    63        }
    74}
    8 
  • binary-improvements/7dtd-server-fixes/src/JSON/MalformedJSONException.cs

    r188 r325  
    22using System.Runtime.Serialization;
    33
    4 namespace AllocsFixes.JSON
    5 {
    6         public class MalformedJSONException : ApplicationException
    7         {
    8                 public MalformedJSONException ()
    9                 {
     4namespace AllocsFixes.JSON {
     5        public class MalformedJSONException : ApplicationException {
     6                public MalformedJSONException () {
    107                }
    118
    12                 public MalformedJSONException (string message) : base(message)
    13                 {
     9                public MalformedJSONException (string message) : base (message) {
    1410                }
    1511
    16                 public MalformedJSONException (string message, System.Exception inner) : base(message, inner)
    17                 {
     12                public MalformedJSONException (string message, Exception inner) : base (message, inner) {
    1813                }
    19  
    20                 protected MalformedJSONException (SerializationInfo info, StreamingContext context) : base(info, context)
    21                 {
     14
     15                protected MalformedJSONException (SerializationInfo info, StreamingContext context) : base (info, context) {
    2216                }
    2317        }
    2418}
    25 
  • binary-improvements/7dtd-server-fixes/src/JSON/Parser.cs

    r188 r325  
    1 using System;
    2 using System.Text;
    3 
    4 namespace AllocsFixes.JSON
    5 {
    6         public class Parser
    7         {
    8 
    9                 public static JSONNode Parse (string json)
    10                 {
     1namespace AllocsFixes.JSON {
     2        public class Parser {
     3                public static JSONNode Parse (string json) {
    114                        int offset = 0;
    125                        return ParseInternal (json, ref offset);
    136                }
    147
    15                 public static JSONNode ParseInternal (string json, ref int offset)
    16                 {
     8                public static JSONNode ParseInternal (string json, ref int offset) {
    179                        SkipWhitespace (json, ref offset);
     10
    1811                        //Log.Out ("ParseInternal (" + offset + "): Decide on: '" + json [offset] + "'");
    1912                        switch (json [offset]) {
     
    3427                }
    3528
    36                 public static void SkipWhitespace (string json, ref int offset)
    37                 {
     29                public static void SkipWhitespace (string json, ref int offset) {
    3830                        //Log.Out ("SkipWhitespace (" + offset + "): '" + json [offset] + "'");
    3931                        while (offset < json.Length) {
     
    4941                                }
    5042                        }
     43
    5144                        throw new MalformedJSONException ("End of JSON reached before parsing finished");
    5245                }
    53 
    54 
    5546        }
    5647}
    57 
  • binary-improvements/7dtd-server-fixes/src/LandClaimList.cs

    r253 r325  
    11using System;
    22using System.Collections.Generic;
    3 
    43using AllocsFixes.PersistentData;
    54
    6 namespace AllocsFixes
    7 {
     5namespace AllocsFixes {
    86        public class LandClaimList {
    97                public delegate bool OwnerFilter (Player owner);
     
    119                public delegate bool PositionFilter (Vector3i position);
    1210
    13                 public static Dictionary<Player, List<Vector3i>> GetLandClaims (OwnerFilter[] _ownerFilters, PositionFilter[] _positionFilters) {
     11                public static Dictionary<Player, List<Vector3i>> GetLandClaims (OwnerFilter[] _ownerFilters,
     12                        PositionFilter[] _positionFilters) {
    1413                        Dictionary<Vector3i, PersistentPlayerData> d = GameManager.Instance.GetPersistentPlayerList ().m_lpBlockMap;
    1514                        Dictionary<Player, List<Vector3i>> result = new Dictionary<Player, List<Vector3i>> ();
    1615
    1716                        if (d != null) {
    18                                 Dictionary<PersistentPlayerData, List<Vector3i>> owners = new Dictionary<PersistentPlayerData, List<Vector3i>> ();
     17                                Dictionary<PersistentPlayerData, List<Vector3i>> owners =
     18                                        new Dictionary<PersistentPlayerData, List<Vector3i>> ();
    1919                                foreach (KeyValuePair<Vector3i, PersistentPlayerData> kvp in d) {
    2020                                        bool allowed = true;
     
    2727                                                }
    2828                                        }
     29
    2930                                        if (allowed) {
    3031                                                if (!owners.ContainsKey (kvp.Value)) {
    3132                                                        owners.Add (kvp.Value, new List<Vector3i> ());
    3233                                                }
     34
    3335                                                owners [kvp.Value].Add (kvp.Key);
    3436                                        }
     
    3638
    3739                                foreach (KeyValuePair<PersistentPlayerData, List<Vector3i>> kvp in owners) {
    38                                         Player p = PersistentData.PersistentContainer.Instance.Players [kvp.Key.PlayerId, false];
     40                                        Player p = PersistentContainer.Instance.Players [kvp.Key.PlayerId, false];
    3941                                        if (p == null) {
    4042                                                p = new Player (kvp.Key.PlayerId);
     
    5961                                }
    6062                        }
     63
    6164                        return result;
    6265                }
     
    7376                        return p => _f1 (p) || _f2 (p);
    7477                }
    75 
    7678        }
    7779}
    78 
  • binary-improvements/7dtd-server-fixes/src/LiveData/Animals.cs

    r312 r325  
    1 using System;
    2 using System.Collections.Generic;
    3 
    4 namespace AllocsFixes.LiveData
    5 {
    6         public class Animals : EntityFilterList<EntityAnimal>
    7     {
    8 
     1namespace AllocsFixes.LiveData {
     2        public class Animals : EntityFilterList<EntityAnimal> {
    93                public static readonly Animals Instance = new Animals ();
    104
    115                protected override EntityAnimal predicate (Entity _e) {
    126                        if (_e is EntityAnimal) {
    13                                 EntityAnimal ea = (EntityAnimal)_e;
     7                                EntityAnimal ea = (EntityAnimal) _e;
    148
    159                                if (ea.IsAlive ()) {
     
    1711                                }
    1812                        }
     13
    1914                        return null;
    2015                }
    21 
    22     }
     16        }
    2317}
    24 
  • binary-improvements/7dtd-server-fixes/src/LiveData/EntityFilterList.cs

    r312 r325  
    22using System.Collections.Generic;
    33
    4 namespace AllocsFixes.LiveData
    5 {
    6         public abstract class EntityFilterList<T> where T: Entity
    7     {
     4namespace AllocsFixes.LiveData {
     5        public abstract class EntityFilterList<T> where T : Entity {
    86                public void Get (List<T> _list) {
    97                        _list.Clear ();
     
    1816                                        }
    1917                                }
    20                         }
    21                         catch (Exception e) {
     18                        } catch (Exception e) {
    2219                                Log.Exception (e);
    2320                        }
     
    3532                                        }
    3633                                }
    37                         }
    38                         catch (Exception e) {
     34                        } catch (Exception e) {
    3935                                Log.Exception (e);
    4036                        }
     37
    4138                        return count;
    4239                }
    4340
    4441                protected abstract T predicate (Entity _e);
    45 
    46     }
     42        }
    4743}
    48 
  • binary-improvements/7dtd-server-fixes/src/LiveData/Hostiles.cs

    r312 r325  
    1 using System;
    2 using System.Collections.Generic;
    3 
    4 namespace AllocsFixes.LiveData
    5 {
    6         public class Hostiles : EntityFilterList<EntityEnemy>
    7         {
    8 
     1namespace AllocsFixes.LiveData {
     2        public class Hostiles : EntityFilterList<EntityEnemy> {
    93                public static readonly Hostiles Instance = new Hostiles ();
    104
    11                 override protected EntityEnemy predicate (Entity _e) {
     5                protected override EntityEnemy predicate (Entity _e) {
    126                        if (_e is EntityEnemy) {
    137                                if (_e.IsAlive ()) {
     
    159                                }
    1610                        }
     11
    1712                        return null;
    1813                }
    19 
    2014        }
    2115}
    22 
  • binary-improvements/7dtd-server-fixes/src/PersistentData/Attributes.cs

    r273 r325  
    11using System;
    2 using System.Collections.Generic;
    3 using System.Runtime.Serialization;
    4 using System.Text.RegularExpressions;
    52
    6 namespace AllocsFixes.PersistentData
    7 {
     3namespace AllocsFixes.PersistentData {
    84        [Serializable]
    9         public class Attributes
    10         {
     5        public class Attributes {
    116                private bool hideChatCommands;
    127                private String hideChatCommandPrefix;
    138
    149                public bool HideChatCommands {
    15                         get {
    16                                 return hideChatCommands;
    17                         }
    18                         set {
    19                                 hideChatCommands = value;
    20                         }
     10                        get { return hideChatCommands; }
     11                        set { hideChatCommands = value; }
    2112                }
    2213
     
    2617                                        hideChatCommandPrefix = "";
    2718                                }
     19
    2820                                return hideChatCommandPrefix;
    2921                        }
    30                         set {
    31                                 hideChatCommandPrefix = value;
    32                         }
     22                        set { hideChatCommandPrefix = value; }
    3323                }
    34 
    3524        }
    3625}
    37 
  • binary-improvements/7dtd-server-fixes/src/PersistentData/InvItem.cs

    r287 r325  
    22using System.Runtime.Serialization;
    33
    4 namespace AllocsFixes.PersistentData
    5 {
     4namespace AllocsFixes.PersistentData {
    65        [Serializable]
    76        public class InvItem {
     
    2625        }
    2726}
    28 
  • binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs

    r324 r325  
    33
    44namespace AllocsFixes.PersistentData {
    5     [Serializable]
    6     public class Inventory {
    7         public List<InvItem> bag;
    8         public List<InvItem> belt;
    9         public InvItem[] equipment;
     5        [Serializable]
     6        public class Inventory {
     7                public List<InvItem> bag;
     8                public List<InvItem> belt;
     9                public InvItem[] equipment;
    1010
    11         public Inventory () {
    12             bag = new List<InvItem> ();
    13             belt = new List<InvItem> ();
    14             equipment = null;
    15         }
     11                public Inventory () {
     12                        bag = new List<InvItem> ();
     13                        belt = new List<InvItem> ();
     14                        equipment = null;
     15                }
    1616
    17         public void Update (PlayerDataFile pdf) {
    18             lock (this) {
    19                 //Log.Out ("Updating player inventory - player id: " + pdf.id);
    20                 ProcessInv (bag, pdf.bag, pdf.id);
    21                 ProcessInv (belt, pdf.inventory, pdf.id);
    22                 ProcessEqu (pdf.equipment, pdf.id);
    23             }
    24         }
     17                public void Update (PlayerDataFile pdf) {
     18                        lock (this) {
     19                                //Log.Out ("Updating player inventory - player id: " + pdf.id);
     20                                ProcessInv (bag, pdf.bag, pdf.id);
     21                                ProcessInv (belt, pdf.inventory, pdf.id);
     22                                ProcessEqu (pdf.equipment, pdf.id);
     23                        }
     24                }
    2525
    26         private void ProcessInv (List<InvItem> target, ItemStack[] sourceFields, int id) {
    27             target.Clear ();
    28             for (int i = 0; i < sourceFields.Length; i++) {
    29                 InvItem item = CreateInvItem (sourceFields [i].itemValue, sourceFields [i].count, id);
    30                 if (item != null && sourceFields [i].itemValue.Modifications != null) {
    31                     ProcessParts (sourceFields [i].itemValue.Modifications, item, id);
    32                 }
     26                private void ProcessInv (List<InvItem> target, ItemStack[] sourceFields, int id) {
     27                        target.Clear ();
     28                        for (int i = 0; i < sourceFields.Length; i++) {
     29                                InvItem item = CreateInvItem (sourceFields [i].itemValue, sourceFields [i].count, id);
     30                                if (item != null && sourceFields [i].itemValue.Modifications != null) {
     31                                        ProcessParts (sourceFields [i].itemValue.Modifications, item, id);
     32                                }
    3333
    34                 target.Add (item);
    35             }
    36         }
     34                                target.Add (item);
     35                        }
     36                }
    3737
    38         private void ProcessEqu (Equipment sourceEquipment, int _playerId) {
    39             equipment = new InvItem[sourceEquipment.GetSlotCount ()];
    40             for (int i = 0; i < sourceEquipment.GetSlotCount (); i++) {
    41                 equipment [i] = CreateInvItem (sourceEquipment.GetSlotItem (i), 1, _playerId);
    42             }
    43         }
     38                private void ProcessEqu (Equipment sourceEquipment, int _playerId) {
     39                        equipment = new InvItem[sourceEquipment.GetSlotCount ()];
     40                        for (int i = 0; i < sourceEquipment.GetSlotCount (); i++) {
     41                                equipment [i] = CreateInvItem (sourceEquipment.GetSlotItem (i), 1, _playerId);
     42                        }
     43                }
    4444
    45         private void ProcessParts (ItemValue[] _parts, InvItem _item, int _playerId) {
    46             InvItem[] itemParts = new InvItem[_parts.Length];
    47             for (int i = 0; i < _parts.Length; i++) {
    48                 InvItem partItem = CreateInvItem (_parts [i], 1, _playerId);
    49                 if (partItem != null && _parts [i].Modifications != null) {
    50                     ProcessParts (_parts [i].Modifications, partItem, _playerId);
    51                 }
     45                private void ProcessParts (ItemValue[] _parts, InvItem _item, int _playerId) {
     46                        InvItem[] itemParts = new InvItem[_parts.Length];
     47                        for (int i = 0; i < _parts.Length; i++) {
     48                                InvItem partItem = CreateInvItem (_parts [i], 1, _playerId);
     49                                if (partItem != null && _parts [i].Modifications != null) {
     50                                        ProcessParts (_parts [i].Modifications, partItem, _playerId);
     51                                }
    5252
    53                 itemParts [i] = partItem;
    54             }
     53                                itemParts [i] = partItem;
     54                        }
    5555
    56             _item.parts = itemParts;
    57         }
     56                        _item.parts = itemParts;
     57                }
    5858
    59         private InvItem CreateInvItem (ItemValue _itemValue, int _count, int _playerId) {
    60             if (_count > 0 && _itemValue != null && !_itemValue.Equals (ItemValue.None)) {
    61                 ItemClass itemClass = ItemClass.list [_itemValue.type];
    62                 int maxAllowed = itemClass.Stacknumber.Value;
    63                 string name = itemClass.GetItemName ();
     59                private InvItem CreateInvItem (ItemValue _itemValue, int _count, int _playerId) {
     60                        if (_count > 0 && _itemValue != null && !_itemValue.Equals (ItemValue.None)) {
     61                                ItemClass itemClass = ItemClass.list [_itemValue.type];
     62                                int maxAllowed = itemClass.Stacknumber.Value;
     63                                string name = itemClass.GetItemName ();
    6464
    65                 if (_count > maxAllowed) {
    66                     Log.Out ("Player with ID " + _playerId + " has stack for \"" + name + "\" greater than allowed (" +
    67                              _count + " > " + maxAllowed + ")");
    68                 }
     65                                if (_count > maxAllowed) {
     66                                        Log.Out ("Player with ID " + _playerId + " has stack for \"" + name + "\" greater than allowed (" +
     67                                                 _count + " > " + maxAllowed + ")");
     68                                }
    6969
    70                 InvItem item = null;
    71                 if (_itemValue.HasQuality) {
    72                     item = new InvItem (name, _count, _itemValue.Quality, _itemValue.MaxUseTimes, _itemValue.UseTimes);
    73                 } else {
    74                     item = new InvItem (name, _count, -1, _itemValue.MaxUseTimes, _itemValue.UseTimes);
    75                 }
     70                                InvItem item = null;
     71                                if (_itemValue.HasQuality) {
     72                                        item = new InvItem (name, _count, _itemValue.Quality, _itemValue.MaxUseTimes, _itemValue.UseTimes);
     73                                } else {
     74                                        item = new InvItem (name, _count, -1, _itemValue.MaxUseTimes, _itemValue.UseTimes);
     75                                }
    7676
    77                 item.icon = itemClass.GetIconName ();
     77                                item.icon = itemClass.GetIconName ();
    7878
    79                 item.iconcolor = AllocsUtils.ColorToHex (itemClass.GetIconTint ());
     79                                item.iconcolor = AllocsUtils.ColorToHex (itemClass.GetIconTint ());
    8080
    81                 return item;
    82             } else {
    83                 return null;
    84             }
    85         }
    86     }
     81                                return item;
     82                        }
     83
     84                        return null;
     85                }
     86        }
    8787}
  • binary-improvements/7dtd-server-fixes/src/PersistentData/PersistentContainer.cs

    r273 r325  
    44using System.Runtime.Serialization.Formatters.Binary;
    55
    6 namespace AllocsFixes.PersistentData
    7 {
     6namespace AllocsFixes.PersistentData {
    87        [Serializable]
    9         public class PersistentContainer
    10         {
     8        public class PersistentContainer {
    119                private Players players;
    12                 [OptionalField]
    13                 private Attributes attributes;
     10                [OptionalField] private Attributes attributes;
    1411
    1512                public Players Players {
    1613                        get {
    17                                 if (players == null)
     14                                if (players == null) {
    1815                                        players = new Players ();
     16                                }
     17
    1918                                return players;
    2019                        }
    2120                }
    2221
    23                 public Attributes Attributes
    24                 {
     22                public Attributes Attributes {
    2523                        get {
    2624                                if (attributes == null) {
    27                                         attributes = new Attributes();
     25                                        attributes = new Attributes ();
    2826                                }
     27
    2928                                return attributes;
    3029                        }
     
    3837                                        instance = new PersistentContainer ();
    3938                                }
     39
    4040                                return instance;
    4141                        }
    4242                }
    4343
    44                 private PersistentContainer ()
    45                 {
     44                private PersistentContainer () {
    4645                }
    4746
    48                 public void Save ()
    49                 {
     47                public void Save () {
    5048                        Stream stream = File.Open (GameUtils.GetSaveGameDir () + "/AllocsPeristentData.bin", FileMode.Create);
    5149                        BinaryFormatter bFormatter = new BinaryFormatter ();
     
    5452                }
    5553
    56                 public static bool Load ()
    57                 {
     54                public static bool Load () {
    5855                        if (File.Exists (GameUtils.GetSaveGameDir () + "/AllocsPeristentData.bin")) {
    5956                                try {
     
    6158                                        Stream stream = File.Open (GameUtils.GetSaveGameDir () + "/AllocsPeristentData.bin", FileMode.Open);
    6259                                        BinaryFormatter bFormatter = new BinaryFormatter ();
    63                                         obj = (PersistentContainer)bFormatter.Deserialize (stream);
     60                                        obj = (PersistentContainer) bFormatter.Deserialize (stream);
    6461                                        stream.Close ();
    6562                                        instance = obj;
     
    7067                                }
    7168                        }
     69
    7270                        return false;
    7371                }
    74 
    7572        }
    7673}
    77 
  • binary-improvements/7dtd-server-fixes/src/PersistentData/Player.cs

    r324 r325  
    44
    55namespace AllocsFixes.PersistentData {
    6     [Serializable]
    7     public class Player {
    8         private readonly string steamId;
    9         private int entityId;
    10         private string name;
    11         private string ip;
    12         private long totalPlayTime;
    13 
    14         [OptionalField] private DateTime
    15             lastOnline;
    16 
    17         private Inventory inventory;
    18 
    19         [OptionalField] private int
    20             lastPositionX, lastPositionY, lastPositionZ;
    21 
    22         [OptionalField] [Obsolete ("experience no longer available, use level and expToNextLevel instead")]
    23         private uint experience;
    24 
    25         [OptionalField] private bool chatMuted;
    26         [OptionalField] private int maxChatLength;
    27         [OptionalField] private string chatColor;
    28         [OptionalField] private bool chatName;
    29         [OptionalField] private uint expToNextLevel;
    30         [OptionalField] private int level;
    31 
    32         [NonSerialized] private ClientInfo
    33             clientInfo;
    34 
    35         public string SteamID {
    36             get { return steamId; }
    37         }
     6        [Serializable]
     7        public class Player {
     8                private readonly string steamId;
     9                private int entityId;
     10                private string name;
     11                private string ip;
     12                private long totalPlayTime;
     13
     14                [OptionalField] private DateTime lastOnline;
     15
     16                private Inventory inventory;
     17
     18                [OptionalField] private int lastPositionX, lastPositionY, lastPositionZ;
     19
     20                [OptionalField] [Obsolete ("experience no longer available, use level and expToNextLevel instead")]
     21                private uint experience;
     22
     23                [OptionalField] private bool chatMuted;
     24                [OptionalField] private int maxChatLength;
     25                [OptionalField] private string chatColor;
     26                [OptionalField] private bool chatName;
     27                [OptionalField] private uint expToNextLevel;
     28                [OptionalField] private int level;
     29
     30                [NonSerialized] private ClientInfo clientInfo;
     31
     32                public string SteamID {
     33                        get { return steamId; }
     34                }
    3835
    3936        public int EntityID {
     
    4138        }
    4239
    43         public string Name {
    44             get { return name == null ? string.Empty : name; }
    45         }
    46 
    47         public string IP {
    48             get { return ip == null ? string.Empty : ip; }
    49         }
    50 
    51         public Inventory Inventory {
    52             get {
    53                 if (inventory == null)
    54                     inventory = new Inventory ();
    55                 return inventory;
    56             }
    57         }
    58 
    59         public bool IsOnline {
    60             get { return clientInfo != null; }
    61         }
    62 
    63         public ClientInfo ClientInfo {
    64             get { return clientInfo; }
    65         }
    66 
    67         public EntityPlayer Entity {
    68             get {
    69                 if (IsOnline) {
    70                     return GameManager.Instance.World.Players.dict [clientInfo.entityId];
    71                 } else {
    72                     return null;
    73                 }
    74             }
    75         }
    76 
    77         public long TotalPlayTime {
    78             get {
    79                 if (IsOnline) {
    80                     return totalPlayTime + (long) (DateTime.Now - lastOnline).TotalSeconds;
    81                 } else {
    82                     return totalPlayTime;
    83                 }
    84             }
    85         }
    86 
    87         public DateTime LastOnline {
    88             get {
    89                 if (IsOnline)
    90                     return DateTime.Now;
    91                 else
    92                     return lastOnline;
    93             }
    94         }
    95 
    96         public Vector3i LastPosition {
    97             get {
    98                 if (IsOnline)
    99                     return new Vector3i (Entity.GetPosition ());
    100                 else
    101                     return new Vector3i (lastPositionX, lastPositionY, lastPositionZ);
    102             }
    103         }
    104 
    105         public bool LandProtectionActive {
    106             get {
    107                 return GameManager.Instance.World.IsLandProtectionValidForPlayer (GameManager.Instance
    108                     .GetPersistentPlayerList ().GetPlayerData (SteamID));
    109             }
    110         }
    111 
    112         public float LandProtectionMultiplier {
    113             get {
    114                 return GameManager.Instance.World.GetLandProtectionHardnessModifierForPlayer (GameManager.Instance
    115                     .GetPersistentPlayerList ().GetPlayerData (SteamID));
    116             }
    117         }
    118 
    119 
    120         [Obsolete ("Experience no longer available, use Level instead")]
    121         public uint Experience {
    122             get { return 0; }
    123         }
    124 
    125         public float Level {
    126             get {
    127                 float expForNextLevel =
    128                     (int) Math.Min ((Progression.BaseExpToLevel * Mathf.Pow (Progression.ExpMultiplier, level + 1)),
    129                         int.MaxValue);
    130                 float fLevel = level + 1f - ((float) expToNextLevel / expForNextLevel);
    131                 return fLevel;
    132             }
    133         }
    134 
    135         public bool IsChatMuted {
    136             get { return chatMuted; }
    137             set { chatMuted = value; }
    138         }
    139 
    140         public int MaxChatLength {
    141             get {
    142                 if (maxChatLength == 0) {
    143                     maxChatLength = 255;
    144                 }
    145 
    146                 return maxChatLength;
    147             }
    148             set { maxChatLength = value; }
    149         }
    150 
    151         public string ChatColor {
    152             get {
    153                 if (chatColor == null || chatColor == "") {
    154                     chatColor = "";
    155                 }
    156 
    157                 return chatColor;
    158             }
    159 
    160             set { chatColor = value; }
    161         }
    162 
    163         public bool ChatName {
    164             get { return chatName; }
    165 
    166             set { chatName = value; }
    167         }
    168 
    169         public void SetOffline () {
    170             if (clientInfo != null) {
    171                 Log.Out ("Player set to offline: " + steamId);
    172                 lastOnline = DateTime.Now;
    173                 try {
    174                     Vector3i lastPos = new Vector3i (Entity.GetPosition ());
    175                     lastPositionX = lastPos.x;
    176                     lastPositionY = lastPos.y;
    177                     lastPositionZ = lastPos.z;
    178                     totalPlayTime += (long) (Time.timeSinceLevelLoad - Entity.CreationTimeSinceLevelLoad);
    179                 } catch (NullReferenceException) {
    180                     Log.Out ("Entity not available. Something seems to be wrong here...");
    181                 }
    182 
    183                 clientInfo = null;
    184             }
    185         }
    186 
    187         public void SetOnline (ClientInfo ci) {
    188             Log.Out ("Player set to online: " + steamId);
    189             clientInfo = ci;
     40                public string Name {
     41                        get { return name == null ? string.Empty : name; }
     42                }
     43
     44                public string IP {
     45                        get { return ip == null ? string.Empty : ip; }
     46                }
     47
     48                public Inventory Inventory {
     49                        get {
     50                                if (inventory == null) {
     51                                        inventory = new Inventory ();
     52                                }
     53
     54                                return inventory;
     55                        }
     56                }
     57
     58                public bool IsOnline {
     59                        get { return clientInfo != null; }
     60                }
     61
     62                public ClientInfo ClientInfo {
     63                        get { return clientInfo; }
     64                }
     65
     66                public EntityPlayer Entity {
     67                        get {
     68                                if (IsOnline) {
     69                                        return GameManager.Instance.World.Players.dict [clientInfo.entityId];
     70                                }
     71
     72                                return null;
     73                        }
     74                }
     75
     76                public long TotalPlayTime {
     77                        get {
     78                                if (IsOnline) {
     79                                        return totalPlayTime + (long) (DateTime.Now - lastOnline).TotalSeconds;
     80                                }
     81
     82                                return totalPlayTime;
     83                        }
     84                }
     85
     86                public DateTime LastOnline {
     87                        get {
     88                                if (IsOnline) {
     89                                        return DateTime.Now;
     90                                }
     91
     92                                return lastOnline;
     93                        }
     94                }
     95
     96                public Vector3i LastPosition {
     97                        get {
     98                                if (IsOnline) {
     99                                        return new Vector3i (Entity.GetPosition ());
     100                                }
     101
     102                                return new Vector3i (lastPositionX, lastPositionY, lastPositionZ);
     103                        }
     104                }
     105
     106                public bool LandProtectionActive {
     107                        get {
     108                                return GameManager.Instance.World.IsLandProtectionValidForPlayer (GameManager.Instance
     109                                        .GetPersistentPlayerList ().GetPlayerData (SteamID));
     110                        }
     111                }
     112
     113                public float LandProtectionMultiplier {
     114                        get {
     115                                return GameManager.Instance.World.GetLandProtectionHardnessModifierForPlayer (GameManager.Instance
     116                                        .GetPersistentPlayerList ().GetPlayerData (SteamID));
     117                        }
     118                }
     119
     120
     121                [Obsolete ("Experience no longer available, use Level instead")]
     122                public uint Experience {
     123                        get { return 0; }
     124                }
     125
     126                public float Level {
     127                        get {
     128                                float expForNextLevel =
     129                                        (int) Math.Min (Progression.BaseExpToLevel * Mathf.Pow (Progression.ExpMultiplier, level + 1),
     130                                                int.MaxValue);
     131                                float fLevel = level + 1f - expToNextLevel / expForNextLevel;
     132                                return fLevel;
     133                        }
     134                }
     135
     136                public bool IsChatMuted {
     137                        get { return chatMuted; }
     138                        set { chatMuted = value; }
     139                }
     140
     141                public int MaxChatLength {
     142                        get {
     143                                if (maxChatLength == 0) {
     144                                        maxChatLength = 255;
     145                                }
     146
     147                                return maxChatLength;
     148                        }
     149                        set { maxChatLength = value; }
     150                }
     151
     152                public string ChatColor {
     153                        get {
     154                                if (chatColor == null || chatColor == "") {
     155                                        chatColor = "";
     156                                }
     157
     158                                return chatColor;
     159                        }
     160
     161                        set { chatColor = value; }
     162                }
     163
     164                public bool ChatName {
     165                        get { return chatName; }
     166
     167                        set { chatName = value; }
     168                }
     169
     170                public Player (string steamId) {
     171                        this.steamId = steamId;
     172                        inventory = new Inventory ();
     173                }
     174
     175                public void SetOffline () {
     176                        if (clientInfo != null) {
     177                                Log.Out ("Player set to offline: " + steamId);
     178                                lastOnline = DateTime.Now;
     179                                try {
     180                                        Vector3i lastPos = new Vector3i (Entity.GetPosition ());
     181                                        lastPositionX = lastPos.x;
     182                                        lastPositionY = lastPos.y;
     183                                        lastPositionZ = lastPos.z;
     184                                        totalPlayTime += (long) (Time.timeSinceLevelLoad - Entity.CreationTimeSinceLevelLoad);
     185                                } catch (NullReferenceException) {
     186                                        Log.Out ("Entity not available. Something seems to be wrong here...");
     187                                }
     188
     189                                clientInfo = null;
     190                        }
     191                }
     192
     193                public void SetOnline (ClientInfo ci) {
     194                        Log.Out ("Player set to online: " + steamId);
     195                        clientInfo = ci;
    190196            entityId = ci.entityId;
    191             name = ci.playerName;
    192             ip = ci.ip;
    193             lastOnline = DateTime.Now;
    194         }
    195 
    196         public void Update (PlayerDataFile _pdf) {
    197             UpdateProgression (_pdf);
    198             inventory.Update (_pdf);
    199         }
    200 
    201         private void UpdateProgression (PlayerDataFile _pdf) {
    202             if (_pdf.progressionData.Length > 0) {
    203                 using (PooledBinaryReader pbr = MemoryPools.poolBinaryReader.AllocSync (false)) {
    204                     pbr.SetBaseStream (_pdf.progressionData);
    205                     Progression p = Progression.Read (pbr, null);
    206                     expToNextLevel = (uint) p.ExpToNextLevel;
    207                     level = p.Level;
    208                 }
    209             }
    210         }
    211 
    212         public Player (string steamId) {
    213             this.steamId = steamId;
    214             this.inventory = new Inventory ();
    215         }
    216     }
     197                        name = ci.playerName;
     198                        ip = ci.ip;
     199                        lastOnline = DateTime.Now;
     200                }
     201
     202                public void Update (PlayerDataFile _pdf) {
     203                        UpdateProgression (_pdf);
     204                        inventory.Update (_pdf);
     205                }
     206
     207                private void UpdateProgression (PlayerDataFile _pdf) {
     208                        if (_pdf.progressionData.Length > 0) {
     209                                using (PooledBinaryReader pbr = MemoryPools.poolBinaryReader.AllocSync (false)) {
     210                                        pbr.SetBaseStream (_pdf.progressionData);
     211                                        Progression p = Progression.Read (pbr, null);
     212                                        expToNextLevel = (uint) p.ExpToNextLevel;
     213                                        level = p.Level;
     214                                }
     215                        }
     216                }
     217        }
    217218}
  • binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs

    r276 r325  
    11using System;
    22using System.Collections.Generic;
    3 using System.Runtime.Serialization;
    43using System.Text.RegularExpressions;
    54
    6 namespace AllocsFixes.PersistentData
    7 {
     5namespace AllocsFixes.PersistentData {
    86        [Serializable]
    97        public class Players {
    10                 private Dictionary<string, Player> players = new Dictionary<string, Player> ();
     8                private readonly Dictionary<string, Player> players = new Dictionary<string, Player> ();
    119
    1210                public Player this [string steamId, bool create] {
     
    1412                                if (string.IsNullOrEmpty (steamId)) {
    1513                                        return null;
    16                                 } else if (players.ContainsKey (steamId)) {
     14                                }
     15
     16                                if (players.ContainsKey (steamId)) {
    1717                                        return players [steamId];
    18                                 } else {
    19                                         if (create && steamId != null && steamId.Length == 17) {
    20                                                 Log.Out ("Created new player entry for ID: " + steamId);
    21                                                 Player p = new Player (steamId);
    22                                                 players.Add (steamId, p);
    23                                                 return p;
    24                                         }
    25                                         return null;
    2618                                }
     19
     20                                if (create && steamId != null && steamId.Length == 17) {
     21                                        Log.Out ("Created new player entry for ID: " + steamId);
     22                                        Player p = new Player (steamId);
     23                                        players.Add (steamId, p);
     24                                        return p;
     25                                }
     26
     27                                return null;
    2728                        }
    2829                }
     
    5354                        if (_nameOrId.Length == 17 && long.TryParse (_nameOrId, out tempLong)) {
    5455                                return _nameOrId;
    55                         } else {
    56                                 int entityId = -1;
    57                                 if (int.TryParse (_nameOrId, out entityId)) {
    58                                         foreach (KeyValuePair<string, Player> kvp in players) {
    59                                                 if (kvp.Value.IsOnline && kvp.Value.EntityID == entityId) {
    60                                                         return kvp.Key;
    61                                                 }
    62                                         }
    63                                 }
     56                        }
    6457
    65                                 _nameOrId = _nameOrId.ToLower ();
     58                        int entityId = -1;
     59                        if (int.TryParse (_nameOrId, out entityId)) {
    6660                                foreach (KeyValuePair<string, Player> kvp in players) {
    67                                         string name = kvp.Value.Name.ToLower ();
    68                                         if (_ignoreColorCodes) {
    69                                                 name = Regex.Replace (name, "\\[[0-9a-fA-F]{6}\\]", "");
    70                                         }
    71                                         if (kvp.Value.IsOnline && name.Equals (_nameOrId)) {
     61                                        if (kvp.Value.IsOnline && kvp.Value.EntityID == entityId) {
    7262                                                return kvp.Key;
    7363                                        }
    7464                                }
    7565                        }
     66
     67                        _nameOrId = _nameOrId.ToLower ();
     68                        foreach (KeyValuePair<string, Player> kvp in players) {
     69                                string name = kvp.Value.Name.ToLower ();
     70                                if (_ignoreColorCodes) {
     71                                        name = Regex.Replace (name, "\\[[0-9a-fA-F]{6}\\]", "");
     72                                }
     73
     74                                if (kvp.Value.IsOnline && name.Equals (_nameOrId)) {
     75                                        return kvp.Key;
     76                                }
     77                        }
     78
    7679                        return null;
    7780                }
    7881        }
    7982}
    80 
  • binary-improvements/7dtd-server-fixes/src/PlayerDataStuff.cs

    r233 r325  
     1using System;
    12using AllocsFixes.PersistentData;
    2 using System;
    3 using System.Collections.Generic;
    43
    5 namespace AllocsFixes
    6 {
    7         public class PlayerDataStuff
    8         {
    9 
    10                 public static void GM_SavePlayerData (ClientInfo _cInfo, PlayerDataFile _playerDataFile)
    11                 {
     4namespace AllocsFixes {
     5        public class PlayerDataStuff {
     6                public static void GM_SavePlayerData (ClientInfo _cInfo, PlayerDataFile _playerDataFile) {
    127                        try {
    13                                 PersistentContainer.Instance.Players[_cInfo.playerId, true].Update (_playerDataFile);
     8                                PersistentContainer.Instance.Players [_cInfo.playerId, true].Update (_playerDataFile);
    149                        } catch (Exception e) {
    1510                                Log.Out ("Error in GM_SavePlayerData: " + e);
    1611                        }
    1712                }
    18 
    19 
    2013        }
    2114}
  • binary-improvements/7dtd-server-fixes/src/StateManager.cs

    r306 r325  
    11using System;
    2 using System.Reflection;
     2using AllocsFixes.PersistentData;
    33
    4 namespace AllocsFixes
    5 {
    6         public class StateManager
    7         {
    8                 public static void Awake ()
    9                 {
     4namespace AllocsFixes {
     5        public class StateManager {
     6                public static void Awake () {
    107                        try {
    11                                 PersistentData.PersistentContainer.Load ();
     8                                PersistentContainer.Load ();
    129                        } catch (Exception e) {
    1310                                Log.Out ("Error in StateManager.Awake: " + e);
     
    1512                }
    1613
    17                 public static void Shutdown ()
    18                 {
     14                public static void Shutdown () {
    1915                        try {
    2016                                Log.Out ("Server shutting down!");
    21                                 PersistentData.PersistentContainer.Instance.Save ();
     17                                PersistentContainer.Instance.Save ();
    2218                        } catch (Exception e) {
    2319                                Log.Out ("Error in StateManager.Shutdown: " + e);
     
    2622        }
    2723}
    28 
  • binary-improvements/AllocsCommands/AssemblyInfo.cs

    r232 r325  
    11using System.Reflection;
    2 using System.Runtime.CompilerServices;
    32
    43// Information about this assembly is defined by the following attributes.
    54// Change them to the values specific to your project.
    65
    7 [assembly: AssemblyTitle("AllocsCommands")]
    8 [assembly: AssemblyDescription("")]
    9 [assembly: AssemblyConfiguration("")]
    10 [assembly: AssemblyCompany("")]
    11 [assembly: AssemblyProduct("")]
    12 [assembly: AssemblyCopyright("ci")]
    13 [assembly: AssemblyTrademark("")]
    14 [assembly: AssemblyCulture("")]
     6[assembly: AssemblyTitle ("AllocsCommands")]
     7[assembly: AssemblyDescription ("")]
     8[assembly: AssemblyConfiguration ("")]
     9[assembly: AssemblyCompany ("")]
     10[assembly: AssemblyProduct ("")]
     11[assembly: AssemblyCopyright ("ci")]
     12[assembly: AssemblyTrademark ("")]
     13[assembly: AssemblyCulture ("")]
    1514
    1615// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
     
    1817// and "{Major}.{Minor}.{Build}.*" will update just the revision.
    1918
    20 [assembly: AssemblyVersion("0.0.0.0")]
     19[assembly: AssemblyVersion ("0.0.0.0")]
    2120
    2221// The following attributes are used to specify the signing key for the assembly,
     
    2524//[assembly: AssemblyDelaySign(false)]
    2625//[assembly: AssemblyKeyFile("")]
    27 
  • binary-improvements/AllocsCommands/Chat.cs

    r267 r325  
    1 using System;
    2 
    3 namespace AllocsFixes.CustomCommands
    4 {
     1namespace AllocsFixes.CustomCommands {
    52        public class Chat {
    6 
    73                public static void SendMessage (ClientInfo _receiver, ClientInfo _sender, string _message) {
    84                        string senderName;
     
    139                                senderName = "Server";
    1410                        }
    15                         _receiver.SendPackage (new NetPackageGameMessage (EnumGameMessages.Chat, _message, senderName + " (PM)", false, "", false));
     11
     12                        _receiver.SendPackage (new NetPackageGameMessage (EnumGameMessages.Chat, _message, senderName + " (PM)",
     13                                false, "", false));
    1614                        string receiverName = _receiver.playerName;
    17                         SdtdConsole.Instance.Output ("Message to player " + (receiverName != null ? "\"" + receiverName + "\"" : "unknownName") + " sent with sender \"" + senderName + "\"");
     15                        SdtdConsole.Instance.Output ("Message to player " +
     16                                                     (receiverName != null ? "\"" + receiverName + "\"" : "unknownName") +
     17                                                     " sent with sender \"" + senderName + "\"");
    1818                }
    19 
    20 
    2119        }
    2220}
    23 
  • binary-improvements/AllocsCommands/Commands/Give.cs

    r324 r325  
    33using UnityEngine;
    44
    5 namespace AllocsFixes.CustomCommands
    6 {
     5namespace AllocsFixes.CustomCommands {
    76        public class Give : ConsoleCmdAbstract {
    87                public override string GetDescription () {
     
    1211                public override string GetHelp () {
    1312                        return "Give an item to a player by dropping it in front of that player\n" +
    14                                 "Usage:\n" +
    15                                 "   give <name / entity id> <item name> <amount>\n" +
    16                                 "   give <name / entity id> <item name> <amount> <quality>\n" +
    17                                 "Either pass the full name of a player or his entity id (given by e.g. \"lpi\").\n" +
    18                                 "Item name has to be the exact name of an item as listed by \"listitems\".\n" +
    19                                 "Amount is the number of instances of this item to drop (as a single stack).\n" +
    20                                 "Quality is the quality of the dropped items for items that have a quality.";
     13                               "Usage:\n" +
     14                               "   give <name / entity id> <item name> <amount>\n" +
     15                               "   give <name / entity id> <item name> <amount> <quality>\n" +
     16                               "Either pass the full name of a player or his entity id (given by e.g. \"lpi\").\n" +
     17                               "Item name has to be the exact name of an item as listed by \"listitems\".\n" +
     18                               "Amount is the number of instances of this item to drop (as a single stack).\n" +
     19                               "Quality is the quality of the dropped items for items that have a quality.";
    2120                }
    2221
    2322                public override string[] GetCommands () {
    24                         return new string[] { "give", string.Empty };
     23                        return new[] {"give", string.Empty};
    2524                }
    2625
     
    2827                        try {
    2928                                if (_params.Count != 3 && _params.Count != 4) {
    30                                         SdtdConsole.Instance.Output ("Wrong number of arguments, expected 3 or 4, found " + _params.Count + ".");
     29                                        SdtdConsole.Instance.Output ("Wrong number of arguments, expected 3 or 4, found " + _params.Count +
     30                                                                     ".");
    3131                                        return;
    3232                                }
     
    5656
    5757                                if (_params.Count == 4) {
    58                                         if(!int.TryParse(_params [1], out quality) || quality <= 0) {
     58                                        if (!int.TryParse (_params [1], out quality) || quality <= 0) {
    5959                                                SdtdConsole.Instance.Output ("Quality is not an integer or not greater than zero.");
    6060                                                return;
     
    6464                                if (ItemClass.list [iv.type].HasSubItems) {
    6565                                        for (int i = 0; i < iv.Modifications.Length; i++) {
    66                                                 ItemValue tmp = iv.Modifications[i];
     66                                                ItemValue tmp = iv.Modifications [i];
    6767                                                tmp.Quality = quality;
    68                                                 iv.Modifications[i] = tmp;
     68                                                iv.Modifications [i] = tmp;
    6969                                        }
    7070                                } else if (ItemClass.list [iv.type].HasQuality) {
  • binary-improvements/AllocsCommands/Commands/ListItems.cs

    r306 r325  
    22using System.Collections.Generic;
    33
    4 namespace AllocsFixes.CustomCommands
    5 {
    6         public class ListItems : ConsoleCmdAbstract
    7         {
    8                 public override string GetDescription ()
    9                 {
     4namespace AllocsFixes.CustomCommands {
     5        public class ListItems : ConsoleCmdAbstract {
     6                public override string GetDescription () {
    107                        return "lists all items that contain the given substring";
    118                }
    129
    13                 public override string[] GetCommands ()
    14                 {
    15                         return new string[] { "listitems", "li" };
     10                public override string[] GetCommands () {
     11                        return new[] {"listitems", "li"};
    1612                }
    1713
    1814                public override string GetHelp () {
    1915                        return "List all available item names\n" +
    20                                 "Usage:\n" +
    21                                 "   1. listitems <searchString>\n" +
    22                                 "   2. listitems *\n" +
    23                                 "1. List only names that contain the given string.\n" +
    24                                 "2. List all names.";
     16                               "Usage:\n" +
     17                               "   1. listitems <searchString>\n" +
     18                               "   2. listitems *\n" +
     19                               "1. List only names that contain the given string.\n" +
     20                               "2. List all names.";
    2521                }
    2622
    27                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    28                 {
     23                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    2924                        try {
    3025                                if (_params.Count != 1 || _params [0].Length == 0) {
     
    3429
    3530                                int count = ItemClass.ItemNames.Count;
    36                                 bool showAll = _params[0].Trim().Equals("*");
     31                                bool showAll = _params [0].Trim ().Equals ("*");
    3732
    3833                                int listed = 0;
  • binary-improvements/AllocsCommands/Commands/ListKnownPlayers.cs

    r284 r325  
    1 using AllocsFixes.PersistentData;
    21using System;
    32using System.Collections.Generic;
     3using AllocsFixes.PersistentData;
    44
    5 namespace AllocsFixes.CustomCommands
    6 {
    7         public class ListKnownPlayers : ConsoleCmdAbstract
    8         {
    9                 public override string GetDescription ()
    10                 {
     5namespace AllocsFixes.CustomCommands {
     6        public class ListKnownPlayers : ConsoleCmdAbstract {
     7                public override string GetDescription () {
    118                        return "lists all players that were ever online";
    129                }
     
    1411                public override string GetHelp () {
    1512                        return "Usage:\n" +
    16                                    "  1. listknownplayers\n" +
    17                                    "  2. listknownplayers -online\n" +
    18                                    "  3. listknownplayers -notbanned\n" +
    19                                    "  4. listknownplayers <player name / steamid>\n" +
    20                                    "1. Lists all players that have ever been online\n" +
    21                                    "2. Lists only the players that are currently online\n" +
    22                                    "3. Lists only the players that are not banned\n" +
    23                                    "4. Lists all players whose name contains the given string or matches the given SteamID";
     13                               "  1. listknownplayers\n" +
     14                               "  2. listknownplayers -online\n" +
     15                               "  3. listknownplayers -notbanned\n" +
     16                               "  4. listknownplayers <player name / steamid>\n" +
     17                               "1. Lists all players that have ever been online\n" +
     18                               "2. Lists only the players that are currently online\n" +
     19                               "3. Lists only the players that are not banned\n" +
     20                               "4. Lists all players whose name contains the given string or matches the given SteamID";
    2421                }
    2522
    26                 public override string[] GetCommands ()
    27                 {
    28                         return new string[] { "listknownplayers", "lkp" };
     23                public override string[] GetCommands () {
     24                        return new[] {"listknownplayers", "lkp"};
    2925                }
    3026
    31                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    32                 {
     27                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    3328                        try {
    3429                                AdminTools admTools = GameManager.Instance.adminTools;
     
    5651
    5752                                        if (p != null) {
    58                                                 SdtdConsole.Instance.Output (String.Format ("{0}. {1}, id={2}, steamid={3}, online={4}, ip={5}, playtime={6} m, seen={7}",
     53                                                SdtdConsole.Instance.Output (string.Format (
     54                                                        "{0}. {1}, id={2}, steamid={3}, online={4}, ip={5}, playtime={6} m, seen={7}",
    5955                                                        0, p.Name, p.EntityID, nameFilter, p.IsOnline, p.IP,
    6056                                                        p.TotalPlayTime / 60,
     
    6258                                                );
    6359                                        } else {
    64                                                 SdtdConsole.Instance.Output (String.Format ("SteamID {0} unknown!", nameFilter));
     60                                                SdtdConsole.Instance.Output (string.Format ("SteamID {0} unknown!", nameFilter));
    6561                                        }
    6662                                } else {
     
    7470                                                        && (nameFilter.Length == 0 || p.Name.ToLower ().Contains (nameFilter))
    7571                                                ) {
    76                                                         SdtdConsole.Instance.Output (String.Format ("{0}. {1}, id={2}, steamid={3}, online={4}, ip={5}, playtime={6} m, seen={7}",
    77                                                                                             ++num, p.Name, p.EntityID, sid, p.IsOnline, p.IP,
    78                                                                                             p.TotalPlayTime / 60,
    79                                                                                             p.LastOnline.ToString ("yyyy-MM-dd HH:mm"))
     72                                                        SdtdConsole.Instance.Output (string.Format (
     73                                                                "{0}. {1}, id={2}, steamid={3}, online={4}, ip={5}, playtime={6} m, seen={7}",
     74                                                                ++num, p.Name, p.EntityID, sid, p.IsOnline, p.IP,
     75                                                                p.TotalPlayTime / 60,
     76                                                                p.LastOnline.ToString ("yyyy-MM-dd HH:mm"))
    8077                                                        );
    8178                                                }
    8279                                        }
     80
    8381                                        SdtdConsole.Instance.Output ("Total of " + PersistentContainer.Instance.Players.Count + " known");
    8482                                }
  • binary-improvements/AllocsCommands/Commands/ListLandProtection.cs

    r273 r325  
    11using System;
    22using System.Collections.Generic;
     3using AllocsFixes.PersistentData;
    34
    4 namespace AllocsFixes.CustomCommands
    5 {
    6         public class ListLandProtection : ConsoleCmdAbstract
    7         {
    8                 public override string GetDescription ()
    9                 {
     5namespace AllocsFixes.CustomCommands {
     6        public class ListLandProtection : ConsoleCmdAbstract {
     7                public override string GetDescription () {
    108                        return "lists all land protection blocks and owners";
    119                }
     
    1311                public override string GetHelp () {
    1412                        return "Usage:\n" +
    15                         "  1. listlandprotection summary\n" +
    16                         "  2. listlandprotection <steam id / player name / entity id> [parseable]\n" +
    17                         "  3. listlandprotection nearby [length]\n" +
    18                         "1. Lists only players that own claimstones, the number they own and the protection status\n" +
    19                         "2. Lists only the claims of the player given by his SteamID / entity id / playername, including the individual claim positions.\n" +
    20                         "   If \"parseable\" is specified the output of the individual claims will be in a format better suited for programmatical readout.\n" +
    21                         "3. Lists claims in a square with edge length of 64 (or the optionally specified size) around the executing player\n";
     13                               "  1. listlandprotection summary\n" +
     14                               "  2. listlandprotection <steam id / player name / entity id> [parseable]\n" +
     15                               "  3. listlandprotection nearby [length]\n" +
     16                               "1. Lists only players that own claimstones, the number they own and the protection status\n" +
     17                               "2. Lists only the claims of the player given by his SteamID / entity id / playername, including the individual claim positions.\n" +
     18                               "   If \"parseable\" is specified the output of the individual claims will be in a format better suited for programmatical readout.\n" +
     19                               "3. Lists claims in a square with edge length of 64 (or the optionally specified size) around the executing player\n";
    2220                }
    2321
    24                 public override string[] GetCommands ()
    25                 {
    26                         return new string[] { "listlandprotection", "llp" };
     22                public override string[] GetCommands () {
     23                        return new[] {"listlandprotection", "llp"};
    2724                }
    2825
    29                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    30                 {
     26                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    3127                        try {
    3228                                if (_senderInfo.RemoteClientInfo != null) {
     
    4137                                bool summaryOnly = false;
    4238                                string steamIdFilter = string.Empty;
    43                                 Vector3i closeTo = default(Vector3i);
     39                                Vector3i closeTo = default (Vector3i);
    4440                                bool onlyCloseToPlayer = false;
    4541                                int closeToDistance = 32;
     
    7167                                                try {
    7268                                                        if (_params.Count == 3) {
    73                                                                 if (!int.TryParse (_params[1], out closeToDistance)) {
     69                                                                if (!int.TryParse (_params [1], out closeToDistance)) {
    7470                                                                        SdtdConsole.Instance.Output ("Given length is not an integer!");
    7571                                                                        return;
    7672                                                                }
     73
    7774                                                                closeToDistance /= 2;
    7875                                                        }
     76
    7977                                                        ClientInfo ci = ConsoleHelper.ParseParamSteamIdOnline (_params [_params.Count - 1]);
    8078                                                        EntityPlayer ep = w.Players.dict [ci.entityId];
     
    9593                                LandClaimList.OwnerFilter[] ownerFilters = null;
    9694                                if (!string.IsNullOrEmpty (steamIdFilter)) {
    97                                         ownerFilters = new LandClaimList.OwnerFilter[] { LandClaimList.SteamIdFilter (steamIdFilter) };
     95                                        ownerFilters = new[] {LandClaimList.SteamIdFilter (steamIdFilter)};
    9896                                }
     97
    9998                                LandClaimList.PositionFilter[] posFilters = null;
    10099                                if (onlyCloseToPlayer) {
    101                                         posFilters = new LandClaimList.PositionFilter[] { LandClaimList.CloseToFilter2dRect (closeTo, closeToDistance) };
     100                                        posFilters = new[] {LandClaimList.CloseToFilter2dRect (closeTo, closeToDistance)};
    102101                                }
    103102
    104                                 Dictionary<PersistentData.Player, List<Vector3i>> claims = LandClaimList.GetLandClaims (ownerFilters, posFilters);
     103                                Dictionary<Player, List<Vector3i>> claims = LandClaimList.GetLandClaims (ownerFilters, posFilters);
    105104
    106                                 foreach (KeyValuePair<PersistentData.Player, List<Vector3i>> kvp in claims) {
    107                                         SdtdConsole.Instance.Output (String.Format (
     105                                foreach (KeyValuePair<Player, List<Vector3i>> kvp in claims) {
     106                                        SdtdConsole.Instance.Output (string.Format (
    108107                                                "Player \"{0} ({1})\" owns {4} keystones (protected: {2}, current hardness multiplier: {3})",
    109108                                                kvp.Key.Name,
     
    115114                                                foreach (Vector3i v in kvp.Value) {
    116115                                                        if (parseableOutput) {
    117                                                                 SdtdConsole.Instance.Output ("LandProtectionOf: id=" + kvp.Key.SteamID + ", playerName=" + kvp.Key.Name + ", location=" + v.ToString ());
     116                                                                SdtdConsole.Instance.Output ("LandProtectionOf: id=" + kvp.Key.SteamID +
     117                                                                                             ", playerName=" + kvp.Key.Name + ", location=" + v);
    118118                                                        } else {
    119                                                                 SdtdConsole.Instance.Output ("   (" + v.ToString () + ")");
     119                                                                SdtdConsole.Instance.Output ("   (" + v + ")");
    120120                                                        }
    121121                                                }
     
    123123                                }
    124124
    125                                 if (steamIdFilter.Length == 0)
     125                                if (steamIdFilter.Length == 0) {
    126126                                        SdtdConsole.Instance.Output ("Total of " + ppl.m_lpBlockMap.Count + " keystones in the game");
     127                                }
    127128                        } catch (Exception e) {
    128129                                Log.Out ("Error in ListLandProtection.Run: " + e);
  • binary-improvements/AllocsCommands/Commands/RemoveLandProtection.cs

    r306 r325  
    11using System;
    22using System.Collections.Generic;
     3using AllocsFixes.PersistentData;
    34
    4 namespace AllocsFixes.CustomCommands
    5 {
    6         public class RemoveLandProtection : ConsoleCmdAbstract
    7         {
    8                 public override string GetDescription ()
    9                 {
     5namespace AllocsFixes.CustomCommands {
     6        public class RemoveLandProtection : ConsoleCmdAbstract {
     7                public override string GetDescription () {
    108                        return "removes the association of a land protection block to the owner";
    119                }
     
    1311                public override string GetHelp () {
    1412                        return "Usage:" +
    15                                    "  1. removelandprotection <steamid>\n" +
    16                                    "  2. removelandprotection <x> <y> <z>\n" +
    17                                    "  3. removelandprotection nearby [length]\n" +
    18                                    "1. Remove all land claims owned by the user with the given SteamID\n" +
    19                                    "2. Remove only the claim block on the exactly given block position\n" +
    20                                    "3. Remove all claims in a square with edge length of 64 (or the optionally specified size) around the executing player";
     13                               "  1. removelandprotection <steamid>\n" +
     14                               "  2. removelandprotection <x> <y> <z>\n" +
     15                               "  3. removelandprotection nearby [length]\n" +
     16                               "1. Remove all land claims owned by the user with the given SteamID\n" +
     17                               "2. Remove only the claim block on the exactly given block position\n" +
     18                               "3. Remove all claims in a square with edge length of 64 (or the optionally specified size) around the executing player";
    2119                }
    2220
    23                 public override string[] GetCommands ()
    24                 {
    25                         return new string[] { "removelandprotection", "rlp" };
     21                public override string[] GetCommands () {
     22                        return new[] {"removelandprotection", "rlp"};
    2623                }
    2724
    28                 private void removeById (string _id)
    29                 {
     25                private void removeById (string _id) {
    3026                        try {
    3127                                PersistentPlayerList ppl = GameManager.Instance.GetPersistentPlayerList ();
    3228
    3329                                if (_id.Length < 1 || !ppl.Players.ContainsKey (_id)) {
    34                                         SdtdConsole.Instance.Output ("Not a valid Steam ID or user has never logged on. Use \"listlandprotection\" to get a list of keystones.");
     30                                        SdtdConsole.Instance.Output (
     31                                                "Not a valid Steam ID or user has never logged on. Use \"listlandprotection\" to get a list of keystones.");
    3532                                        return;
    3633                                }
     34
    3735                                if (ppl.Players [_id].LPBlocks == null || ppl.Players [_id].LPBlocks.Count == 0) {
    38                                         SdtdConsole.Instance.Output ("Player does not own any keystones. Use \"listlandprotection\" to get a list of keystones.");
     36                                        SdtdConsole.Instance.Output (
     37                                                "Player does not own any keystones. Use \"listlandprotection\" to get a list of keystones.");
    3938                                        return;
    4039                                }
    4140
    4241                                List<BlockChangeInfo> changes = new List<BlockChangeInfo> ();
    43                                 foreach (Vector3i pos in ppl.Players[_id].LPBlocks) {
     42                                foreach (Vector3i pos in ppl.Players [_id].LPBlocks) {
    4443                                        BlockChangeInfo bci = new BlockChangeInfo (pos, new BlockValue (0), true, false);
    4544                                        changes.Add (bci);
    4645                                }
     46
    4747                                GameManager.Instance.SetBlocksRPC (changes);
    4848
    49                                 SdtdConsole.Instance.Output ("Tried to remove #" + changes.Count + " land protection blocks for player \"" + _id + "\". Note "+
    50                                                       "that only blocks in chunks that are currently loaded (close to any player) could be removed. "+
    51                                                       "Please check for remaining blocks by running:");
    52                                 SdtdConsole.Instance.Output("  listlandprotection " + _id);
     49                                SdtdConsole.Instance.Output ("Tried to remove #" + changes.Count +
     50                                                             " land protection blocks for player \"" + _id + "\". Note " +
     51                                                             "that only blocks in chunks that are currently loaded (close to any player) could be removed. " +
     52                                                             "Please check for remaining blocks by running:");
     53                                SdtdConsole.Instance.Output ("  listlandprotection " + _id);
    5354                        } catch (Exception e) {
    5455                                Log.Out ("Error in RemoveLandProtection.removeById: " + e);
     
    5657                }
    5758
    58                 private void removeByPosition (List<string> _coords)
    59                 {
     59                private void removeByPosition (List<string> _coords) {
    6060                        try {
    6161                                int x = int.MinValue;
     
    7777                                Dictionary<Vector3i, PersistentPlayerData> d = ppl.m_lpBlockMap;
    7878                                if (d == null || !d.ContainsKey (v)) {
    79                                         SdtdConsole.Instance.Output ("No land protection block at the given position or not a valid position. Use \"listlandprotection\" to get a list of keystones.");
     79                                        SdtdConsole.Instance.Output (
     80                                                "No land protection block at the given position or not a valid position. Use \"listlandprotection\" to get a list of keystones.");
    8081                                        return;
    8182                                }
     
    8889                                GameManager.Instance.SetBlocksRPC (changes);
    8990
    90                                 SdtdConsole.Instance.Output ("Land protection block at (" + v.ToString () + ") removed");
     91                                SdtdConsole.Instance.Output ("Land protection block at (" + v + ") removed");
    9192                        } catch (Exception e) {
    9293                                Log.Out ("Error in RemoveLandProtection.removeByPosition: " + e);
     
    9495                }
    9596
    96                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    97                 {
     97                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    9898                        try {
    9999                                if (_senderInfo.RemoteClientInfo != null) {
     
    107107                                                int closeToDistance = 32;
    108108                                                if (_params.Count == 3) {
    109                                                         if (!int.TryParse (_params[1], out closeToDistance)) {
     109                                                        if (!int.TryParse (_params [1], out closeToDistance)) {
    110110                                                                SdtdConsole.Instance.Output ("Given length is not an integer!");
    111111                                                                return;
    112112                                                        }
     113
    113114                                                        closeToDistance /= 2;
    114115                                                }
     116
    115117                                                ClientInfo ci = ConsoleHelper.ParseParamSteamIdOnline (_params [_params.Count - 1]);
    116118                                                EntityPlayer ep = GameManager.Instance.World.Players.dict [ci.entityId];
    117119                                                Vector3i closeTo = new Vector3i (ep.GetPosition ());
    118                                                 LandClaimList.PositionFilter[] posFilters = new LandClaimList.PositionFilter[] { LandClaimList.CloseToFilter2dRect (closeTo, closeToDistance) };
    119                                                 Dictionary<PersistentData.Player, List<Vector3i>> claims = LandClaimList.GetLandClaims (null, posFilters);
     120                                                LandClaimList.PositionFilter[] posFilters =
     121                                                        {LandClaimList.CloseToFilter2dRect (closeTo, closeToDistance)};
     122                                                Dictionary<Player, List<Vector3i>> claims = LandClaimList.GetLandClaims (null, posFilters);
    120123
    121124                                                try {
    122125                                                        List<BlockChangeInfo> changes = new List<BlockChangeInfo> ();
    123                                                         foreach (KeyValuePair<PersistentData.Player, List<Vector3i>> kvp in claims) {
     126                                                        foreach (KeyValuePair<Player, List<Vector3i>> kvp in claims) {
    124127                                                                foreach (Vector3i v in kvp.Value) {
    125128                                                                        BlockChangeInfo bci = new BlockChangeInfo (v, new BlockValue (0), true, false);
     
    127130                                                                }
    128131                                                        }
     132
    129133                                                        GameManager.Instance.SetBlocksRPC (changes);
    130134                                                } catch (Exception e) {
    131135                                                        SdtdConsole.Instance.Output ("Error removing claims");
    132136                                                        Log.Out ("Error in RemoveLandProtection.Run: " + e);
    133                                                         return;
    134137                                                }
    135138                                        } catch (Exception e) {
    136139                                                SdtdConsole.Instance.Output ("Error getting current player's position");
    137140                                                Log.Out ("Error in RemoveLandProtection.Run: " + e);
    138                                                 return;
    139141                                        }
    140142                                } else if (_params.Count == 1) {
  • binary-improvements/AllocsCommands/Commands/Reply.cs

    r309 r325  
    1 using System;
    21using System.Collections.Generic;
    32
    4 namespace AllocsFixes.CustomCommands
    5 {
    6         public class Reply : ConsoleCmdAbstract
    7         {
    8                 public override string GetDescription ()
    9                 {
     3namespace AllocsFixes.CustomCommands {
     4        public class Reply : ConsoleCmdAbstract {
     5                public override string GetDescription () {
    106                        return "send a message to  the player who last sent you a PM";
    117                }
     
    139                public override string GetHelp () {
    1410                        return "Usage:\n" +
    15                                    "   reply <message>\n" +
    16                                    "Send the given message to the user you last received a PM from.";
     11                               "   reply <message>\n" +
     12                               "Send the given message to the user you last received a PM from.";
    1713                }
    1814
    19                 public override string[] GetCommands ()
    20                 {
    21                         return new string[] { "reply", "re" };
     15                public override string[] GetCommands () {
     16                        return new[] {"reply", "re"};
    2217                }
    2318
    24                 private void RunInternal (ClientInfo _sender, List<string> _params)
    25                 {
     19                private void RunInternal (ClientInfo _sender, List<string> _params) {
    2620                        if (_params.Count < 1) {
    2721                                SdtdConsole.Instance.Output ("Usage: reply <message>");
     
    3529                                Chat.SendMessage (receiver, _sender, message);
    3630                        } else {
    37                                 SdtdConsole.Instance.Output ("You have not received a PM so far or sender of last received PM is no longer online.");
     31                                SdtdConsole.Instance.Output (
     32                                        "You have not received a PM so far or sender of last received PM is no longer online.");
    3833                        }
    3934                }
  • binary-improvements/AllocsCommands/Commands/SayToPlayer.cs

    r238 r325  
    22using System.Collections.Generic;
    33
    4 namespace AllocsFixes.CustomCommands
    5 {
    6         public class SayToPlayer : ConsoleCmdAbstract
    7         {
    8                 public override string GetDescription ()
    9                 {
     4namespace AllocsFixes.CustomCommands {
     5        public class SayToPlayer : ConsoleCmdAbstract {
     6                public override string GetDescription () {
    107                        return "send a message to a single player";
    118                }
     
    1310                public override string GetHelp () {
    1411                        return "Usage:\n" +
    15                                    "   pm <player name / steam id / entity id> <message>\n" +
    16                                    "Send a PM to the player given by the player name or entity id (as given by e.g. \"lpi\").";
     12                               "   pm <player name / steam id / entity id> <message>\n" +
     13                               "Send a PM to the player given by the player name or entity id (as given by e.g. \"lpi\").";
    1714                }
    1815
    19                 public override string[] GetCommands ()
    20                 {
    21                         return new string[] { "sayplayer", "pm" };
     16                public override string[] GetCommands () {
     17                        return new[] {"sayplayer", "pm"};
    2218                }
    2319
    24                 private void RunInternal (ClientInfo _sender, List<string> _params)
    25                 {
     20                private void RunInternal (ClientInfo _sender, List<string> _params) {
    2621                        if (_params.Count < 2) {
    2722                                SdtdConsole.Instance.Output ("Usage: sayplayer <playername|entityid> <message>");
     
    3934                }
    4035
    41                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    42                 {
     36                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    4337                        try {
    4438                                if (_senderInfo.RemoteClientInfo != null) {
  • binary-improvements/AllocsCommands/Commands/ShowInventory.cs

    r297 r325  
    1 using AllocsFixes.PersistentData;
    21using System;
    32using System.Collections.Generic;
     3using AllocsFixes.PersistentData;
    44
    5 namespace AllocsFixes.CustomCommands
    6 {
    7         public class ShowInventory : ConsoleCmdAbstract
    8         {
    9 
    10                 public override string GetDescription ()
    11                 {
     5namespace AllocsFixes.CustomCommands {
     6        public class ShowInventory : ConsoleCmdAbstract {
     7                public override string GetDescription () {
    128                        return "list inventory of a given player";
    139                }
    1410
    15                 public override string GetHelp ()
    16                 {
     11                public override string GetHelp () {
    1712                        return "Usage:\n" +
    18                         "   showinventory <steam id / player name / entity id> [tag]\n" +
    19                         "Show the inventory of the player given by his SteamID, player name or\n" +
    20                         "entity id (as given by e.g. \"lpi\").\n" +
    21                         "Optionally specify a tag that is included in each line of the output. In\n" +
    22                         "this case output is designed to be easily parseable by tools.\n" +
    23                         "Note: This only shows the player's inventory after it was first sent to\n" +
    24                         "the server which happens at least every 30 seconds.";
     13                               "   showinventory <steam id / player name / entity id> [tag]\n" +
     14                               "Show the inventory of the player given by his SteamID, player name or\n" +
     15                               "entity id (as given by e.g. \"lpi\").\n" +
     16                               "Optionally specify a tag that is included in each line of the output. In\n" +
     17                               "this case output is designed to be easily parseable by tools.\n" +
     18                               "Note: This only shows the player's inventory after it was first sent to\n" +
     19                               "the server which happens at least every 30 seconds.";
    2520                }
    2621
    27                 public override string[] GetCommands ()
    28                 {
    29                         return new string[] { "showinventory", "si" };
     22                public override string[] GetCommands () {
     23                        return new[] {"showinventory", "si"};
    3024                }
    3125
    32                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    33                 {
     26                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    3427                        try {
    3528                                if (_params.Count < 1) {
     
    4033                                string steamid = PersistentContainer.Instance.Players.GetSteamID (_params [0], true);
    4134                                if (steamid == null) {
    42                                         SdtdConsole.Instance.Output ("Playername or entity/steamid id not found or no inventory saved (first saved after a player has been online for 30s).");
     35                                        SdtdConsole.Instance.Output (
     36                                                "Playername or entity/steamid id not found or no inventory saved (first saved after a player has been online for 30s).");
    4337                                        return;
    4438                                }
     
    5246                                PersistentData.Inventory inv = p.Inventory;
    5347
    54                                 if (tag == null)
     48                                if (tag == null) {
    5549                                        SdtdConsole.Instance.Output ("Belt of player " + p.Name + ":");
     50                                }
     51
    5652                                PrintInv (inv.belt, p.EntityID, "belt", tag);
    57                                 if (tag == null)
     53                                if (tag == null) {
    5854                                        SdtdConsole.Instance.Output (string.Empty);
     55                                }
    5956
    60                                 if (tag == null)
     57                                if (tag == null) {
    6158                                        SdtdConsole.Instance.Output ("Bagpack of player " + p.Name + ":");
     59                                }
     60
    6261                                PrintInv (inv.bag, p.EntityID, "backpack", tag);
    63                                 if (tag == null)
     62                                if (tag == null) {
    6463                                        SdtdConsole.Instance.Output (string.Empty);
     64                                }
    6565
    66                                 if (tag == null)
     66                                if (tag == null) {
    6767                                        SdtdConsole.Instance.Output ("Equipment of player " + p.Name + ":");
     68                                }
     69
    6870                                PrintEquipment (inv.equipment, p.EntityID, "equipment", tag);
    6971
    70                                 if (tag != null)                {
    71                                         SdtdConsole.Instance.Output ("tracker_item id=" + p.EntityID + ", tag=" + tag + ", SHOWINVENTORY DONE");
     72                                if (tag != null) {
     73                                        SdtdConsole.Instance.Output ("tracker_item id=" + p.EntityID + ", tag=" + tag +
     74                                                                     ", SHOWINVENTORY DONE");
    7275                                }
    73 
    7476                        } catch (Exception e) {
    7577                                Log.Out ("Error in ShowInventory.Run: " + e);
     
    7779                }
    7880
    79                 private void PrintInv (List<InvItem> _inv, int _entityId, string _location, string _tag)
    80                 {
     81                private void PrintInv (List<InvItem> _inv, int _entityId, string _location, string _tag) {
    8182                        for (int i = 0; i < _inv.Count; i++) {
    8283                                if (_inv [i] != null) {
    83                                         if (_tag == null) { // no Tag defined -> readable output
     84                                        if (_tag == null) {
     85                                                // no Tag defined -> readable output
    8486                                                if (_inv [i].quality < 0) {
    85                                                         SdtdConsole.Instance.Output (string.Format ("    Slot {0}: {1:000} * {2}", i, _inv [i].count, _inv [i].itemName));
     87                                                        SdtdConsole.Instance.Output (string.Format ("    Slot {0}: {1:000} * {2}", i,
     88                                                                _inv [i].count, _inv [i].itemName));
    8689                                                } else {
    87                                                         SdtdConsole.Instance.Output (string.Format ("    Slot {0}: {1:000} * {2} - quality: {3}", i, _inv [i].count, _inv [i].itemName, _inv [i].quality));
     90                                                        SdtdConsole.Instance.Output (string.Format ("    Slot {0}: {1:000} * {2} - quality: {3}", i,
     91                                                                _inv [i].count, _inv [i].itemName, _inv [i].quality));
    8892                                                }
     93
    8994                                                DoParts (_inv [i].parts, 1, null);
    90                                         } else { // Tag defined -> parseable output
    91                                                 String partsMsg = DoParts(_inv[i].parts, 1, "");
    92                                                 String msg = "tracker_item id=" + _entityId + ", tag=" + _tag + ", location=" + _location + ", slot=" + i + ", item=" + _inv[i].itemName + ", qnty=" + _inv[i].count + ", quality=" + _inv[i].quality + ", parts=(" + partsMsg + ")";
    93                                                 SdtdConsole.Instance.Output(msg);
     95                                        } else {
     96                                                // Tag defined -> parseable output
     97                                                string partsMsg = DoParts (_inv [i].parts, 1, "");
     98                                                string msg = "tracker_item id=" + _entityId + ", tag=" + _tag + ", location=" + _location +
     99                                                             ", slot=" + i + ", item=" + _inv [i].itemName + ", qnty=" + _inv [i].count +
     100                                                             ", quality=" + _inv [i].quality + ", parts=(" + partsMsg + ")";
     101                                                SdtdConsole.Instance.Output (msg);
    94102                                        }
    95103                                }
     
    97105                }
    98106
    99                 private void PrintEquipment (InvItem[] _equipment, int _entityId, string _location, string _tag)
    100                 {
     107                private void PrintEquipment (InvItem[] _equipment, int _entityId, string _location, string _tag) {
    101108                        AddEquipment ("head", _equipment, EquipmentSlots.Headgear, _entityId, _location, _tag);
    102109                        AddEquipment ("eyes", _equipment, EquipmentSlots.Eyewear, _entityId, _location, _tag);
     
    114121                }
    115122
    116                 private void AddEquipment (string _slotname, InvItem[] _items, EquipmentSlots _slot, int _entityId, string _location, string _tag)
    117                 {
     123                private void AddEquipment (string _slotname, InvItem[] _items, EquipmentSlots _slot, int _entityId,
     124                        string _location, string _tag) {
    118125                        int[] slotindices = XUiM_PlayerEquipment.GetSlotIndicesByEquipmentSlot (_slot);
    119126
     
    121128                                if (_items != null && _items [slotindices [i]] != null) {
    122129                                        InvItem item = _items [slotindices [i]];
    123                                         if (_tag == null) { // no Tag defined -> readable output
     130                                        if (_tag == null) {
     131                                                // no Tag defined -> readable output
    124132                                                if (item.quality < 0) {
    125                                                         SdtdConsole.Instance.Output (string.Format ("    Slot {0:8}: {1:000}", _slotname, item.itemName));
     133                                                        SdtdConsole.Instance.Output (string.Format ("    Slot {0:8}: {1:000}", _slotname,
     134                                                                item.itemName));
    126135                                                } else {
    127                                                         SdtdConsole.Instance.Output (string.Format ("    Slot {0:8}: {1:000} - quality: {2}", _slotname, item.itemName, item.quality));
     136                                                        SdtdConsole.Instance.Output (string.Format ("    Slot {0:8}: {1:000} - quality: {2}",
     137                                                                _slotname, item.itemName, item.quality));
    128138                                                }
     139
    129140                                                DoParts (_items [slotindices [i]].parts, 1, null);
    130                                         } else { // Tag defined -> parseable output
    131                                                 String partsMsg = DoParts(_items[slotindices[i]].parts, 1, "");
    132                                                 String msg = "tracker_item id=" + _entityId + ", tag=" + _tag + ", location=" + _location + ", slot=" + _slotname + ", item=" + item.itemName + ", qnty=1, quality=" + item.quality + ", parts=(" +  partsMsg + ")";
    133                                                 SdtdConsole.Instance.Output(msg);
     141                                        } else {
     142                                                // Tag defined -> parseable output
     143                                                string partsMsg = DoParts (_items [slotindices [i]].parts, 1, "");
     144                                                string msg = "tracker_item id=" + _entityId + ", tag=" + _tag + ", location=" + _location +
     145                                                             ", slot=" + _slotname + ", item=" + item.itemName + ", qnty=1, quality=" +
     146                                                             item.quality + ", parts=(" + partsMsg + ")";
     147                                                SdtdConsole.Instance.Output (msg);
    134148                                        }
     149
    135150                                        return;
    136151                                }
     
    138153                }
    139154
    140                 private string DoParts (InvItem[] _parts, int _indent, string _currentMessage)
    141                 {
     155                private string DoParts (InvItem[] _parts, int _indent, string _currentMessage) {
    142156                        if (_parts != null && _parts.Length > 0) {
    143157                                string indenter = new string (' ', _indent * 4);
    144158                                for (int i = 0; i < _parts.Length; i++) {
    145159                                        if (_parts [i] != null) {
    146                                                 if (_currentMessage == null) { // no currentMessage given -> readable output
     160                                                if (_currentMessage == null) {
     161                                                        // no currentMessage given -> readable output
    147162                                                        if (_parts [i].quality < 0) {
    148                                                                 SdtdConsole.Instance.Output (string.Format ("{0}         - {1}", indenter, _parts [i].itemName));
     163                                                                SdtdConsole.Instance.Output (string.Format ("{0}         - {1}", indenter,
     164                                                                        _parts [i].itemName));
    149165                                                        } else {
    150                                                                 SdtdConsole.Instance.Output (string.Format ("{0}         - {1} - quality: {2}", indenter, _parts [i].itemName, _parts [i].quality));
     166                                                                SdtdConsole.Instance.Output (string.Format ("{0}         - {1} - quality: {2}",
     167                                                                        indenter, _parts [i].itemName, _parts [i].quality));
    151168                                                        }
     169
    152170                                                        DoParts (_parts [i].parts, _indent + 1, _currentMessage);
    153                                                 } else { // currentMessage given -> parseable output
     171                                                } else {
     172                                                        // currentMessage given -> parseable output
    154173                                                        if (_currentMessage.Length > 0) {
    155174                                                                _currentMessage += ",";
    156175                                                        }
    157                                                         _currentMessage += _parts[i].itemName + "@" + _parts[i].quality;
     176
     177                                                        _currentMessage += _parts [i].itemName + "@" + _parts [i].quality;
    158178                                                        _currentMessage = DoParts (_parts [i].parts, _indent + 1, _currentMessage);
    159179                                                }
     
    161181                                }
    162182                        }
     183
    163184                        return _currentMessage;
    164185                }
    165 
    166186        }
    167187}
  • binary-improvements/AllocsCommands/PrivateMessageConnections.cs

    r324 r325  
    1 using System;
    21using System.Collections.Generic;
    32using Steamworks;
    43
    5 namespace AllocsFixes.CustomCommands
    6 {
    7         public class PrivateMessageConnections
    8         {
    9                 private static Dictionary<CSteamID, CSteamID> senderOfLastPM = new Dictionary<CSteamID, CSteamID> ();
     4namespace AllocsFixes.CustomCommands {
     5        public class PrivateMessageConnections {
     6                private static readonly Dictionary<CSteamID, CSteamID> senderOfLastPM = new Dictionary<CSteamID, CSteamID> ();
    107
    11                 public static void SetLastPMSender (ClientInfo _sender, ClientInfo _receiver)
    12                 {
     8                public static void SetLastPMSender (ClientInfo _sender, ClientInfo _receiver) {
    139                        senderOfLastPM [_receiver.steamId] = _sender.steamId;
    1410                }
    1511
    16                 public static ClientInfo GetLastPMSenderForPlayer (ClientInfo _player)
    17                 {
     12                public static ClientInfo GetLastPMSenderForPlayer (ClientInfo _player) {
    1813                        if (senderOfLastPM.ContainsKey (_player.steamId)) {
    1914                                CSteamID recSteamId = senderOfLastPM [_player.steamId];
     
    2116                                return recInfo;
    2217                        }
     18
    2319                        return null;
    2420                }
  • binary-improvements/MapRendering/API.cs

    r324 r325  
    1 using System;
     1using AllocsFixes.NetConnections.Servers.Web;
     2using AllocsFixes.NetConnections.Servers.Web.Handlers;
    23
    3 namespace MapRendering
    4 {
     4namespace MapRendering {
    55        public class API : IModApi {
     6                public void InitMod () {
     7                        ModEvents.GameAwake.RegisterHandler (GameAwake);
     8                        ModEvents.GameStartDone.RegisterHandler (GameStartDone);
     9                        ModEvents.GameShutdown.RegisterHandler (GameShutdown);
     10                        ModEvents.CalcChunkColorsDone.RegisterHandler (CalcChunkColorsDone);
     11                }
     12
    613                private void GameAwake () {
    714                        // ReSharper disable once ObjectCreationAsStatement
    8                         new AllocsFixes.NetConnections.Servers.Web.Web ();
    9                         AllocsFixes.NetConnections.Servers.Web.LogBuffer.Instance.GetType ();
     15                        new Web ();
     16                        LogBuffer.Instance.GetType ();
    1017                }
    1118
    1219                private void GameStartDone () {
    13                         if (AllocsFixes.NetConnections.Servers.Web.Handlers.ItemIconHandler.Instance != null) {
    14                                 AllocsFixes.NetConnections.Servers.Web.Handlers.ItemIconHandler.Instance.LoadIcons ();
     20                        if (ItemIconHandler.Instance != null) {
     21                                ItemIconHandler.Instance.LoadIcons ();
    1522                        }
    1623                }
     
    2330                        AllocsFixes.MapRendering.MapRendering.RenderSingleChunk (_chunk);
    2431                }
    25 
    26                 public void InitMod () {
    27                         ModEvents.GameAwake.RegisterHandler (GameAwake);
    28                         ModEvents.GameStartDone.RegisterHandler (GameStartDone);
    29                         ModEvents.GameShutdown.RegisterHandler (GameShutdown);
    30                         ModEvents.CalcChunkColorsDone.RegisterHandler (CalcChunkColorsDone);
    31                 }
    3232        }
    3333}
    34 
  • binary-improvements/MapRendering/AssemblyInfo.cs

    r232 r325  
    11using System.Reflection;
    2 using System.Runtime.CompilerServices;
    32
    43// Information about this assembly is defined by the following attributes.
    54// Change them to the values specific to your project.
    65
    7 [assembly: AssemblyTitle("MapRendering")]
    8 [assembly: AssemblyDescription("")]
    9 [assembly: AssemblyConfiguration("")]
    10 [assembly: AssemblyCompany("")]
    11 [assembly: AssemblyProduct("")]
    12 [assembly: AssemblyCopyright("ci")]
    13 [assembly: AssemblyTrademark("")]
    14 [assembly: AssemblyCulture("")]
     6[assembly: AssemblyTitle ("MapRendering")]
     7[assembly: AssemblyDescription ("")]
     8[assembly: AssemblyConfiguration ("")]
     9[assembly: AssemblyCompany ("")]
     10[assembly: AssemblyProduct ("")]
     11[assembly: AssemblyCopyright ("ci")]
     12[assembly: AssemblyTrademark ("")]
     13[assembly: AssemblyCulture ("")]
    1514
    1615// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
     
    1817// and "{Major}.{Minor}.{Build}.*" will update just the revision.
    1918
    20 [assembly: AssemblyVersion("0.0.0.0")]
     19[assembly: AssemblyVersion ("0.0.0.0")]
    2120
    2221// The following attributes are used to specify the signing key for the assembly,
     
    2524//[assembly: AssemblyDelaySign(false)]
    2625//[assembly: AssemblyKeyFile("")]
    27 
  • binary-improvements/MapRendering/Commands/EnableOpenIDDebug.cs

    r318 r325  
    11using System;
    22using System.Collections.Generic;
     3using AllocsFixes.NetConnections.Servers.Web;
    34
    4 namespace AllocsFixes.CustomCommands
    5 {
    6         public class EnableOpenIDDebug : ConsoleCmdAbstract
    7         {
    8                 public override string GetDescription ()
    9                 {
     5namespace AllocsFixes.CustomCommands {
     6        public class EnableOpenIDDebug : ConsoleCmdAbstract {
     7                public override string GetDescription () {
    108                        return "enable/disable OpenID debugging";
    119                }
    1210
    13                 public override string[] GetCommands ()
    14                 {
    15                         return new string[] { "openiddebug" };
     11                public override string[] GetCommands () {
     12                        return new[] {"openiddebug"};
    1613                }
    1714
    18                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    19                 {
     15                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    2016                        try {
    2117                                if (_params.Count != 1) {
    22                                         SdtdConsole.Instance.Output ("Current state: " + AllocsFixes.NetConnections.Servers.Web.OpenID.debugOpenId);
     18                                        SdtdConsole.Instance.Output ("Current state: " + OpenID.debugOpenId);
    2319                                        return;
    2420                                }
    2521
    26                                 AllocsFixes.NetConnections.Servers.Web.OpenID.debugOpenId = _params[0].Equals("1");
     22                                OpenID.debugOpenId = _params [0].Equals ("1");
    2723                                SdtdConsole.Instance.Output ("Set OpenID debugging to " + _params [0].Equals ("1"));
    2824                        } catch (Exception e) {
  • binary-improvements/MapRendering/Commands/EnableRendering.cs

    r230 r325  
    22using System.Collections.Generic;
    33
    4 namespace AllocsFixes.CustomCommands
    5 {
    6         public class EnableRendering : ConsoleCmdAbstract
    7         {
    8                 public override string GetDescription ()
    9                 {
     4namespace AllocsFixes.CustomCommands {
     5        public class EnableRendering : ConsoleCmdAbstract {
     6                public override string GetDescription () {
    107                        return "enable/disable live map rendering";
    118                }
    129
    13                 public override string[] GetCommands ()
    14                 {
    15                         return new string[] { "enablerendering" };
     10                public override string[] GetCommands () {
     11                        return new[] {"enablerendering"};
    1612                }
    1713
    18                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    19                 {
     14                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    2015                        try {
    2116                                if (_params.Count != 1) {
    22                                         SdtdConsole.Instance.Output ("Current state: " + AllocsFixes.MapRendering.MapRendering.renderingEnabled);
     17                                        SdtdConsole.Instance.Output ("Current state: " + MapRendering.MapRendering.renderingEnabled);
    2318                                        return;
    2419                                }
    2520
    26                                 AllocsFixes.MapRendering.MapRendering.renderingEnabled = _params[0].Equals("1");
     21                                MapRendering.MapRendering.renderingEnabled = _params [0].Equals ("1");
    2722                                SdtdConsole.Instance.Output ("Set live map rendering to " + _params [0].Equals ("1"));
    2823                        } catch (Exception e) {
  • binary-improvements/MapRendering/Commands/ReloadWebPermissions.cs

    r244 r325  
    11using System;
    22using System.Collections.Generic;
     3using AllocsFixes.NetConnections.Servers.Web;
    34
    4 namespace AllocsFixes.CustomCommands
    5 {
    6         public class ReloadWebPermissions : ConsoleCmdAbstract
    7         {
    8                 public override string GetDescription ()
    9                 {
     5namespace AllocsFixes.CustomCommands {
     6        public class ReloadWebPermissions : ConsoleCmdAbstract {
     7                public override string GetDescription () {
    108                        return "force reload of web permissions file";
    119                }
    1210
    13                 public override string[] GetCommands ()
    14                 {
    15                         return new string[] { "reloadwebpermissions" };
     11                public override string[] GetCommands () {
     12                        return new[] {"reloadwebpermissions"};
    1613                }
    1714
    18                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    19                 {
     15                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    2016                        try {
    21                                 AllocsFixes.NetConnections.Servers.Web.WebPermissions.Instance.Load ();
     17                                WebPermissions.Instance.Load ();
    2218                                SdtdConsole.Instance.Output ("Web permissions file reloaded");
    2319                        } catch (Exception e) {
  • binary-improvements/MapRendering/Commands/RenderMap.cs

    r230 r325  
    1 using AllocsFixes.MapRendering;
    21using System;
    3 using System.IO;
    42using System.Collections.Generic;
    53
    6 namespace AllocsFixes.CustomCommands
    7 {
    8         public class RenderMap : ConsoleCmdAbstract
    9         {
    10                 public override string GetDescription ()
    11                 {
     4namespace AllocsFixes.CustomCommands {
     5        public class RenderMap : ConsoleCmdAbstract {
     6                public override string GetDescription () {
    127                        return "render the current map to a file";
    138                }
    149
    15                 public override string[] GetCommands ()
    16                 {
    17                         return new string[] { "rendermap" };
     10                public override string[] GetCommands () {
     11                        return new[] {"rendermap"};
    1812                }
    1913
    20                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    21                 {
     14                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    2215                        try {
    23                                 AllocsFixes.MapRendering.MapRendering.Instance.RenderFullMap ();
     16                                MapRendering.MapRendering.Instance.RenderFullMap ();
    2417
    2518                                SdtdConsole.Instance.Output ("Render map done");
  • binary-improvements/MapRendering/Commands/WebPermissionsCmd.cs

    r244 r325  
    1 using System;
    21using System.Collections.Generic;
    3 using System.IO;
     2using AllocsFixes.NetConnections.Servers.Web;
    43
    5 using AllocsFixes.NetConnections.Servers.Web;
    6 using UnityEngine;
    7 
    8 namespace AllocsFixes.CustomCommands
    9 {
     4namespace AllocsFixes.CustomCommands {
    105        public class WebPermissionsCmd : ConsoleCmdAbstract {
    116                public override string[] GetCommands () {
    12                         return new string[] { "webpermission" };
     7                        return new[] {"webpermission"};
    138                }
    14        
    15                 public override string GetDescription () { 
     9
     10                public override string GetDescription () {
    1611                        return "Manage web permission levels";
    1712                }
    18        
     13
    1914                public override string GetHelp () {
    2015                        return "Set/get permission levels required to access a given web functionality. Default\n" +
    21                                 "level required for functions that are not explicitly specified is 0.\n" +
    22                                 "Usage:\n" +
    23                                 "   webpermission add <webfunction> <level>\n" +
    24                                 "   webpermission remove <webfunction>\n" +
    25                                 "   webpermission list";
     16                               "level required for functions that are not explicitly specified is 0.\n" +
     17                               "Usage:\n" +
     18                               "   webpermission add <webfunction> <level>\n" +
     19                               "   webpermission remove <webfunction>\n" +
     20                               "   webpermission list";
    2621                }
    27        
     22
    2823                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    2924                        if (_params.Count >= 1) {
     
    4641                        }
    4742                }
    48        
     43
    4944                private void ExecuteAdd (List<string> _params) {
    5045                        if (_params.Count != 3) {
     
    5247                                return;
    5348                        }
    54                
     49
    5550                        if (!WebPermissions.Instance.IsKnownModule (_params [1])) {
    5651                                SdtdConsole.Instance.Output ("\"" + _params [1] + "\" is not a valid web function.");
    5752                                return;
    5853                        }
    59                
     54
    6055                        int level;
    6156                        if (!int.TryParse (_params [2], out level)) {
     
    6358                                return;
    6459                        }
    65                
     60
    6661                        WebPermissions.Instance.AddModulePermission (_params [1], level);
    6762                        SdtdConsole.Instance.Output (string.Format ("{0} added with permission level of {1}.", _params [1], level));
    6863                }
    69        
     64
    7065                private void ExecuteRemove (List<string> _params) {
    7166                        if (_params.Count != 2) {
     
    7368                                return;
    7469                        }
    75                
     70
    7671                        if (!WebPermissions.Instance.IsKnownModule (_params [1])) {
    7772                                SdtdConsole.Instance.Output ("\"" + _params [1] + "\" is not a valid web function.");
    7873                                return;
    7974                        }
    80                
     75
    8176                        WebPermissions.Instance.RemoveModulePermission (_params [1]);
    8277                        SdtdConsole.Instance.Output (string.Format ("{0} removed from permissions list.", _params [1]));
    8378                }
    84        
     79
    8580                private void ExecuteList () {
    8681                        SdtdConsole.Instance.Output ("Defined web function permissions:");
     
    9085                        }
    9186                }
    92 
    9387        }
    9488}
  • binary-improvements/MapRendering/Commands/WebTokens.cs

    r244 r325  
    1 using System;
    21using System.Collections.Generic;
    3 using System.IO;
    42using System.Text.RegularExpressions;
     3using AllocsFixes.NetConnections.Servers.Web;
    54
    6 using AllocsFixes.NetConnections.Servers.Web;
    7 using UnityEngine;
    8 
    9 namespace AllocsFixes.CustomCommands
    10 {
     5namespace AllocsFixes.CustomCommands {
    116        public class WebTokens : ConsoleCmdAbstract {
    12                 private static Regex validNameTokenMatcher = new Regex (@"^\w+$");
     7                private static readonly Regex validNameTokenMatcher = new Regex (@"^\w+$");
    138
    149                public override string[] GetCommands () {
    15                         return new string[] { "webtokens" };
     10                        return new[] {"webtokens"};
    1611                }
    17        
    18                 public override string GetDescription () { 
     12
     13                public override string GetDescription () {
    1914                        return "Manage web tokens";
    2015                }
     
    2217                public override string GetHelp () {
    2318                        return "Set/get webtoken permission levels. A level of 0 is maximum permission.\n" +
    24                                 "Usage:\n" +
    25                                 "   webtokens add <username> <usertoken> <level>\n" +
    26                                 "   webtokens remove <username>\n" +
    27                                 "   webtokens list";
     19                               "Usage:\n" +
     20                               "   webtokens add <username> <usertoken> <level>\n" +
     21                               "   webtokens remove <username>\n" +
     22                               "   webtokens list";
    2823                }
    29        
     24
    3025                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    3126                        if (_params.Count >= 1) {
     
    6156
    6257                        if (!validNameTokenMatcher.IsMatch (_params [1])) {
    63                                 SdtdConsole.Instance.Output ("Argument 'username' may only contain characters (A-Z, a-z), digits (0-9) and underscores (_).");
     58                                SdtdConsole.Instance.Output (
     59                                        "Argument 'username' may only contain characters (A-Z, a-z), digits (0-9) and underscores (_).");
    6460                                return;
    6561                        }
     
    7167
    7268                        if (!validNameTokenMatcher.IsMatch (_params [2])) {
    73                                 SdtdConsole.Instance.Output ("Argument 'usertoken' may only contain characters (A-Z, a-z), digits (0-9) and underscores (_).");
     69                                SdtdConsole.Instance.Output (
     70                                        "Argument 'usertoken' may only contain characters (A-Z, a-z), digits (0-9) and underscores (_).");
    7471                                return;
    7572                        }
     
    8279
    8380                        WebPermissions.Instance.AddAdmin (_params [1], _params [2], level);
    84                         SdtdConsole.Instance.Output (string.Format ("Web user with name={0} and password={1} added with permission level of {2}.", _params [1], _params [2], level));
     81                        SdtdConsole.Instance.Output (string.Format (
     82                                "Web user with name={0} and password={1} added with permission level of {2}.", _params [1], _params [2],
     83                                level));
    8584                }
    86        
     85
    8786                private void ExecuteRemove (List<string> _params) {
    8887                        if (_params.Count != 2) {
     
    9089                                return;
    9190                        }
    92                
     91
    9392                        if (string.IsNullOrEmpty (_params [1])) {
    9493                                SdtdConsole.Instance.Output ("Argument 'username' is empty.");
     
    9796
    9897                        if (!validNameTokenMatcher.IsMatch (_params [1])) {
    99                                 SdtdConsole.Instance.Output ("Argument 'username' may only contain characters (A-Z, a-z), digits (0-9) and underscores (_).");
     98                                SdtdConsole.Instance.Output (
     99                                        "Argument 'username' may only contain characters (A-Z, a-z), digits (0-9) and underscores (_).");
    100100                                return;
    101101                        }
     
    104104                        SdtdConsole.Instance.Output (string.Format ("{0} removed from web user permissions list.", _params [1]));
    105105                }
    106        
     106
    107107                private void ExecuteList () {
    108108                        SdtdConsole.Instance.Output ("Defined webuser permissions:");
    109109                        SdtdConsole.Instance.Output ("  Level: Name / Token");
    110110                        foreach (WebPermissions.AdminToken at in WebPermissions.Instance.GetAdmins ()) {
    111                                 SdtdConsole.Instance.Output (string.Format ("  {0,5}: {1} / {2}", at.permissionLevel, at.name, at.token));
     111                                SdtdConsole.Instance.Output (
     112                                        string.Format ("  {0,5}: {1} / {2}", at.permissionLevel, at.name, at.token));
    112113                        }
    113114                }
    114        
    115115        }
    116116}
  • binary-improvements/MapRendering/Commands/webstat.cs

    r279 r325  
    11using System;
    22using System.Collections.Generic;
     3using AllocsFixes.NetConnections.Servers.Web;
    34
    4 namespace AllocsFixes.CustomCommands
    5 {
    6         public class webstat : ConsoleCmdAbstract
    7         {
    8                 public override string GetDescription ()
    9                 {
     5namespace AllocsFixes.CustomCommands {
     6        public class webstat : ConsoleCmdAbstract {
     7                public override string GetDescription () {
    108                        return "DEBUG PURPOSES ONLY";
    119                }
    1210
    13                 public override string[] GetCommands ()
    14                 {
    15                         return new string[] { "webstat" };
     11                public override string[] GetCommands () {
     12                        return new[] {"webstat"};
    1613                }
    1714
    18                 public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    19                 {
     15                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    2016                        try {
    21                                 int curHandlers = AllocsFixes.NetConnections.Servers.Web.Web.currentHandlers;
    22                                 int totalHandlers = AllocsFixes.NetConnections.Servers.Web.Web.handlingCount;
    23                                 long totalTime = AllocsFixes.NetConnections.Servers.Web.Web.totalHandlingTime;
     17                                int curHandlers = Web.currentHandlers;
     18                                int totalHandlers = Web.handlingCount;
     19                                long totalTime = Web.totalHandlingTime;
    2420                                SdtdConsole.Instance.Output ("Current Web handlers: " + curHandlers + " - total: " + totalHandlers);
    25                                 SdtdConsole.Instance.Output (" - Total time: " + totalTime + " µs - average time: " + (totalTime / totalHandlers) + " µs");
     21                                SdtdConsole.Instance.Output (" - Total time: " + totalTime + " µs - average time: " +
     22                                                             totalTime / totalHandlers + " µs");
    2623
    27                                 curHandlers = AllocsFixes.NetConnections.Servers.Web.WebCommandResult.currentHandlers;
    28                                 totalHandlers = AllocsFixes.NetConnections.Servers.Web.WebCommandResult.handlingCount;
    29                                 totalTime = AllocsFixes.NetConnections.Servers.Web.WebCommandResult.totalHandlingTime;
    30                                 SdtdConsole.Instance.Output ("Current Web command handlers: " + curHandlers + " - total: " + totalHandlers);
    31                                 SdtdConsole.Instance.Output (" - Total time: " + totalTime + " µs" + (totalHandlers > 0 ? " - average time: " + (totalTime / totalHandlers) + " µs" : ""));
     24                                curHandlers = WebCommandResult.currentHandlers;
     25                                totalHandlers = WebCommandResult.handlingCount;
     26                                totalTime = WebCommandResult.totalHandlingTime;
     27                                SdtdConsole.Instance.Output ("Current Web command handlers: " + curHandlers + " - total: " +
     28                                                             totalHandlers);
     29                                SdtdConsole.Instance.Output (" - Total time: " + totalTime + " µs" +
     30                                                             (totalHandlers > 0
     31                                                                     ? " - average time: " + totalTime / totalHandlers + " µs"
     32                                                                     : ""));
    3233                        } catch (Exception e) {
    3334                                Log.Out ("Error in webstat.Run: " + e);
  • binary-improvements/MapRendering/MapRendering/Constants.cs

    r224 r325  
    1 using System;
    2 
    3 namespace AllocsFixes.MapRendering
    4 {
    5         public class Constants
    6         {
     1namespace AllocsFixes.MapRendering {
     2        public class Constants {
    73                public static int MAP_BLOCK_SIZE = 128;
    84                public static int MAP_CHUNK_SIZE = 16;
    95                public static int MAP_REGION_SIZE = 512;
    10                 public static int MAP_BLOCK_TO_CHUNK_DIV { get { return MAP_BLOCK_SIZE / MAP_CHUNK_SIZE; } }
    11                 public static int MAP_REGION_TO_CHUNK_DIV { get { return MAP_REGION_SIZE / MAP_CHUNK_SIZE; } }
    126                public static int ZOOMLEVELS = 5;
    137                public static string MAP_DIRECTORY = string.Empty;
     8
     9                public static int MAP_BLOCK_TO_CHUNK_DIV {
     10                        get { return MAP_BLOCK_SIZE / MAP_CHUNK_SIZE; }
     11                }
     12
     13                public static int MAP_REGION_TO_CHUNK_DIV {
     14                        get { return MAP_REGION_SIZE / MAP_CHUNK_SIZE; }
     15                }
    1416        }
    1517}
    16 
  • binary-improvements/MapRendering/MapRendering/MapRenderBlockBuffer.cs

    r238 r325  
    11using System;
    22using System.IO;
    3 using System.Threading;
     3using AllocsFixes.FileCache;
    44using UnityEngine;
    55
    6 namespace AllocsFixes.MapRendering
    7 {
    8         public class MapRenderBlockBuffer
    9         {
    10                 private int zoomLevel;
     6namespace AllocsFixes.MapRendering {
     7        public class MapRenderBlockBuffer {
     8                private readonly Texture2D blockMap = new Texture2D (Constants.MAP_BLOCK_SIZE, Constants.MAP_BLOCK_SIZE);
     9                private readonly MapTileCache cache;
     10                private readonly Color nullColor = new Color (0, 0, 0, 0);
     11                private readonly Texture2D zoomBuffer = new Texture2D (1, 1);
     12                private readonly int zoomLevel;
    1113                private string currentBlockMap = string.Empty;
    12                 private Texture2D blockMap = new Texture2D (Constants.MAP_BLOCK_SIZE, Constants.MAP_BLOCK_SIZE);
    13                 private Texture2D zoomBuffer = new Texture2D (1, 1);
    14                 private Color nullColor = new Color (0, 0, 0, 0);
    15                 private AllocsFixes.FileCache.MapTileCache cache;
    1614
    17                 public MapRenderBlockBuffer (int level, AllocsFixes.FileCache.MapTileCache cache)
    18                 {
     15                public MapRenderBlockBuffer (int level, MapTileCache cache) {
    1916                        zoomLevel = level;
    2017                        this.cache = cache;
    2118                }
    2219
    23                 public void ResetBlock ()
    24                 {
     20                public void ResetBlock () {
    2521                        currentBlockMap = string.Empty;
    2622                }
    2723
    28                 public void SaveBlock ()
    29                 {
     24                public void SaveBlock () {
    3025                        try {
    31                                 if (currentBlockMap.Length > 0)
     26                                if (currentBlockMap.Length > 0) {
    3227                                        saveTextureToFile (currentBlockMap);
     28                                }
    3329                        } catch (Exception e) {
    3430                                Log.Out ("Exception in MapRenderBlockBuffer.SaveBlock(): " + e);
     
    3632                }
    3733
    38                 public bool LoadBlock (Vector2i block)
    39                 {
     34                public bool LoadBlock (Vector2i block) {
    4035                        bool res = false;
    4136                        lock (blockMap) {
    42                                 string folder = Constants.MAP_DIRECTORY + "/" + (zoomLevel) + "/" + block.x;
     37                                string folder = Constants.MAP_DIRECTORY + "/" + zoomLevel + "/" + block.x;
    4338                                string fileName = folder + "/" + block.y + ".png";
    4439                                Directory.CreateDirectory (folder);
     
    4843                                        loadTextureFromFile (fileName);
    4944                                }
     45
    5046                                currentBlockMap = fileName;
    5147                        }
     48
    5249                        return res;
    5350                }
     
    5552                public void SetPart (Vector2i offset, int partSize, Color32[] pixels) {
    5653                        if (offset.x + partSize > blockMap.width || offset.y + partSize > blockMap.height) {
    57                                 Log.Error (string.Format ("MapBlockBuffer[{0}].SetPart ({1}, {2}, {3}) has blockMap.size ({4}/{5})", zoomLevel, offset, partSize, pixels.Length, blockMap.width, blockMap.height));
     54                                Log.Error (string.Format ("MapBlockBuffer[{0}].SetPart ({1}, {2}, {3}) has blockMap.size ({4}/{5})",
     55                                        zoomLevel, offset, partSize, pixels.Length, blockMap.width, blockMap.height));
    5856                                return;
    5957                        }
     58
    6059                        blockMap.SetPixels32 (offset.x, offset.y, partSize, partSize, pixels);
    6160                }
    6261
    63                 public Color32[] GetHalfScaled ()
    64                 {
     62                public Color32[] GetHalfScaled () {
    6563                        zoomBuffer.Resize (Constants.MAP_BLOCK_SIZE, Constants.MAP_BLOCK_SIZE);
    6664                        zoomBuffer.SetPixels32 (blockMap.GetPixels32 ());
     
    7169                }
    7270
    73                 private void loadTextureFromFile (string _fileName)
    74                 {
     71                private void loadTextureFromFile (string _fileName) {
    7572                        byte[] array = cache.LoadTile (zoomLevel, _fileName);
    76                         if (array == null || !blockMap.LoadImage (array) || blockMap.height != Constants.MAP_BLOCK_SIZE || blockMap.width != Constants.MAP_BLOCK_SIZE) {
     73                        if (array == null || !blockMap.LoadImage (array) || blockMap.height != Constants.MAP_BLOCK_SIZE ||
     74                            blockMap.width != Constants.MAP_BLOCK_SIZE) {
    7775                                if (array != null) {
    7876                                        Log.Error ("Map image tile " + _fileName + " has been corrupted, recreating tile");
     
    8280                                        blockMap.Resize (Constants.MAP_BLOCK_SIZE, Constants.MAP_BLOCK_SIZE);
    8381                                }
     82
    8483                                for (int x = 0; x < Constants.MAP_BLOCK_SIZE; x++) {
    8584                                        for (int y = 0; y < Constants.MAP_BLOCK_SIZE; y++) {
     
    9493                        cache.SaveTile (zoomLevel, array);
    9594                }
    96 
    9795        }
    9896}
  • binary-improvements/MapRendering/MapRendering/MapRendering.cs

    r299 r325  
    1 using AllocsFixes.JSON;
    21using System;
     2using System.Collections;
    33using System.Collections.Generic;
    44using System.IO;
    55using System.Text;
    66using System.Threading;
     7using System.Timers;
     8using AllocsFixes.FileCache;
     9using AllocsFixes.JSON;
    710using UnityEngine;
    8 
    9 namespace AllocsFixes.MapRendering
    10 {
    11         public class MapRendering
    12         {
     11using Object = UnityEngine.Object;
     12
     13namespace AllocsFixes.MapRendering {
     14        public class MapRendering {
    1315                private static MapRendering instance;
     16
     17                private static readonly object lockObject = new object ();
     18                public static bool renderingEnabled = true;
     19                private readonly MapTileCache cache = new MapTileCache (Constants.MAP_BLOCK_SIZE);
     20                private readonly Dictionary<Vector2i, Color32[]> dirtyChunks = new Dictionary<Vector2i, Color32[]> ();
     21                private readonly MicroStopwatch msw = new MicroStopwatch ();
     22                private readonly MapRenderBlockBuffer[] zoomLevelBuffers;
     23                private Coroutine renderCoroutineRef;
     24                private bool renderingFullMap;
     25                private float renderTimeout = float.MaxValue;
     26
     27                private MapRendering () {
     28                        Constants.MAP_DIRECTORY = GameUtils.GetSaveGameDir () + "/map";
     29
     30                        lock (lockObject) {
     31                                if (!LoadMapInfo ()) {
     32                                        WriteMapInfo ();
     33                                }
     34                        }
     35
     36                        cache.SetZoomCount (Constants.ZOOMLEVELS);
     37
     38                        zoomLevelBuffers = new MapRenderBlockBuffer[Constants.ZOOMLEVELS];
     39                        for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
     40                                zoomLevelBuffers [i] = new MapRenderBlockBuffer (i, cache);
     41                        }
     42
     43                        renderCoroutineRef = ThreadManager.StartCoroutine (renderCoroutine ());
     44                }
    1445
    1546                public static MapRendering Instance {
     
    1849                                        instance = new MapRendering ();
    1950                                }
     51
    2052                                return instance;
    2153                        }
    2254                }
    2355
    24                 private static object lockObject = new object ();
    25                 private MapRenderBlockBuffer[] zoomLevelBuffers;
    26                 private Dictionary<Vector2i, Color32[]> dirtyChunks = new Dictionary<Vector2i, Color32[]> ();
    27                 private bool renderingFullMap = false;
    28                 public static bool renderingEnabled = true;
    29                 private MicroStopwatch msw = new MicroStopwatch ();
    30                 private AllocsFixes.FileCache.MapTileCache cache = new AllocsFixes.FileCache.MapTileCache (Constants.MAP_BLOCK_SIZE);
    31                 private float renderTimeout = float.MaxValue;
    32                 private Coroutine renderCoroutineRef;
    33 
    34                 public static AllocsFixes.FileCache.MapTileCache GetTileCache() {
     56                public static MapTileCache GetTileCache () {
    3557                        return Instance.cache;
    3658                }
    3759
    38                 private MapRendering ()
    39                 {
    40                         Constants.MAP_DIRECTORY = GameUtils.GetSaveGameDir () + "/map";
    41 
    42                         lock (lockObject) {
    43                                 if (!LoadMapInfo ())
    44                                         WriteMapInfo ();
    45                         }
    46 
    47                         cache.SetZoomCount (Constants.ZOOMLEVELS);
    48 
    49                         zoomLevelBuffers = new MapRenderBlockBuffer[Constants.ZOOMLEVELS];
    50                         for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
    51                                 zoomLevelBuffers [i] = new MapRenderBlockBuffer (i, cache);
    52                         }
    53 
    54                         renderCoroutineRef = ThreadManager.StartCoroutine (renderCoroutine ());
    55                 }
    56 
    57                 public static void Shutdown ()
    58                 {
     60                public static void Shutdown () {
    5961                        if (Instance.renderCoroutineRef != null) {
    6062                                ThreadManager.StopCoroutine (Instance.renderCoroutineRef);
     
    6365                }
    6466
    65                 public static void RenderSingleChunk (Chunk chunk)
    66                 {
     67                public static void RenderSingleChunk (Chunk chunk) {
    6768                        if (renderingEnabled) {
    68                                 ThreadPool.UnsafeQueueUserWorkItem ((o) =>
    69                                 {
     69                                ThreadPool.UnsafeQueueUserWorkItem (o => {
    7070                                        try {
    7171                                                if (!Instance.renderingFullMap) {
    7272                                                        lock (lockObject) {
    73                                                                 Chunk c = (Chunk)o;
     73                                                                Chunk c = (Chunk) o;
    7474                                                                Vector3i cPos = c.GetWorldPos ();
    75                                                                 Vector2i cPos2 = new Vector2i (cPos.x / Constants.MAP_CHUNK_SIZE, cPos.z / Constants.MAP_CHUNK_SIZE);
     75                                                                Vector2i cPos2 = new Vector2i (cPos.x / Constants.MAP_CHUNK_SIZE,
     76                                                                        cPos.z / Constants.MAP_CHUNK_SIZE);
    7677
    7778                                                                ushort[] mapColors = c.GetMapColors ();
    7879                                                                if (mapColors != null) {
    79                                                                         Color32[] realColors = new Color32[Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE];
     80                                                                        Color32[] realColors =
     81                                                                                new Color32[Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE];
    8082                                                                        for (int i_colors = 0; i_colors < mapColors.Length; i_colors++) {
    8183                                                                                realColors [i_colors] = shortColorToColor32 (mapColors [i_colors]);
    8284                                                                        }
     85
    8386                                                                        Instance.dirtyChunks [cPos2] = realColors;
     87
    8488                                                                        //Log.Out ("Add Dirty: " + cPos2);
    8589                                                                }
     
    9397                }
    9498
    95                 public void RenderFullMap ()
    96                 {
     99                public void RenderFullMap () {
    97100                        MicroStopwatch microStopwatch = new MicroStopwatch ();
    98101
     
    101104                        Texture2D fullMapTexture = null;
    102105
    103                         Vector2i minChunk = default(Vector2i), maxChunk = default(Vector2i);
    104                         Vector2i minPos = default(Vector2i), maxPos = default(Vector2i);
     106                        Vector2i minChunk = default (Vector2i), maxChunk = default (Vector2i);
     107                        Vector2i minPos = default (Vector2i), maxPos = default (Vector2i);
    105108                        int widthChunks, heightChunks, widthPix, heightPix;
    106                         getWorldExtent (rfm, out minChunk, out maxChunk, out minPos, out maxPos, out widthChunks, out heightChunks, out widthPix, out heightPix);
    107 
    108                         Log.Out (String.Format ("RenderMap: min: {0}, max: {1}, minPos: {2}, maxPos: {3}, w/h: {4}/{5}, wP/hP: {6}/{7}",
    109                                                 minChunk.ToString (), maxChunk.ToString (),
    110                                                 minPos.ToString (), maxPos.ToString (),
    111                                                 widthChunks, heightChunks,
    112                                                 widthPix, heightPix)
     109                        getWorldExtent (rfm, out minChunk, out maxChunk, out minPos, out maxPos, out widthChunks, out heightChunks,
     110                                out widthPix, out heightPix);
     111
     112                        Log.Out (string.Format (
     113                                "RenderMap: min: {0}, max: {1}, minPos: {2}, maxPos: {3}, w/h: {4}/{5}, wP/hP: {6}/{7}",
     114                                minChunk.ToString (), maxChunk.ToString (),
     115                                minPos.ToString (), maxPos.ToString (),
     116                                widthChunks, heightChunks,
     117                                widthPix, heightPix)
    113118                        );
    114119
     
    121126                                        Directory.Delete (Constants.MAP_DIRECTORY, true);
    122127                                }
     128
    123129                                WriteMapInfo ();
    124130
    125131                                renderingFullMap = true;
    126132
    127                                 if (widthPix <= 8192 && heightPix <= 8192)
     133                                if (widthPix <= 8192 && heightPix <= 8192) {
    128134                                        fullMapTexture = new Texture2D (widthPix, heightPix);
    129 
    130                                 Vector2i curFullMapPos = default(Vector2i);
    131                                 Vector2i curChunkPos = default(Vector2i);
     135                                }
     136
     137                                Vector2i curFullMapPos = default (Vector2i);
     138                                Vector2i curChunkPos = default (Vector2i);
    132139                                for (curFullMapPos.x = 0; curFullMapPos.x < widthPix; curFullMapPos.x += Constants.MAP_CHUNK_SIZE) {
    133                                         for (curFullMapPos.y = 0; curFullMapPos.y < heightPix; curFullMapPos.y += Constants.MAP_CHUNK_SIZE) {
    134                                                 curChunkPos.x = (curFullMapPos.x / Constants.MAP_CHUNK_SIZE) + minChunk.x;
    135                                                 curChunkPos.y = (curFullMapPos.y / Constants.MAP_CHUNK_SIZE) + minChunk.y;
     140                                        for (curFullMapPos.y = 0;
     141                                                curFullMapPos.y < heightPix;
     142                                                curFullMapPos.y += Constants.MAP_CHUNK_SIZE) {
     143                                                curChunkPos.x = curFullMapPos.x / Constants.MAP_CHUNK_SIZE + minChunk.x;
     144                                                curChunkPos.y = curFullMapPos.y / Constants.MAP_CHUNK_SIZE + minChunk.y;
    136145
    137146                                                try {
     
    141150                                                                ushort[] mapColors = c.GetMapColors ();
    142151                                                                if (mapColors != null) {
    143                                                                         Color32[] realColors = new Color32[Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE];
     152                                                                        Color32[] realColors =
     153                                                                                new Color32[Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE];
    144154                                                                        for (int i_colors = 0; i_colors < mapColors.Length; i_colors++) {
    145155                                                                                realColors [i_colors] = shortColorToColor32 (mapColors [i_colors]);
    146156                                                                        }
     157
    147158                                                                        dirtyChunks [curChunkPos] = realColors;
    148                                                                         if (fullMapTexture != null)
    149                                                                                 fullMapTexture.SetPixels32 (curFullMapPos.x, curFullMapPos.y, Constants.MAP_CHUNK_SIZE, Constants.MAP_CHUNK_SIZE, realColors);
     159                                                                        if (fullMapTexture != null) {
     160                                                                                fullMapTexture.SetPixels32 (curFullMapPos.x, curFullMapPos.y,
     161                                                                                        Constants.MAP_CHUNK_SIZE, Constants.MAP_CHUNK_SIZE, realColors);
     162                                                                        }
    150163                                                                }
    151164                                                        }
     
    159172                                        }
    160173
    161                                         Log.Out (String.Format ("RenderMap: {0}/{1} ({2}%)", curFullMapPos.x, widthPix, (int)((float)curFullMapPos.x / widthPix * 100)));
     174                                        Log.Out (string.Format ("RenderMap: {0}/{1} ({2}%)", curFullMapPos.x, widthPix,
     175                                                (int) ((float) curFullMapPos.x / widthPix * 100)));
    162176                                }
    163177                        }
     
    166180                                byte[] array = fullMapTexture.EncodeToPNG ();
    167181                                File.WriteAllBytes (Constants.MAP_DIRECTORY + "/map.png", array);
    168                                 UnityEngine.Object.Destroy (fullMapTexture);
     182                                Object.Destroy (fullMapTexture);
    169183                                fullMapTexture = null;
    170184                        }
     
    176190                }
    177191
    178                 private void SaveAllBlockMaps (object source, System.Timers.ElapsedEventArgs e)
    179                 {
     192                private void SaveAllBlockMaps (object source, ElapsedEventArgs e) {
    180193                        for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
    181194                                zoomLevelBuffers [i].SaveBlock ();
     
    183196                }
    184197
    185                 private System.Collections.IEnumerator renderCoroutine () {
     198                private IEnumerator renderCoroutine () {
    186199                        while (true) {
    187200                                lock (lockObject) {
     
    189202                                                renderTimeout = Time.time + 0.5f;
    190203                                        }
     204
    191205                                        if (Time.time > renderTimeout || dirtyChunks.Count > 200) {
    192206                                                RenderDirtyChunks ();
    193207                                        }
    194208                                }
     209
    195210                                yield return new WaitForSeconds (0.2f);
    196211                        }
    197212                }
    198213
    199                 private void RenderDirtyChunks ()
    200                 {
     214                private void RenderDirtyChunks () {
    201215                        msw.ResetAndRestart ();
    202216
     
    210224                                //Log.Out ("Start Dirty: " + chunkPos);
    211225
    212                                 Vector2i block = default(Vector2i), blockOffset = default(Vector2i);
    213                                 getBlockNumber (chunkPos, out block, out blockOffset, Constants.MAP_BLOCK_TO_CHUNK_DIV, Constants.MAP_CHUNK_SIZE);
     226                                Vector2i block = default (Vector2i), blockOffset = default (Vector2i);
     227                                getBlockNumber (chunkPos, out block, out blockOffset, Constants.MAP_BLOCK_TO_CHUNK_DIV,
     228                                        Constants.MAP_CHUNK_SIZE);
    214229
    215230                                zoomLevelBuffers [Constants.ZOOMLEVELS - 1].LoadBlock (block);
    216231
    217                                 Vector2i v_block = default(Vector2i), v_blockOffset = default(Vector2i);
     232                                Vector2i v_block = default (Vector2i), v_blockOffset = default (Vector2i);
    218233                                foreach (Vector2i v in keys) {
    219                                         getBlockNumber (v, out v_block, out v_blockOffset, Constants.MAP_BLOCK_TO_CHUNK_DIV, Constants.MAP_CHUNK_SIZE);
     234                                        getBlockNumber (v, out v_block, out v_blockOffset, Constants.MAP_BLOCK_TO_CHUNK_DIV,
     235                                                Constants.MAP_CHUNK_SIZE);
    220236                                        if (v_block.Equals (block)) {
    221237                                                //Log.Out ("Dirty: " + v + " render: true");
    222238                                                chunksDone.Add (v);
    223239                                                if (dirtyChunks [v].Length != Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE) {
    224                                                         Log.Error (string.Format ("Rendering chunk has incorrect data size of {0} instead of {1}", dirtyChunks [v].Length, Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE));
    225                                                 }
    226                                                 zoomLevelBuffers [Constants.ZOOMLEVELS - 1].SetPart (v_blockOffset, Constants.MAP_CHUNK_SIZE, dirtyChunks [v]);
    227                                         } else {
    228                                                 //Log.Out ("Dirty: " + v + " render: false");
    229                                         }
    230                                 }
    231 
    232                                 foreach (Vector2i v in chunksDone)
     240                                                        Log.Error (string.Format ("Rendering chunk has incorrect data size of {0} instead of {1}",
     241                                                                dirtyChunks [v].Length, Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE));
     242                                                }
     243
     244                                                zoomLevelBuffers [Constants.ZOOMLEVELS - 1]
     245                                                        .SetPart (v_blockOffset, Constants.MAP_CHUNK_SIZE, dirtyChunks [v]);
     246                                        }
     247                                }
     248
     249                                foreach (Vector2i v in chunksDone) {
    233250                                        dirtyChunks.Remove (v);
     251                                }
    234252
    235253                                RenderZoomLevel (Constants.ZOOMLEVELS - 1, block);
     
    239257                }
    240258
    241                 private void RenderZoomLevel (int level, Vector2i innerBlock)
    242                 {
     259                private void RenderZoomLevel (int level, Vector2i innerBlock) {
    243260                        if (level > 0) {
    244                                 Vector2i block = default(Vector2i), blockOffset = default(Vector2i);
     261                                Vector2i block = default (Vector2i), blockOffset = default (Vector2i);
    245262                                getBlockNumber (innerBlock, out block, out blockOffset, 2, Constants.MAP_BLOCK_SIZE / 2);
    246263
    247264                                zoomLevelBuffers [level - 1].LoadBlock (block);
    248                                 zoomLevelBuffers [level - 1].SetPart (blockOffset, Constants.MAP_BLOCK_SIZE / 2, zoomLevelBuffers [level].GetHalfScaled ());
     265                                zoomLevelBuffers [level - 1].SetPart (blockOffset, Constants.MAP_BLOCK_SIZE / 2,
     266                                        zoomLevelBuffers [level].GetHalfScaled ());
    249267
    250268                                RenderZoomLevel (level - 1, block);
     
    252270                }
    253271
    254                 private void getBlockNumber (Vector2i innerPos, out Vector2i block, out Vector2i blockOffset, int scaleFactor, int offsetSize)
    255                 {
    256                         block = default(Vector2i);
    257                         blockOffset = default(Vector2i);
    258                         block.x = ((innerPos.x + 16777216) / scaleFactor) - (16777216 / scaleFactor);
    259                         block.y = ((innerPos.y + 16777216) / scaleFactor) - (16777216 / scaleFactor);
    260                         blockOffset.x = ((innerPos.x + 16777216) % scaleFactor) * offsetSize;
    261                         blockOffset.y = ((innerPos.y + 16777216) % scaleFactor) * offsetSize;
    262                 }
    263 
    264                 private void WriteMapInfo ()
    265                 {
     272                private void getBlockNumber (Vector2i innerPos, out Vector2i block, out Vector2i blockOffset, int scaleFactor,
     273                        int offsetSize) {
     274                        block = default (Vector2i);
     275                        blockOffset = default (Vector2i);
     276                        block.x = (innerPos.x + 16777216) / scaleFactor - 16777216 / scaleFactor;
     277                        block.y = (innerPos.y + 16777216) / scaleFactor - 16777216 / scaleFactor;
     278                        blockOffset.x = (innerPos.x + 16777216) % scaleFactor * offsetSize;
     279                        blockOffset.y = (innerPos.y + 16777216) % scaleFactor * offsetSize;
     280                }
     281
     282                private void WriteMapInfo () {
    266283                        JSONObject mapInfo = new JSONObject ();
    267284                        mapInfo.Add ("blockSize", new JSONNumber (Constants.MAP_BLOCK_SIZE));
     
    272289                }
    273290
    274                 private bool LoadMapInfo ()
    275                 {
     291                private bool LoadMapInfo () {
    276292                        if (File.Exists (Constants.MAP_DIRECTORY + "/mapinfo.json")) {
    277293                                string json = File.ReadAllText (Constants.MAP_DIRECTORY + "/mapinfo.json", Encoding.UTF8);
     
    279295                                        JSONNode node = Parser.Parse (json);
    280296                                        if (node is JSONObject) {
    281                                                 JSONObject jo = (JSONObject)node;
    282                                                 if (jo.ContainsKey ("blockSize"))
    283                                                         Constants.MAP_BLOCK_SIZE = ((JSONNumber)jo ["blockSize"]).GetInt ();
    284                                                 if (jo.ContainsKey ("maxZoom"))
    285                                                         Constants.ZOOMLEVELS = ((JSONNumber)jo ["maxZoom"]).GetInt () + 1;
     297                                                JSONObject jo = (JSONObject) node;
     298                                                if (jo.ContainsKey ("blockSize")) {
     299                                                        Constants.MAP_BLOCK_SIZE = ((JSONNumber) jo ["blockSize"]).GetInt ();
     300                                                }
     301
     302                                                if (jo.ContainsKey ("maxZoom")) {
     303                                                        Constants.ZOOMLEVELS = ((JSONNumber) jo ["maxZoom"]).GetInt () + 1;
     304                                                }
     305
    286306                                                return true;
    287307                                        }
     
    292312                                }
    293313                        }
     314
    294315                        return false;
    295316                }
    296317
    297318                private void getWorldExtent (RegionFileManager rfm, out Vector2i minChunk, out Vector2i maxChunk,
    298                                             out Vector2i minPos, out Vector2i maxPos,
    299                                             out int widthChunks, out int heightChunks,
    300                                             out int widthPix, out int heightPix)
    301                 {
    302                         minChunk = default(Vector2i);
    303