Initial Commit
This commit is contained in:
parent
53eb92e9af
commit
270ab7d11f
15341 changed files with 700234 additions and 0 deletions
|
@ -0,0 +1,136 @@
|
|||
using System;
|
||||
using JetBrains.Annotations;
|
||||
using Unity.Cloud.Collaborate.Assets;
|
||||
using Unity.Cloud.Collaborate.Models;
|
||||
using Unity.Cloud.Collaborate.Models.Enums;
|
||||
using Unity.Cloud.Collaborate.Views;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Assertions;
|
||||
|
||||
namespace Unity.Cloud.Collaborate.Presenters
|
||||
{
|
||||
internal class StartPresenter : IStartPresenter
|
||||
{
|
||||
[NotNull]
|
||||
readonly IStartView m_View;
|
||||
[NotNull]
|
||||
readonly IStartModel m_Model;
|
||||
|
||||
bool m_IsStarted;
|
||||
|
||||
public StartPresenter([NotNull] IStartView view, [NotNull] IStartModel model)
|
||||
{
|
||||
m_View = view;
|
||||
m_Model = model;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void Start()
|
||||
{
|
||||
Assert.IsFalse(m_IsStarted, "The presenter has already been started.");
|
||||
m_IsStarted = true;
|
||||
|
||||
m_Model.ProjectStatusChanged += OnProjectStatusChanged;
|
||||
m_Model.StateChanged += OnStateChanged;
|
||||
|
||||
PopulateInitialData();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void Stop()
|
||||
{
|
||||
Assert.IsTrue(m_IsStarted, "The presenter has already been stopped.");
|
||||
m_IsStarted = false;
|
||||
|
||||
m_Model.ProjectStatusChanged -= OnProjectStatusChanged;
|
||||
m_Model.StateChanged -= OnStateChanged;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Refresh state from the model.
|
||||
/// </summary>
|
||||
void OnStateChanged()
|
||||
{
|
||||
PopulateInitialData();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Populate the view with the initial data from the model.
|
||||
/// </summary>
|
||||
void PopulateInitialData()
|
||||
{
|
||||
OnProjectStatusChanged(m_Model.ProjectStatus);
|
||||
}
|
||||
|
||||
void OnProjectStatusChanged(ProjectStatus status)
|
||||
{
|
||||
switch (status) {
|
||||
case ProjectStatus.Offline:
|
||||
m_View.Text = StringAssets.projectStatusTitleOffline;
|
||||
m_View.ButtonText = string.Empty;
|
||||
m_View.SetButtonVisible(false);
|
||||
break;
|
||||
case ProjectStatus.Maintenance:
|
||||
m_View.Text = StringAssets.projectStatusTitleMaintenance;
|
||||
m_View.ButtonText = string.Empty;
|
||||
m_View.SetButtonVisible(false);
|
||||
break;
|
||||
case ProjectStatus.LoggedOut:
|
||||
m_View.Text = StringAssets.projectStatusTitleLoggedOut;
|
||||
m_View.ButtonText = StringAssets.projectStatusButtonLoggedOut;
|
||||
m_View.SetButtonVisible(true);
|
||||
break;
|
||||
case ProjectStatus.Unbound:
|
||||
m_View.Text = StringAssets.projectStatusTitleUnbound;
|
||||
m_View.ButtonText = StringAssets.projectStatusButtonUnbound;
|
||||
m_View.SetButtonVisible(true);
|
||||
break;
|
||||
case ProjectStatus.NoSeat:
|
||||
m_View.Text = StringAssets.projectStatusTitleNoSeat;
|
||||
m_View.ButtonText = StringAssets.projectStatusButtonNoSeat;
|
||||
m_View.SetButtonVisible(true);
|
||||
break;
|
||||
case ProjectStatus.Bound:
|
||||
m_View.Text = StringAssets.projectStatusTitleBound;
|
||||
m_View.ButtonText = StringAssets.projectStatusButtonBound;
|
||||
m_View.SetButtonVisible(true);
|
||||
break;
|
||||
case ProjectStatus.Loading:
|
||||
m_View.Text = StringAssets.projectStatusTitleLoading;
|
||||
m_View.ButtonText = string.Empty;
|
||||
m_View.SetButtonVisible(false);
|
||||
break;
|
||||
case ProjectStatus.Ready:
|
||||
m_View.Text = string.Empty;
|
||||
m_View.ButtonText = string.Empty;
|
||||
m_View.SetButtonVisible(false);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(status), status, "Unexpected project status.");
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void RequestStart()
|
||||
{
|
||||
var status = m_Model.ProjectStatus;
|
||||
switch (status) {
|
||||
case ProjectStatus.Unbound:
|
||||
m_Model.ShowServicePage();
|
||||
break;
|
||||
case ProjectStatus.LoggedOut:
|
||||
m_Model.ShowLoginPage();
|
||||
break;
|
||||
case ProjectStatus.NoSeat:
|
||||
m_Model.ShowNoSeatPage();
|
||||
break;
|
||||
case ProjectStatus.Bound:
|
||||
// Turn on collab Service. This is where we do a Genesis request apparently.
|
||||
m_Model.RequestTurnOnService();
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(status), status, "Unexpected project status.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue