示例#1
0
        /// <summary>
        /// Get all server/accounts that are checked to be launched
        /// AND that are not already running
        /// </summary>
        /// <param name="accountList"></param>
        /// <returns></returns>
        private LaunchSorter.LaunchList GetLaunchListFromAccountList(IEnumerable <UserAccount> accountList)
        {
            var launchList = new LaunchSorter.LaunchList();

            if (_gameSessionMap.GetAllGameSessions().Count >= 3)
            {
                return(launchList);
            }

            count_abc = (count_abc + 1) % 10;

            foreach (var account in accountList)
            {
                if (account.AccountLaunchable)
                {
                    foreach (var server in account.Servers)
                    {
                        if (server.ServerSelected)
                        {
                            var account_name = account.Name;
                            if (account.Name.ToLower().Contains("ztiel"))
                            {
                                account_name += count_abc.ToString();
                            }

                            var state = _gameSessionMap.GetGameSessionStateByServerAccount(serverName: server.ServerName, accountName: account.Name);
                            if (state != ServerAccountStatusEnum.None)
                            {
                                continue;
                            }

                            var launchItem = new LaunchItem()
                            {
                                Alias                = account.Alias,
                                AccountName          = account_name,
                                Priority             = account.Priority,
                                Password             = account.Password,
                                ServerName           = server.ServerName,
                                IpAndPort            = server.ServerIpAndPort,
                                GameApiUrl           = server.GameApiUrl,
                                LoginServerUrl       = server.LoginServerUrl,
                                DiscordUrl           = server.DiscordUrl,
                                EMU                  = server.EMU,
                                CharacterSelected    = server.ChosenCharacter,
                                CustomLaunchPath     = account.CustomLaunchPath,
                                CustomPreferencePath = account.CustomPreferencePath,
                                RodatSetting         = server.RodatSetting,
                                SecureSetting        = server.SecureSetting
                            };
                            launchList.Add(launchItem);
                        }
                    }
                }
            }
            return(launchList);
        }
 public void ApplyCurrentProfileToModel()
 {
     foreach (var account in KnownUserAccounts)
     {
         account.AccountLaunchable = CurrentProfile.RetrieveAccountState(account.AccountName);;
         foreach (var server in account.Servers)
         {
             var charSetting = CurrentProfile.RetrieveCharacterSetting(accountName: account.AccountName, serverName: server.ServerName);
             if (charSetting != null)
             {
                 var    state        = _gameSessionMap.GetGameSessionStateByServerAccount(server.ServerName, account.AccountName);
                 string statusSymbol = GetStatusSymbol(state);
                 server.SetAccountServerStatus(state, statusSymbol);
                 server.ServerSelected  = charSetting.Active;
                 server.ChosenCharacter = charSetting.ChosenCharacter;
                 if (string.IsNullOrEmpty(server.ChosenCharacter))
                 {
                     server.ChosenCharacter = "None";
                 }
             }
         }
     }
     OnPropertyChanged("KnownUserAccounts");
 }