} // SendGamesListToAllAsync /// <summary>Отправляет сообщение всем юзерам (кроме отправителя)</summary> /// <param name="msg">Сообщение</param> /// <param name="sender">Отправитель</param> public void SendMessageToAll(string msg, string sender) { UserList.ForEach(user => { if (sender != user.UserName) { user.Callback.SendMessageCallback(msg); } // if }); } // SendMessageToAll
} // DeleteUserFromLobbyList /// Служебный метод для AddUserToLobbyList и DeleteUserFromLobbyList /// <summary>Перебирает всех пользователей и по Callback-вызову обновляет список "В СЕТИ"</summary> /// <param name="userList">Список, который отправляется</param> public Task SendListToAll(List<string> userList) { return Task.Factory.StartNew(() => { UserList .ForEach(user => { user.Callback?.SendUserListCallback(userList); }); }); } // SendListToAll
} // GetCurrentGamesAsync /// Служебный метод для AddUserToInGameList и DeleteUserFromInGameList /// <summary>Перебирает всех пользователей и по Callback-вызову обновляет список "В ИГРЕ"</summary> /// <param name="gameList">Список игр</param> public Task SendGamesListToAllAsync(List<string> gameList) { return Task.Factory.StartNew(() => { UserList .ForEach(user => { user.Callback?.SendGameListCallback(gameList); }); }); } // SendGamesListToAllAsync
} // DeleteGameFromGameList /// <summary> /// Делает callback-вызов у пользователя, который хочет получить список текущих игр /// </summary> /// <param name="userName">Имя пользователя</param> public async void GetCurrentGamesAsync(string userName) { await Task.Factory.StartNew(() => { UserList .ForEach(user => { if (user.UserName == userName) user.Callback?.SendGameListCallback(GameList); }); }); } // GetCurrentGamesAsync
protected async override void OnCreate(Bundle bundle) { base.OnCreate(bundle); CurrentPlatform.Init(); //List to hold results of following add operations List <Task> results = new List <Task>(); // Adding Users var users = new UserList(); var tableUser = AzureDataService.Client.GetTable <User>(); users.ForEach(u => { results.Add( tableUser.InsertAsync(u) ); }); // Adding videos var videos = new VideoList(); var tableVideo = AzureDataService.Client.GetTable <Video>(); videos.ForEach(v => { results.Add( tableVideo.InsertAsync(v) ); }); // Adding units var units = new UnitList(); var tableUnits = AzureDataService.Client.GetTable <Unit>(); units.ForEach(u => { results.Add( tableUnits.InsertAsync(u) ); }); // Adding Units for Users. Just going to populate table with data for now. TODO: User object should contain units. Store data properly on backend var userUnitList = new UserUnitList(); var tableUnitList = AzureDataService.Client.GetTable <UserUnit>(); userUnitList.ForEach(u => { results.Add( tableUnitList.InsertAsync(u) ); }); RefreshUI(results); //ThreadPool.QueueUserWorkItem(o => DownloadVideo()); }
} // SendInviteToAsync /// <summary> /// Даёт знать, что пользователь принял приглашение на игру /// </summary> /// <param name="from">От кого</param> /// <param name="to">Кому</param> public async void AcceptInviteAsync(string from, string to) { await Task.Factory.StartNew(() => { var players = new User[2]; UserList.ForEach(user => { if (from == user.UserName) { players[0] = user; } // if if (to == user.UserName) { players[1] = user; } // if }); players[0].Callback.AcceptInviteCallback(from, to); players[1].Callback.AcceptInviteCallback(from, to); }); } // AcceptInviteAsync