Ejemplo n.º 1
0
 //поличить информацию из дб
 public void TakeData(PathForBuy PathForBuy)
 {
     base.TakeData(PathForBuy);
     this.idPlayer        = PathForBuy.IdPlayer;
     this.builds          = PathForBuy.Builds;
     this.priceStreetPath = PathForBuy.PriceStreetPath;
 }
Ejemplo n.º 2
0
 //кнструктор
 public ThingForTrade(PathForBuy pathforTrade, int price, Player forWhichPlayer, Player fromWhichPlayer)
 {
     PathforTrade    = pathforTrade;
     Price           = price;
     ForWhichPlayer  = forWhichPlayer;
     FromWhichPlayer = fromWhichPlayer;
 }
Ejemplo n.º 3
0
 //удаление из списка предложений товара
 public static void RemoveItemFromList(Player playerFrom, Player playerFor, PathForBuy path)
 {
     if (playerFrom.IdPlayer < playerFor.IdPlayer)
     {
         foreach (ThingForTrade thingForTrade in things[playerFrom.IdPlayer, playerFor.IdPlayer])
         {
             if (thingForTrade.ForWhichPlayer == playerFor && thingForTrade.FromWhichPlayer == playerFrom &&
                 thingForTrade.PathforTrade == path)
             {
                 things[playerFrom.IdPlayer, playerFor.IdPlayer].Remove(thingForTrade);
                 break;
             }
         }
     }
     else
     {
         foreach (ThingForTrade thingForTrade in things[playerFor.IdPlayer, playerFrom.IdPlayer])
         {
             if (thingForTrade.ForWhichPlayer == playerFor && thingForTrade.FromWhichPlayer == playerFrom &&
                 thingForTrade.PathforTrade == path)
             {
                 things[playerFor.IdPlayer, playerFrom.IdPlayer].Remove(thingForTrade);
                 break;
             }
         }
     }
 }
Ejemplo n.º 4
0
 //разблокировка улицы при выплате полной стоимости
 private static void UnBlockStreetPath(PathForBuy pathForBuy, Player ownerPlayer)
 {
     if (pathForBuy.IsBlocked && ownerPlayer.Money >= pathForBuy.PriceStreetPath)
     {
         pathForBuy.IsBlocked = false;
         ownerPlayer.Money   -= pathForBuy.PriceStreetPath;
     }
 }
Ejemplo n.º 5
0
 //добавление в список предложений товара
 public static void AddItemToList(Player playerFrom, Player playerFor, PathForBuy path)
 {
     if (playerFrom.IdPlayer < playerFor.IdPlayer)
     {
         things[playerFrom.IdPlayer, playerFor.IdPlayer].Add(new ThingForTrade(path, 0, playerFor, playerFrom));
     }
     else
     {
         things[playerFor.IdPlayer, playerFrom.IdPlayer].Add(new ThingForTrade(path, 0, playerFor, playerFrom));
     }
 }
Ejemplo n.º 6
0
 //обновить данные об участке для продажи
 public void updatePath(PathForBuy path)
 {
     paths[path.GetIdStreetPath()] = path;
     for (int i = 0; i < pathForBuys.Count; i++)
     {
         if (pathForBuys[i].GetIdStreetPath() == path.GetIdStreetPath())
         {
             pathForBuys[i] = path;
         }
     }
 }
Ejemplo n.º 7
0
    //блокировка улицы и возмещение её полной стоимости вместе с построенными зданиями игроку
    private static void BlockStreetPath(PathForBuy pathForBuy, Player ownerPlayer)
    {
        if (!pathForBuy.IsBlocked)
        {
            pathForBuy.IsBlocked = true;
            int sum = 0;
            sum += pathForBuy.PriceStreetPath;
            ownerPlayer.Money += sum;
        }

        else
        {
            UnBlockStreetPath(pathForBuy, ownerPlayer);
        }
    }
Ejemplo n.º 8
0
    //выбор компьютерным игроком пути
    private int ThinkOfWay()
    {
        List <int> ends = _dbWork.GetPossibleEnds(currentStreetPath.GetIdStreetPath(), maxSteps - currentSteps);

        foreach (int possibleEnd in ends)
        {
            PathForBuy path = _dbWork.GetPathForBuy(possibleEnd);
            if (CheckIfNeed(possibleEnd) && (path == null || path.IdPlayer == 0))
            {
                return(possibleEnd);
            }
        }

        int number = Random.Range(0, ends.Count - 2);

        Debug.Log(ends.Count + " " + number);
        return(ends[number]);
    }
Ejemplo n.º 9
0
    //показать информацию об объекте
    private void onButtonInfoClick(int id, int type)
    {
        //type = 1 - streetspaths; 2 - players; 3 - builds

        string info = "";

        switch (type)
        {
        case 1:
            PathForBuy pathForBuy = getDbWork().GetPathForBuy(id);
            if (pathForBuy != null)
            {
                info = "Название: " + pathForBuy.namePath + "\n" +
                       "Владелец: " + getDbWork().GetPlayerbyId(pathForBuy.IdPlayer).NickName +
                       "\n" + "Рента: " + pathForBuy.GetRenta() + "\n" + "Здания: " + pathForBuy.GetBuildsName()
                       + "\n\n Информация об улице: " +
                       getDbWork().getStreetById(pathForBuy.GetIdStreetParent()).AboutStreet;
            }
            else
            {
                StreetPath path = getDbWork().GetPathById(id);
                info = "Название: " + path.namePath + "\n" +
                       "Гос. учереждение \n\n Информация об улице: " +
                       getDbWork().getStreetById(path.GetIdStreetParent()).AboutStreet;
            }

            break;

        case 2:
            info = getDbWork().GetPlayerbyId(id).NickName + " " + getDbWork().GetPlayerbyId(id).Money;
            break;

        case 3:
            info = getDbWork().GetBuild(id).NameBuild + "\n" + getDbWork().GetBuild(id).AboutBuild;
            break;
        }


        ButtonWithInfo.GetComponentInChildren <Text>().text = info + "\n\n" + "(нажмите, чтобы закрыть)";
        ButtonWithInfo.SetActive(true);
    }
Ejemplo n.º 10
0
    //перемещение к выбранной улице, включение кнопки зданий на этой улице и важной информации об улице
    private void onButtonStreetClick(int idPath)
    {
        if (buildsButton.activeInHierarchy && idPath == currentIdPath)
        {
            buildsButton.SetActive(false);
            ImportantInfoAboutStreetText.transform.parent.gameObject.SetActive(false);
        }
        else
        {
            currentIdPath = idPath;
            buildsButton.SetActive(true);
            idStreetWhichOPened = idPath;
            ImportantInfoAboutStreetText.transform.parent.gameObject.SetActive(true);
            ImportantInfoAboutStreetText.gameObject.SetActive(true);

            PathForBuy pathForBuy = getDbWork().GetPathForBuy(idPath);

            camerasScript.SetActiveFirstCamera();
            //  if (camerasScript.isActiveOrtoCamera())
            //  {
            camerasScript.moveOrtoCamera(getDbWork().GetPathById(idPath).transform.position);
            // }


            if (pathForBuy != null)
            {
                ImportantInfoAboutStreetText.text = "Название: " + pathForBuy.namePath + "\n" +
                                                    "Владелец: " + getDbWork().GetPlayerbyId(pathForBuy.IdPlayer)
                                                    .NickName +
                                                    "\n" + "Рента: " + pathForBuy.GetRenta() + "\n" + "Здания: " +
                                                    pathForBuy.GetBuildsName();
            }
            else
            {
                ImportantInfoAboutStreetText.text = "Название: " + getDbWork().GetPathById(idPath).namePath + "\n" +
                                                    "Гос. учереждение";
            }
        }
    }
Ejemplo n.º 11
0
    //если игрок закончил ход на чужой улице, то с него снимается плата в пользу игрока, владеющего этой улицей
    void checkPlayer(int idPlayer)
    {
        Player ourPlayer = _dBwork.GetPlayerbyId(idPlayer);

        if (ourPlayer.GetCurrentStreetPath().canBuy)
        {
            PathForBuy path = _dBwork.GetPathForBuy(ourPlayer.GetCurrentStreetPath().GetIdStreetPath());
            if (path.IdPlayer != 0 && path.IdPlayer != idPlayer)
            {
                path.StepOnMe(idPlayer);
            }
        }
        else
        {
            GovermentPath path = _dBwork.GetGovermentPath(ourPlayer.GetCurrentStreetPath().GetIdStreetPath());
            path.StepOnMe(idPlayer);
        }

        if (ourPlayer.Money <= 0)
        {
            CheckForBankrupt(ourPlayer);
        }
    }
