using System; using System.Collections.ObjectModel; using Aurora.Backend.Executors; using Aurora.Frontend.Components.HostSelector; using Xamarin.Forms; namespace Aurora.Frontend.Views.Party { enum PartyState { SelectingHost, InParty, Connecting, } public class PartyViewModel : BaseViewModel { private ObservableCollection _members; private PartyState _state; private BasePartyExecutor _executor; private string _hostname; private string _port; public PartyViewModel() { _members = new ObservableCollection() { "Kevin", "Brandon", "Sheila", "Dale", "Austin", "Tori", "Ashley", "Spencer", }; OnPropertyChanged("Members"); this.JoinCommand = new Command(OnJoinExecute, CanJoinExecute); this.HostCommand = new Command(OnHostExecute, CanHostExecute); State(PartyState.SelectingHost); } #region Properties public ObservableCollection Members { get { return _members; } set { SetProperty(ref _members, value); } } public bool IsSelectingHost { get { return _state == PartyState.SelectingHost; } } public bool IsNotSelectingHost { get { return _state != PartyState.SelectingHost; } } public Command JoinCommand { get; set; } public Command HostCommand { get; set; } public string Hostname { get { return _hostname; } set { SetProperty(ref _hostname, value); } } public string Port { get { return _port; } set { SetProperty(ref _port, value); } } #endregion Properties private void State(PartyState state) { _state = state; OnPropertyChanged("IsSelectingHost"); } #region Commands private void OnJoinExecute() { _executor = BaseExecutor.CreateExecutor(ExecutorType.Client) as BasePartyExecutor; State(PartyState.Connecting); } private bool CanJoinExecute() { return true; } private void OnHostExecute() { _executor = BaseExecutor.CreateExecutor(ExecutorType.Server) as BasePartyExecutor; State(PartyState.Connecting); } private bool CanHostExecute() { return true; } #endregion Commands } }