Commit graph

1925 commits

Author SHA1 Message Date
Kamron Batman
ff1b7aa994
fix: Updates serialization generator to add serial support (#1047) 2022-06-06 17:32:57 -07:00
Kamron Batman
6e69d25e33
fix: Fixes structured logging (#1043)
- [X] Fixes various bugs in logging.
2022-06-05 01:00:22 -07:00
Kamron Batman
78bb4f4bb2
fix: Fixes localization test (#1046) 2022-06-04 12:09:19 -07:00
Kamron Batman
5f00330a66
fix: Adds optimized formatter for clilocs (#1045)
Adds an optimized formatter for localization. Example:
```cs
string localizationText = Localization.Format(1050039, "enu", $"{m_Amount}\t{LabelNumber:#}");
```

Fixes #1044
2022-06-04 11:53:32 -07:00
Kamron Batman
ecbee17690
fix: Optimizes OPL using string interpolation (#1041)
## Breaking Changes (New API)
ObjectPropertyList supports the following API:
```cs
list.Add(500000);
list.Add(500001, stringArgument);
list.Add("Some text");
list.Add($"Some text with {argument}");
list.Add(500002, $"{arg1}\t{arg2}");
```

## Notes
1. All API uses that require a formatter like this:
    ```cs
    list.Add(500002, "{0}\t{1}", arg1, arg2);
    ```
    Should be changed to use string interpolation, for example:
    ```cs
    list.Add(500002, $"{arg1}\t{arg2}");
    ```
2. The following paradigm should no longer be used:
    ```cs
    list.Add(1061170, prop.ToString()); // strength requirement ~1_val~
    ```
    The new string interpolation API will avoid having to convert the argument to a string before writing it to the packet. Instead use the following:
    ```cs
    list.Add(1061170, $"{prop}"); // strength requirement ~1_val~
    ```

### Benchmarks
```cs
|                         Method |     Mean |   Error |  StdDev |  Gen 0 | Allocated |
|------------------------------- |---------:|--------:|--------:|-------:|----------:|
|                BenchmarkOldOPL | 241.0 ns | 0.56 ns | 0.47 ns | 0.0105 |      88 B |
| BenchmarkStringInterpolatedOPL | 199.9 ns | 2.44 ns | 2.39 ns |      - |         - |
```

### Changes
- [X] Removes crash in STArray.Return when array is null.
- [X] Fixes NPE in OPL when entity is null. Serial in packet will be 0 when entity is null.
- [X] Fixes NPE in AosAttributes when Parent is null.
- [X] Changes OPL to use string interpolation.
- [X] Introduces `IPropertyList` to allow extending PropertyList for other uses.
2022-06-02 10:09:53 -07:00
Kamron Batman
fe31470f05
chore: Updates 3rd party notices (#1042) 2022-06-01 09:42:11 -07:00
Kamron Batman
98a74a89c7
fix: Fixes drag drop bounce issue (#1040) 2022-05-30 15:47:06 -07:00
Kamron Batman
aeec7f78fd
fix: Fixes issue with wepoll losing GCHandle. (#1039)
- [X] Fixes issue with wepoll losing GCHandle.
- [X] `NetState.Disconnect()` is no longer thread safe.
  - Use `Core.LoopContext.Post()` to post disconnects
- [X] Optimizes PollGroup by not processing IntPtr -> GCHandle for discard polls.
2022-05-30 14:04:54 -07:00
Kamron Batman
d261973cee
fix: Adds freeshard protocol to information list (#1038) 2022-05-30 09:35:46 -07:00
Kamron Batman
1e6ab794fe
fix: Fixes ValueStringBuilder dispose incorrectly (#1037) 2022-05-29 15:01:39 -07:00
Kamron Batman
3b7e3c2fb7
fix: Fixes ValueStringBuilder empty ctor issue (#1035) 2022-05-27 17:49:36 -07:00
Stefano Merotta
fe225003c6
fix: Adds multithread optional flag to ValueStringBuilder (#1033)
Added multithread optional flag to ValueStringBuilder for multithread contexts.
Enabled new flag for VerifyType method.

Resolves #1032
2022-05-27 10:25:30 -07:00
Kamron Batman
ef883b2872
fix: Fixes socket disconnect on block. Fixes debug logging (#1031) 2022-05-21 20:24:46 -07:00
CA5A
9bbcb4b274
fix: Removes DropReq6017 (#1030) 2022-05-20 12:11:31 -07:00
Kamron Batman
e172dc9661
fix: Updates dependencies & adds Fedora 35/36 support (#1029) 2022-05-19 10:51:24 -07:00
Kamron Batman
f2ced497ec
fix: Updates pool of acid (#1028)
- [X] Removes duplicate Created property
- [X] Removes allocation while damaging mobiles
- [X] Adds manual dirty checking since we won't be codegenning it and we won't be serializing it.
2022-05-18 17:53:53 -07:00
Kamron Batman
dfdadd3204
fix: Fixes pool of acid and other empty serializations (#1025)
Fixes an issue where 0 byte objects are improperly deserialized. They should not be deserialized at all and instead deleted.
2022-05-18 17:36:23 -07:00
Kamron Batman
6b3617b08f
fix: Fixes BitArray serialization (#1027)
Fixes bit array serialization. This may cause objects that were serialized by bit array to fail to deserialize. I am sorry, please accept my condolences. It is probably easiest to just delete those objects. If it becomes a major problem, contact me and I'll help with a hacky per-case solution.
2022-05-18 17:25:03 -07:00
Kamron Batman
6ea5508f5f
chore: Updates to .NET 6.0.5 (#1026) 2022-05-18 15:03:10 -07:00
Kamron Batman
b318fa29cb
fix: Removes wanderer from categorization (#1024) 2022-05-16 15:14:08 -07:00
Kamron Batman
a7fd1905e9
fix: Deletes wanderer (#1023) 2022-05-16 15:10:49 -07:00
Kamron Batman
dd95a8a1e3
fix: Codegens Food & Beverages (#1021)
- [X] Simplifies beverages
- [X] Codegens food & beverages
2022-05-15 21:56:04 -07:00
Kamron Batman
7b619f23b8
fix: Fixes static persistence of faction system (#1020) 2022-05-15 12:45:51 -07:00
Kamron Batman
eee8494558
fix: Removes scale speed by dex for monsters, fixes NPC movement/thinking speed (#1019)
* Removes scaled speed by dex for monsters
* Changes scaled speed by dex for pets (HS+ expansion) to be 400ms -> 100ms between 50 -> 200 dex
* Removes speed changes that were broken for various mobs
* Combines "Legacy" speed and renames the class to `NPCSpeeds`
* Creates speed "classes" (slow, medium, fast, very fast)
* Introduces a new overridable property `SpeedClass`. Register a new speed class using `NPCSpeeds.Register()` and then set the speed class to bulk/mass apply speeds.

Order of speed determination:
1. SpeedMod
2. SpeedClass property (not null)
3. SpeedClass entry in Data\npc-speeds.json for that type
4. "Fast" (200ms Active, 400ms Passive)
2022-05-15 10:01:14 -07:00
Kamron Batman
6ec84b3c01
fix: Cleans up string substring (#1018) 2022-05-14 16:56:03 -07:00
Kamron Batman
87b63b38a5
fix: Eliminates string allocations while writing gump packets (#1017)
* Introduces `RawInterpolatedStringHandler` which is exactly the same as `DefaultInterpolatedStringHandler` except it _unsafely exposes_ it's `ReadOnlySpan<char>` buffer. This is useful for writing the string's data without actually building the string.
* Uses this new string interpolation handler in `SpanWriter` to eliminate intermediate strings built. This is immensely useful in eliminating string allocations in writing Gump packets.
2022-05-10 18:50:23 -07:00
Kamron Batman
f7cbeacf48
fix: Fixes factions and makes it static (#993) 2022-05-10 11:57:37 -07:00
Kamron Batman
097c0143b0
fix: Fixes missing localization interpolation handler (#1016) 2022-05-10 00:42:59 -07:00
Kamron Batman
8031de4738
fix: Fixes string format of cliloc arguments (#1015) 2022-05-10 00:37:07 -07:00
Kamron Batman
47d427ed6e
fix: Adds cliloc replacement support (#1014) 2022-05-09 21:10:58 -07:00
Kamron Batman
be7da3a3dc
feat: Adds cliloc support and fixes valuestringbuilder ctor (#1013)
- [X] Adds cliloc support using the following API:
```cs
public static class Localization
{
    string GetText(int number);
    string GetText(int number, string lang);
    string Format(int number, params object[] args);
    string Format(int number, string lang, params object[] args);

    string Format(int number, $"{arg1}{arg2}{arg3}");
    string Format(int number, lang, $"{arg1}{arg2}{arg3}");

    bool TryGetLocalization(int number, out LocalizationEntry entry);
    bool TryGetLocalization(int number, string lang, out LocalizationEntry entry);
}

public class LocalizationEntry
{
    string Language { get; }
    string Number { get; }
    string Text { get; }
    string?[] TextSlices { get; } // Used for string building
    string StringFormatter { get; }

    string Format(params object[] args);
    string Format($"{arg1}{arg2}{arg3}");
}
```

- [X] Fixes a bug with ValueStringBuilder and default initialization size
- [X] Optimizes ValueStringBuilder to use `ISpanFormattable`
- [X] Adds `Append<T>(T value);` support ValueStringBuilder
- [X] Adds `Append($"");` string interpolation support to ValueStringBuider
2022-05-08 21:24:32 -07:00
Tellundro
790cb5d733
fix: Fixes NPE in TreasureMapChest (#1010) 2022-05-04 19:10:55 -07:00
Kamron Batman
861ff307c0
fix: Fixes missing invalidate properties for default name (#1012) 2022-05-04 14:40:49 -07:00
Kamron Batman
8f1240d25e
fix: Fixes expansion flags for animations (#1009) 2022-05-01 18:35:42 -07:00
Kamron Batman
d1a3c9b0c7
fix: Removes dummy mobiles (#1007) 2022-04-26 12:27:45 -07:00
Kamron Batman
0f304d77c4
fix: Fixes CAGLoader NPE (#1006) 2022-04-19 17:25:38 -07:00
Kamron Batman
848db6fc4b
fix: Fixes mount blocking and adds permanent option for customization (#1005) 2022-04-19 14:23:10 -07:00
Kamron Batman
f2275cb65b
fix: Adds OnBeforeDisconnected and BeforeDisconnected eventsink (#1004) 2022-04-19 00:34:02 -07:00
Kamron Batman
3a0f2b0b90
fix: Fixes cutting cloth (#1003) 2022-04-18 15:01:13 -07:00
Kamron Batman
fc3d9b926d
fix: Adds Poison to codegen (#1002) 2022-04-18 00:05:44 -07:00
Kamron Batman
933c41070f
fix: Codegens farmables (#1001) 2022-04-17 17:10:45 -07:00
Kamron Batman
4bde9a4c86
fix: Codegens vendor contracts (#1000) 2022-04-17 16:51:59 -07:00
Kamron Batman
dbb75f78a0
chore: Deletes ConnectUO support (#999)
Looks like connectuo is dead so deleting the support for it.
2022-04-17 09:06:24 -07:00
Kamron Batman
0565f9076e
Bumps to 0.9.1 to reflect serialization updates. 2022-04-17 08:03:21 -07:00
Kamron Batman
54d728a322
fix: Updates serialization to use v2.0 (#998)
- [X] Deletes serialization annotations
- [X] Updates to ModernUO.Serialization.Annotations nuget
- [X] Updates serializer to v2.0
- [X] Changes all `Serializable()` to `SerializationGenerator()`
- [X] Updates to schema generator v2.0
2022-04-17 08:02:15 -07:00
Kamron Batman
5d972caa9c
fix: Changes Fedora to use new icon and color 2022-04-15 00:47:03 -07:00
Kamron Batman
f28f29791f
fix: Fixes detecting linux distro during build (#997) 2022-04-14 17:39:57 -07:00
Kamron Batman
910549db84
fix: Fixes loading multi when client is missing (#996)
* Changes reading multi.mul/multi.idx so it is loaded entirely during bootup.
* Fixes finding files in Linux.
* Fixes handling HS format.
* Removes verdata support.

ModernUO will still have issues if there is a multi.mul that is pre-HS loaded when it detects a client that is 7.0.9+.
2022-04-14 16:52:45 -07:00
Kamron Batman
6c22bb2b97
fix: Fixes spelling of 8th age (#995) 2022-04-12 21:00:30 -07:00
Kamron Batman
de0bf03f46
fix: Simplifies expansion checks (#994) 2022-04-12 20:52:53 -07:00