A game about forced loneliness, made by TACStudios
1using Codice.CM.Common;
2using Unity.PlasticSCM.Editor.AssetUtils;
3
4namespace Unity.PlasticSCM.Editor.AssetsOverlays.Cache
5{
6 internal interface IAssetStatusCache
7 {
8 AssetStatus GetStatus(string fullPath);
9 LockStatusData GetLockStatusData(string fullPath);
10 void Clear();
11 void ClearLocks();
12 void Cancel();
13 }
14
15 internal class AssetStatusCache : IAssetStatusCache
16 {
17 internal AssetStatusCache(
18 WorkspaceInfo wkInfo,
19 bool isGluonMode)
20 {
21 mLocalStatusCache = new LocalStatusCache();
22
23 mRemoteStatusCache = new RemoteStatusCache(
24 wkInfo,
25 isGluonMode,
26 ProjectWindow.Repaint,
27 RepaintInspector.All);
28
29 mLockStatusCache = new LockStatusCache(
30 wkInfo,
31 ProjectWindow.Repaint,
32 RepaintInspector.All);
33 }
34
35 AssetStatus IAssetStatusCache.GetStatus(string fullPath)
36 {
37 AssetStatus localStatus = mLocalStatusCache.GetStatus(fullPath);
38
39 if (!ClassifyAssetStatus.IsControlled(localStatus))
40 return localStatus;
41
42 AssetStatus remoteStatus = mRemoteStatusCache.GetStatus(fullPath);
43
44 AssetStatus lockStatus = mLockStatusCache.GetStatus(fullPath);
45
46 return localStatus | remoteStatus | lockStatus;
47 }
48
49 LockStatusData IAssetStatusCache.GetLockStatusData(string fullPath)
50 {
51 return mLockStatusCache.GetLockStatusData(fullPath);
52 }
53
54 void IAssetStatusCache.Clear()
55 {
56 mLocalStatusCache.Clear();
57 mRemoteStatusCache.Clear();
58 mLockStatusCache.Clear();
59 }
60
61 void IAssetStatusCache.ClearLocks()
62 {
63 mLockStatusCache.Clear();
64 }
65
66 void IAssetStatusCache.Cancel()
67 {
68 mRemoteStatusCache.Cancel();
69 mLockStatusCache.Cancel();
70 }
71
72 readonly LocalStatusCache mLocalStatusCache;
73 readonly RemoteStatusCache mRemoteStatusCache;
74 readonly LockStatusCache mLockStatusCache;
75 }
76}