Fixed claimed waifu decay that was introduced in a recent patch.

Cleaned up a little bit in marmalade loading. Clean marmalade unloading will be broken for a while probably
This commit is contained in:
Toastie (DCS Team) 2024-09-24 20:48:49 +12:00
parent 4659da224b
commit 4afa604a1b
Signed by: toastie_t0ast
GPG key ID: 27F3B6855AFD40A4
2 changed files with 27 additions and 15 deletions

View file

@ -577,7 +577,7 @@ public class WaifuService : IEService, IReadyExecutor
{ {
await using var uow = _db.GetDbContext(); await using var uow = _db.GetDbContext();
await uow.GetTable<WaifuInfo>() await uow.GetTable<WaifuInfo>()
.Where(x => x.Price > minPrice && x.ClaimerId == null) .Where(x => x.Price > minPrice && x.ClaimerId != null)
.UpdateAsync(old => new() .UpdateAsync(old => new()
{ {
Price = (long)(old.Price * claimedMulti) Price = (long)(old.Price * claimedMulti)

View file

@ -250,6 +250,7 @@ public sealed class MarmaladeLoaderService : IMarmaladeLoaderService, IReadyExec
} }
catch (Exception ex) when (ex is FileNotFoundException or BadImageFormatException) catch (Exception ex) when (ex is FileNotFoundException or BadImageFormatException)
{ {
Log.Error(ex, "An error occurred loading a marmalade");
return MarmaladeLoadResult.NotFound; return MarmaladeLoadResult.NotFound;
} }
catch (Exception ex) catch (Exception ex)
@ -334,23 +335,34 @@ public sealed class MarmaladeLoaderService : IMarmaladeLoaderService, IReadyExec
var a = ctx.LoadFromAssemblyPath(Path.GetFullPath(path)); var a = ctx.LoadFromAssemblyPath(Path.GetFullPath(path));
// ctx.LoadDependencies(a); // ctx.LoadDependencies(a);
iocModule = null;
// load services // load services
iocModule = new MarmaladeNinjectIocModule(_cont, a, safeName); try
iocModule.Load();
var sis = LoadCanariesFromAssembly(safeName, a);
typeReaders = LoadTypeReadersFromAssembly(a, strings);
if (sis.Count == 0)
{ {
iocModule.Unload(); iocModule = new MarmaladeNinjectIocModule(_cont, a, safeName);
return false; iocModule.Load();
var sis = LoadCanariesFromAssembly(safeName, a);
typeReaders = LoadTypeReadersFromAssembly(a, strings);
if (sis.Count == 0)
{
iocModule.Unload();
ctx.Unload();
return false;
}
ctxWr = new(ctx);
canaryData = sis;
return true;
}
catch
{
iocModule?.Unload();
ctx.Unload();
throw;
} }
ctxWr = new(ctx);
canaryData = sis;
return true;
} }
private static readonly Type _paramParserType = typeof(ParamParser<>); private static readonly Type _paramParserType = typeof(ParamParser<>);