public AssetBundleButton(CompanionResource resource, AssetBundleResource bundle, RuntimePlatform platform, UnityObject asset, IUsesCloudStorage storageUser) { clicked += OnClicked; if (asset == null) { SetEnabled(false); } m_Resource = resource; m_Platform = platform; m_Bundle = bundle; m_Asset = asset; m_StorageUser = storageUser; name = $"{resource.name} - {platform} bundle button"; var state = State.NotUploaded; if (m_Bundle != null) { if (m_Bundle.Timestamp >= m_Resource.timestamp) { state = State.Uploaded; } else { state = CompanionResourceUI.IsPlatformInstalled(m_Platform) ? State.Update : State.Warn; } } SetState(state); }
void OnClicked() { switch (m_State) { case State.NotUploaded: if (m_Bundle != null && m_Bundle.Timestamp < m_Resource.timestamp) { SetState(State.Update); } else { SetState(CompanionResourceUI.IsPlatformInstalled(m_Platform) ? State.Uploaded : State.Warn); } break; case State.Uploaded: SetState(State.NotUploaded); break; case State.Update: SetState(State.Uploaded); break; case State.Warn: SetState(State.NotUploaded); break; default: throw new ArgumentOutOfRangeException(); } }