Ejemplo n.º 12
0
    //корутина движенния бота
    private IEnumerator GoBot()
    {
        if (!isCheating)
        {
            _gameCanvas.OnOffSavedButtons();
            way = _dbWork.GetWay(currentStreetPath.GetIdStreetPath(), ThinkOfWay());

            bool tried = (Random.value * 100 > 95);

            if (tried)
            {
                GameController.aboutPlayer += "Игрок " + NickName + " пытался смухлевать \n";
                if (Random.Range(0, 2) != 1)
                {
                    GetCheat();
                    GameController.aboutPlayer += "Игрок " + NickName + " не попался \n";
                    alreadyCheat = true;
                }
                else
                {
                    GameController.aboutPlayer += "Игрок " + NickName + " попался \n";
                    corutine = false;
                    _gameCanvas.gameObject.GetComponent <GameController>().cathedPlayer();
                    yield break;
                }
            }
        }

        while (currentSteps < maxSteps || isCheating && way.Count > 0)
        {
            bool       endFirstStep = false;
            int        num          = way.Count;
            StreetPath somewhere    = null;
            for (int i = 0; i < num; i++)
            {
                if (i != 0)
                {
                    somewhere = _dbWork.GetPathById(way.Dequeue());
                }

                if (i == 0 && !endFirstStep)
                {
                    somewhere = _dbWork.GetPathById(way.Dequeue());
                    if (currentStreetPath.isBridge &&
                        (currentStreetPath.start.Equals(somewhere.start) ||
                         currentStreetPath.start.Equals(somewhere.end)))
                    {
                        destination = currentStreetPath.start;
                        angle       = MapBuilder.Angle(transform.position, destination);
                        yield return(new WaitUntil(() => transform.position == destination));
                    }
                    else
                    {
                        destination = currentStreetPath.end;
                        angle       = MapBuilder.Angle(transform.position, destination);
                        yield return(new WaitUntil(() => transform.position == destination));
                    }

                    endFirstStep = true;
                    i--;
                    continue;
                }

                if (i == num - 1)
                {
                    destination = MapBuilder.GetCenter(somewhere.start, somewhere.end);
                    angle       = MapBuilder.Angle(transform.position, destination);

                    currentStreetPath = somewhere;
                    yield return(new WaitUntil(() => transform.position == destination));
                }
                else
                {
                    if (somewhere.isBridge && transform.position.Equals(somewhere.end))
                    {
                        destination = somewhere.start;
                        angle       = MapBuilder.Angle(transform.position, destination);
                        yield return(new WaitUntil(() => transform.position == destination));
                    }
                    else
                    {
                        destination = somewhere.end;
                        angle       = MapBuilder.Angle(transform.position, destination);
                        yield return(new WaitUntil(() => transform.position == destination));
                    }
                }

                currentSteps++;
            }
        }

        GameController.aboutPlayer += "Игрок " + NickName + " пришел на " + currentStreetPath.namePath + "\n";
        PathForBuy pathForBuy = _dbWork.GetPathForBuy(currentStreetPath.GetIdStreetPath());

        if (currentStreetPath.CanBuy && pathForBuy.IdPlayer == 0 && money > pathForBuy.PriceStreetPath)
        {
            GameController.aboutPlayer += "Игрок " + NickName + " купил " + currentStreetPath.namePath + "\n";
            pathForBuy.Buy(this);
        }

        corutine = false;
        ready    = true;

        _gameCanvas.OnOffSavedButtons();
    }
Ejemplo n.º 13
0
    //предложение о торговле от компьютерного игрока
    private void TryToTrade()
    {
        //монополии (не обязательно полные) бота
        List <int> monopolies = GetMyMonopolies(_dbWork.GetMyPathes(idPlayer));

        //поиск pathforbuy которого не хватает до полной монополии
        int        count = 0;
        PathForBuy trade = null;

        foreach (int monopoly in monopolies)
        {
            foreach (StreetPath path in _dbWork.GetPathsOfStreet(monopoly))
            {
                if (trade == null)
                {
                    PathForBuy pathForBuy = _dbWork.GetPathForBuy(path.GetIdStreetPath());
                    if (path.canBuy && pathForBuy.IdPlayer != 0 && pathForBuy.IdPlayer != idPlayer)
                    {
                        trade = pathForBuy;
                        count = 1;
                        break;
                    }
                }
            }

            if (trade != null)
            {
                break;
            }
        }

        //если нет таких, то выходим
        if (trade == null)
        {
            return;
        }

        //поиск, какому игроку принадлежит улица
        Player player = _dbWork.GetPlayerbyId(trade.IdPlayer);

        Trade.CreateListThings(player, this);
        Trade.AddItemToList(player, this, trade);

        //проверяем, есть ли у этого игрока ещё улицы из этой монополии
        foreach (StreetPath streetPath in _dbWork.GetPathsOfStreet(trade.GetIdStreetParent()))
        {
            PathForBuy path = _dbWork.GetPathForBuy(streetPath.GetIdStreetPath());
            if (streetPath.CanBuy && path.GetIdStreetPath() != trade.GetIdStreetPath() &&
                path.IdPlayer == trade.IdPlayer)
            {
                Trade.AddItemToList(player, this, path);
                count++;
            }
        }

        //если достаточно денег, то записываем деньги в сделку и открываем игроку канву с предложением о сделке
        if (count * price <= money)
        {
            Trade.AddMoneyToList(player, this, count * price);
            if (!player.IsBot())
            {
                _gameCanvas.OpenTradeFromBotToPlayer(this, player, count * price);
            }
            else
            {
                player.ThinkAboutTrade(this);
            }
        }
        else
        {
            //прописать отмену сделки
        }
    }