示例#1
0
    //снятие ренты с игрока, остановившегося на этом участке и добавление этой суммы владельцу улицы
    public void StepOnMe(int idPlayer)
    {
        DBwork dBwork = Camera.main.GetComponent <DBwork>();

        dBwork.GetPlayerbyId(idPlayer).Money      -= renta;
        dBwork.GetPlayerbyId(this.idPlayer).Money += renta;
    }
示例#2
0
    //загрузка игры
    public static void loadGame(string dbName)
    {
        DBwork dBwork = Camera.main.GetComponent <DBwork>();

        dBwork.SetGameDB(dbName);
        int count = dBwork.GetAllPlayers().Length;

        Trade.things = new List <ThingForTrade> [count, count];
    }
示例#3
0
 //создаем ссылку на канву игры, объявляет ход игрока
 void Start()
 {
     _dbWork     = Camera.main.GetComponent <DBwork>();
     _gameCanvas = _dbWork.GetGameCanvas();
     if (idPlayer == 1)
     {
         CurrentStep = true;
     }
 }
示例#4
0
    //получить экземпляр текущего DBWork
    private DBwork getDbWork()
    {
        if (_dBwork == null)
        {
            _dBwork = Camera.main.GetComponent <DBwork>();
        }

        return(_dBwork);
    }
示例#5
0
 //инициализация ДБворка
 void Start()
 {
     if (!SceneManager.GetActiveScene().name.Equals("GameNetwork"))
     {
         _dBwork = Camera.main.GetComponent <DBwork>();
     }
     else
     {
         _networkDBwork = Camera.main.GetComponent <NetworkDBwork>();
     }
 }
示例#6
0
    //сброс истории, обновление ссылки на дбворк, бросок кубиков первого игрока
    void Start()
    {
        aboutPlayer = "";
        _dBwork     = Camera.main.GetComponent <DBwork>();

        _gameCanvas = gameObject.GetComponent <GameCanvas>();
        _dBwork.GetPlayerbyId(1).NextStep();
        CurrentPlayer = _dBwork.GetPlayerbyId(1);

        posFirstDice  = firstDice.transform.position;
        posSecondDice = secondDice.transform.position;
    }
示例#7
0
    //отправка игрока в тюрьму
    public void GoToJail(int idPlayer, GameCanvas canv)
    {
        DBwork dBwork   = Camera.main.GetComponent <DBwork>();
        Event  newEvent = dBwork.getCourt().events[0];

        if (idPlayer == 1)
        {
            canv.ShowInfoAboutEvent(newEvent.Name + "\n" + newEvent.Info);
        }

        dBwork.GetPlayerbyId(idPlayer).InJail(3);
        dBwork.GetPlayerbyId(idPlayer).Money += newEvent.Price;
    }
示例#8
0
    //получить информацию об игроке из бд
    public void GetData(Player player)
    {
        this.currentSteps = player.CurrentSteps;
        this.destination  = player.Destination;
        this.idPlayer     = player.IdPlayer;
        this.nickName     = player.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 <DBwork>();


        this.currentStreetPath = findMyPath(destination);
    }
示例#9
0
    //нахождение соседних частей улиц с этой
    public void GetNeighbors()
    {
        DBwork     ds     = Camera.main.GetComponent <DBwork>();
        List <int> neighs = new List <int>();

        StreetPath[] streetPaths = ds.GetAllPaths();
        for (int i = 1; i < streetPaths.Length; i++)
        {
            if (streetPaths[i].end.Equals(end) || streetPaths[i].start.Equals(start) ||
                streetPaths[i].end.Equals(start) ||
                streetPaths[i].start.Equals(end))
            {
                neighs.Add(streetPaths[i].idStreetPath);
            }
        }

        neighborsId = neighs.ToArray();
    }
