示例#1
0
    /// <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());
        }
    }
示例#2
0
        /// <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);
            }
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
        // получаем модель игровой колоды на данный момент
        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);
            }
        }
示例#5
0
 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));
     });
 }
示例#6
0
    // 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;
    }
示例#7
0
        /// <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);
            }
        }
示例#8
0
    // 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);
                    }
                }
            }
        }
    }
示例#9
0
    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;
        }
    }