Changeset 391


Ignore:
Timestamp:
Aug 7, 2022, 3:02:24 PM (2 years ago)
Author:
alloc
Message:

Major refactoring/cleanup

Location:
binary-improvements2
Files:
77 added
11 deleted
26 edited
12 moved

Legend:

Unmodified
Added
Removed
  • binary-improvements2/7dtd-server-fixes/7dtd-server-fixes.csproj

    r386 r391  
    9191    <Compile Include="src\PersistentData\Players.cs" />
    9292    <Compile Include="src\PersistentData\Player.cs" />
    93     <Compile Include="src\JSON\JSONNode.cs" />
    94     <Compile Include="src\JSON\JSONArray.cs" />
    95     <Compile Include="src\JSON\JSONObject.cs" />
    96     <Compile Include="src\JSON\JSONNumber.cs" />
    97     <Compile Include="src\JSON\JSONString.cs" />
    98     <Compile Include="src\JSON\JSONBoolean.cs" />
    99     <Compile Include="src\BlockingQueue.cs" />
     93    <Compile Include="src\JSON\JsonNode.cs" />
     94    <Compile Include="src\JSON\JsonArray.cs" />
     95    <Compile Include="src\JSON\JsonObject.cs" />
     96    <Compile Include="src\JSON\JsonNumber.cs" />
     97    <Compile Include="src\JSON\JsonString.cs" />
     98    <Compile Include="src\JSON\JsonBoolean.cs" />
    10099    <Compile Include="src\JSON\Parser.cs" />
    101     <Compile Include="src\JSON\JSONNull.cs" />
     100    <Compile Include="src\JSON\JsonNull.cs" />
    102101    <Compile Include="src\JSON\MalformedJSONException.cs" />
    103102    <Compile Include="src\FileCache\AbstractCache.cs" />
     
    105104    <Compile Include="src\FileCache\SimpleCache.cs" />
    106105    <Compile Include="src\FileCache\MapTileCache.cs" />
    107     <Compile Include="src\API.cs" />
     106    <Compile Include="src\ModApi.cs" />
    108107    <Compile Include="src\AllocsUtils.cs" />
    109108    <Compile Include="src\LandClaimList.cs" />
    110109    <Compile Include="src\PersistentData\Attributes.cs" />
    111     <Compile Include="src\JSON\JSONValue.cs" />
     110    <Compile Include="src\JSON\JsonValue.cs" />
    112111    <Compile Include="src\LiveData\EntityFilterList.cs" />
    113112  </ItemGroup>
     
    116115    <Folder Include="src\" />
    117116    <Folder Include="src\PersistentData\" />
    118     <Folder Include="src\JSON\Parser\" />
    119117    <Folder Include="src\FileCache\" />
    120118  </ItemGroup>
  • binary-improvements2/7dtd-server-fixes/ModInfo.xml

    r370 r391  
    22<xml>
    33        <ModInfo>
    4                 <Name value="Allocs server fixes" />
     4                <Name value="Server extensions" />
    55                <Description value="Common functions" />
    6                 <Author value="Christian 'Alloc' Illy" />
    7                 <Version value="24" />
    8                 <Website value="http://7dtd.illy.bz" />
     6                <Author value="The Fun Pimps LLC" />
     7                <Version value="1" />
     8                <Website value="" />
    99        </ModInfo>
    1010</xml>
  • binary-improvements2/7dtd-server-fixes/src/AllocsUtils.cs

    r325 r391  
    44        public static class AllocsUtils {
    55                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));
     6                        return $"{(int)(_color.r * 255):X02}{(int)(_color.g * 255):X02}{(int)(_color.b * 255):X02}";
    87                }
    98        }
  • binary-improvements2/7dtd-server-fixes/src/AssemblyInfo.cs

    r325 r391  
    77[assembly: AssemblyDescription ("")]
    88[assembly: AssemblyConfiguration ("")]
    9 [assembly: AssemblyCompany ("")]
     9[assembly: AssemblyCompany ("The Fun Pimps LLC")]
    1010[assembly: AssemblyProduct ("")]
    11 [assembly: AssemblyCopyright ("Alloc")]
     11[assembly: AssemblyCopyright ("The Fun Pimps LLC")]
    1212[assembly: AssemblyTrademark ("")]
    1313[assembly: AssemblyCulture ("")]
  • binary-improvements2/7dtd-server-fixes/src/FileCache/DirectAccess.cs

    r351 r391  
    77                public override byte[] GetFileContent (string _filename) {
    88                        try {
    9                                 if (!File.Exists (_filename)) {
    10                                         return null;
    11                                 }
    12 
    13                                 return File.ReadAllBytes (_filename);
     9                                return File.Exists (_filename) ? File.ReadAllBytes (_filename) : null;
    1410                        } catch (Exception e) {
    1511                                Log.Out ("Error in DirectAccess.GetFileContent: " + e);
  • binary-improvements2/7dtd-server-fixes/src/FileCache/MapTileCache.cs

    r351 r391  
    3636                                lock (cache) {
    3737                                        CurrentZoomFile cacheEntry = cache [_zoomlevel];
    38                                        
    39                                         if (cacheEntry.filename == null || !cacheEntry.filename.Equals (_filename)) {
    40                                                 cacheEntry.filename = _filename;
    4138
    42                                                 if (!File.Exists (_filename)) {
    43                                                         cacheEntry.pngData = null;
    44                                                         return null;
    45                                                 }
     39                                        if (cacheEntry.filename != null && cacheEntry.filename.Equals (_filename)) {
     40                                                return cacheEntry.pngData;
     41                                        }
    4642
    47                                                 Profiler.BeginSample ("ReadPng");
    48                                                 cacheEntry.pngData = ReadAllBytes (_filename);
    49                                                 Profiler.EndSample ();
     43                                        cacheEntry.filename = _filename;
     44
     45                                        if (!File.Exists (_filename)) {
     46                                                cacheEntry.pngData = null;
     47                                                return null;
    5048                                        }
     49
     50                                        Profiler.BeginSample ("ReadPng");
     51                                        cacheEntry.pngData = ReadAllBytes (_filename);
     52                                        Profiler.EndSample ();
    5153
    5254                                        return cacheEntry.pngData;
     
    103105                                        }
    104106
    105                                         if (!File.Exists (_filename)) {
    106                                                 return transparentTile;
    107                                         }
    108 
    109                                         return ReadAllBytes (_filename);
     107                                        return !File.Exists (_filename) ? transparentTile : ReadAllBytes (_filename);
    110108                                }
    111109                        } catch (Exception e) {
  • binary-improvements2/7dtd-server-fixes/src/FileCache/SimpleCache.cs

    r351 r391  
    1111                        try {
    1212                                lock (fileCache) {
    13                                         if (!fileCache.ContainsKey (_filename)) {
    14                                                 if (!File.Exists (_filename)) {
    15                                                         return null;
    16                                                 }
     13                                        if (fileCache.ContainsKey (_filename)) {
     14                                                return fileCache [_filename];
     15                                        }
    1716
    18                                                 fileCache.Add (_filename, File.ReadAllBytes (_filename));
     17                                        if (!File.Exists (_filename)) {
     18                                                return null;
    1919                                        }
     20
     21                                        fileCache.Add (_filename, File.ReadAllBytes (_filename));
    2022
    2123                                        return fileCache [_filename];
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONArray.cs

    r351 r391  
    33
    44namespace AllocsFixes.JSON {
    5         public class JSONArray : JSONNode {
    6                 private readonly List<JSONNode> nodes = new List<JSONNode> ();
     5        public class JsonArray : JsonNode {
     6                private readonly List<JsonNode> nodes = new List<JsonNode> ();
    77
    8                 public JSONNode this [int _index] {
    9                         get { return nodes [_index]; }
    10                         set { nodes [_index] = value; }
     8                public JsonNode this [int _index] {
     9                        get => nodes [_index];
     10                        set => nodes [_index] = value;
    1111                }
    1212
    13                 public int Count {
    14                         get { return nodes.Count; }
    15                 }
     13                public int Count => nodes.Count;
    1614
    17                 public void Add (JSONNode _node) {
     15                public void Add (JsonNode _node) {
    1816                        nodes.Add (_node);
    1917                }
     
    2523                        }
    2624
    27                         foreach (JSONNode n in nodes) {
     25                        foreach (JsonNode n in nodes) {
    2826                                if (_prettyPrint) {
    2927                                        _stringBuilder.Append (new string ('\t', _currentLevel + 1));
     
    4846                }
    4947
    50                 public static JSONArray Parse (string _json, ref int _offset) {
     48                public static JsonArray Parse (string _json, ref int _offset) {
    5149                        //Log.Out ("ParseArray enter (" + offset + ")");
    52                         JSONArray arr = new JSONArray ();
     50                        JsonArray arr = new JsonArray ();
    5351
    5452                        bool nextElemAllowed = true;
     
    6361                                                        _offset++;
    6462                                                } else {
    65                                                         throw new MalformedJSONException (
     63                                                        throw new MalformedJsonException (
    6664                                                                "Could not parse array, found a comma without a value first");
    6765                                                }
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONBoolean.cs

    r389 r391  
    22
    33namespace AllocsFixes.JSON {
    4         public class JSONBoolean : JSONValue {
     4        public class JsonBoolean : JsonValue {
    55                private readonly bool value;
    66
    7                 public JSONBoolean (bool _value) {
     7                public JsonBoolean (bool _value) {
    88                        value = _value;
    99                }
     
    1717                }
    1818
    19                 public static JSONBoolean Parse (string _json, ref int _offset) {
     19                public static JsonBoolean Parse (string _json, ref int _offset) {
    2020                        //Log.Out ("ParseBool enter (" + offset + ")");
    2121
     
    2323                                //Log.Out ("JSON:Parsed Bool: true");
    2424                                _offset += 4;
    25                                 return new JSONBoolean (true);
     25                                return new JsonBoolean (true);
    2626                        }
    2727
     
    2929                                //Log.Out ("JSON:Parsed Bool: false");
    3030                                _offset += 5;
    31                                 return new JSONBoolean (false);
     31                                return new JsonBoolean (false);
    3232                        }
    3333
    34                         throw new MalformedJSONException ("No valid boolean found");
     34                        throw new MalformedJsonException ("No valid boolean found");
    3535                }
    3636
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONNode.cs

    r351 r391  
    22
    33namespace AllocsFixes.JSON {
    4         public abstract class JSONNode {
     4        public abstract class JsonNode {
    55                public abstract void ToString (StringBuilder _stringBuilder, bool _prettyPrint = false, int _currentLevel = 0);
    66
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONNull.cs

    r389 r391  
    33
    44namespace AllocsFixes.JSON {
    5         public class JSONNull : JSONValue {
     5        public class JsonNull : JsonValue {
    66                public override void ToString (StringBuilder _stringBuilder, bool _prettyPrint = false, int _currentLevel = 0) {
    77                        _stringBuilder.Append ("null");
    88                }
    99
    10                 public static JSONNull Parse (string _json, ref int _offset) {
     10                public static JsonNull Parse (string _json, ref int _offset) {
    1111                        //Log.Out ("ParseNull enter (" + offset + ")");
    1212
    1313                        if (!_json.Substring (_offset, 4).Equals ("null")) {
    14                                 throw new MalformedJSONException ("No valid null value found");
     14                                throw new MalformedJsonException ("No valid null value found");
    1515                        }
    1616
    1717                        //Log.Out ("JSON:Parsed Null");
    1818                        _offset += 4;
    19                         return new JSONNull ();
     19                        return new JsonNull ();
    2020                }
    2121
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONNumber.cs

    r389 r391  
    33
    44namespace AllocsFixes.JSON {
    5         public class JSONNumber : JSONValue {
     5        public class JsonNumber : JsonValue {
    66                private readonly double value;
    77
    8                 public JSONNumber (double _value) {
     8                public JsonNumber (double _value) {
    99                        value = _value;
    1010                }
     
    2222                }
    2323
    24                 public static JSONNumber Parse (string _json, ref int _offset) {
     24                public static JsonNumber Parse (string _json, ref int _offset) {
    2525                        //Log.Out ("ParseNumber enter (" + offset + ")");
    2626                        StringBuilder sbNum = new StringBuilder ();
     
    3737                                } else if (_json [_offset] == '.') {
    3838                                        if (hasExp) {
    39                                                 throw new MalformedJSONException ("Decimal separator in exponent");
     39                                                throw new MalformedJsonException ("Decimal separator in exponent");
    4040                                        }
    4141
    4242                                        if (hasDec) {
    43                                                 throw new MalformedJSONException ("Multiple decimal separators in number found");
     43                                                throw new MalformedJsonException ("Multiple decimal separators in number found");
    4444                                        }
    4545
    4646                                        if (sbNum.Length == 0) {
    47                                                 throw new MalformedJSONException ("No leading digits before decimal separator found");
     47                                                throw new MalformedJsonException ("No leading digits before decimal separator found");
    4848                                        }
    4949
     
    5353                                        if (hasExp) {
    5454                                                if (sbExp.Length > 0) {
    55                                                         throw new MalformedJSONException ("Negative sign in exponent after digits");
     55                                                        throw new MalformedJsonException ("Negative sign in exponent after digits");
    5656                                                }
    5757
     
    5959                                        } else {
    6060                                                if (sbNum.Length > 0) {
    61                                                         throw new MalformedJSONException ("Negative sign in mantissa after digits");
     61                                                        throw new MalformedJsonException ("Negative sign in mantissa after digits");
    6262                                                }
    6363
     
    6666                                } else if (_json [_offset] == 'e' || _json [_offset] == 'E') {
    6767                                        if (hasExp) {
    68                                                 throw new MalformedJSONException ("Multiple exponential markers in number found");
     68                                                throw new MalformedJsonException ("Multiple exponential markers in number found");
    6969                                        }
    7070
    7171                                        if (sbNum.Length == 0) {
    72                                                 throw new MalformedJSONException ("No leading digits before exponential marker found");
     72                                                throw new MalformedJsonException ("No leading digits before exponential marker found");
    7373                                        }
    7474
     
    7878                                        if (hasExp) {
    7979                                                if (sbExp.Length > 0) {
    80                                                         throw new MalformedJSONException ("Positive sign in exponent after digits");
     80                                                        throw new MalformedJsonException ("Positive sign in exponent after digits");
    8181                                                }
    8282
    8383                                                sbExp.Append (_json [_offset]);
    8484                                        } else {
    85                                                 throw new MalformedJSONException ("Positive sign in mantissa found");
     85                                                throw new MalformedJsonException ("Positive sign in mantissa found");
    8686                                        }
    8787                                } else {
    88                                         double number;
    89                                         if (!StringParsers.TryParseDouble (sbNum.ToString (), out number)) {
    90                                                 throw new MalformedJSONException ("Mantissa is not a valid decimal (\"" + sbNum + "\")");
     88                                        if (!StringParsers.TryParseDouble (sbNum.ToString (), out double number)) {
     89                                                throw new MalformedJsonException ("Mantissa is not a valid decimal (\"" + sbNum + "\")");
    9190                                        }
    9291
    9392                                        if (hasExp) {
    94                                                 int exp;
    95                                                 if (!int.TryParse (sbExp.ToString (), out exp)) {
    96                                                         throw new MalformedJSONException ("Exponent is not a valid integer (\"" + sbExp + "\")");
     93                                                if (!int.TryParse (sbExp.ToString (), out int exp)) {
     94                                                        throw new MalformedJsonException ("Exponent is not a valid integer (\"" + sbExp + "\")");
    9795                                                }
    9896
    99                                                 number = number * Math.Pow (10, exp);
     97                                                number *= Math.Pow (10, exp);
    10098                                        }
    10199
    102100                                        //Log.Out ("JSON:Parsed Number: " + number.ToString ());
    103                                         return new JSONNumber (number);
     101                                        return new JsonNumber (number);
    104102                                }
    105103
     
    107105                        }
    108106
    109                         throw new MalformedJSONException ("End of JSON reached before parsing number finished");
     107                        throw new MalformedJsonException ("End of JSON reached before parsing number finished");
    110108                }
    111109
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONObject.cs

    r389 r391  
    33
    44namespace AllocsFixes.JSON {
    5         public class JSONObject : JSONNode {
    6                 private readonly Dictionary<string, JSONNode> nodes = new Dictionary<string, JSONNode> ();
     5        public class JsonObject : JsonNode {
     6                private readonly Dictionary<string, JsonNode> nodes = new Dictionary<string, JsonNode> ();
    77
    8                 public JSONNode this [string _name] {
     8                public JsonNode this [string _name] {
    99                        get => nodes [_name];
    1010                        set => nodes [_name] = value;
     
    1919                }
    2020
    21                 public bool TryGetValue (string _name, out JSONNode _node) {
     21                public bool TryGetValue (string _name, out JsonNode _node) {
    2222                        return nodes.TryGetValue (_name, out _node);
    2323                }
    2424
    25                 public void Add (string _name, JSONNode _node) {
     25                public void Add (string _name, JsonNode _node) {
    2626                        nodes.Add (_name, _node);
    2727                }
     
    3333                        }
    3434
    35                         foreach (KeyValuePair<string, JSONNode> kvp in nodes) {
     35                        foreach ((string key, JsonNode value) in nodes) {
    3636                                if (_prettyPrint) {
    3737                                        _stringBuilder.Append (new string ('\t', _currentLevel + 1));
    3838                                }
    3939
    40                                 _stringBuilder.Append (string.Format ("\"{0}\":", kvp.Key));
     40                                _stringBuilder.Append ($"\"{key}\":");
    4141                                if (_prettyPrint) {
    4242                                        _stringBuilder.Append (" ");
    4343                                }
    4444
    45                                 kvp.Value.ToString (_stringBuilder, _prettyPrint, _currentLevel + 1);
     45                                value.ToString (_stringBuilder, _prettyPrint, _currentLevel + 1);
    4646                                _stringBuilder.Append (",");
    4747                                if (_prettyPrint) {
     
    6161                }
    6262
    63                 public static JSONObject Parse (string _json, ref int _offset) {
     63                public static JsonObject Parse (string _json, ref int _offset) {
    6464                        //Log.Out ("ParseObject enter (" + offset + ")");
    65                         JSONObject obj = new JSONObject ();
     65                        JsonObject obj = new JsonObject ();
    6666
    6767                        bool nextElemAllowed = true;
     
    7272                                        case '"':
    7373                                                if (nextElemAllowed) {
    74                                                         JSONString key = JSONString.Parse (_json, ref _offset);
     74                                                        JsonString key = JsonString.Parse (_json, ref _offset);
    7575                                                        Parser.SkipWhitespace (_json, ref _offset);
    7676                                                        if (_json [_offset] != ':') {
    77                                                                 throw new MalformedJSONException (
     77                                                                throw new MalformedJsonException (
    7878                                                                        "Could not parse object, missing colon (\":\") after key");
    7979                                                        }
    8080
    8181                                                        _offset++;
    82                                                         JSONNode val = Parser.ParseInternal (_json, ref _offset);
     82                                                        JsonNode val = Parser.ParseInternal (_json, ref _offset);
    8383                                                        obj.Add (key.GetString (), val);
    8484                                                        nextElemAllowed = false;
    8585                                                } else {
    86                                                         throw new MalformedJSONException (
     86                                                        throw new MalformedJsonException (
    8787                                                                "Could not parse object, found new key without a separating comma");
    8888                                                }
     
    9494                                                        _offset++;
    9595                                                } else {
    96                                                         throw new MalformedJSONException (
     96                                                        throw new MalformedJsonException (
    9797                                                                "Could not parse object, found a comma without a key/value pair first");
    9898                                                }
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONString.cs

    r389 r391  
    22
    33namespace AllocsFixes.JSON {
    4         public class JSONString : JSONValue {
     4        public class JsonString : JsonValue {
    55                private readonly string value;
    66
    7                 public JSONString (string _value) {
     7                public JsonString (string _value) {
    88                        value = _value;
    99                }
     
    1414
    1515                public override void ToString (StringBuilder _stringBuilder, bool _prettyPrint = false, int _currentLevel = 0) {
    16                         if (value == null || value.Length == 0) {
     16                        if (string.IsNullOrEmpty (value)) {
    1717                                _stringBuilder.Append ("\"\"");
    1818                                return;
     
    6464                }
    6565
    66                 public static JSONString Parse (string _json, ref int _offset) {
     66                public static JsonString Parse (string _json, ref int _offset) {
    6767                        //Log.Out ("ParseString enter (" + offset + ")");
    6868                        StringBuilder sb = new StringBuilder ();
     
    104104
    105105                                                //Log.Out ("JSON:Parsed String: " + sb.ToString ());
    106                                                 return new JSONString (sb.ToString ());
     106                                                return new JsonString (sb.ToString ());
    107107                                        default:
    108108                                                sb.Append (_json [_offset]);
     
    112112                        }
    113113
    114                         throw new MalformedJSONException ("End of JSON reached before parsing string finished");
     114                        throw new MalformedJsonException ("End of JSON reached before parsing string finished");
    115115                }
    116116
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONValue.cs

    r389 r391  
    11namespace AllocsFixes.JSON {
    2         public abstract class JSONValue : JSONNode {
     2        public abstract class JsonValue : JsonNode {
    33                public abstract string AsString { get; }
    44                public abstract int AsInt { get; }
  • binary-improvements2/7dtd-server-fixes/src/JSON/JsonManualBuilder.cs

    r354 r391  
    99                        NonEmpty = 1,
    1010                        Object = 2,
    11                         Array = 4,
     11                        Array = 4
    1212                }
    1313
     
    2020                private int currentLevelNumber;
    2121
    22                 private ELevelInfo CurrentLevelInfo {
    23                         get { return (ELevelInfo) (currentLevelType & levelBitsMask); }
    24                 }
    25 
    26                 private bool CurrentLevelIsNonEmpty {
    27                         get { return (CurrentLevelInfo & ELevelInfo.NonEmpty) == ELevelInfo.NonEmpty; }
    28                 }
    29 
    30                 private bool CurrentLevelIsArray {
    31                         get { return (CurrentLevelInfo & ELevelInfo.Array) != ELevelInfo.Array; }
    32                 }
    33 
    34                 private bool CurrentLevelIsObject {
    35                         get { return (CurrentLevelInfo & ELevelInfo.Object) != ELevelInfo.Object; }
    36                 }
    37                
     22                private ELevelInfo CurrentLevelInfo => (ELevelInfo) (currentLevelType & levelBitsMask);
     23
     24                private bool CurrentLevelIsNonEmpty => (CurrentLevelInfo & ELevelInfo.NonEmpty) == ELevelInfo.NonEmpty;
     25
     26                private bool CurrentLevelIsArray => (CurrentLevelInfo & ELevelInfo.Array) != ELevelInfo.Array;
     27
     28                private bool CurrentLevelIsObject => (CurrentLevelInfo & ELevelInfo.Object) != ELevelInfo.Object;
     29
    3830                public JsonManualBuilder (bool _prettyPrint) {
    3931                        prettyPrint = _prettyPrint;
     
    5446                        }
    5547
    56                         currentLevelType = currentLevelType | (long) ELevelInfo.NonEmpty;
     48                        currentLevelType |= (long) ELevelInfo.NonEmpty;
    5749                }
    5850
     
    210202
    211203                        currentLevelNumber--;
    212                         currentLevelType = currentLevelType >> levelTypeBits;
     204                        currentLevelType >>= levelTypeBits;
    213205
    214206                        if (prettyPrint) {
  • binary-improvements2/7dtd-server-fixes/src/JSON/MalformedJSONException.cs

    r351 r391  
    33
    44namespace AllocsFixes.JSON {
    5         public class MalformedJSONException : ApplicationException {
    6                 public MalformedJSONException () {
     5        public class MalformedJsonException : ApplicationException {
     6                public MalformedJsonException () {
    77                }
    88
    9                 public MalformedJSONException (string _message) : base (_message) {
     9                public MalformedJsonException (string _message) : base (_message) {
    1010                }
    1111
    12                 public MalformedJSONException (string _message, Exception _inner) : base (_message, _inner) {
     12                public MalformedJsonException (string _message, Exception _inner) : base (_message, _inner) {
    1313                }
    1414
    15                 protected MalformedJSONException (SerializationInfo _info, StreamingContext _context) : base (_info, _context) {
     15                protected MalformedJsonException (SerializationInfo _info, StreamingContext _context) : base (_info, _context) {
    1616                }
    1717        }
  • binary-improvements2/7dtd-server-fixes/src/JSON/Parser.cs

    r351 r391  
    11namespace AllocsFixes.JSON {
    2         public class Parser {
    3                 public static JSONNode Parse (string _json) {
     2        public static class Parser {
     3                public static JsonNode Parse (string _json) {
    44                        int offset = 0;
    55                        return ParseInternal (_json, ref offset);
    66                }
    77
    8                 public static JSONNode ParseInternal (string _json, ref int _offset) {
     8                public static JsonNode ParseInternal (string _json, ref int _offset) {
    99                        SkipWhitespace (_json, ref _offset);
    1010
     
    1212                        switch (_json [_offset]) {
    1313                                case '[':
    14                                         return JSONArray.Parse (_json, ref _offset);
     14                                        return JsonArray.Parse (_json, ref _offset);
    1515                                case '{':
    16                                         return JSONObject.Parse (_json, ref _offset);
     16                                        return JsonObject.Parse (_json, ref _offset);
    1717                                case '"':
    18                                         return JSONString.Parse (_json, ref _offset);
     18                                        return JsonString.Parse (_json, ref _offset);
    1919                                case 't':
    2020                                case 'f':
    21                                         return JSONBoolean.Parse (_json, ref _offset);
     21                                        return JsonBoolean.Parse (_json, ref _offset);
    2222                                case 'n':
    23                                         return JSONNull.Parse (_json, ref _offset);
     23                                        return JsonNull.Parse (_json, ref _offset);
    2424                                default:
    25                                         return JSONNumber.Parse (_json, ref _offset);
     25                                        return JsonNumber.Parse (_json, ref _offset);
    2626                        }
    2727                }
     
    4242                        }
    4343
    44                         throw new MalformedJSONException ("End of JSON reached before parsing finished");
     44                        throw new MalformedJsonException ("End of JSON reached before parsing finished");
    4545                }
    4646        }
  • binary-improvements2/7dtd-server-fixes/src/LandClaimList.cs

    r369 r391  
    2020                        Dictionary<PersistentPlayerData, List<Vector3i>> owners =
    2121                                new Dictionary<PersistentPlayerData, List<Vector3i>> ();
    22                         foreach (KeyValuePair<Vector3i, PersistentPlayerData> kvp in d) {
     22                        foreach ((Vector3i claimPos, PersistentPlayerData owner) in d) {
    2323                                bool allowed = true;
    2424                                if (_positionFilters != null) {
    2525                                        foreach (PositionFilter pf in _positionFilters) {
    26                                                 if (!pf (kvp.Key)) {
    27                                                         allowed = false;
    28                                                         break;
     26                                                if (pf (claimPos)) {
     27                                                        continue;
    2928                                                }
     29
     30                                                allowed = false;
     31                                                break;
    3032                                        }
    3133                                }
    3234
    33                                 if (allowed) {
    34                                         if (!owners.ContainsKey (kvp.Value)) {
    35                                                 owners.Add (kvp.Value, new List<Vector3i> ());
    36                                         }
     35                                if (!allowed) {
     36                                        continue;
     37                                }
    3738
    38                                         owners [kvp.Value].Add (kvp.Key);
     39                                if (!owners.ContainsKey (owner)) {
     40                                        owners.Add (owner, new List<Vector3i> ());
    3941                                }
     42
     43                                owners [owner].Add (claimPos);
    4044                        }
    4145
    42                         foreach (KeyValuePair<PersistentPlayerData, List<Vector3i>> kvp in owners) {
    43                                 Player p = PersistentContainer.Instance.Players [kvp.Key.UserIdentifier, false];
    44                                 if (p == null) {
    45                                         p = new Player (kvp.Key.UserIdentifier);
    46                                 }
     46                        foreach ((PersistentPlayerData owner, List<Vector3i> claimPositions) in owners) {
     47                                Player p = PersistentContainer.Instance.Players [owner.UserIdentifier, false] ?? new Player (owner.UserIdentifier);
    4748
    4849                                bool allowed = true;
    4950                                if (_ownerFilters != null) {
    5051                                        foreach (OwnerFilter of in _ownerFilters) {
    51                                                 if (!of (p)) {
    52                                                         allowed = false;
    53                                                         break;
     52                                                if (of (p)) {
     53                                                        continue;
    5454                                                }
     55
     56                                                allowed = false;
     57                                                break;
    5558                                        }
    5659                                }
    5760
    58                                 if (allowed) {
    59                                         result.Add (p, new List<Vector3i> ());
    60                                         foreach (Vector3i v in kvp.Value) {
    61                                                 result [p].Add (v);
    62                                         }
     61                                if (!allowed) {
     62                                        continue;
     63                                }
     64
     65                                result.Add (p, new List<Vector3i> ());
     66                                foreach (Vector3i v in claimPositions) {
     67                                        result [p].Add (v);
    6368                                }
    6469                        }
  • binary-improvements2/7dtd-server-fixes/src/ModApi.cs

    r390 r391  
    11using System.Collections.Generic;
    22using AllocsFixes.PersistentData;
     3using JetBrains.Annotations;
    34using Platform.Steam;
    45
    56namespace AllocsFixes {
    6         public class API : IModApi {
     7        [UsedImplicitly]
     8        public class ModApi : IModApi {
    79                public void InitMod (Mod _modInstance) {
    810                        ModEvents.GameStartDone.RegisterHandler (GameAwake);
    9                         ModEvents.GameShutdown.RegisterHandler (GameShutdown);
    1011                        ModEvents.SavePlayerData.RegisterHandler (SavePlayerData);
    1112                        ModEvents.PlayerSpawning.RegisterHandler (PlayerSpawning);
     
    1516                }
    1617
    17                 public void GameAwake () {
     18                private void GameAwake () {
    1819                        PersistentContainer.Load ();
    1920                }
    2021
    21                 public void GameShutdown () {
    22                 }
    23 
    24                 public void SavePlayerData (ClientInfo _cInfo, PlayerDataFile _playerDataFile) {
     22                private void SavePlayerData (ClientInfo _cInfo, PlayerDataFile _playerDataFile) {
    2523                        PersistentContainer.Instance.Players [_cInfo.InternalId, true].Update (_playerDataFile);
    2624                }
    2725
    28                 public void PlayerSpawning (ClientInfo _cInfo, int _chunkViewDim, PlayerProfile _playerProfile) {
     26                private void PlayerSpawning (ClientInfo _cInfo, int _chunkViewDim, PlayerProfile _playerProfile) {
    2927                        string owner = null;
    3028                        if (_cInfo.PlatformId is UserIdentifierSteam identifierSteam) {
     
    4240                }
    4341
    44                 public void PlayerDisconnected (ClientInfo _cInfo, bool _bShutdown) {
     42                private void PlayerDisconnected (ClientInfo _cInfo, bool _bShutdown) {
    4543                        Player p = PersistentContainer.Instance.Players [_cInfo.InternalId, false];
    4644                        if (p != null) {
     
    5351                }
    5452
    55                 public void PlayerSpawned (ClientInfo _cInfo, RespawnType _respawnReason, Vector3i _spawnPos) {
     53                private void PlayerSpawned (ClientInfo _cInfo, RespawnType _respawnReason, Vector3i _spawnPos) {
    5654                        PersistentContainer.Instance.Players [_cInfo.InternalId, true].SetOnline (_cInfo);
    5755                        PersistentContainer.Instance.Save ();
    5856                }
    5957
    60                 private const string ANSWER =
     58                private const string testChatAnswer =
    6159                        "     [ff0000]I[-] [ff7f00]W[-][ffff00]A[-][80ff00]S[-] [00ffff]H[-][0080ff]E[-][0000ff]R[-][8b00ff]E[-]";
    6260
    63                 public bool ChatMessage (ClientInfo _cInfo, EChatType _type, int _senderId, string _msg, string _mainName,
     61                private bool ChatMessage (ClientInfo _cInfo, EChatType _type, int _senderId, string _msg, string _mainName,
    6462                        bool _localizeMain, List<int> _recipientEntityIds) {
    6563                        if (string.IsNullOrEmpty (_msg) || !_msg.EqualsCaseInsensitive ("/alloc")) {
     
    6967                        if (_cInfo != null) {
    7068                                Log.Out ("Sent chat hook reply to {0}", _cInfo.InternalId);
    71                                 _cInfo.SendPackage (NetPackageManager.GetPackage<NetPackageChat> ().Setup (EChatType.Whisper, -1, ANSWER, "", false, null));
     69                                _cInfo.SendPackage (NetPackageManager.GetPackage<NetPackageChat> ().Setup (EChatType.Whisper, -1, testChatAnswer, "", false, null));
    7270                        } else {
    7371                                Log.Error ("ChatHookExample: Argument _cInfo null on message: {0}", _msg);
  • binary-improvements2/7dtd-server-fixes/src/PersistentData/Attributes.cs

    r326 r391  
    88
    99                public bool HideChatCommands {
    10                         get { return hideChatCommands; }
    11                         set { hideChatCommands = value; }
     10                        get => hideChatCommands;
     11                        set => hideChatCommands = value;
    1212                }
    1313
    1414                public string HideChatCommandPrefix {
    15                         get {
    16                                 if (hideChatCommandPrefix == null) {
    17                                         hideChatCommandPrefix = "";
    18                                 }
    19 
    20                                 return hideChatCommandPrefix;
    21                         }
    22                         set { hideChatCommandPrefix = value; }
     15                        get => hideChatCommandPrefix ?? (hideChatCommandPrefix = "");
     16                        set => hideChatCommandPrefix = value;
    2317                }
    2418        }
  • binary-improvements2/7dtd-server-fixes/src/PersistentData/PersistentContainer.cs

    r369 r391  
    1010                [OptionalField] private Attributes attributes;
    1111
    12                 public Players Players {
    13                         get {
    14                                 if (players == null) {
    15                                         players = new Players ();
    16                                 }
     12                public Players Players => players ?? (players = new Players ());
    1713
    18                                 return players;
    19                         }
    20                 }
    21 
    22                 public Attributes Attributes {
    23                         get {
    24                                 if (attributes == null) {
    25                                         attributes = new Attributes ();
    26                                 }
    27 
    28                                 return attributes;
    29                         }
    30                 }
     14                public Attributes Attributes => attributes ?? (attributes = new Attributes ());
    3115
    3216                private static PersistentContainer instance;
    3317
    34                 public static PersistentContainer Instance {
    35                         get {
    36                                 if (instance == null) {
    37                                         instance = new PersistentContainer ();
    38                                 }
    39 
    40                                 return instance;
    41                         }
    42                 }
     18                public static PersistentContainer Instance => instance ?? (instance = new PersistentContainer ());
    4319
    4420                private PersistentContainer () {
     
    5834
    5935                        try {
    60                                 PersistentContainer obj;
    6136                                Stream stream = File.Open (GameIO.GetSaveGameDir () + "/AllocsPeristentData.bin", FileMode.Open);
    6237                                BinaryFormatter bFormatter = new BinaryFormatter ();
    63                                 obj = (PersistentContainer) bFormatter.Deserialize (stream);
     38                                PersistentContainer obj = (PersistentContainer) bFormatter.Deserialize (stream);
    6439                                stream.Close ();
    6540                                instance = obj;
  • binary-improvements2/7dtd-server-fixes/src/PersistentData/Players.cs

    r383 r391  
    4141
    4242                        if (int.TryParse (_nameOrId, out int entityId)) {
    43                                 foreach (KeyValuePair<PlatformUserIdentifierAbs, Player> kvp in Dict) {
    44                                         if (kvp.Value.IsOnline && kvp.Value.EntityID == entityId) {
    45                                                 return kvp.Key;
     43                                foreach ((PlatformUserIdentifierAbs iUserId, Player player) in Dict) {
     44                                        if (player.IsOnline && player.EntityID == entityId) {
     45                                                return iUserId;
    4646                                        }
    4747                                }
    4848                        }
    4949
    50                         foreach (KeyValuePair<PlatformUserIdentifierAbs, Player> kvp in Dict) {
    51                                 string name = kvp.Value.Name;
     50                        foreach ((PlatformUserIdentifierAbs iUserId, Player player) in Dict) {
     51                                string name = player.Name;
    5252                                if (_ignoreColorCodes) {
    5353                                        name = Regex.Replace (name, "\\[[0-9a-fA-F]{6}\\]", "");
    5454                                }
    5555
    56                                 if (kvp.Value.IsOnline && name.EqualsCaseInsensitive (_nameOrId)) {
    57                                         return kvp.Key;
     56                                if (player.IsOnline && name.EqualsCaseInsensitive (_nameOrId)) {
     57                                        return iUserId;
    5858                                }
    5959                        }
  • binary-improvements2/MapRendering/MapRendering.csproj

    r390 r391  
    1616    <DebugType>none</DebugType>
    1717    <Optimize>true</Optimize>
    18     <OutputPath>..\bin\Mods\Allocs_WebAndMapRendering\</OutputPath>
     18    <OutputPath>..\bin\Mods\TFP_MapRendering\</OutputPath>
    1919    <ErrorReport>prompt</ErrorReport>
    2020    <WarningLevel>4</WarningLevel>
     
    2323  </PropertyGroup>
    2424  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_Profiler|AnyCPU' ">
    25     <OutputPath>..\bin\Mods\Allocs_WebAndMapRendering\</OutputPath>
     25    <OutputPath>..\bin\Mods\TFP_MapRendering\</OutputPath>
    2626    <DefineConstants>ENABLE_PROFILER</DefineConstants>
    2727    <Optimize>true</Optimize>
     
    3232  </PropertyGroup>
    3333  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    34     <OutputPath>..\bin\Mods\Allocs_WebAndMapRendering\</OutputPath>
     34    <OutputPath>..\bin\Mods\TFP_MapRendering\</OutputPath>
    3535    <DebugType>full</DebugType>
    3636    <DebugSymbols>true</DebugSymbols>
     
    7979  </ItemGroup>
    8080  <ItemGroup>
    81     <Compile Include="AssemblyInfo.cs" />
    82     <Compile Include="Commands\Exception.cs" />
    83     <Compile Include="MapRendering\MapRendering.cs" />
    84     <Compile Include="MapRendering\MapRenderBlockBuffer.cs" />
    85     <Compile Include="MapRendering\Constants.cs" />
    86     <Compile Include="Commands\RenderMap.cs" />
    87     <Compile Include="Commands\EnableRendering.cs" />
    88     <Compile Include="API.cs" />
    89     <Compile Include="Web\API\AbsRestApi.cs" />
    90     <Compile Include="Web\API\GetAnimalsLocation.cs" />
    91     <Compile Include="Web\API\GetHostileLocation.cs" />
    92     <Compile Include="Web\API\GetWebMods.cs" />
    93     <Compile Include="Web\API\Null.cs" />
    94     <Compile Include="Web\Handlers\RewriteHandler.cs" />
    95     <Compile Include="Web\RequestContext.cs" />
    96     <Compile Include="Web\SSE\EventLog.cs" />
    97     <Compile Include="Web\SSE\SseHandler.cs" />
    98     <Compile Include="Web\SSE\EventBase.cs" />
    99     <Compile Include="Web\Web.cs" />
    100     <Compile Include="Web\MimeType.cs" />
    101     <Compile Include="Web\API\GetPlayersOnline.cs" />
    102     <Compile Include="Web\API\AbsWebAPI.cs" />
    103     <Compile Include="Web\API\GetPlayersLocation.cs" />
    104     <Compile Include="Web\API\GetPlayerInventory.cs" />
    105     <Compile Include="Web\API\GetLandClaims.cs" />
    106     <Compile Include="Commands\webstat.cs" />
    107     <Compile Include="Web\API\GetStats.cs" />
    108     <Compile Include="Web\WebConnection.cs" />
    109     <Compile Include="Web\OpenID.cs" />
    110     <Compile Include="Web\ConnectionHandler.cs" />
    111     <Compile Include="Web\WebMod.cs" />
    112     <Compile Include="Web\WebPermissions.cs" />
    113     <Compile Include="Web\Handlers\ApiHandler.cs" />
    114     <Compile Include="Web\Handlers\ItemIconHandler.cs" />
    115     <Compile Include="Web\Handlers\AbsHandler.cs" />
    116     <Compile Include="Web\Handlers\SimpleRedirectHandler.cs" />
    117     <Compile Include="Web\Handlers\StaticHandler.cs" />
    118     <Compile Include="Web\Handlers\SessionHandler.cs" />
    119     <Compile Include="Web\API\ExecuteConsoleCommand.cs" />
    120     <Compile Include="Commands\ReloadWebPermissions.cs" />
    121     <Compile Include="Web\Handlers\UserStatusHandler.cs" />
    122     <Compile Include="Commands\WebTokens.cs" />
    123     <Compile Include="Commands\WebPermissionsCmd.cs" />
    124     <Compile Include="Web\LogBuffer.cs" />
    125     <Compile Include="Web\API\GetLog.cs" />
    126     <Compile Include="Web\API\GetWebUIUpdates.cs" />
    127     <Compile Include="Web\API\GetServerInfo.cs" />
    128     <Compile Include="Web\API\GetPlayerList.cs" />
    129     <Compile Include="Web\WebCommandResult.cs" />
    130     <Compile Include="Web\API\GetAllowedCommands.cs" />
    131     <Compile Include="Commands\EnableOpenIDDebug.cs" />
    132     <Compile Include="Web\API\GetPlayerInventories.cs" />
    133     <Compile Include="Web\WebUtils.cs" />
     81    <Compile Include="src\Constants.cs" />
     82    <Compile Include="src\MapRenderBlockBuffer.cs" />
     83    <Compile Include="src\MapRenderer.cs" />
     84    <Compile Include="src\ModApi.cs" />
     85    <Compile Include="src\AssemblyInfo.cs" />
     86    <Compile Include="src\Commands\EnableRendering.cs" />
     87    <Compile Include="src\Commands\RenderMap.cs" />
    13488  </ItemGroup>
    13589  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
     
    14094      <Private>False</Private>
    14195    </ProjectReference>
    142     <ProjectReference Include="..\SpaceWizards.HttpListener\SpaceWizards.HttpListener.csproj">
    143       <Project>{e273d042-57f9-4e2e-8268-5053527e5287}</Project>
    144       <Name>SpaceWizards.HttpListener</Name>
    145     </ProjectReference>
    14696  </ItemGroup>
    14797  <ItemGroup>
     
    14999      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    150100    </None>
    151     <None Include="steam-intermediate.cer">
    152       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    153     </None>
    154     <None Include="steam-rootca.cer">
    155       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    156     </None>
    157101  </ItemGroup>
    158102</Project>
  • binary-improvements2/MapRendering/ModInfo.xml

    r370 r391  
    22<xml>
    33        <ModInfo>
    4                 <Name value="Allocs MapRendering and Webinterface" />
     4                <Name value="TFP_MapRendering" />
    55                <Description value="Render the game map to image map tiles as it is uncovered" />
    6                 <Author value="Christian 'Alloc' Illy" />
    7                 <Version value="39" />
    8                 <Website value="http://7dtd.illy.bz" />
     6                <Author value="The Fun Pimps LLC" />
     7                <Version value="1" />
     8                <Website value="" />
    99        </ModInfo>
    1010</xml>
  • binary-improvements2/MapRendering/src/AssemblyInfo.cs

    r390 r391  
    77[assembly: AssemblyDescription ("")]
    88[assembly: AssemblyConfiguration ("")]
    9 [assembly: AssemblyCompany ("")]
     9[assembly: AssemblyCompany ("The Fun Pimps LLC")]
    1010[assembly: AssemblyProduct ("")]
    11 [assembly: AssemblyCopyright ("ci")]
     11[assembly: AssemblyCopyright ("The Fun Pimps LLC")]
    1212[assembly: AssemblyTrademark ("")]
    1313[assembly: AssemblyCulture ("")]
  • binary-improvements2/MapRendering/src/Commands/EnableRendering.cs

    r390 r391  
    11using System.Collections.Generic;
     2using JetBrains.Annotations;
    23
    3 namespace AllocsFixes.CustomCommands {
     4namespace MapRendering.Commands {
     5        [UsedImplicitly]
    46        public class EnableRendering : ConsoleCmdAbstract {
    57                public override string GetDescription () {
     
    1315                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    1416                        if (_params.Count != 1) {
    15                                 SdtdConsole.Instance.Output ("Current state: " + MapRendering.MapRendering.renderingEnabled);
     17                                SdtdConsole.Instance.Output ("Current state: " + MapRenderer.renderingEnabled);
    1618                                return;
    1719                        }
    1820
    19                         MapRendering.MapRendering.renderingEnabled = _params [0].Equals ("1");
     21                        MapRenderer.renderingEnabled = _params [0].Equals ("1");
    2022                        SdtdConsole.Instance.Output ("Set live map rendering to " + _params [0].Equals ("1"));
    2123                }
  • binary-improvements2/MapRendering/src/Commands/RenderMap.cs

    r390 r391  
    11using System.Collections.Generic;
     2using JetBrains.Annotations;
    23
    3 namespace AllocsFixes.CustomCommands {
     4namespace MapRendering.Commands {
     5        [UsedImplicitly]
    46        public class RenderMap : ConsoleCmdAbstract {
    57                public override string GetDescription () {
     
    1214
    1315                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
    14                         MapRendering.MapRendering.Instance.RenderFullMap ();
     16                        MapRenderer.Instance.RenderFullMap ();
    1517
    1618                        SdtdConsole.Instance.Output ("Render map done");
  • binary-improvements2/MapRendering/src/Constants.cs

    r390 r391  
    11using UnityEngine;
    22
    3 namespace AllocsFixes.MapRendering {
    4         public class Constants {
    5                 public static readonly TextureFormat DEFAULT_TEX_FORMAT = TextureFormat.ARGB32;
    6                 public static int MAP_BLOCK_SIZE = 128;
    7                 public const int MAP_CHUNK_SIZE = 16;
    8                 public const int MAP_REGION_SIZE = 512;
    9                 public static int ZOOMLEVELS = 5;
    10                 public static string MAP_DIRECTORY = string.Empty;
     3namespace MapRendering {
     4        public static class Constants {
     5                public static readonly TextureFormat DefaultTextureFormat = TextureFormat.ARGB32;
     6                public static int MapBlockSize = 128;
     7                public const int MapChunkSize = 16;
     8                public const int MapRegionSize = 512;
     9                public static int Zoomlevels = 5;
     10                public static string MapDirectory = string.Empty;
    1111
    12                 public static int MAP_BLOCK_TO_CHUNK_DIV {
    13                         get { return MAP_BLOCK_SIZE / MAP_CHUNK_SIZE; }
    14                 }
     12                public static int MAP_BLOCK_TO_CHUNK_DIV => MapBlockSize / MapChunkSize;
    1513
    16                 public static int MAP_REGION_TO_CHUNK_DIV {
    17                         get { return MAP_REGION_SIZE / MAP_CHUNK_SIZE; }
    18                 }
     14                public static int MAP_REGION_TO_CHUNK_DIV => MapRegionSize / MapChunkSize;
    1915        }
    2016}
  • binary-improvements2/MapRendering/src/MapRenderBlockBuffer.cs

    r390 r391  
    66using UnityEngine.Profiling;
    77
    8 namespace AllocsFixes.MapRendering {
     8namespace MapRendering {
    99        public class MapRenderBlockBuffer {
    10                 private readonly Texture2D blockMap = new Texture2D (Constants.MAP_BLOCK_SIZE, Constants.MAP_BLOCK_SIZE, Constants.DEFAULT_TEX_FORMAT, false);
     10                private readonly Texture2D blockMap = new Texture2D (Constants.MapBlockSize, Constants.MapBlockSize, Constants.DefaultTextureFormat, false);
    1111                private readonly MapTileCache cache;
    1212                private readonly NativeArray<int> emptyImageData;
    13                 private readonly Texture2D zoomBuffer = new Texture2D (Constants.MAP_BLOCK_SIZE / 2, Constants.MAP_BLOCK_SIZE / 2, Constants.DEFAULT_TEX_FORMAT, false);
     13                private readonly Texture2D zoomBuffer = new Texture2D (Constants.MapBlockSize / 2, Constants.MapBlockSize / 2, Constants.DefaultTextureFormat, false);
    1414                private readonly int zoomLevel;
    1515                private readonly string folderBase;
    1616               
    17                 private Vector2i currentBlockMapPos = new Vector2i (Int32.MinValue, Int32.MinValue);
     17                private Vector2i currentBlockMapPos = new Vector2i (int.MinValue, int.MinValue);
    1818                private string currentBlockMapFolder = string.Empty;
    1919
     
    2121                        zoomLevel = _level;
    2222                        cache = _cache;
    23                         folderBase = Constants.MAP_DIRECTORY + "/" + zoomLevel + "/";
     23                        folderBase = Constants.MapDirectory + "/" + zoomLevel + "/";
    2424
    2525                        {
    2626                                // Initialize empty tile data
    2727                                Color nullColor = new Color (0, 0, 0, 0);
    28                                 for (int x = 0; x < Constants.MAP_BLOCK_SIZE; x++) {
    29                                         for (int y = 0; y < Constants.MAP_BLOCK_SIZE; y++) {
     28                                for (int x = 0; x < Constants.MapBlockSize; x++) {
     29                                        for (int y = 0; y < Constants.MapBlockSize; y++) {
    3030                                                blockMap.SetPixel (x, y, nullColor);
    3131                                        }
     
    3939                }
    4040
    41                 public TextureFormat FormatSelf {
    42                         get { return blockMap.format; }
    43                 }
     41                public TextureFormat FormatSelf => blockMap.format;
    4442
    4543                public void ResetBlock () {
    4644                        currentBlockMapFolder = string.Empty;
    47                         currentBlockMapPos = new Vector2i (Int32.MinValue, Int32.MinValue);
     45                        currentBlockMapPos = new Vector2i (int.MinValue, int.MinValue);
    4846                        cache.ResetTile (zoomLevel);
    4947                }
     
    9492
    9593                public void SetPart (Vector2i _offset, int _partSize, Color32[] _pixels) {
    96                         if (_offset.x + _partSize > Constants.MAP_BLOCK_SIZE || _offset.y + _partSize > Constants.MAP_BLOCK_SIZE) {
    97                                 Log.Error (string.Format ("MapBlockBuffer[{0}].SetPart ({1}, {2}, {3}) has blockMap.size ({4}/{5})",
    98                                         zoomLevel, _offset, _partSize, _pixels.Length, Constants.MAP_BLOCK_SIZE, Constants.MAP_BLOCK_SIZE));
     94                        if (_offset.x + _partSize > Constants.MapBlockSize || _offset.y + _partSize > Constants.MapBlockSize) {
     95                                Log.Error (
     96                                        $"MapBlockBuffer[{zoomLevel}].SetPart ({_offset}, {_partSize}, {_pixels.Length}) has blockMap.size ({Constants.MapBlockSize}/{Constants.MapBlockSize})");
    9997                                return;
    10098                        }
     
    107105                public Color32[] GetHalfScaled () {
    108106                        Profiler.BeginSample ("HalfScaled.ResizeBuffer");
    109                         zoomBuffer.Resize (Constants.MAP_BLOCK_SIZE, Constants.MAP_BLOCK_SIZE);
     107                        zoomBuffer.Resize (Constants.MapBlockSize, Constants.MapBlockSize);
    110108                        Profiler.EndSample ();
    111109
     
    125123
    126124                        Profiler.BeginSample ("HalfScaled.Scale");
    127                         TextureScale.Point (zoomBuffer, Constants.MAP_BLOCK_SIZE / 2, Constants.MAP_BLOCK_SIZE / 2);
     125                        TextureScale.Point (zoomBuffer, Constants.MapBlockSize / 2, Constants.MapBlockSize / 2);
    128126                        Profiler.EndSample ();
    129127
     
    136134
    137135                public void SetPartNative (Vector2i _offset, int _partSize, NativeArray<int> _pixels) {
    138                         if (_offset.x + _partSize > Constants.MAP_BLOCK_SIZE || _offset.y + _partSize > Constants.MAP_BLOCK_SIZE) {
    139                                 Log.Error (string.Format ("MapBlockBuffer[{0}].SetPart ({1}, {2}, {3}) has blockMap.size ({4}/{5})",
    140                                         zoomLevel, _offset, _partSize, _pixels.Length, Constants.MAP_BLOCK_SIZE, Constants.MAP_BLOCK_SIZE));
     136                        if (_offset.x + _partSize > Constants.MapBlockSize || _offset.y + _partSize > Constants.MapBlockSize) {
     137                                Log.Error (
     138                                        $"MapBlockBuffer[{zoomLevel}].SetPart ({_offset}, {_partSize}, {_pixels.Length}) has blockMap.size ({Constants.MapBlockSize}/{Constants.MapBlockSize})");
    141139                                return;
    142140                        }
     
    157155                public NativeArray<int> GetHalfScaledNative () {
    158156                        Profiler.BeginSample ("HalfScaledNative.ResizeBuffer");
    159                         if (zoomBuffer.format != blockMap.format || zoomBuffer.height != Constants.MAP_BLOCK_SIZE / 2 || zoomBuffer.width != Constants.MAP_BLOCK_SIZE / 2) {
    160                                 zoomBuffer.Resize (Constants.MAP_BLOCK_SIZE / 2, Constants.MAP_BLOCK_SIZE / 2, blockMap.format, false);
     157                        if (zoomBuffer.format != blockMap.format || zoomBuffer.height != Constants.MapBlockSize / 2 || zoomBuffer.width != Constants.MapBlockSize / 2) {
     158                                zoomBuffer.Resize (Constants.MapBlockSize / 2, Constants.MapBlockSize / 2, blockMap.format, false);
    161159                        }
    162160                        Profiler.EndSample ();
     
    178176                        int newHeight = _targetTex.height;
    179177                       
    180                         float ratioX = ((float) oldWidth) / newWidth;
    181                         float ratioY = ((float) oldHeight) / newHeight;
    182 
    183                         for (var y = 0; y < newHeight; y++) {
    184                                 var oldLineStart = (int) (ratioY * y) * oldWidth;
    185                                 var newLineStart = y * newWidth;
    186                                 for (var x = 0; x < newWidth; x++) {
     178                        float ratioX = (float) oldWidth / newWidth;
     179                        float ratioY = (float) oldHeight / newHeight;
     180
     181                        for (int y = 0; y < newHeight; y++) {
     182                                int oldLineStart = (int) (ratioY * y) * oldWidth;
     183                                int newLineStart = y * newWidth;
     184                                for (int x = 0; x < newWidth; x++) {
    187185                                        targetData [newLineStart + x] = srcData [(int) (oldLineStart + ratioX * x)];
    188186                                }
     
    198196
    199197                        Profiler.BeginSample ("LoadImage");
    200                         if (array != null && blockMap.LoadImage (array) && blockMap.height == Constants.MAP_BLOCK_SIZE &&
    201                             blockMap.width == Constants.MAP_BLOCK_SIZE) {
     198                        if (array != null && blockMap.LoadImage (array) && blockMap.height == Constants.MapBlockSize &&
     199                            blockMap.width == Constants.MapBlockSize) {
    202200                                Profiler.EndSample ();
    203201
     
    211209                        }
    212210
    213                         if (blockMap.format != Constants.DEFAULT_TEX_FORMAT || blockMap.height != Constants.MAP_BLOCK_SIZE ||
    214                             blockMap.width != Constants.MAP_BLOCK_SIZE) {
    215                                 blockMap.Resize (Constants.MAP_BLOCK_SIZE, Constants.MAP_BLOCK_SIZE, Constants.DEFAULT_TEX_FORMAT,
     211                        if (blockMap.format != Constants.DefaultTextureFormat || blockMap.height != Constants.MapBlockSize ||
     212                            blockMap.width != Constants.MapBlockSize) {
     213                                blockMap.Resize (Constants.MapBlockSize, Constants.MapBlockSize, Constants.DefaultTextureFormat,
    216214                                        false);
    217215                        }
  • binary-improvements2/MapRendering/src/MapRenderer.cs

    r390 r391  
    1111using Object = UnityEngine.Object;
    1212
    13 namespace AllocsFixes.MapRendering {
    14         public class MapRendering {
    15                 private static MapRendering instance;
     13namespace MapRendering {
     14        public class MapRenderer {
     15                private static MapRenderer instance;
    1616
    1717                private static readonly object lockObject = new object ();
    1818                public static bool renderingEnabled = true;
    19                 private readonly MapTileCache cache = new MapTileCache (Constants.MAP_BLOCK_SIZE);
     19                private readonly MapTileCache cache = new MapTileCache (Constants.MapBlockSize);
    2020                private readonly Dictionary<Vector2i, Color32[]> dirtyChunks = new Dictionary<Vector2i, Color32[]> ();
    2121                private readonly MicroStopwatch msw = new MicroStopwatch ();
     
    2626                private bool shutdown;
    2727
    28                 private MapRendering () {
    29                         Constants.MAP_DIRECTORY = GameIO.GetSaveGameDir () + "/map";
     28                private MapRenderer () {
     29                        Constants.MapDirectory = GameIO.GetSaveGameDir () + "/map";
    3030
    3131                        lock (lockObject) {
     
    3535                        }
    3636
    37                         cache.SetZoomCount (Constants.ZOOMLEVELS);
    38 
    39                         zoomLevelBuffers = new MapRenderBlockBuffer[Constants.ZOOMLEVELS];
    40                         for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
     37                        cache.SetZoomCount (Constants.Zoomlevels);
     38
     39                        zoomLevelBuffers = new MapRenderBlockBuffer[Constants.Zoomlevels];
     40                        for (int i = 0; i < Constants.Zoomlevels; i++) {
    4141                                zoomLevelBuffers [i] = new MapRenderBlockBuffer (i, cache);
    4242                        }
     
    4545                }
    4646
    47                 public static MapRendering Instance {
    48                         get {
    49                                 if (instance == null) {
    50                                         instance = new MapRendering ();
    51                                 }
    52 
    53                                 return instance;
    54                         }
    55                 }
     47                public static MapRenderer Instance => instance ??= new MapRenderer ();
    5648
    5749                public static MapTileCache GetTileCache () {
     
    7769                                ThreadPool.UnsafeQueueUserWorkItem (_o => {
    7870                                        try {
    79                                                 if (!Instance.renderingFullMap) {
    80                                                         lock (lockObject) {
    81                                                                 Chunk c = (Chunk) _o;
    82                                                                 Vector3i cPos = c.GetWorldPos ();
    83                                                                 Vector2i cPos2 = new Vector2i (cPos.x / Constants.MAP_CHUNK_SIZE,
    84                                                                         cPos.z / Constants.MAP_CHUNK_SIZE);
    85 
    86                                                                 ushort[] mapColors = c.GetMapColors ();
    87                                                                 if (mapColors != null) {
    88                                                                         Color32[] realColors =
    89                                                                                 new Color32[Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE];
    90                                                                         for (int i_colors = 0; i_colors < mapColors.Length; i_colors++) {
    91                                                                                 realColors [i_colors] = shortColorToColor32 (mapColors [i_colors]);
    92                                                                         }
    93 
    94                                                                         Instance.dirtyChunks [cPos2] = realColors;
    95 
    96                                                                         //Log.Out ("Add Dirty: " + cPos2);
    97                                                                 }
     71                                                if (Instance.renderingFullMap) {
     72                                                        return;
     73                                                }
     74
     75                                                lock (lockObject) {
     76                                                        Chunk c = (Chunk) _o;
     77                                                        Vector3i cPos = c.GetWorldPos ();
     78                                                        Vector2i cPos2 = new Vector2i (cPos.x / Constants.MapChunkSize,
     79                                                                cPos.z / Constants.MapChunkSize);
     80
     81                                                        ushort[] mapColors = c.GetMapColors ();
     82                                                        if (mapColors == null) {
     83                                                                return;
    9884                                                        }
     85
     86                                                        Color32[] realColors =
     87                                                                new Color32[Constants.MapChunkSize * Constants.MapChunkSize];
     88                                                        for (int iColors = 0; iColors < mapColors.Length; iColors++) {
     89                                                                realColors [iColors] = shortColorToColor32 (mapColors [iColors]);
     90                                                        }
     91
     92                                                        Instance.dirtyChunks [cPos2] = realColors;
     93
     94                                                        //Log.Out ("Add Dirty: " + cPos2);
    9995                                                }
    10096                                        } catch (Exception e) {
     
    112108                        Texture2D fullMapTexture = null;
    113109
    114                         Vector2i minChunk, maxChunk;
    115                         Vector2i minPos, maxPos;
    116                         int widthChunks, heightChunks, widthPix, heightPix;
    117                         getWorldExtent (rfm, out minChunk, out maxChunk, out minPos, out maxPos, out widthChunks, out heightChunks,
    118                                 out widthPix, out heightPix);
    119 
    120                         Log.Out (string.Format (
    121                                 "RenderMap: min: {0}, max: {1}, minPos: {2}, maxPos: {3}, w/h: {4}/{5}, wP/hP: {6}/{7}",
    122                                 minChunk.ToString (), maxChunk.ToString (),
    123                                 minPos.ToString (), maxPos.ToString (),
    124                                 widthChunks, heightChunks,
    125                                 widthPix, heightPix)
     110                        getWorldExtent (rfm, out Vector2i minChunk, out Vector2i maxChunk, out Vector2i minPos, out Vector2i maxPos, out int widthChunks, out int heightChunks,
     111                                out int widthPix, out int heightPix);
     112
     113                        Log.Out (
     114                                $"RenderMap: min: {minChunk.ToString ()}, max: {maxChunk.ToString ()}, minPos: {minPos.ToString ()}, maxPos: {maxPos.ToString ()}, w/h: {widthChunks}/{heightChunks}, wP/hP: {widthPix}/{heightPix}"
    126115                        );
    127116
    128117                        lock (lockObject) {
    129                                 for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
     118                                for (int i = 0; i < Constants.Zoomlevels; i++) {
    130119                                        zoomLevelBuffers [i].ResetBlock ();
    131120                                }
    132121
    133                                 if (Directory.Exists (Constants.MAP_DIRECTORY)) {
    134                                         Directory.Delete (Constants.MAP_DIRECTORY, true);
     122                                if (Directory.Exists (Constants.MapDirectory)) {
     123                                        Directory.Delete (Constants.MapDirectory, true);
    135124                                }
    136125
     
    143132                                }
    144133
    145                                 Vector2i curFullMapPos = default (Vector2i);
    146                                 Vector2i curChunkPos = default (Vector2i);
    147                                 for (curFullMapPos.x = 0; curFullMapPos.x < widthPix; curFullMapPos.x += Constants.MAP_CHUNK_SIZE) {
     134                                Vector2i curFullMapPos = default;
     135                                Vector2i curChunkPos = default;
     136                                for (curFullMapPos.x = 0; curFullMapPos.x < widthPix; curFullMapPos.x += Constants.MapChunkSize) {
    148137                                        for (curFullMapPos.y = 0;
    149138                                                curFullMapPos.y < heightPix;
    150                                                 curFullMapPos.y += Constants.MAP_CHUNK_SIZE) {
    151                                                 curChunkPos.x = curFullMapPos.x / Constants.MAP_CHUNK_SIZE + minChunk.x;
    152                                                 curChunkPos.y = curFullMapPos.y / Constants.MAP_CHUNK_SIZE + minChunk.y;
     139                                                curFullMapPos.y += Constants.MapChunkSize) {
     140                                                curChunkPos.x = curFullMapPos.x / Constants.MapChunkSize + minChunk.x;
     141                                                curChunkPos.y = curFullMapPos.y / Constants.MapChunkSize + minChunk.y;
    153142
    154143                                                try {
     
    159148                                                                if (mapColors != null) {
    160149                                                                        Color32[] realColors =
    161                                                                                 new Color32[Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE];
    162                                                                         for (int i_colors = 0; i_colors < mapColors.Length; i_colors++) {
    163                                                                                 realColors [i_colors] = shortColorToColor32 (mapColors [i_colors]);
     150                                                                                new Color32[Constants.MapChunkSize * Constants.MapChunkSize];
     151                                                                        for (int iColors = 0; iColors < mapColors.Length; iColors++) {
     152                                                                                realColors [iColors] = shortColorToColor32 (mapColors [iColors]);
    164153                                                                        }
    165154
     
    167156                                                                        if (fullMapTexture != null) {
    168157                                                                                fullMapTexture.SetPixels32 (curFullMapPos.x, curFullMapPos.y,
    169                                                                                         Constants.MAP_CHUNK_SIZE, Constants.MAP_CHUNK_SIZE, realColors);
     158                                                                                        Constants.MapChunkSize, Constants.MapChunkSize, realColors);
    170159                                                                        }
    171160                                                                }
     
    180169                                        }
    181170
    182                                         Log.Out (string.Format ("RenderMap: {0}/{1} ({2}%)", curFullMapPos.x, widthPix,
    183                                                 (int) ((float) curFullMapPos.x / widthPix * 100)));
     171                                        Log.Out ($"RenderMap: {curFullMapPos.x}/{widthPix} ({(int)((float)curFullMapPos.x / widthPix * 100)}%)");
    184172                                }
    185173                        }
     
    189177                        if (fullMapTexture != null) {
    190178                                byte[] array = fullMapTexture.EncodeToPNG ();
    191                                 File.WriteAllBytes (Constants.MAP_DIRECTORY + "/map.png", array);
     179                                File.WriteAllBytes (Constants.MapDirectory + "/map.png", array);
    192180                                Object.Destroy (fullMapTexture);
    193181                        }
     
    200188
    201189                private void SaveAllBlockMaps () {
    202                         for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
     190                        for (int i = 0; i < Constants.Zoomlevels; i++) {
    203191                                zoomLevelBuffers [i].SaveBlock ();
    204192                        }
     
    246234                        //Log.Out ("Start Dirty: " + chunkPos);
    247235
    248                         getBlockNumber (chunkPos, out Vector2i block, out _, Constants.MAP_BLOCK_TO_CHUNK_DIV, Constants.MAP_CHUNK_SIZE);
    249 
    250                         zoomLevelBuffers [Constants.ZOOMLEVELS - 1].LoadBlock (block);
     236                        getBlockNumber (chunkPos, out Vector2i block, out _, Constants.MAP_BLOCK_TO_CHUNK_DIV, Constants.MapChunkSize);
     237
     238                        zoomLevelBuffers [Constants.Zoomlevels - 1].LoadBlock (block);
    251239                        Profiler.EndSample ();
    252240
    253241                        Profiler.BeginSample ("RenderDirtyChunks.Work");
    254242                        // Write all chunks that are in the same image tile of the highest zoom level
    255                         Vector2i v_block, v_blockOffset;
    256243                        foreach (Vector2i v in chunksToRender) {
    257                                 getBlockNumber (v, out v_block, out v_blockOffset, Constants.MAP_BLOCK_TO_CHUNK_DIV,
    258                                         Constants.MAP_CHUNK_SIZE);
    259                                 if (v_block.Equals (block)) {
    260                                         //Log.Out ("Dirty: " + v + " render: true");
    261                                         chunksRendered.Add (v);
    262                                         if (dirtyChunks [v].Length != Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE) {
    263                                                 Log.Error (string.Format ("Rendering chunk has incorrect data size of {0} instead of {1}",
    264                                                         dirtyChunks [v].Length, Constants.MAP_CHUNK_SIZE * Constants.MAP_CHUNK_SIZE));
    265                                         }
    266 
    267                                         zoomLevelBuffers [Constants.ZOOMLEVELS - 1]
    268                                                 .SetPart (v_blockOffset, Constants.MAP_CHUNK_SIZE, dirtyChunks [v]);
    269                                 }
     244                                getBlockNumber (v, out Vector2i vBlock, out Vector2i vBlockOffset, Constants.MAP_BLOCK_TO_CHUNK_DIV,
     245                                        Constants.MapChunkSize);
     246                                if (!vBlock.Equals (block)) {
     247                                        continue;
     248                                }
     249
     250                                //Log.Out ("Dirty: " + v + " render: true");
     251                                chunksRendered.Add (v);
     252                                if (dirtyChunks [v].Length != Constants.MapChunkSize * Constants.MapChunkSize) {
     253                                        Log.Error (
     254                                                $"Rendering chunk has incorrect data size of {dirtyChunks [v].Length} instead of {Constants.MapChunkSize * Constants.MapChunkSize}");
     255                                }
     256
     257                                zoomLevelBuffers [Constants.Zoomlevels - 1]
     258                                        .SetPart (vBlockOffset, Constants.MapChunkSize, dirtyChunks [v]);
    270259                        }
    271260                        Profiler.EndSample ();
     
    285274                private void RenderZoomLevel (Vector2i _innerBlock) {
    286275                        Profiler.BeginSample ("RenderZoomLevel");
    287                         int level = Constants.ZOOMLEVELS - 1;
     276                        int level = Constants.Zoomlevels - 1;
    288277                        while (level > 0) {
    289                                 Vector2i block, blockOffset;
    290                                 getBlockNumber (_innerBlock, out block, out blockOffset, 2, Constants.MAP_BLOCK_SIZE / 2);
     278                                getBlockNumber (_innerBlock, out Vector2i block, out Vector2i blockOffset, 2, Constants.MapBlockSize / 2);
    291279
    292280                                zoomLevelBuffers [level - 1].LoadBlock (block);
     
    296284                                     zoomLevelBuffers [level].FormatSelf == TextureFormat.RGBA32) &&
    297285                                    zoomLevelBuffers [level].FormatSelf == zoomLevelBuffers [level - 1].FormatSelf) {
    298                                         zoomLevelBuffers [level - 1].SetPartNative (blockOffset, Constants.MAP_BLOCK_SIZE / 2, zoomLevelBuffers [level].GetHalfScaledNative ());
     286                                        zoomLevelBuffers [level - 1].SetPartNative (blockOffset, Constants.MapBlockSize / 2, zoomLevelBuffers [level].GetHalfScaledNative ());
    299287                                } else {
    300                                         zoomLevelBuffers [level - 1].SetPart (blockOffset, Constants.MAP_BLOCK_SIZE / 2, zoomLevelBuffers [level].GetHalfScaled ());
     288                                        zoomLevelBuffers [level - 1].SetPart (blockOffset, Constants.MapBlockSize / 2, zoomLevelBuffers [level].GetHalfScaled ());
    301289                                }
    302290                                Profiler.EndSample ();
     
    310298                private void getBlockNumber (Vector2i _innerPos, out Vector2i _block, out Vector2i _blockOffset, int _scaleFactor,
    311299                        int _offsetSize) {
    312                         _block = default (Vector2i);
    313                         _blockOffset = default (Vector2i);
     300                        _block = default;
     301                        _blockOffset = default;
    314302                        _block.x = (_innerPos.x + 16777216) / _scaleFactor - 16777216 / _scaleFactor;
    315303                        _block.y = (_innerPos.y + 16777216) / _scaleFactor - 16777216 / _scaleFactor;
     
    319307
    320308                private void WriteMapInfo () {
    321                         JSONObject mapInfo = new JSONObject ();
    322                         mapInfo.Add ("blockSize", new JSONNumber (Constants.MAP_BLOCK_SIZE));
    323                         mapInfo.Add ("maxZoom", new JSONNumber (Constants.ZOOMLEVELS - 1));
    324 
    325                         Directory.CreateDirectory (Constants.MAP_DIRECTORY);
    326                         File.WriteAllText (Constants.MAP_DIRECTORY + "/mapinfo.json", mapInfo.ToString (), Encoding.UTF8);
     309                        JsonObject mapInfo = new JsonObject ();
     310                        mapInfo.Add ("blockSize", new JsonNumber (Constants.MapBlockSize));
     311                        mapInfo.Add ("maxZoom", new JsonNumber (Constants.Zoomlevels - 1));
     312
     313                        Directory.CreateDirectory (Constants.MapDirectory);
     314                        File.WriteAllText (Constants.MapDirectory + "/mapinfo.json", mapInfo.ToString (), Encoding.UTF8);
    327315                }
    328316
    329317                private bool LoadMapInfo () {
    330                         if (!File.Exists (Constants.MAP_DIRECTORY + "/mapinfo.json")) {
     318                        if (!File.Exists (Constants.MapDirectory + "/mapinfo.json")) {
    331319                                return false;
    332320                        }
    333321
    334                         string json = File.ReadAllText (Constants.MAP_DIRECTORY + "/mapinfo.json", Encoding.UTF8);
     322                        string json = File.ReadAllText (Constants.MapDirectory + "/mapinfo.json", Encoding.UTF8);
    335323                        try {
    336                                 JSONNode node = Parser.Parse (json);
    337                                 if (node is JSONObject) {
    338                                         JSONObject jo = (JSONObject) node;
     324                                JsonNode node = Parser.Parse (json);
     325                                if (node is JsonObject jo) {
    339326                                        if (jo.ContainsKey ("blockSize")) {
    340                                                 Constants.MAP_BLOCK_SIZE = ((JSONNumber) jo ["blockSize"]).GetInt ();
     327                                                Constants.MapBlockSize = ((JsonNumber) jo ["blockSize"]).GetInt ();
    341328                                        }
    342329
    343330                                        if (jo.ContainsKey ("maxZoom")) {
    344                                                 Constants.ZOOMLEVELS = ((JSONNumber) jo ["maxZoom"]).GetInt () + 1;
     331                                                Constants.Zoomlevels = ((JsonNumber) jo ["maxZoom"]).GetInt () + 1;
    345332                                        }
    346333
    347334                                        return true;
    348335                                }
    349                         } catch (MalformedJSONException e) {
     336                        } catch (MalformedJsonException e) {
    350337                                Log.Out ("Exception in LoadMapInfo: " + e);
    351338                        } catch (InvalidCastException e) {
     
    360347                        out int _widthChunks, out int _heightChunks,
    361348                        out int _widthPix, out int _heightPix) {
    362                         _minChunk = default (Vector2i);
    363                         _maxChunk = default (Vector2i);
    364                         _minPos = default (Vector2i);
    365                         _maxPos = default (Vector2i);
     349                        _minChunk = default;
     350                        _maxChunk = default;
     351                        _minPos = default;
     352                        _maxPos = default;
    366353
    367354                        long[] keys = _rfm.GetAllChunkKeys ();
     
    397384                        _maxChunk.y = maxY;
    398385
    399                         _minPos.x = minX * Constants.MAP_CHUNK_SIZE;
    400                         _minPos.y = minY * Constants.MAP_CHUNK_SIZE;
    401 
    402                         _maxPos.x = maxX * Constants.MAP_CHUNK_SIZE;
    403                         _maxPos.y = maxY * Constants.MAP_CHUNK_SIZE;
     386                        _minPos.x = minX * Constants.MapChunkSize;
     387                        _minPos.y = minY * Constants.MapChunkSize;
     388
     389                        _maxPos.x = maxX * Constants.MapChunkSize;
     390                        _maxPos.y = maxY * Constants.MapChunkSize;
    404391
    405392                        _widthChunks = maxX - minX + 1;
    406393                        _heightChunks = maxY - minY + 1;
    407394
    408                         _widthPix = _widthChunks * Constants.MAP_CHUNK_SIZE;
    409                         _heightPix = _heightChunks * Constants.MAP_CHUNK_SIZE;
     395                        _widthPix = _widthChunks * Constants.MapChunkSize;
     396                        _heightPix = _heightChunks * Constants.MapChunkSize;
    410397                }
    411398
  • binary-improvements2/MapRendering/src/ModApi.cs

    r390 r391  
    1 using AllocsFixes.NetConnections.Servers.Web;
    2 using AllocsFixes.NetConnections.Servers.Web.Handlers;
     1using JetBrains.Annotations;
    32
    4 namespace AllocsFixes {
    5         public class API : IModApi {
    6                 private Web webInstance;
    7                 private Mod modInstance;
    8                
     3namespace MapRendering {
     4        [UsedImplicitly]
     5        public class ModApi : IModApi {
    96                public void InitMod (Mod _modInstance) {
    10                         ModEvents.GameStartDone.RegisterHandler (GameStartDone);
    117                        ModEvents.GameShutdown.RegisterHandler (GameShutdown);
    128                        ModEvents.CalcChunkColorsDone.RegisterHandler (CalcChunkColorsDone);
    13                         modInstance = _modInstance;
    14                 }
    15 
    16                 private void GameStartDone () {
    17                         // ReSharper disable once ObjectCreationAsStatement
    18                         if (!ConnectionManager.Instance.IsServer) {
    19                                 return;
    20                         }
    21                        
    22                         webInstance = new Web (modInstance.Path);
    23                         LogBuffer.Init ();
    24 
    25                         if (ItemIconHandler.Instance != null) {
    26                                 ItemIconHandler.Instance.LoadIcons ();
    27                         }
    289                }
    2910
    3011                private void GameShutdown () {
    31                         webInstance?.Shutdown ();
    32                         MapRendering.MapRendering.Shutdown ();
     12                        MapRenderer.Shutdown ();
    3313                }
    3414
    3515                private void CalcChunkColorsDone (Chunk _chunk) {
    36                         MapRendering.MapRendering.RenderSingleChunk (_chunk);
     16                        MapRenderer.RenderSingleChunk (_chunk);
    3717                }
    3818        }
  • binary-improvements2/MarkersMod/MarkersMod.csproj

    r390 r391  
    88    <ProjectGuid>{2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}</ProjectGuid>
    99    <OutputType>Library</OutputType>
    10     <RootNamespace>MarkersMod</RootNamespace>
     10    <RootNamespace>Examples</RootNamespace>
    1111    <AssemblyName>MarkersMod</AssemblyName>
    1212    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
     
    1616    <DebugType>none</DebugType>
    1717    <Optimize>true</Optimize>
    18     <OutputPath>..\bin\Mods\MarkersMod\</OutputPath>
     18    <OutputPath>..\bin\Mods\Xample_MarkersMod\</OutputPath>
    1919    <ErrorReport>prompt</ErrorReport>
    2020    <WarningLevel>4</WarningLevel>
     
    2323  </PropertyGroup>
    2424  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_Profiler|AnyCPU' ">
    25     <OutputPath>..\bin\Mods\MarkersMod\</OutputPath>
     25    <OutputPath>..\bin\Mods\Xample_MarkersMod\</OutputPath>
    2626    <DefineConstants>ENABLE_PROFILER</DefineConstants>
    2727    <Optimize>true</Optimize>
     
    3232  </PropertyGroup>
    3333  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    34     <OutputPath>..\bin\Mods\MarkersMod\</OutputPath>
     34    <OutputPath>..\bin\Mods\Xample_MarkersMod\</OutputPath>
    3535    <DebugType>full</DebugType>
    3636    <DebugSymbols>true</DebugSymbols>
     
    5555  </ItemGroup>
    5656  <ItemGroup>
    57     <Compile Include="AssemblyInfo.cs" />
    58     <Compile Include="API.cs" />
    59     <Compile Include="Markers.cs" />
     57    <Compile Include="src\ModApi.cs" />
     58    <Compile Include="src\AssemblyInfo.cs" />
     59    <Compile Include="src\Markers.cs" />
    6060  </ItemGroup>
    6161  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
     
    7171      <Private>False</Private>
    7272    </ProjectReference>
    73     <ProjectReference Include="..\MapRendering\WebAndMapRendering.csproj">
    74       <Project>{a1847b5f-7bfc-4bcd-94aa-a6c9fb7e7c54}</Project>
    75       <Name>WebAndMapRendering</Name>
     73    <ProjectReference Include="..\WebServer\WebServer.csproj">
     74      <Project>{01b5f981-b9fd-4364-8f9e-9127130d2542}</Project>
     75      <Name>WebServer</Name>
    7676      <Private>False</Private>
    7777    </ProjectReference>
  • binary-improvements2/MarkersMod/src/AssemblyInfo.cs

    r390 r391  
    77[assembly: AssemblyDescription ("")]
    88[assembly: AssemblyConfiguration ("")]
    9 [assembly: AssemblyCompany ("")]
     9[assembly: AssemblyCompany ("The Fun Pimps LLC")]
    1010[assembly: AssemblyProduct ("")]
    11 [assembly: AssemblyCopyright ("")]
     11[assembly: AssemblyCopyright ("The Fun Pimps LLC")]
    1212[assembly: AssemblyTrademark ("")]
    1313[assembly: AssemblyCulture ("")]
  • binary-improvements2/MarkersMod/src/Markers.cs

    r390 r391  
    22using System.Net;
    33using AllocsFixes.JSON;
    4 using AllocsFixes.NetConnections.Servers.Web;
    5 using AllocsFixes.NetConnections.Servers.Web.API;
     4using Webserver;
     5using Webserver.WebAPI;
    66
    77namespace Examples {
    8         class Markers : AbsRestApi {
    9                 private const int NumRandomMarkers = 5;
     8        public class Markers : AbsRestApi {
     9                private const int numRandomMarkers = 5;
    1010
    1111                private readonly Dictionary<string, (int, int)> markers = new Dictionary<string, (int, int)> ();
    1212
    13                 private static readonly JSONArray emptyResult = new JSONArray ();
     13                private static readonly JsonArray emptyResult = new JsonArray ();
    1414               
    1515                public Markers () {
    1616                        GameRandom random = GameRandomManager.Instance.CreateGameRandom ();
    1717                       
    18                         for (int i = 0; i < NumRandomMarkers; i++) {
     18                        for (int i = 0; i < numRandomMarkers; i++) {
    1919                                int lat = random.RandomRange (-1000, 1001);
    2020                                int lng = random.RandomRange (-1000, 1001);
     
    2828                       
    2929                        if (string.IsNullOrEmpty (id)) {
    30                                 JSONArray result = new JSONArray ();
     30                                JsonArray result = new JsonArray ();
    3131
    32                                 foreach (KeyValuePair<string, (int, int)> kvp in markers) {
    33                                         JSONObject marker = new JSONObject ();
    34                                         marker.Add ("id", new JSONString (kvp.Key));
    35                                         marker.Add ("lat", new JSONNumber (kvp.Value.Item1));
    36                                         marker.Add ("lng", new JSONNumber (kvp.Value.Item2));
     32                                foreach ((string markerId, (int, int) coordinates) in markers) {
     33                                        JsonObject marker = new JsonObject ();
     34                                        marker.Add ("id", new JsonString (markerId));
     35                                        marker.Add ("lat", new JsonNumber (coordinates.Item1));
     36                                        marker.Add ("lng", new JsonNumber (coordinates.Item2));
    3737                                        result.Add (marker);
    3838                                }
     
    4848
    4949                        {
    50                                 JSONArray result = new JSONArray ();
    51                                 JSONObject marker = new JSONObject ();
    52                                 marker.Add ("id", new JSONString (id));
    53                                 marker.Add ("lat", new JSONNumber (location.Item1));
    54                                 marker.Add ("lng", new JSONNumber (location.Item2));
     50                                JsonArray result = new JsonArray ();
     51                                JsonObject marker = new JsonObject ();
     52                                marker.Add ("id", new JsonString (id));
     53                                marker.Add ("lat", new JsonNumber (location.Item1));
     54                                marker.Add ("lng", new JsonNumber (location.Item2));
    5555                                result.Add (marker);
    5656                                SendEnvelopedResult (_context, result);
     
    5858                }
    5959
    60                 protected override void HandleRestPost (RequestContext _context, JSONNode _jsonBody) {
    61                         if (!(_jsonBody is JSONObject bodyObject)) {
     60                protected override void HandleRestPost (RequestContext _context, JsonNode _jsonBody) {
     61                        if (!(_jsonBody is JsonObject bodyObject)) {
    6262                                SendEnvelopedResult (_context, null, HttpStatusCode.BadRequest, _jsonBody, "BODY_NOT_OBJECT");
    6363                                return;
     
    7777                        markers.Add (newId, (lat, lng));
    7878
    79                         JSONString result = new JSONString (newId);
    80                         SendEnvelopedResult (_context, result);
     79                        JsonString result = new JsonString (newId);
     80                        SendEnvelopedResult (_context, result, HttpStatusCode.Created);
    8181                }
    8282
    83                 protected override void HandleRestPut (RequestContext _context, JSONNode _jsonBody) {
    84                         if (!(_jsonBody is JSONObject bodyObject)) {
     83                protected override void HandleRestPut (RequestContext _context, JsonNode _jsonBody) {
     84                        if (!(_jsonBody is JsonObject bodyObject)) {
    8585                                SendEnvelopedResult (_context, null, HttpStatusCode.BadRequest, _jsonBody, "BODY_NOT_OBJECT");
    8686                                return;
     
    9999                        string id = _context.RequestPath;
    100100
    101                         if (!markers.TryGetValue (id, out (int, int) location)) {
     101                        if (!markers.TryGetValue (id, out _)) {
    102102                                SendEnvelopedResult (_context, null, HttpStatusCode.NotFound, _jsonBody, "ID_NOT_FOUND");
    103103                                return;
     
    106106                        markers [id] = (lat, lng);
    107107
    108                         JSONObject result = new JSONObject ();
    109                         result.Add ("id", new JSONString (id));
    110                         result.Add ("lat", new JSONNumber (lat));
    111                         result.Add ("lng", new JSONNumber (lng));
     108                        JsonObject result = new JsonObject ();
     109                        result.Add ("id", new JsonString (id));
     110                        result.Add ("lat", new JsonNumber (lat));
     111                        result.Add ("lng", new JsonNumber (lng));
    112112                        SendEnvelopedResult (_context, result);
    113113                }
  • binary-improvements2/MarkersMod/src/ModApi.cs

    r390 r391  
    11namespace Examples {
    2         public class API : IModApi {
     2        public class ModApi : IModApi {
    33                public void InitMod (Mod _modInstance) {
    44                }
  • binary-improvements2/SpaceWizards.HttpListener/SpaceWizards.HttpListener.csproj

    r386 r391  
    1717    <DebugType>none</DebugType>
    1818    <Optimize>true</Optimize>
    19     <OutputPath>..\bin\Mods\Allocs_WebAndMapRendering\</OutputPath>
     19    <OutputPath>..\bin\Mods\TFP_WebServer\</OutputPath>
    2020    <ErrorReport>prompt</ErrorReport>
    2121    <WarningLevel>4</WarningLevel>
     
    2626  </PropertyGroup>
    2727  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_Profiler|AnyCPU' ">
    28     <OutputPath>..\bin\Mods\Allocs_WebAndMapRendering\</OutputPath>
     28    <OutputPath>..\bin\Mods\TFP_WebServer\</OutputPath>
    2929    <DefineConstants>ENABLE_PROFILER;UNITY_NETFRAMEWORK</DefineConstants>
    3030    <Optimize>true</Optimize>
     
    3434  </PropertyGroup>
    3535  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    36     <OutputPath>..\bin\Mods\Allocs_WebAndMapRendering\</OutputPath>
     36    <OutputPath>..\bin\Mods\TFP_WebServer\</OutputPath>
    3737    <DebugType>full</DebugType>
    3838    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  • binary-improvements2/server-fixes.sln

    r390 r391  
    44Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "7dtd-server-fixes", "7dtd-server-fixes\7dtd-server-fixes.csproj", "{81DA7F87-1A66-4920-AADA-6EAF1971F8D0}"
    55EndProject
    6 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AllocsCommands", "AllocsCommands\AllocsCommands.csproj", "{E273D042-57F9-4E2E-8268-5053527E5287}"
     6Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommandExtensions", "CommandExtensions\CommandExtensions.csproj", "{E273D042-57F9-4E2E-8268-5053527E5287}"
    77EndProject
    8 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebAndMapRendering", "MapRendering\WebAndMapRendering.csproj", "{A1847B5F-7BFC-4BCD-94AA-A6C9FB7E7C54}"
     8Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapRendering", "MapRendering\MapRendering.csproj", "{A1847B5F-7BFC-4BCD-94AA-A6C9FB7E7C54}"
    99EndProject
    1010Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpaceWizards.HttpListener", "SpaceWizards.HttpListener\SpaceWizards.HttpListener.csproj", "{E273D042-57F9-4E2E-8268-5053527E5287}"
    1111EndProject
    1212Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkersMod", "MarkersMod\MarkersMod.csproj", "{2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}"
     13EndProject
     14Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebServer", "WebServer\WebServer.csproj", "{01B5F981-B9FD-4364-8F9E-9127130D2542}"
    1315EndProject
    1416Global
     
    5254                {2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}.Release_Profiler|Any CPU.ActiveCfg = Release_Profiler|Any CPU
    5355                {2A008E16-6EB8-4B85-A175-3CB89D9FF4AE}.Release_Profiler|Any CPU.Build.0 = Release_Profiler|Any CPU
     56                {01B5F981-B9FD-4364-8F9E-9127130D2542}.Release|Any CPU.ActiveCfg = Release|Any CPU
     57                {01B5F981-B9FD-4364-8F9E-9127130D2542}.Release|Any CPU.Build.0 = Release|Any CPU
     58                {01B5F981-B9FD-4364-8F9E-9127130D2542}.Release_Version|Any CPU.ActiveCfg = Release|Any CPU
     59                {01B5F981-B9FD-4364-8F9E-9127130D2542}.Release_Version|Any CPU.Build.0 = Release|Any CPU
     60                {01B5F981-B9FD-4364-8F9E-9127130D2542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
     61                {01B5F981-B9FD-4364-8F9E-9127130D2542}.Debug|Any CPU.Build.0 = Debug|Any CPU
     62                {01B5F981-B9FD-4364-8F9E-9127130D2542}.Release_Profiler|Any CPU.ActiveCfg = Release_Profiler|Any CPU
     63                {01B5F981-B9FD-4364-8F9E-9127130D2542}.Release_Profiler|Any CPU.Build.0 = Release_Profiler|Any CPU
    5464        EndGlobalSection
    5565        GlobalSection(MonoDevelopProperties) = preSolution
Note: See TracChangeset for help on using the changeset viewer.