示例#10
0
    //вызов событий, если игрок остановился на этом участке
    public void StepOnMe(int idPlayer)
    {
        DBwork dBwork = Camera.main.GetComponent <DBwork>();

        if (idPlayer == 1 && dBwork.GetPlayerbyId(idPlayer).isInJail())
        {
            return;
        }

        Event newEvent = GetRandomEvent();

        dBwork.GetPlayerbyId(idPlayer).Money += newEvent.Price;

        if (idPlayer == 1)
        {
            if (_gameCanvas == null)
            {
                _gameCanvas = dBwork.GetGameCanvas();
            }

            _gameCanvas.ShowInfoAboutEvent(newEvent.Name + "\n" + newEvent.Info + "\n" + "Стоимость: " +
                                           newEvent.Price);
        }
    }
示例#11
0
        private void RegisterButton_Click(object sender, RoutedEventArgs e) //  Кнопка регистрации нового игрока
        {
            //  Поля неправильно заполнены
            if (PlayerNickNameBox.Text == "" || PlayerNickNameBox.Text == "Enter player nickname" || PlayerNameBox.Text == "" || PlayerNameBox.Text == "Enter player name" || PlayerNameBox.Text == "Player must have name!" || PlayerNickNameBox.Text == "Player must have nickname!")
            {
                if (PlayerNickNameBox.Text == "" || PlayerNickNameBox.Text == "Enter player nickname")
                {
                    PlayerNickNameBox.Foreground = new SolidColorBrush(Colors.Red);
                    PlayerNickNameBox.Text       = "Player must have nickname!";
                }

                if (PlayerNameBox.Text == "" || PlayerNameBox.Text == "Enter player name")
                {
                    PlayerNameBox.Foreground = new SolidColorBrush(Colors.Red);
                    PlayerNameBox.Text       = "Player must have name!";
                }
            }
            //  Поля правильно заполнены
            else
            {
                //  Сохраняем имя и ник
                playerName     = PlayerNameBox.Text;
                playerNickName = PlayerNickNameBox.Text;
                Close();                                                                                //  Закрываем окно регистрации
                if (DBwork.IsPlayerExist(playerName, playerNickName))                                   //  Если в базе уже есть игрок с тиким именем и фамилией
                {
                    OneHundredAndEighty.NewPlayer.ShowExistingPlayerWindow(playerName, playerNickName); //  Показываем предупреждение
                    OneHundredAndEighty.NewPlayer.ShowNewPlayerRegisterWindow();                        //  Заново открываем окно регистрации
                }
                else //    Игрока в базе нет   -   можно сохранять
                {
                    DBwork.SaveNewPlayer(playerName, playerNickName);                            //  Сохраняем игрока
                    OneHundredAndEighty.NewPlayer.ShowWelcomeWindow(playerName, playerNickName); //  Показываем окно приветствия
                }
            }
        }
