mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 18:27:24 +01:00
Fix code handling of mutually exclusive codes.
This commit is contained in:
parent
463f4da7ab
commit
eea7396946
2 changed files with 43 additions and 1 deletions
|
|
@ -103,6 +103,7 @@ public class SettingsTab : ITab
|
|||
{
|
||||
action(state);
|
||||
_config.Codes[i] = (code, state);
|
||||
_codeService.VerifyState();
|
||||
_config.Save();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,8 @@ public class CodeService
|
|||
}
|
||||
else
|
||||
{
|
||||
enabled(_config.Codes[i].Enabled);
|
||||
var value = _config.Codes[i].Enabled;
|
||||
enabled(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -87,6 +88,46 @@ public class CodeService
|
|||
};
|
||||
}
|
||||
|
||||
public void VerifyState()
|
||||
{
|
||||
if (EnabledSizing == Sizing.None && EnabledOops == Race.Unknown)
|
||||
return;
|
||||
|
||||
for (var i = 0; i < _config.Codes.Count; ++i)
|
||||
{
|
||||
var (code, enabled) = _config.Codes[i];
|
||||
if (!enabled)
|
||||
continue;
|
||||
|
||||
using var stream = new MemoryStream(Encoding.UTF8.GetBytes(code));
|
||||
var sha = (ReadOnlySpan<byte>)_hasher.ComputeHash(stream);
|
||||
var _ = EnabledSizing switch
|
||||
{
|
||||
Sizing.Dwarf when sha.SequenceEqual(CodeGiant) => _config.Codes[i] = (code, false),
|
||||
Sizing.Giant when sha.SequenceEqual(CodeDwarf) => _config.Codes[i] = (code, false),
|
||||
_ => (string.Empty, false),
|
||||
};
|
||||
|
||||
var race = OopsRace(sha);
|
||||
if (race is not Race.Unknown && race != EnabledOops)
|
||||
_config.Codes[i] = (code, false);
|
||||
}
|
||||
}
|
||||
|
||||
private static Race OopsRace(ReadOnlySpan<byte> sha)
|
||||
=> sha switch
|
||||
{
|
||||
_ when CodeOops1.SequenceEqual(sha) => Race.Hyur,
|
||||
_ when CodeOops2.SequenceEqual(sha) => Race.Elezen,
|
||||
_ when CodeOops3.SequenceEqual(sha) => Race.Lalafell,
|
||||
_ when CodeOops4.SequenceEqual(sha) => Race.Miqote,
|
||||
_ when CodeOops5.SequenceEqual(sha) => Race.Roegadyn,
|
||||
_ when CodeOops6.SequenceEqual(sha) => Race.AuRa,
|
||||
_ when CodeOops7.SequenceEqual(sha) => Race.Hrothgar,
|
||||
_ when CodeOops8.SequenceEqual(sha) => Race.Viera,
|
||||
_ => Race.Unknown,
|
||||
};
|
||||
|
||||
// @formatter:off
|
||||
private static ReadOnlySpan<byte> CodeClown => new byte[] { 0xC4, 0xEE, 0x1D, 0x6F, 0xC5, 0x5D, 0x47, 0xBE, 0x78, 0x63, 0x66, 0x86, 0x81, 0x15, 0xEB, 0xFA, 0xF6, 0x4A, 0x90, 0xEA, 0xC0, 0xE4, 0xEE, 0x86, 0x69, 0x01, 0x8E, 0xDB, 0xCC, 0x69, 0xD1, 0xBD };
|
||||
private static ReadOnlySpan<byte> CodeEmperor => new byte[] { 0xE2, 0x2D, 0x3E, 0x57, 0x16, 0x82, 0x65, 0x98, 0x7E, 0xE6, 0x8F, 0x45, 0x14, 0x7D, 0x65, 0x31, 0xE9, 0xD8, 0xDB, 0xEA, 0xDC, 0xBF, 0xEE, 0x2A, 0xBA, 0xD5, 0x69, 0x96, 0x78, 0x34, 0x3B, 0x57 };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue