예제 #1
0
    //запуск корутины движения
    public virtual void move(NetworkStreetPath path)
    {
        if (StepsInJail == 0)
        {
            if (!isMoving && !corutine)
            {
                corutine = true;
                way      = _dbWork.GetWay(currentStreetPath.GetIdStreetPath(),
                                          path.GetIdStreetPath());
                if (currentSteps + way.Count > maxSteps && !isGonnaBeCathced && !alreadyCheat)
                {
                    NetworkGameController.aboutPlayer += "Игрок " + NickName + " пытается смухлевать" + "\n";
                    _gameCanvas.OpenWarningWindow(this);
                    isCheating = true;
                }

                _gameCanvas.OnOffSavedButtons();
                StartCoroutine(Go());
            }
        }
        else
        {
            _gameCanvas.ShowInfoAboutEvent("Вы заключены под стражу" + "\n" + "Осталось ходов: " + StepsInJail);
        }
    }
예제 #2
0
 //получить информацию об улице из бд
 public void TakeData(NetworkStreetPath streetPath)
 {
     this.idStreetParent = streetPath.GetIdStreetParent();
     this.idStreetPath   = streetPath.GetIdStreetPath();
     this.renta          = streetPath.GetRenta();
     this.start          = streetPath.start;
     this.end            = streetPath.end;
     this.isBridge       = streetPath.isBridge;
     this.namePath       = streetPath.namePath;
     this.CanBuy         = streetPath.canBuy;
     this.nameOfPrefab   = streetPath.nameOfPrefab;
 }
예제 #3
0
 public override void move(NetworkStreetPath path)
 {
     if (StepsInJail == 0)
     {
         if (!isMoving && !corutine)
         {
             corutine = true;
             way      = _dbWork.GetWay(currentStreetPath.GetIdStreetPath(),
                                       path.GetIdStreetPath());
             isCheating = true;
             _gameCanvas.OnOffSavedButtons();
             StartCoroutine(GoBot());
         }
     }
 }
예제 #4
0
    //замена бота на игрока, базируясь на данных бота
    public void GetData(NetworkPlayer player, string nickName)
    {
        this.currentSteps = player.CurrentSteps;
        this.destination  = player.Destination;
        this.idPlayer     = player.IdPlayer;
        this.nickName     = nickName;
        this.isBankrupt   = player.IsBankrupt;
        this.maxSteps     = player.MaxSteps;
        this.money        = player.Money;
        this.speed        = player.Speed;
        this.isBot        = player.isBot;

        _dbWork = Camera.main.GetComponent <NetworkDBwork>();


        this.currentStreetPath = findMyPath(destination);
    }
예제 #5
0
    //показать информацию об объекте
    private void onButtonInfoClick(int id, int type)
    {
        //type = 1 - streetspaths; 2 - players; 3 - builds

        string info = "";

        switch (type)
        {
        case 1:
            NetworkPathForBuy 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
            {
                NetworkStreetPath 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);
    }
예제 #6
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;
            NetworkStreetPath 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";
        NetworkPathForBuy 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();
    }
예제 #7
0
    //Корутина движения
    private IEnumerator Go()
    {
        if (alreadyCheat)
        {
            _gameCanvas.ShowInfoAboutEvent("Вы уже мухлевали на этом ходе :(");
            corutine = false;
            yield break;
        }

        bool tried = isCheating;

        yield return(new WaitUntil(() => isCheating == false));

        if (tried && isGonnaBeCathced)
        {
            if (Random.Range(0, 2) != 1)
            {
                NetworkGameController.aboutPlayer += "Игрок " + NickName + " не попался \n";
                alreadyCheat     = true;
                isGonnaBeCathced = false;
            }
            else
            {
                NetworkGameController.aboutPlayer += "Игрок " + NickName + " попался \n";
                corutine = false;
                _gameCanvas.gameObject.GetComponent <NetworkGameController>().cathedPlayer();
                yield break;
            }
        }
        else if (tried)
        {
            corutine = false;
            yield break;
        }


        bool endFirstStep           = false;
        int  num                    = way.Count;
        NetworkStreetPath 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++;
        }

        corutine = false;
        _gameCanvas.OnOffSavedButtons();
        if (tried && isGonnaBeCathced)
        {
            _gameCanvas.GetComponent <NetworkGameController>().nextStep();
        }
    }
예제 #8
0
 //обновить данные о части улицы
 public void updatePath(NetworkStreetPath path)
 {
     paths[path.GetIdStreetPath()] = path;
 }
예제 #9
0
    //заполнение массивов игроков, улиц, частей улиц и зданий, исходя из данных в базе данных
    public void GetEverithing()
    {
        players        = new NetworkPlayer[dataService.getPlayers().Count + 1];
        builds         = new NetworkBuild[dataService.getBuilds().Count + 1];
        streets        = new NetworkStreet[dataService.getStreets().Count + 1];
        paths          = new NetworkStreetPath[dataService.getStreetPaths().Count + 1];
        pathForBuys    = new List <NetworkPathForBuy>();
        govermentPaths = new List <NetworkGovermentPath>();

        foreach (Streets streetse in dataService.getStreets())
        {
            List <StreetPaths> streetPathses = dataService.getAllPathsOfStreet(streetse.IdStreet);
            int[] pathses = new int[streetPathses.Count];

            int k = 0;
            foreach (StreetPaths streetPathse in streetPathses)
            {
                PathsForBuy ifExist = dataService.getPathForBuyById(streetPathse.IdStreetPath);

                if (ifExist != null)
                {
                    List <Builds> buildses = dataService.getBuildsOnTheStreet(streetPathse.IdStreetPath);
                    int[]         buildes  = new int[buildses.Count];

                    int i = 0;
                    foreach (Builds buildse in buildses)
                    {
                        builds[buildse.IdBuild] = buildse.getNetworkBuild();
                        buildes[i] = buildse.IdBuild;
                        i++;
                    }

                    paths[streetPathse.IdStreetPath] = ifExist.GetNetworkPathForBuy(streetPathse, buildes);
                    pathForBuys.Add(ifExist.GetNetworkPathForBuy(streetPathse, buildes));
                }
                else
                {
                    List <Events> eventses = dataService.getEventsOnTheStreet(streetPathse.IdStreetPath);
                    Event[]       events   = new Event[eventses.Count];


                    int j = 0;
                    if (!streetPathse.NameOfPrefab.Equals("Court"))
                    {
                        events = new Event[eventses.Count + 1];
                        j++;
                    }

                    foreach (Events eventse in eventses)
                    {
                        events[j] = eventse.GetEvent();
                        j++;
                    }

                    paths[streetPathse.IdStreetPath] = streetPathse.GetNetworkGovermentPath(events);
                    if (streetPathse.NameOfPrefab.Equals("Court"))
                    {
                        court = streetPathse.GetNetworkGovermentPath(events);
                    }

                    govermentPaths.Add(streetPathse.GetNetworkGovermentPath(events));
                }

                pathses[k] = streetPathse.IdStreetPath;
                k++;
            }

            streets[streetse.IdStreet] = streetse.GetNetworkStreet(pathses);
        }

        foreach (Players player in dataService.getPlayers())
        {
            players[player.IdPlayer] = player.GetNetworkPlayer();
        }

        players[0] = new NetworkPlayer();
        streets[0] = new NetworkStreet(0, "", "", new int[1]);
        paths[0]   = new NetworkStreetPath(0, "", 0, 0, Vector3.zero, Vector3.zero, false, "");
        builds[0]  = new NetworkBuild(0, "", "", 0, 0, false, 0, 0);
    }