示例#12
0
    //создание и заполнение карты, основываясь на данных из базы данных
    void Start()
    {
        DBwork data = Camera.main.GetComponent <DBwork>();

        StreetPath[] pathForBuys = data.GetAllPaths();
        for (int i = 1; i < pathForBuys.Length; i++)
        {
            GameObject newStreetPath = Instantiate(emptyStreet) as GameObject;
            newStreetPath.name = "StreetPath" + i;
            BoxCollider coll = newStreetPath.GetComponent <BoxCollider>();
            coll.size = new Vector3(GetVectorLength(pathForBuys[i].end - pathForBuys[i].start), 3, 8);

            if (pathForBuys[i].canBuy)
            {
                newStreetPath.AddComponent <PathForBuy>();
                newStreetPath.GetComponent <PathForBuy>().TakeData(data.GetPathForBuy(i));
                newStreetPath.GetComponent <PathForBuy>().GetNeighbors();
                data.updatePath(newStreetPath.GetComponent <PathForBuy>());
            }
            else
            {
                newStreetPath.AddComponent <GovermentPath>();
                newStreetPath.GetComponent <GovermentPath>().TakeData(data.GetGovermentPath(i));
                if (newStreetPath.GetComponent <GovermentPath>().GetNameOfPrefab().Equals("Court"))
                {
                    data.SetCourt(newStreetPath.GetComponent <GovermentPath>());
//                    GameObject newBuild = Instantiate(police) as GameObject;
//                    newBuild.transform.position = GetCenter(pathForBuys[i].start, pathForBuys[i].end);
                }

                newStreetPath.GetComponent <GovermentPath>().GetNeighbors();
                data.updatePath(newStreetPath.GetComponent <GovermentPath>());
            }
            newStreetPath.transform.rotation =
                Quaternion.Euler(0f, Angle(pathForBuys[i].start, pathForBuys[i].end), 0f);
            newStreetPath.transform.position = GetCenter(pathForBuys[i].start, pathForBuys[i].end);
        }

        Build[] builds = data.GetAllBuilds();

        for (int i = 1; i < builds.Length; i++)
        {
            GameObject newBuild = Instantiate(emptyBuild) as GameObject;
            newBuild.name = builds[i].NameBuild;

            newBuild.AddComponent <Build>();
            newBuild.GetComponent <Build>().TakeData(builds[i]);
            data.updateBuild(newBuild.GetComponent <Build>());

            newBuild.transform.rotation = data.GetPathById(builds[i].IdStreetPath).transform.rotation;
            newBuild.transform.position = newBuild.GetComponent <Build>().Place;
            newBuild.SetActive(newBuild.GetComponent <Build>().Enable);
        }

        Player[] players = data.GetAllPlayers();

        for (int j = 1; j < players.Length; j++)
        {
            if (!players[j].IsBot())
            {
                GameObject newPlayer = Instantiate(emptyPlayer) as GameObject;
                newPlayer.GetComponent <Player>().GetData(players[1]);
                newPlayer.transform.position = players[1].Destination;
                data.updatePlayer(newPlayer.GetComponent <Player>()); transform.Find("/Town").GetComponent <Cameras>()
                .SetCamera(newPlayer.GetComponentInChildren <Camera>());
            }
            else
            {
                GameObject newBot = Instantiate(emptyBot) as GameObject;
                newBot.GetComponent <Bot>().GetData(players[j]);
                newBot.transform.position = players[j].Destination;
                data.updatePlayer(newBot.GetComponent <Bot>());
            }
        }

        data.createWays();
    }
