| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- using Ryujinx.HLE.HOS.Services.Mii.Types;
- using Ryujinx.HLE.HOS.Services.Settings;
- using System;
- namespace Ryujinx.HLE.HOS.Services.Mii.StaticService
- {
- class DatabaseServiceImpl : IDatabaseService
- {
- private DatabaseImpl _database;
- private DatabaseSessionMetadata _metadata;
- private bool _isSystem;
- public DatabaseServiceImpl(DatabaseImpl database, bool isSystem, SpecialMiiKeyCode miiKeyCode)
- {
- _database = database;
- _metadata = _database.CreateSessionMetadata(miiKeyCode);
- _isSystem = isSystem;
- }
- public bool IsDatabaseTestModeEnabled()
- {
- if (NxSettings.Settings.TryGetValue("mii!is_db_test_mode_enabled", out object isDatabaseTestModeEnabled))
- {
- return (bool)isDatabaseTestModeEnabled;
- }
- return false;
- }
- protected override bool IsUpdated(SourceFlag flag)
- {
- return _database.IsUpdated(_metadata, flag);
- }
- protected override bool IsFullDatabase()
- {
- return _database.IsFullDatabase();
- }
- protected override uint GetCount(SourceFlag flag)
- {
- return _database.GetCount(_metadata, flag);
- }
- protected override ResultCode Get(SourceFlag flag, out int count, Span<CharInfoElement> elements)
- {
- return _database.Get(_metadata, flag, out count, elements);
- }
- protected override ResultCode Get1(SourceFlag flag, out int count, Span<CharInfo> elements)
- {
- return _database.Get(_metadata, flag, out count, elements);
- }
- protected override ResultCode UpdateLatest(CharInfo oldCharInfo, SourceFlag flag, out CharInfo newCharInfo)
- {
- newCharInfo = default;
- return _database.UpdateLatest(_metadata, oldCharInfo, flag, newCharInfo);
- }
- protected override ResultCode BuildRandom(Age age, Gender gender, Race race, out CharInfo charInfo)
- {
- if (age > Age.All || gender > Gender.All || race > Race.All)
- {
- charInfo = default;
- return ResultCode.InvalidArgument;
- }
- _database.BuildRandom(age, gender, race, out charInfo);
- return ResultCode.Success;
- }
- protected override ResultCode BuildDefault(uint index, out CharInfo charInfo)
- {
- if (index >= DefaultMii.TableLength)
- {
- charInfo = default;
- return ResultCode.InvalidArgument;
- }
- _database.BuildDefault(index, out charInfo);
- return ResultCode.Success;
- }
- protected override ResultCode Get2(SourceFlag flag, out int count, Span<StoreDataElement> elements)
- {
- if (!_isSystem)
- {
- count = -1;
- return ResultCode.PermissionDenied;
- }
- return _database.Get(_metadata, flag, out count, elements);
- }
- protected override ResultCode Get3(SourceFlag flag, out int count, Span<StoreData> elements)
- {
- if (!_isSystem)
- {
- count = -1;
- return ResultCode.PermissionDenied;
- }
- return _database.Get(_metadata, flag, out count, elements);
- }
- protected override ResultCode UpdateLatest1(StoreData oldStoreData, SourceFlag flag, out StoreData newStoreData)
- {
- newStoreData = default;
- if (!_isSystem)
- {
- return ResultCode.PermissionDenied;
- }
- return _database.UpdateLatest(_metadata, oldStoreData, flag, newStoreData);
- }
- protected override ResultCode FindIndex(CreateId createId, bool isSpecial, out int index)
- {
- if (!_isSystem)
- {
- index = -1;
- return ResultCode.PermissionDenied;
- }
- index = _database.FindIndex(createId, isSpecial);
- return ResultCode.Success;
- }
- protected override ResultCode Move(CreateId createId, int newIndex)
- {
- if (!_isSystem)
- {
- return ResultCode.PermissionDenied;
- }
- if (newIndex > 0 && _database.GetCount(_metadata, SourceFlag.Database) > newIndex)
- {
- return _database.Move(_metadata, newIndex, createId);
- }
- return ResultCode.InvalidArgument;
- }
- protected override ResultCode AddOrReplace(StoreData storeData)
- {
- if (!_isSystem)
- {
- return ResultCode.PermissionDenied;
- }
- return _database.AddOrReplace(_metadata, storeData);
- }
- protected override ResultCode Delete(CreateId createId)
- {
- if (!_isSystem)
- {
- return ResultCode.PermissionDenied;
- }
- return _database.Delete(_metadata, createId);
- }
- protected override ResultCode DestroyFile()
- {
- if (!IsDatabaseTestModeEnabled())
- {
- return ResultCode.TestModeNotEnabled;
- }
- return _database.DestroyFile(_metadata);
- }
- protected override ResultCode DeleteFile()
- {
- if (!IsDatabaseTestModeEnabled())
- {
- return ResultCode.TestModeNotEnabled;
- }
- return _database.DeleteFile();
- }
- protected override ResultCode Format()
- {
- if (!IsDatabaseTestModeEnabled())
- {
- return ResultCode.TestModeNotEnabled;
- }
- _database.Format(_metadata);
- return ResultCode.Success;
- }
- protected override ResultCode Import(ReadOnlySpan<byte> data)
- {
- if (!IsDatabaseTestModeEnabled())
- {
- return ResultCode.TestModeNotEnabled;
- }
- throw new NotImplementedException();
- }
- protected override ResultCode Export(Span<byte> data)
- {
- if (!IsDatabaseTestModeEnabled())
- {
- return ResultCode.TestModeNotEnabled;
- }
- throw new NotImplementedException();
- }
- protected override ResultCode IsBrokenDatabaseWithClearFlag(out bool isBrokenDatabase)
- {
- if (!_isSystem)
- {
- isBrokenDatabase = false;
- return ResultCode.PermissionDenied;
- }
- isBrokenDatabase = _database.IsBrokenDatabaseWithClearFlag();
- return ResultCode.Success;
- }
- protected override ResultCode GetIndex(CharInfo charInfo, out int index)
- {
- return _database.GetIndex(_metadata, charInfo, out index);
- }
- protected override void SetInterfaceVersion(uint interfaceVersion)
- {
- _database.SetInterfaceVersion(_metadata, interfaceVersion);
- }
- protected override ResultCode Convert(Ver3StoreData ver3StoreData, out CharInfo charInfo)
- {
- throw new NotImplementedException();
- }
- protected override ResultCode ConvertCoreDataToCharInfo(CoreData coreData, out CharInfo charInfo)
- {
- return _database.ConvertCoreDataToCharInfo(coreData, out charInfo);
- }
- protected override ResultCode ConvertCharInfoToCoreData(CharInfo charInfo, out CoreData coreData)
- {
- return _database.ConvertCharInfoToCoreData(charInfo, out coreData);
- }
- }
- }
|