| | 1 | | using DCL.ServerTime; |
| | 2 | | using System; |
| | 3 | | using System.Collections.Generic; |
| | 4 | |
|
| | 5 | | namespace DCL |
| | 6 | | { |
| | 7 | | public enum AppMode |
| | 8 | | { |
| | 9 | | DEFAULT, |
| | 10 | | BUILDER_IN_WORLD_EDITION, |
| | 11 | | } |
| | 12 | |
|
| | 13 | | public class DataStore |
| | 14 | | { |
| 774397 | 15 | | public static DataStore i { get; private set; } = new (); |
| | 16 | |
|
| 982 | 17 | | private readonly Dictionary<Type, object> dataStores = new (); |
| | 18 | |
|
| | 19 | | public void Set<T>(T data) where T: class |
| | 20 | | { |
| 10550 | 21 | | if (!dataStores.ContainsKey(typeof(T))) |
| 10549 | 22 | | dataStores.Add(typeof(T), data); |
| | 23 | | else |
| 1 | 24 | | dataStores[typeof(T)] = data; |
| 1 | 25 | | } |
| | 26 | |
|
| | 27 | | public T Get<T>() where T: class, new() |
| | 28 | | { |
| 403621 | 29 | | if (!dataStores.ContainsKey(typeof(T))) |
| 10549 | 30 | | Set(new T()); |
| | 31 | |
|
| 403621 | 32 | | return dataStores[typeof(T)] as T; |
| | 33 | | } |
| | 34 | |
|
| | 35 | | public static void Clear() => |
| 656 | 36 | | i = new DataStore(); |
| | 37 | |
|
| 330 | 38 | | public DataStore_World world => i.Get<DataStore_World>(); |
| 31175 | 39 | | public DataStore_Common common => i.Get<DataStore_Common>(); |
| 4204 | 40 | | public DataStore_Realm realm => i.Get<DataStore_Realm>(); |
| 2511 | 41 | | public DebugConfig debugConfig => i.Get<DebugConfig>(); |
| 605 | 42 | | public DataStore_Quests Quests => i.Get<DataStore_Quests>(); |
| 4378 | 43 | | public DataStore_HUDs HUDs => i.Get<DataStore_HUDs>(); |
| 5447 | 44 | | public DataStore_Player player => i.Get<DataStore_Player>(); |
| 79395 | 45 | | public DataStore_AvatarsLOD avatarsLOD => i.Get<DataStore_AvatarsLOD>(); |
| 3772 | 46 | | public DataStore_VirtualAudioMixer virtualAudioMixer => i.Get<DataStore_VirtualAudioMixer>(); |
| 34972 | 47 | | public DataStore_Screen screen => i.Get<DataStore_Screen>(); |
| 0 | 48 | | public DataStore_WSCommunication wsCommunication => i.Get<DataStore_WSCommunication>(); |
| 2669 | 49 | | public DataStore_WorldObjects sceneWorldObjects => i.Get<DataStore_WorldObjects>(); |
| 167345 | 50 | | public DataStore_ExploreV2 exploreV2 => i.Get<DataStore_ExploreV2>(); |
| 7125 | 51 | | public DataStore_FeatureFlag featureFlags => i.Get<DataStore_FeatureFlag>(); |
| 19631 | 52 | | public DataStore_Camera camera => i.Get<DataStore_Camera>(); |
| 660 | 53 | | public DataStore_Settings settings => i.Get<DataStore_Settings>(); |
| 66 | 54 | | public DataStore_SkyboxConfig skyboxConfig => i.Get<DataStore_SkyboxConfig>(); |
| 0 | 55 | | public WorldTimer worldTimer => i.Get<WorldTimer>(); |
| 805 | 56 | | public DataStore_Performance performance => i.Get<DataStore_Performance>(); |
| 109 | 57 | | public DataStore_ExperiencesViewer experiencesViewer => i.Get<DataStore_ExperiencesViewer>(); |
| 716 | 58 | | public DataStore_Emotes emotes => i.Get<DataStore_Emotes>(); |
| 416 | 59 | | public DataStore_EmotesCustomization emotesCustomization => i.Get<DataStore_EmotesCustomization>(); |
| 265 | 60 | | public DataStore_SceneBoundariesChecker sceneBoundariesChecker => i.Get<DataStore_SceneBoundariesChecker>(); |
| 575 | 61 | | public DataStore_ECS7 ecs7 => i.Get<DataStore_ECS7>(); |
| 980 | 62 | | public DataStore_VoiceChat voiceChat => i.Get<DataStore_VoiceChat>(); |
| 543 | 63 | | public DataStore_TextureConfig textureConfig => i.Get<DataStore_TextureConfig>(); |
| 55 | 64 | | public DataStore_FriendNotifications friendNotifications => i.Get<DataStore_FriendNotifications>(); |
| 708 | 65 | | public DataStore_AvatarConfig avatarConfig => i.Get<DataStore_AvatarConfig>(); |
| 514 | 66 | | public DataStore_Rpc rpc => i.Get<DataStore_Rpc>(); |
| 300 | 67 | | public DataStore_Channels channels => i.Get<DataStore_Channels>(); |
| 1017 | 68 | | public DataStore_WorldBlockers worldBlockers => i.Get<DataStore_WorldBlockers>(); |
| 7 | 69 | | public DataStore_Notifications notifications => i.Get<DataStore_Notifications>(); |
| 0 | 70 | | public DataStore_Outliner outliner => i.Get<DataStore_Outliner>(); |
| | 71 | | } |
| | 72 | |
|
| | 73 | | public struct DataStoreRef<T> where T: class, new() |
| | 74 | | { |
| | 75 | | private T @ref; |
| | 76 | |
|
| | 77 | | public T Ref => @ref ??= DataStore.i.Get<T>(); |
| | 78 | | } |
| | 79 | |
|
| | 80 | | } |
| | 81 | |
|
| | 82 | |
|
| | 83 | |
|