示例#13
0
    //открыть окно торговли с этим игроком
    public void onButtonClickTrade(int idPlayerSecond)
    {
        //открываем меню торговли
        ChangeMenu(4);
        //обновляем ссылку на дбворк
        _dBwork = getDbWork();
        //создаем список товаров на продажу
        Trade.CreateListThings(getCurrentPlayer(), _dBwork.GetPlayerbyId(idPlayerSecond));
        //вешаем скрипт на кнопку подтверждения предложения
        ApplyTrade.onClick.AddListener(() =>
                                       Trade.TradeApply(getCurrentPlayer(), _dBwork.GetPlayerbyId(idPlayerSecond), this, moneyFirstPlayer,
                                                        moneySecondPlayer));
        //назначаем имя первого игрока
        firstPlayer.GetComponentInChildren <Text>().text = getCurrentPlayer().NickName;
        //узнаем улицы первого игрока
        List <int> pathsFirstPlayer = _dBwork.GetMyPathes(getCurrentPlayer().IdPlayer);

        //если торгуем с другим игроком
        if (idPlayerSecond != getCurrentPlayer().IdPlayer)
        {
            //назначаем имя второго игрока
            secondPlayer.GetComponentInChildren <Text>().text = _dBwork.GetPlayerbyId(idPlayerSecond).NickName;

            //собираем список улиц первого игрока в первом скроле
            foreach (var path in pathsFirstPlayer)
            {
                //если улица заложена, то она не отображается доступной к продаже
                if (_dBwork.GetPathForBuy(path).IsBlocked)
                {
                    continue;
                }

                GameObject prefButton = Instantiate(prefButStreetForTrade);
                prefButton.GetComponentInChildren <Text>().text = _dBwork.GetPathById(path).namePath;
                prefButton.GetComponent <RectTransform>().SetParent(scrollFirstPlayerStreets.content, false);
                prefButton.GetComponent <Button>().onClick
                .AddListener(() =>
                             onButtonAddOrDeleteOfferStreet(prefButton, getCurrentPlayer(),
                                                            _dBwork.GetPlayerbyId(idPlayerSecond), path));
            }

            //создаем список улиц второго игрока
            List <int> pathsSecondPlayer = _dBwork.GetMyPathes(idPlayerSecond);

            //собираем список улиц второго игрока во втором скроле
            foreach (var path in pathsSecondPlayer)
            {
                //если улица заложена, то она не отображается доступной к продаже
                if (_dBwork.GetPathForBuy(path).IsBlocked)
                {
                    continue;
                }

                GameObject prefButton = Instantiate(prefButStreetForTrade);
                prefButton.GetComponentInChildren <Text>().text = _dBwork.GetPathById(path).namePath;
                prefButton.GetComponent <RectTransform>().SetParent(scrollSecondPlayerStreets.content, false);
                prefButton.GetComponent <Button>().onClick
                .AddListener(() =>
                             onButtonAddOrDeleteOfferStreet(prefButton, getCurrentPlayer(),
                                                            _dBwork.GetPlayerbyId(idPlayerSecond), path));
            }

            //отражаем максимальное количество денег первого игрока
            sliderMoneyFirst.maxValue = getCurrentPlayer().Money;
            //включаем слайдер первого игрока
            sliderMoneyFirst.gameObject.SetActive(true);

            //отражаем максимальное количество денег второго игрока
            sliderMoneySecond.maxValue = _dBwork.GetPlayerbyId(idPlayerSecond).Money;
            //включаем слайдер второго игрока
            sliderMoneySecond.gameObject.SetActive(true);

            //разрешаем заполнение игроком полей денег
            InputFieldMoneyFirst.gameObject.GetComponent <CanvasGroup>().interactable = true;
            InputFieldMoneyFirst.text = moneyFirstPlayer.ToString();

            InputFieldMoneySecond.gameObject.GetComponent <CanvasGroup>().interactable = true;
            InputFieldMoneySecond.text = moneySecondPlayer.ToString();
        }
        //если открыли меню закладывания улиц
        else
        {
            //назначаем город вторым участником обмена
            secondPlayer.GetComponentInChildren <Text>().text = "Город";
            //Выключаем слайдеры
            sliderMoneyFirst.gameObject.SetActive(false);
            sliderMoneySecond.gameObject.SetActive(false);
            //запрещаем заполнение игроком полей денег
            InputFieldMoneyFirst.gameObject.GetComponent <CanvasGroup>().interactable  = false;
            InputFieldMoneySecond.gameObject.GetComponent <CanvasGroup>().interactable = false;

            //раскидываем улицы по скролам в зависимости от того заложены они или нет
            foreach (var path in pathsFirstPlayer)
            {
                GameObject prefButton = Instantiate(prefButStreetForTrade);
                prefButton.GetComponentInChildren <Text>().text = _dBwork.GetPathById(path).namePath;

                if (_dBwork.GetPathForBuy(path).IsBlocked)
                {
                    prefButton.GetComponent <RectTransform>().SetParent(scrollSecondPlayerStreets.content, false);
                }
                else
                {
                    prefButton.GetComponent <RectTransform>().SetParent(scrollFirstPlayerStreets.content, false);
                }

                prefButton.GetComponent <Button>().onClick
                .AddListener(() =>
                             onButtonAddOrDeleteOfferStreet(prefButton, getCurrentPlayer(),
                                                            getCurrentPlayer(), path));
            }
        }
    }
