fix(codegen): Adds codegen for embedded objects and timer fields (#686)

* Adds code genning for embedded objects. See `AquariumState` as an example.
* Adds code genning for fields that are `Timer`. See `Aquarium` as an example.
* Codegens aquariums
* Fixes missing option for most primitive field types.
This commit is contained in:
Kamron Batman 2021-08-16 14:48:18 -07:00 committed by GitHub
parent 4c265562bb
commit 1323162628
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
126 changed files with 1287 additions and 1129 deletions

View file

@ -13,6 +13,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
*************************************************************************/
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
@ -85,6 +86,33 @@ namespace Server
entity.MarkDirty();
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Stop(this ISerializable entity, Timer timer)
{
timer?.Stop();
entity.MarkDirty();
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Start(this ISerializable entity, Timer timer)
{
timer?.Start();
entity.MarkDirty();
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Restart(this ISerializable entity, Timer timer, TimeSpan delay, TimeSpan interval)
{
if (timer != null)
{
timer.Stop();
timer.Delay = delay;
timer.Interval = interval;
timer.Start();
entity.MarkDirty();
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Add<T>(this ISerializable entity, ref List<T> list, T value)
{
@ -131,5 +159,13 @@ namespace Server
Utility.Clear(ref dict);
entity.MarkDirty();
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Stop(this ISerializable entity, ref Timer timer)
{
timer?.Stop();
timer = null;
entity.MarkDirty();
}
}
}