IEnumerator AddMoney(Player player) { if (m_applying) { yield break; } m_applying = true; var task = new MetagameTask<InstanceResponse<User>>(); var changeRequest = new ChangeRequest("grantCurrencyInsecure", new { currency = Value }); yield return StartCoroutine(Collection.Users.ApplyChange(task, player.User.ID, changeRequest)); m_applying = false; if (task.Error == null) { player.LoadProfile(task.Data.Instance); gameObject.SetActive(false); } }
IEnumerator Logout() { var task = new MetagameTask<AuthResponse>(); yield return StartCoroutine(m_metagame.Logout(task)); m_state = MenuState.LoginScreen; }
void LeaveSession() { StopCoroutine(m_pingLoop); m_pingLoop = null; var task = new MetagameTask<MatchmakingLeaveResponse>(); StartCoroutine(m_metagame.LeaveMatchmakingSession(task, MatchmakingPool, m_partyID, m_currentSessionID)); }
IEnumerator PingLoop(int ttl) { var task = new MetagameTask<MatchmakingPingResponse>(); while (true) { yield return StartCoroutine(m_metagame.PingMatchmakingSession(task, MatchmakingPool, m_partyID, m_currentSessionID)); yield return new WaitForSeconds(ttl / 2); } }
IEnumerator Matchmake() { m_state = MenuState.MatchmakingInProgress; var task = new MetagameTask<MatchmakingSearchResponse>(); yield return StartCoroutine(m_metagame.Matchmake(task, MatchmakingPool, m_partyID, new string[0], m_badTickets.ToArray(), new Dictionary<string, string>())); if (task.Error != null) { m_state = MenuState.MatchmakingScreen; } else { m_currentSessionID = task.Data.SessionID; m_hosting = task.Data.Action == MatchmakingSearchAction.Create; if (!m_hosting) { var ip = task.Data.HostPartyID.Split('|')[0].Replace(',', '.'); m_netManager.networkAddress = ip; m_netManager.StartClient(); } else { m_netManager.StartHost(); } m_state = MenuState.SessionConnectionInProgress; m_netManager.ClientConnected += OnClientConnect; m_netManager.ClientDisconnected += OnClientDisconnect; m_pingLoop = StartCoroutine(PingLoop(task.Data.TTL)); } }
IEnumerator DownloadData() { m_state = MenuState.DownloadingData; yield return StartCoroutine(Collection.Init(m_metagame)); var task = new MetagameTask<InstanceResponse<User>>(); yield return Collection.Users.DownloadInstance(task, UserID); m_state = MenuState.MatchmakingScreen; }
IEnumerator Login() { m_state = MenuState.LoginInProgress; var task = new MetagameTask<AuthResponse>(); yield return StartCoroutine(m_metagame.AuthenticateDebug(task, m_userNameText)); if (task.Error != null) { m_loginErrorText = task.Error.Name; m_state = MenuState.LoginScreen; } else { // hack to generate party IDs for debug platforms m_partyID = task.Data.IP.Replace('.', ',') + "|" + Process.GetCurrentProcess().Id; UserID = task.Data.ID; yield return StartCoroutine(DownloadData()); } }
IEnumerator Connect() { m_state = MenuState.Connecting; var task = new MetagameTask<ConnectResponse>(); yield return StartCoroutine(m_metagame.Connect(task, MetagameUrl)); if (task.Error != null) { m_connectErrorText = task.Error.Name; m_state = MenuState.ConnectScreen; } else { m_state = MenuState.LoginScreen; } }
public static IEnumerator Logout(this MetagameClient metagame, MetagameTask<AuthResponse> task) { return metagame.MetagameSend(task, "/auth/logout", false); }
public static IEnumerator AuthenticateDebug(this MetagameClient metagame, MetagameTask<AuthResponse> task, string userID, string client = "game") { var request = new { client, userID }; return metagame.MetagameSend(task, "/auth/login", request); }