示例#14
0
    public void OpenTradeFromBotToPlayer(Player fromBot, Player forPlayer, int moneyBot)
    {
        //открываем меню торговли
        ChangeMenu(4);

        //обновляем ссылку на дбворк
        _dBwork = getDbWork();

        //Сумма, которую готов предложить бот
        moneyFirstPlayer = moneyBot;

        //вешаем скрипт на кнопку подтверждения предложения
        ApplyTrade.onClick.AddListener(() =>
                                       Trade.TradeApply(fromBot, forPlayer, this, moneyFirstPlayer,
                                                        moneySecondPlayer));

        //назначаем имя первого игрока (бота)
        firstPlayer.GetComponentInChildren <Text>().text = fromBot.NickName;

        //узнаем улицы первого игрока (бота)
        List <int> pathsFirstPlayer = _dBwork.GetMyPathes(fromBot.IdPlayer);

        //назначаем имя второго игрока
        secondPlayer.GetComponentInChildren <Text>().text = forPlayer.NickName;

        //узнаем улицы, которые бот предложил к продаже
        List <int> pathsForTrade = Trade.GetPathsFromTrade(fromBot, forPlayer);

        //собираем список улиц первого игрока (бота) в первом скроле
        foreach (var path in pathsFirstPlayer)
        {
            //если улица заложена, то она не отображается доступной к продаже
            if (_dBwork.GetPathForBuy(path).IsBlocked)
            {
                continue;
            }


            GameObject prefButton = Instantiate(prefButStreetForTrade);
            prefButton.GetComponentInChildren <Text>().text = _dBwork.GetPathById(path).namePath;

            if (!CheckPathForTrade(pathsForTrade, path))
            {
                prefButton.GetComponent <RectTransform>().SetParent(scrollFirstPlayerStreets.content, false);
            }
            else
            {
                prefButton.GetComponent <RectTransform>().SetParent(scrollFirstPlayerOffer.content, false);
            }

            prefButton.GetComponent <Button>().onClick
            .AddListener(() =>
                         onButtonAddOrDeleteOfferStreet(prefButton, fromBot,
                                                        forPlayer, path));
        }

        //создаем список улиц второго игрока
        List <int> pathsSecondPlayer = _dBwork.GetMyPathes(forPlayer.IdPlayer);

        //собираем список улиц второго игрока во втором скроле
        foreach (var path in pathsSecondPlayer)
        {
            //если улица заложена, то она не отображается доступной к продаже
            if (_dBwork.GetPathForBuy(path).IsBlocked)
            {
                continue;
            }

            GameObject prefButton = Instantiate(prefButStreetForTrade);
            prefButton.GetComponentInChildren <Text>().text = _dBwork.GetPathById(path).namePath;
            if (!CheckPathForTrade(pathsForTrade, path))
            {
                prefButton.GetComponent <RectTransform>().SetParent(scrollSecondPlayerStreets.content, false);
            }
            else
            {
                prefButton.GetComponent <RectTransform>().SetParent(scrollSecondPlayerOffer.content, false);
            }

            prefButton.GetComponent <Button>().onClick
            .AddListener(() =>
                         onButtonAddOrDeleteOfferStreet(prefButton, fromBot,
                                                        forPlayer, path));
        }

        //отражаем максимальное количество денег первого игрока
        sliderMoneyFirst.maxValue = fromBot.Money;
        //включаем слайдер первого игрока
        sliderMoneyFirst.gameObject.SetActive(true);

        sliderMoneyFirst.value = moneyBot;

        //отражаем максимальное количество денег второго игрока
        sliderMoneySecond.maxValue = forPlayer.Money;
        //включаем слайдер второго игрока
        sliderMoneySecond.gameObject.SetActive(true);


        sliderMoneySecond.value = 0;

        //разрешаем заполнение игроком полей денег
        InputFieldMoneyFirst.gameObject.GetComponent <CanvasGroup>().interactable = true;
        InputFieldMoneyFirst.text = moneyBot.ToString();
        InputFieldMoneySecond.gameObject.GetComponent <CanvasGroup>().interactable = true;
        InputFieldMoneySecond.text = "0";
    }