diff --git a/My project/Assets/FlowScope.meta b/My project/Assets/FlowScope.meta new file mode 100644 index 0000000..04eca51 --- /dev/null +++ b/My project/Assets/FlowScope.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f15a20a42b04f9a86de633ca4831e25 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Audio.meta b/My project/Assets/FlowScope/Runtime/Audio.meta new file mode 100644 index 0000000..ac38d9b --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Audio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: faa0e59581ea46ed8994f743336decdc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Audio/IAudioHandle.cs b/My project/Assets/FlowScope/Runtime/Audio/IAudioHandle.cs new file mode 100644 index 0000000..5bc19f4 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Audio/IAudioHandle.cs @@ -0,0 +1,8 @@ +namespace FlowScope.Audio +{ + public interface IAudioHandle + { + void Stop(float fadeOut = 0f); + bool IsPlaying { get; } + } +} diff --git a/My project/Assets/FlowScope/Runtime/Audio/IAudioHandle.cs.meta b/My project/Assets/FlowScope/Runtime/Audio/IAudioHandle.cs.meta new file mode 100644 index 0000000..efcdb8e --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Audio/IAudioHandle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 780afa085183438eaa9b372219113d62 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Audio/IAudioService.cs b/My project/Assets/FlowScope/Runtime/Audio/IAudioService.cs new file mode 100644 index 0000000..54efa74 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Audio/IAudioService.cs @@ -0,0 +1,12 @@ +namespace FlowScope.Audio +{ + public interface IAudioService + { + IAudioHandle PlayBgm(string key, bool loop = true, float fadeIn = 0f); + IAudioHandle PlaySfx(string key); + void StopBgm(float fadeOut = 0f); + void SetBgmVolume(float volume); + void SetSfxVolume(float volume); + void SetMute(bool mute); + } +} diff --git a/My project/Assets/FlowScope/Runtime/Audio/IAudioService.cs.meta b/My project/Assets/FlowScope/Runtime/Audio/IAudioService.cs.meta new file mode 100644 index 0000000..a7da8dc --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Audio/IAudioService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2763bff6b4ca4ac2ae5b9e5f764ad984 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Common.meta b/My project/Assets/FlowScope/Runtime/Common.meta new file mode 100644 index 0000000..51e39c3 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Common.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 76e811c4a8bd4f6497926d5befb64b83 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Common/ResultLog.cs b/My project/Assets/FlowScope/Runtime/Common/ResultLog.cs new file mode 100644 index 0000000..1944e35 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Common/ResultLog.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; + +namespace FlowScope.Common +{ + public sealed class ResultLog + { + private readonly List _warnings = new(); + private readonly List _errors = new(); + + public IReadOnlyList Warnings => _warnings; + public IReadOnlyList Errors => _errors; + public bool HasErrors => _errors.Count > 0; + + public void AddWarning(string message) => _warnings.Add(message); + public void AddError(string message) => _errors.Add(message); + public void Clear() + { + _warnings.Clear(); + _errors.Clear(); + } + } +} diff --git a/My project/Assets/FlowScope/Runtime/Common/ResultLog.cs.meta b/My project/Assets/FlowScope/Runtime/Common/ResultLog.cs.meta new file mode 100644 index 0000000..d1c7401 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Common/ResultLog.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a4063b7b41014f9399532dd3cc83e68f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Config.meta b/My project/Assets/FlowScope/Runtime/Config.meta new file mode 100644 index 0000000..5d6f27b --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f421e0a585f4a279d8db9410eb82711 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Config/IConfigProvider.cs b/My project/Assets/FlowScope/Runtime/Config/IConfigProvider.cs new file mode 100644 index 0000000..7d3ce88 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Config/IConfigProvider.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +namespace FlowScope.Config +{ + public interface IConfigProvider + { + Task LoadAllAsync(CancellationToken cancellationToken); + T Get(int id) where T : class, IConfigRow; + IReadOnlyList GetAll() where T : class, IConfigRow; + } +} diff --git a/My project/Assets/FlowScope/Runtime/Config/IConfigProvider.cs.meta b/My project/Assets/FlowScope/Runtime/Config/IConfigProvider.cs.meta new file mode 100644 index 0000000..2ae68b0 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Config/IConfigProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: af3d9a24ab0e4c6ebe3bf906cfd9e2bb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Config/IConfigRow.cs b/My project/Assets/FlowScope/Runtime/Config/IConfigRow.cs new file mode 100644 index 0000000..58fef28 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Config/IConfigRow.cs @@ -0,0 +1,7 @@ +namespace FlowScope.Config +{ + public interface IConfigRow + { + int Id { get; } + } +} diff --git a/My project/Assets/FlowScope/Runtime/Config/IConfigRow.cs.meta b/My project/Assets/FlowScope/Runtime/Config/IConfigRow.cs.meta new file mode 100644 index 0000000..420e72b --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Config/IConfigRow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20d7e0e8230e4df1b5afa8000ef26fea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Container.meta b/My project/Assets/FlowScope/Runtime/Container.meta new file mode 100644 index 0000000..f7d417a --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Container.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d24db89928e4010a3c1af79ffb15709 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Container/Container.cs b/My project/Assets/FlowScope/Runtime/Container/Container.cs new file mode 100644 index 0000000..e00aa7d --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Container/Container.cs @@ -0,0 +1,21 @@ +using System; + +namespace FlowScope.Container +{ + public sealed class Container : IDisposable + { + public void RegisterInstance(T instance) => throw new NotImplementedException(); + public void RegisterFactory(Func factory) => throw new NotImplementedException(); + public void RegisterType() where TImplementation : TInterface => throw new NotImplementedException(); + public void RegisterType() => throw new NotImplementedException(); + public void RegisterAssembly() => throw new NotImplementedException(); + public T Resolve() => throw new NotImplementedException(); + public bool TryResolve(out T value) + { + value = default; + throw new NotImplementedException(); + } + public Container CreateScope() => throw new NotImplementedException(); + public void Dispose() => throw new NotImplementedException(); + } +} diff --git a/My project/Assets/FlowScope/Runtime/Container/Container.cs.meta b/My project/Assets/FlowScope/Runtime/Container/Container.cs.meta new file mode 100644 index 0000000..37b5a33 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Container/Container.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 554409c4a7e84909a72a89d17aeb2b0b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Container/InjectableAttribute.cs b/My project/Assets/FlowScope/Runtime/Container/InjectableAttribute.cs new file mode 100644 index 0000000..72b4ff4 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Container/InjectableAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace FlowScope.Container +{ + [AttributeUsage(AttributeTargets.Class)] + public sealed class InjectableAttribute : Attribute + { + } +} diff --git a/My project/Assets/FlowScope/Runtime/Container/InjectableAttribute.cs.meta b/My project/Assets/FlowScope/Runtime/Container/InjectableAttribute.cs.meta new file mode 100644 index 0000000..9cc5a56 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Container/InjectableAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 039257eaaf6c4ac198a3504795b52df0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Flow.meta b/My project/Assets/FlowScope/Runtime/Flow.meta new file mode 100644 index 0000000..250b3ec --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Flow.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 87d135bef01743c29768ef28ce8acf69 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Flow/FeatureContext.cs b/My project/Assets/FlowScope/Runtime/Flow/FeatureContext.cs new file mode 100644 index 0000000..d9e5d4e --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Flow/FeatureContext.cs @@ -0,0 +1,27 @@ +using System.Threading; +using FlowScope.Resources; +using R3; +using ContainerType = FlowScope.Container.Container; + +namespace FlowScope.Flow +{ + public sealed class FeatureContext + { + public FeatureContext( + ContainerType scope, + IResourceGroup resources, + CompositeDisposable disposables, + CancellationToken cancellationToken) + { + Scope = scope; + Resources = resources; + Disposables = disposables; + CancellationToken = cancellationToken; + } + + public ContainerType Scope { get; } + public IResourceGroup Resources { get; } + public CompositeDisposable Disposables { get; } + public CancellationToken CancellationToken { get; } + } +} diff --git a/My project/Assets/FlowScope/Runtime/Flow/FeatureContext.cs.meta b/My project/Assets/FlowScope/Runtime/Flow/FeatureContext.cs.meta new file mode 100644 index 0000000..6b6a9e6 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Flow/FeatureContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4196008ec1434af48d1307f18d14b655 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Flow/GameFlowState.cs b/My project/Assets/FlowScope/Runtime/Flow/GameFlowState.cs new file mode 100644 index 0000000..e9f3c81 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Flow/GameFlowState.cs @@ -0,0 +1,13 @@ +namespace FlowScope.Flow +{ + public enum GameFlowState + { + Idle, + Starting, + Running, + Switching, + NoActiveFeature, + ShuttingDown, + Disposed + } +} diff --git a/My project/Assets/FlowScope/Runtime/Flow/GameFlowState.cs.meta b/My project/Assets/FlowScope/Runtime/Flow/GameFlowState.cs.meta new file mode 100644 index 0000000..0eac168 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Flow/GameFlowState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f73ffad83dc461db1dde0b4bece5eda +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Flow/IFeature.cs b/My project/Assets/FlowScope/Runtime/Flow/IFeature.cs new file mode 100644 index 0000000..3cb3e97 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Flow/IFeature.cs @@ -0,0 +1,12 @@ +using System; +using System.Threading.Tasks; + +namespace FlowScope.Flow +{ + public interface IFeature : IDisposable + { + Task LoadAsync(FeatureContext context); + Task EnterAsync(FeatureContext context); + Task ExitAsync(FeatureContext context); + } +} diff --git a/My project/Assets/FlowScope/Runtime/Flow/IFeature.cs.meta b/My project/Assets/FlowScope/Runtime/Flow/IFeature.cs.meta new file mode 100644 index 0000000..6d06d58 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Flow/IFeature.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 749ce778d6814cf9a9fe89889025bccb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/FlowScope.Runtime.asmdef b/My project/Assets/FlowScope/Runtime/FlowScope.Runtime.asmdef new file mode 100644 index 0000000..c6285f2 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/FlowScope.Runtime.asmdef @@ -0,0 +1,14 @@ +{ + "name": "FlowScope.Runtime", + "rootNamespace": "FlowScope", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} diff --git a/My project/Assets/FlowScope/Runtime/FlowScope.Runtime.asmdef.meta b/My project/Assets/FlowScope/Runtime/FlowScope.Runtime.asmdef.meta new file mode 100644 index 0000000..ffe0950 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/FlowScope.Runtime.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4f077ee742b346a188dc0c93b419f3ee +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Resources.meta b/My project/Assets/FlowScope/Runtime/Resources.meta new file mode 100644 index 0000000..f4a06ba --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a7d670c048e4930b0a0980773a6210b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Resources/IResourceGroup.cs b/My project/Assets/FlowScope/Runtime/Resources/IResourceGroup.cs new file mode 100644 index 0000000..14de14e --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Resources/IResourceGroup.cs @@ -0,0 +1,10 @@ +using System; + +namespace FlowScope.Resources +{ + public interface IResourceGroup : IDisposable + { + void Add(IResourceHandle handle) where T : class; + int Count { get; } + } +} diff --git a/My project/Assets/FlowScope/Runtime/Resources/IResourceGroup.cs.meta b/My project/Assets/FlowScope/Runtime/Resources/IResourceGroup.cs.meta new file mode 100644 index 0000000..b4e64cf --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Resources/IResourceGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e613834058f49db95c2814ab52d7cc4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Resources/IResourceHandle.cs b/My project/Assets/FlowScope/Runtime/Resources/IResourceHandle.cs new file mode 100644 index 0000000..f293100 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Resources/IResourceHandle.cs @@ -0,0 +1,11 @@ +using System; + +namespace FlowScope.Resources +{ + public interface IResourceHandle : IDisposable where T : class + { + string Key { get; } + T Asset { get; } + bool IsDisposed { get; } + } +} diff --git a/My project/Assets/FlowScope/Runtime/Resources/IResourceHandle.cs.meta b/My project/Assets/FlowScope/Runtime/Resources/IResourceHandle.cs.meta new file mode 100644 index 0000000..7577ddb --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Resources/IResourceHandle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f248abc2018449e3be0905dc01ef7e11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Resources/IResourceService.cs b/My project/Assets/FlowScope/Runtime/Resources/IResourceService.cs new file mode 100644 index 0000000..8b026ae --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Resources/IResourceService.cs @@ -0,0 +1,15 @@ +using System.Threading; +using System.Threading.Tasks; + +namespace FlowScope.Resources +{ + public interface IResourceService + { + Task> LoadAsync( + string key, + CancellationToken cancellationToken) + where T : class; + + IResourceGroup CreateGroup(); + } +} diff --git a/My project/Assets/FlowScope/Runtime/Resources/IResourceService.cs.meta b/My project/Assets/FlowScope/Runtime/Resources/IResourceService.cs.meta new file mode 100644 index 0000000..9828ddb --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Resources/IResourceService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52a701ee3b744171b5e01e927c83b645 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Save.meta b/My project/Assets/FlowScope/Runtime/Save.meta new file mode 100644 index 0000000..fb1bcc9 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Save.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aade8defc2324dde8776534f5d8acccc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/Save/ISaveService.cs b/My project/Assets/FlowScope/Runtime/Save/ISaveService.cs new file mode 100644 index 0000000..f4f0256 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Save/ISaveService.cs @@ -0,0 +1,13 @@ +using System.Threading; +using System.Threading.Tasks; + +namespace FlowScope.Save +{ + public interface ISaveService + { + Task SaveAsync(string key, T data, CancellationToken cancellationToken); + Task LoadAsync(string key, T defaultValue, CancellationToken cancellationToken); + void Delete(string key); + bool Exists(string key); + } +} diff --git a/My project/Assets/FlowScope/Runtime/Save/ISaveService.cs.meta b/My project/Assets/FlowScope/Runtime/Save/ISaveService.cs.meta new file mode 100644 index 0000000..369bd54 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/Save/ISaveService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 02c1b05d79f4432dbb64923943158c57 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/UI.meta b/My project/Assets/FlowScope/Runtime/UI.meta new file mode 100644 index 0000000..db9d363 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3e730e1406e843dd957ffddac73ac8be +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/UI/PanelStrategy.cs b/My project/Assets/FlowScope/Runtime/UI/PanelStrategy.cs new file mode 100644 index 0000000..1141c60 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/UI/PanelStrategy.cs @@ -0,0 +1,8 @@ +namespace FlowScope.UI +{ + public enum PanelStrategy + { + Destroy, + Cache + } +} diff --git a/My project/Assets/FlowScope/Runtime/UI/PanelStrategy.cs.meta b/My project/Assets/FlowScope/Runtime/UI/PanelStrategy.cs.meta new file mode 100644 index 0000000..aa0cadc --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/UI/PanelStrategy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be444a62bb9241da99d5a4fa2ff8be69 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/UI/UIPanelAttribute.cs b/My project/Assets/FlowScope/Runtime/UI/UIPanelAttribute.cs new file mode 100644 index 0000000..633e1d8 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/UI/UIPanelAttribute.cs @@ -0,0 +1,22 @@ +using System; + +namespace FlowScope.UI +{ + [AttributeUsage(AttributeTargets.Class)] + public sealed class UIPanelAttribute : Attribute + { + public UIPanelAttribute( + string layer, + string path = null, + PanelStrategy? overrideStrategy = null) + { + Layer = layer; + Path = path; + OverrideStrategy = overrideStrategy; + } + + public string Layer { get; } + public string Path { get; } + public PanelStrategy? OverrideStrategy { get; } + } +} diff --git a/My project/Assets/FlowScope/Runtime/UI/UIPanelAttribute.cs.meta b/My project/Assets/FlowScope/Runtime/UI/UIPanelAttribute.cs.meta new file mode 100644 index 0000000..38986a9 --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/UI/UIPanelAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b6b9266c245947bebd6cdf8c445cf712 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/My project/Assets/FlowScope/Runtime/UI/UIPanelBase.cs b/My project/Assets/FlowScope/Runtime/UI/UIPanelBase.cs new file mode 100644 index 0000000..91febab --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/UI/UIPanelBase.cs @@ -0,0 +1,24 @@ +using R3; +using UnityEngine; + +namespace FlowScope.UI +{ + public abstract class UIPanelBase : MonoBehaviour + { + protected TViewModel ViewModel { get; private set; } + protected CompositeDisposable Disposables { get; } = new(); + + public void Bind(TViewModel viewModel) + { + ViewModel = viewModel; + OnBind(viewModel); + } + + public virtual void Unbind() + { + Disposables.Clear(); + } + + protected abstract void OnBind(TViewModel viewModel); + } +} diff --git a/My project/Assets/FlowScope/Runtime/UI/UIPanelBase.cs.meta b/My project/Assets/FlowScope/Runtime/UI/UIPanelBase.cs.meta new file mode 100644 index 0000000..b41d0fc --- /dev/null +++ b/My project/Assets/FlowScope/Runtime/UI/UIPanelBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c766b1543a347c2bec5d5f1b34b99ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: