/// <summary> /// получаем данные о распределении карт между реальным и фейковыми игроками /// </summary> public static GettingMainInfoModel GetInfoAboutPlayers(ApiMainGameModel data) { try { // создаем удобную модель данных var gameModel = new MainModel(data); if (gameModel == null || gameModel.Users.Count() != InfoFromAnotherScena.CountUser) { return(null); } // получаем реального пользователя var realUser = gameModel.Users.FirstOrDefault(a => a.UserId == ApiClientScript.CurrentUserId); if (realUser == null) { return(null); } // получаем всех фейковых пользователей var fakeUsers = gameModel.Users.Where(a => a.UserId != ApiClientScript.CurrentUserId).ToList(); return(new GettingMainInfoModel() { RealUser = realUser, FakeUsers = fakeUsers, GameModel = gameModel }); } catch (Exception ex) { Debug.Log(ex.Message); return(new GettingMainInfoModel()); } }
/// <summary> /// отправляем карты в сброс /// </summary> public static ApiMainGameModel PutCardsInSbros() { try { var data = new ApiPutCardsInSbros(ApiClientScript.CurrentUserId, ApiClientScript.SelectedCardsIds.ToArray(), ApiClientScript.SessionId); var str = JsonUtility.ToJson(data); var result = new ApiMainGameModel(); var url = "http://localhost:61934/api/ApiMain/PutCardsInSbros?data=" + str; LoadFromServer(url); if (Text == "") { Debug.Log("PutCardsInSbros text=null"); } var query = JsonUtility.FromJson <ApiResultModel>(Text); if (query == null) { return(null); } if (!string.IsNullOrEmpty(query.error)) { Debug.Log(query.error); return(null); } result = query.data; return(result); } catch (Exception ex) { Debug.Log($"PutCardsInSbros {ex.Message}"); return(null); } }
/// <summary> /// берем карты из колоды /// </summary> public static ApiMainGameModel GetCardsFromPack(int count, int userId, int sessionId) { try { var data = new ApiGetCardsFromPackModel(count, userId); var result = new ApiMainGameModel(); var url = "http://localhost:61934/api/ApiMain/GetCardsFromPack?count=" + count + "&user_id=" + userId + "&session_id=" + sessionId; //var url = "http://localhost:61934/api/GeneratePack/GetCards?count="+count+"&user_id="+userId+"&session_id="+sessionId; var str = JsonUtility.ToJson(data); LoadFromServer(url); if (Text == "") { Debug.Log("GetCardsFromPack text=null"); } var query = JsonUtility.FromJson <ApiResultModel>(Text); if (query == null) { return(null); } if (!string.IsNullOrEmpty(query.error)) { Debug.Log(query.error); return(null); } result = query.data; return(result); } catch (Exception ex) { Debug.Log($"GetCardsFromPack {ex.Message}"); return(null); } }
// получаем модель игровой колоды на данный момент public static ApiMainGameModel GetCurrentPack(int session_id) { try { var data = new ApiResultModel(); var result = new ApiMainGameModel(); var url = "http://localhost:61934/api/ApiMain/GetCurrentPack?session_id=" + session_id; LoadFromServer(url); if (Text == "") { Debug.Log("GetCurrentPack text = null"); } var query = JsonUtility.FromJson <ApiResultModel>(Text); if (query == null) { return(null); } if (!string.IsNullOrEmpty(query.error)) { Debug.Log(query.error); return(null); } result = query.data; return(result); } catch (Exception ex) { Debug.Log($"GetCurrentPack {ex.Message}"); return(null); } }
public MainModel(ApiMainGameModel apiModel) { Pack = new PackModel(apiModel.pack); Sbros = new PackModel(apiModel.sbros); Users = new List <UserModel>(); apiModel.users.ToList().ForEach(usr => { Users.Add(new UserModel(usr)); }); }
// Start is called before the first frame update void Start() { goOut.onClick.AddListener(GoOutTaskOnClick); modell = HttpQueryManager.GetCurrentPack(SessionId); if (CurrentUserId == -1) { CurrentUserId = modell?.users?.FirstOrDefault(a => !a.is_connected)?.user_id ?? 0; modell = HttpQueryManager.ActivateUser(CurrentUserId, SessionId); } SelectedCardsIds = modell.selected_cards_ids.ToList(); SetSceneElements(modell); buff = 110; }
/// <summary> /// запрос к апишке на создание новой колоды на заданное количество игроков /// </summary> public static ApiMainGameModel GetCardsForPlayers(int userCount) { try { var result = new ApiMainGameModel(); if (userCount < 0) { return(null); } var url = "http://localhost:61934/api/ApiMain/GeneratePack?count_users=" + userCount; UnityWebRequest www = UnityWebRequest.Get(url); LoadFromServer(url); if (Text == "") { Debug.Log("GetCardsForPlayers text = null"); } Debug.Log("fuckk"); Debug.Log(Text); var query = JsonUtility.FromJson <ApiResultModel>(Text); if (query == null) { return(null); } if (!string.IsNullOrEmpty(query.error)) { Debug.Log(query.error); return(null); } result = query.data; Debug.Log("fuckk"); Debug.Log(result); return(result); } catch (Exception ex) { Debug.Log($"GetCardsForPlayers {ex.Message}"); return(null); } }
// Update is called once per frame void Update() { buff++; if (buff == 120) { GameModel .Users.First(a => a.UserId == CurrentUserId) .CardsModel.ForEach(a => { Destroy(a.Card.gameObject); }); GameModel? .Users?.Where(a => a.UserId != CurrentUserId && !a.IsConnected) .ToList()? .ForEach(usr => { usr?.CardsModel?.ForEach(a => { if (a?.Card?.gameObject != null) { Destroy(a.Card.gameObject); } }); }); if (SelectedCardsTransformList.Any()) { SelectedCardsTransformList.ForEach(a => { if (a?.gameObject != null) { Destroy(a.gameObject); } }); SelectedCardsTransformList.Clear(); } modell = HttpQueryManager.GetCurrentPack(SessionId); SelectedCardsIds = modell.selected_cards_ids.ToList(); SetSceneElements(modell); if (modell.users.Any(a => !a.is_connected && !a.loser)) { infoText.text = "Ждем игроков..."; infoText.gameObject.SetActive(true); IsBlocked = true; } else { if (modell.users.First(a => a.user_id == CurrentUserId).winner) { MessageManager.ErrorMessage(ok, lose, message, panel, $" Вы победили!", TypeNotificationEnum.Win, cansel, toSbros, take, go); IsBlocked = true; HttpQueryManager.DeleteSession(); return; } IsBlocked = false; if (modell.users.First(a => a.user_id == CurrentUserId).is_active_user) { infoText.text = "Ваш ход"; infoText.gameObject.SetActive(true); if (modell.users.First(a => a.user_id == CurrentUserId).loser&& !IsTryToStayAlive) { MessageManager.ErrorMessage(ok, lose, message, panel, $" Вы проиграли!", TypeNotificationEnum.Boomb, cansel, toSbros, take, go); return; } } else { infoText.gameObject.SetActive(false); IsBlocked = true; goOut.gameObject.SetActive(true); } } buff = 0; } if (Input.GetMouseButtonDown(0) && !IsBlocked) { Vector2 cubeRay = Camera.main.ScreenToWorldPoint(Input.mousePosition); RaycastHit2D cubeHit = Physics2D.Raycast(cubeRay, Vector2.zero); if (cubeHit) { if (SelectedCard == cubeHit.collider.name) { SelectedCard = ""; var card = GameModel .Users .First(a => a.UserId == CurrentUserId) .CardsModel .First(a => a.CardNumber.ToString() == cubeHit.collider.name).Card; card.transform.GetComponent <SpriteRenderer>().color = new Color(1F, 1F, 1F, 1); } else { if (string.IsNullOrEmpty(SelectedCard)) { SelectedCard = cubeHit.collider.name; var card = GameModel .Users .First(a => a.UserId == CurrentUserId) .CardsModel .First(a => a.CardNumber.ToString() == cubeHit.collider.name).Card; card.transform.GetComponent <SpriteRenderer>().color = new Color(0.2F, 0.3F, 0.4F, 0.5F); } } } } }
public void SetSceneElements(ApiMainGameModel model) { try { MessageManager.TurnOffElements(ok, message, panel, lose, fail); if (CurrentUserId != -1) { var information = Manager.GetInfoAboutPlayers(model); if (information == null || information.RealUser == null) { MessageManager.ErrorMessage(ok, lose, message, panel, $" Произошла внутренняя \n ошибка, " + $"\n попробуйте еще раз!", TypeNotificationEnum.Error); return; } // создаем удобную модель данных GameModel = information.GameModel; // получаем реального пользователя var realUser = information.RealUser; take.gameObject.SetActive(true); // получаем всех фейковых пользователей var fakeUsers = information.FakeUsers; var players = new List <Transform>(); // нужно, чтобы расположение вееров карт было правильным if (InfoFromAnotherScena.CountUser != 3) { players.Add(player1); players.Add(player3); players.Add(player4); players.Add(player2); } else { players.Add(player1); players.Add(player2); players.Add(player3); players.Add(player4); } // сопоставляем каждому пользователю свою колоду int buff = 0; fakeUsers.ForEach(a => { a.UserPack = players[buff]; buff++; }); koloda.text = "Колода: " + model.pack.count; sbros.text = "Сброс: " + model.sbros.count; Manager.SetCardInPole(fakeUsers, realUser.CardsModel, realPlayer, realPlayerTwoRow, player1, player3, player4, selectedCard, InfoFromAnotherScena.CountUser); } } catch (Exception ex) { Debug.Log(ex.Message); MessageManager.ErrorMessage(ok, lose, message, panel, $" Ошибка!", TypeNotificationEnum.Error, cansel, toSbros, take, go); IsBlocked = true; } }