/// <summary>
    /// Pokazuje wskazanemu graczowi poppup z pytaniem, czy chce on ulepszyć dane pole
    /// </summary>
    /// <param name="player">Gracz, któremu pokazujemy popup</param>
    /// <param name="visualiser">Instancja visualisera, który przechowuje dane pole</param>
    /// <param name="language">Odwołanie do LanguageControllera</param>
    private void ShowUpgradePopup(Player player, PlaceVisualiser visualiser, LanguageController language)
    {
        //Tylko budynki o typie NormalBuilding można ulepszyć
        int currentTier = GameplayController.instance.board.GetTier(visualiser.placeIndex);

        //Pytamy o możliwość ulepszenia tylko wtedy, gdy istnieje następny poziom budynku
        if (HasNextTier(visualiser.placeIndex) && player.Money >= GameplayController.instance.banking.GetUpgradePrice(visualiser.placeIndex))
        {
            float upgradePrice = GetTier(currentTier + 1).buyPrice;

            //Sprawdzamy, czy gracz ma wystraczająco pieniędzy na ulepszenie
            if (player.Money >= upgradePrice)
            {
                string            message   = language.GetWord("DO_YOU_WANT_TO_UPGRADE") + GetFieldName() + "? \n" + language.GetWord("UPGRADE_COST") + upgradePrice;
                Popup.PopupAction yesAction = delegate(Popup source)
                {
                    GameplayController.instance.banking.UpgradeBuilding(player, visualiser.placeIndex);
                };

                QuestionPopup upgrade = QuestionPopup.CreateYesNoDialog(message, yesAction);

                PopupSystem.instance.AddPopup(upgrade);
            }
        }
    }
示例#2
0
    /// <summary>
    /// Pokazuje wskazanemu graczowi poppup z pytaniem, czy chce on kupić dane pole
    /// </summary>
    /// <param name="player">Gracz, któremu pokazujemy popup</param>
    /// <param name="visualiser">Instancja visualisera, który przechowuje dane pole</param>
    private void ShowBuyPopup(Player player, PlaceVisualiser visualiser)
    {
        if (player.Money >= GetInitialPrice())
        {
            LanguageController language = SettingsController.instance.languageController;
            //popup o mozliwosci kupienia pola od banku
            string message = language.GetWord("DO_YOU_WANT_TO_BUY") + GetFieldName() + "\n" + language.GetWord("PRICE") + ":" + GetInitialPrice() + "?";

            Popup.PopupAction yesAction = delegate(Popup source)
            {
                //gracz chce kupic pole wiec jest mu przydzielane z banku
                GameplayController.instance.banking.AquireBuilding(player, player.PlaceId);
                source.onClose = null;
            };
            Popup.PopupAction auctionAction = delegate
            {
                EventManager.instance.SendOnAuction(player.GetName(), player.PlaceId, "", GetInitialPrice(), player.GetName());
            };

            QuestionPopup wantToBuy = QuestionPopup.CreateYesNoDialog(message, yesAction);

            wantToBuy.onClose += auctionAction;
            PopupSystem.instance.AddPopup(wantToBuy);
        }
        else
        {
            //Jeżeli nie stać nas na kupienie budynku, rozpoczyna się licytacja
            EventManager.instance.SendOnAuction(player.GetName(), visualiser.placeIndex, "", GetInitialPrice(), player.GetName());
        }
    }
示例#3
0
    private void OnGameStateChanged(GameState previousState, GameState newState)
    {
        if (newState == GameState.ended)
        {
            LanguageController language = SettingsController.instance.languageController;

            Player winner = GetWinner();
            string message;
            if (winner != null)
            {
                if (winner.NetworkPlayer.IsLocal)
                {
                    message = language.GetWord("YOU_WON_GAME");
                }
                else
                {
                    message = language.GetWord("GAME_ENDED") + " " + language.GetWord("WINNER_IS") + winner.GetName();
                }
            }
            else
            {
                message = language.GetWord("GAME_ENDED");
            }

            QuestionPopup endGame = QuestionPopup.CreateOkDialog(message, delegate { menu.QuitGame(); });
            PopupSystem.instance.AddPopup(endGame);
        }
    }
示例#4
0
    /// <summary>
    /// Wyświetla stosowne komunikaty przy wowołaniu eventu przegranej gracza
    /// </summary>
    /// <param name="playerName">Gracz, który przegrał grę</param>
    private void OnPlayerLostGame(string playerName)
    {
        Player             player   = session.FindPlayer(playerName);
        LanguageController language = SettingsController.instance.languageController;

        if (player == null)
        {
            return;
        }

        //Gracz, który przegrał, jest graczem lokalnym
        if (player.NetworkPlayer.IsLocal)
        {
            string        message        = language.GetWord("YOU_LOST_THE_GAME");
            QuestionPopup playerLostGame = QuestionPopup.CreateOkDialog(message);

            PopupSystem.instance.AddPopup(playerLostGame);
        }
        else
        {
            string    message        = language.GetWord("PLAYER") + playerName + language.GetWord("LOST_THE_GAME");
            IconPopup playerLostGame = new IconPopup(IconPopupType.PlayerLost, message);

            PopupSystem.instance.AddPopup(playerLostGame);
        }
    }
示例#5
0
    private void OnTradeOfferReceived(string senderNickName, string[] senderBuildingNames, float senderMoney, string receiverNickName, string[] receiverBuildingNames, float receiverMoney)
    {
        if (receiverNickName == PhotonNetwork.LocalPlayer.NickName)
        {
            Popup.PopupAction yesAction = delegate
            {
                Player sender = gC.session.FindPlayer(senderNickName);

                List <Field> myBuildings = new List <Field>();
                foreach (string name in receiverBuildingNames)
                {
                    if (gC.board.GetField(name) != null)
                    {
                        myBuildings.Add(gC.board.GetField(name));
                    }
                }

                Player receiver = gC.session.FindPlayer(receiverNickName);

                List <Field> theirBuildings = new List <Field>();
                foreach (string name in senderBuildingNames)
                {
                    if (gC.board.GetField(name) != null)
                    {
                        theirBuildings.Add(gC.board.GetField(name));
                    }
                }

                OpenRightPanel(sender, myBuildings, receiverMoney, theirBuildings, senderMoney);
            };

            IconPopup tradeOfferReceivedPopup = new IconPopup(IconPopupType.Trade, QuestionPopup.CreateYesNoDialog(lC.GetWord("YOU_GOT_AN_OFFER_FROM") + senderNickName + " <br>" + lC.GetWord("DO_YOU_WANT_TO_SEE"), yesAction));
            PopupSystem.instance.AddPopup(tradeOfferReceivedPopup);
        }
    }
    /// <summary>
    /// Tworzy QuestionPopup z odpowiedzią "OK"
    /// </summary>
    /// <param name="question">Pytanie, które ma zostać wyświetlone użytkownikowi</param>
    /// <param name="okAction">Akcja wywoływana po naciśnięciu przycisku "Ok"</param>
    /// <returns>>QuestionPopup z odpowiedzią "Ok"</returns>
    public static QuestionPopup CreateOkDialog(string question, PopupAction okAction = null)
    {
        QuestionPopup popup = new QuestionPopup(question);

        popup.AddButton("OK", Functionality.Destroy());
        popup.onClose += okAction;

        return(popup);
    }
示例#7
0
 public void Setup()
 {
     WebDriverFactory.InitBrowser(ConfigurationManager.AppSettings["Browser"]);
     WebDriverFactory.LoadApplication(ConfigurationManager.AppSettings["URL"]);
     _driver = WebDriverFactory.Driver;
     _driver.Manage().Window.Maximize();
     _employerInformation = new EmployerInformationPage(_driver);
     _questionPopup       = new QuestionPopup(_driver);
 }
示例#8
0
    /// <summary>
    /// Inicjowanie popup-u typu Icon
    /// </summary>
    /// <param name="iconType">Typ ikony do wyświetlania</param>
    /// <param name="closeMode">Tryb automatycznego zamknięcia popupu</param>
    /// <param name="message">Wiadomość do wyświetlenia w QuestionPopupie po kliknięciu IconPopup-u</param>
    public IconPopup(IconPopupType iconType, string message, AutoCloseMode closeMode = AutoCloseMode.NewAppears)
        : base(closeMode)
    {
        this.iconType = iconType;
        onClick       = Functionality.Destroy();

        QuestionPopup toShow = QuestionPopup.CreateOkDialog(message);

        onClose += Functionality.Show(toShow);
    }
        public async Task <bool> ShowQuestionAsync(string title, string message, string acceptButtonText, string cancelButtonText)
        {
            var tcs   = new TaskCompletionSource <bool>();
            var alert = new QuestionPopup(tcs, title, message, acceptButtonText, cancelButtonText);
            await PopupNavigation.PushAsync(alert);

            var result = await tcs.Task;
            await PopupNavigation.RemovePageAsync(alert);

            return(result);
        }
示例#10
0
 public void InitBanking()
 {
     auctionPopup = null;
     language     = SettingsController.instance.languageController;
     //Dodawanie wszystkich graczy do licytacji
     for (int i = 0; i < GameplayController.instance.session.playerCount; i++)
     {
         auctionPlayers.Add(GameplayController.instance.session.FindPlayer(i).GetName());
         bidders.Add(GameplayController.instance.session.FindPlayer(i).GetName());
     }
 }
示例#11
0
    public override void Init(Popup source)
    {
        if (buttonPool == null)
        {
            InitBox();
        }
        base.Init(source);
        QuestionPopup popup = source as QuestionPopup;

        message.text = popup.message;
        InitButons();

        SetButtonsInteractable(false);
        boxAnimator.SetTrigger("Show");
    }
    /// <summary>
    /// Tworzy QuestionPopup z dwoma odpowiedziami: "Tak" i "Nie"
    /// </summary>
    /// <param name="question">Pytanie, które ma zostać wyświetlone użytkownikowi</param>
    /// <param name="yesAction">Akcja wywoływana po wciśnięciu przycisku "Tak"</param>
    /// <param name="noAction">Akcja wywoływana po wciśnięciu przycisku "Nie"</param>
    /// <returns>QuestionPopup z odpowiedziami "Tak" "Nie"</returns>
    public static QuestionPopup CreateYesNoDialog(string question, PopupAction yesAction = null, PopupAction noAction = null)
    {
        QuestionPopup popup = new QuestionPopup(question);

        yesAction += delegate(Popup source)
        {
            source.onClose = null;
            Functionality.Destroy().Invoke(source);
        };
        popup.onClose += noAction;
        popup.AddButton(SettingsController.instance.languageController.GetWord("YES"), yesAction);
        popup.AddButton(SettingsController.instance.languageController.GetWord("NO"), Functionality.Destroy());

        return(popup);
    }
示例#13
0
    /// <summary>
    /// Rozmieszczanie przycisków w zależności od ich ilości
    /// </summary>
    private void InitButons()
    {
        QuestionPopup popup = source as QuestionPopup;

        foreach (Tuple <string, Popup.PopupAction> button in popup.buttons)
        {
            GameObject gameObject = buttonPool.TakeObject();
            gameObject.GetComponentInChildren <TextMeshProUGUI>().text = button.Item1;
            gameObject.GetComponent <Button>().onClick.AddListener(delegate
            {
                button.Item2?.Invoke(source);
            });

            showedButtons.Add(gameObject);
        }
    }
示例#14
0
    protected void ShowPayPopup(Player player, PlaceVisualiser visualiser, float cost)
    {
        LanguageController language = SettingsController.instance.languageController;
        Player             owner    = GameplayController.instance.board.GetOwner(visualiser.placeIndex);
        //Wiadomość o konieczności zapłaty
        string message = language.GetWord("YOU_MUST_PAY") + owner.GetName() + language.GetWord("FOR_STAY_ON_PLACE") + "\n" + language.GetWord("COST") + cost;

        Popup.PopupAction onOk = delegate(Popup source)
        {
            GameplayController.instance.banking.Pay(player, owner, cost);
        };

        QuestionPopup payPopup = QuestionPopup.CreateOkDialog(message, onOk);

        PopupSystem.instance.AddPopup(payPopup);
    }
示例#15
0
 /// <summary>
 /// Resets all values under advanced settings to their defaults,
 /// and asks the user whether to remove all stored bitmaps.
 /// </summary>
 public void ResetSettings()
 {
     SettingExtender.SaveDefaultSettings();
     SettingManager.LoadSettings();
     QuestionPopup.ActivatePopup(DeleteBitmapsPrompt, yes =>
     {
         if (yes)
         {
             string path = Path.Combine(BitmapEncoding.PersistentPath, BitmapEncoding.BitmapFileName);
             if (File.Exists(path))
             {
                 File.Delete(path);
             }
             print("Deleted bitmaps");
             TakePicture.Instance.storedBitmaps = BitmapEncoding.LoadBitmaps();
         }
     });
 }
示例#16
0
    /// <summary>
    /// Funckja wywoływana, gdy aukcja dobiegnie końca
    /// <param name="offerForLastBidder">Czy zaoferować kuono budynku ostatniemu graczowi, który został w licytacji, a nigdy nie podbijał</param>
    /// </summary>
    private void EndAuction(int placeId, float bid, bool offerForLastBidder = true)
    {
        if (auctionPopup != null)
        {
            auctionPopup.onClose = null;
        }
        if (bidders.Count > 0)
        {
            string    auctionEndedMessage = SettingsController.instance.languageController.GetWord("AUCTION_ENDED");
            IconPopup auctionEnded        = new IconPopup(IconPopupType.Auction, auctionEndedMessage);

            if (GameplayController.instance.session.FindPlayer(bidders[0]).NetworkPlayer.IsLocal)
            {
                if (raisers.Contains(bidders[0]))
                {
                    AquireBuilding(GameplayController.instance.session.FindPlayer(bidders[0]), placeId);
                }
                else if (offerForLastBidder && GameplayController.instance.session.FindPlayer(bidders[0]).Money >= bid)
                {
                    string message = SettingsController.instance.languageController.GetWord("DO_YOU_WANT_TO_BUY") + " " + GameplayController.instance.board.GetField(placeId).GetFieldName() + "\n" + SettingsController.instance.languageController.GetWord("PRICE") + ":" + bid + "?";

                    Popup.PopupAction yesAction = delegate(Popup source)
                    {
                        AquireBuilding(GameplayController.instance.session.localPlayer, placeId);
                    };

                    QuestionPopup buyQuestion = QuestionPopup.CreateYesNoDialog(message, yesAction);
                    PopupSystem.instance.AddPopup(buyQuestion);
                }
            }

            if (GameplayController.instance.session.playerCount > 2)
            {
                PopupSystem.instance.AddPopup(auctionEnded);
            }
        }

        PopupSystem.instance.ClosePopup(auctionPopup);
        ClearAuction();
        GameplayController.instance.flow.Resume();
    }
    public override void OnAwake(Player player, PlaceVisualiser visualiser)
    {
        if (player.NetworkPlayer.IsLocal && player.Imprisoned)
        {
            Board board = GameplayController.instance.board;
            LanguageController language = SettingsController.instance.languageController;
            FlowController     flow     = GameplayController.instance.flow;
            flow.Pause();

            QuestionPopup startTurn = QuestionPopup.CreateOkDialog(language.GetWord("YOU_ARE_IN_PRISON"));
            flow.CloseOnDiceClose(startTurn);

            Popup.PopupAction diceRoll = delegate(Popup source)
            {
                if (freeingThrows.Contains(board.dice.rollResult))
                {
                    QuestionPopup free = QuestionPopup.CreateOkDialog(language.GetWord("YOU_ARE_FREE"));
                    GameplayController.instance.flow.RollResult().Invoke(source);
                    player.Imprisoned = false;
                    PopupSystem.instance.AddPopup(free);
                }
                else
                {
                    QuestionPopup noFree = QuestionPopup.CreateOkDialog(language.GetWord("NOT_THIS_TIME"));
                    GameplayController.instance.diceController.Roll(board.dice.rollResult.Roll1, board.dice.rollResult.Roll2);
                    PopupSystem.instance.AddPopup(noFree);
                    flow.RewindToSkiping();
                }
            };

            startTurn.onClose += delegate { PopupSystem.instance.ShowDice(diceRoll); };

            PopupSystem.instance.AddPopup(startTurn);
        }
        else
        {
            base.OnAwake(player, visualiser);
        }
    }
示例#18
0
    /// <summary>
    /// Funckja sterująca przepływem aukcji
    /// </summary>
    private void AuctionFlow(string playerName, int placeId, string bidder, float bid, string passPlayerName)
    {
        LanguageController lang = SettingsController.instance.languageController;

        //1 linijka:  Licytacja
        //2 linijka: nazwa budynku
        string auctionString = lang.GetWord("AUCTION") + "\n" + GameplayController.instance.board.GetField(placeId).GetFieldName() + "\n";

        if (bidders.Contains(bidder)) //Jeżeli bidders posiada biddera aka czy ktoś pobił
        {
            // Ostatni gracz jest lokalny: 3 linijka: Ty podbiłeś
            if (GameplayController.instance.session.FindPlayer(bidder).NetworkPlayer.IsLocal)
            {
                auctionString += lang.GetWord("YOU_RAISED");
            }
            // Ostatni gracz nie jest lokalny 3 linijka: Gracz <nick> podbił
            else
            {
                auctionString += lang.GetWord("PLAYER") + " " + bidder + " " + lang.GetWord("RAISED");
            }
        }
        else if (playerName != passPlayerName && passPlayerName != "") //Jeżeli ktoś spasował, ponieważ sprawdza czy osoba pasująca nie jest startującym aukcji
        {
            //Jeżeli pasujący gracz jest lokalny 3 linijka: Ty spasowałeś
            if (GameplayController.instance.session.FindPlayer(passPlayerName).NetworkPlayer.IsLocal)
            {
                auctionString += lang.GetWord("YOU_PASSED");
            }
            //Jeżeli pasujący gracz nie jest lokalny 3 linijka: Gracz <nick> spasował
            else
            {
                auctionString += lang.GetWord("PLAYER") + " " + passPlayerName + " " + lang.GetWord("PASSED");
            }
        }
        else if (playerName == passPlayerName) //Jeżeli gracz który spasował, jest graczem który zaczął akcję, aka pierwsze wywołanie eventu licytacji
        {
            //Jeżeli gracz jest lokalny 3 linijka : Zacząłeś aukcję
            if (GameplayController.instance.session.FindPlayer(playerName).NetworkPlayer.IsLocal)
            {
                auctionString += lang.GetWord("YOU_STARTED_AUCTION");
            }
            //Jeżeli gracz nie jest lokalny 3 linijka: gracz <nick> rozpoczął aukcję
            else
            {
                auctionString += lang.GetWord("PLAYER") + " " + playerName + " " + lang.GetWord("STARTED_AUCTION");
            }
        }
        //4 linijka: Obecna stawka: <bid>
        auctionString += "\n" + lang.GetWord("AUCTION_CURRENT_BID") + bid;

        auctionPopup = new QuestionPopup(auctionString);

        if (!GameplayController.instance.session.FindPlayer(playerName).NetworkPlayer.IsLocal&& bidders.Contains(GameplayController.instance.session.localPlayer.GetName()))
        {
            //Wersja dla osób, które mogą licytować
            string passString  = lang.GetWord("PASS");
            string raiseString = lang.GetWord("RAISE");

            Popup.PopupAction passAction = delegate(Popup source)
            {
                source.onClose = null;
                EventManager.instance.SendOnAuction(playerName, placeId, "", bid, GameplayController.instance.session.localPlayer.GetName());
            };

            Popup.PopupAction raiseAction = delegate(Popup source)
            {
                source.onClose = null;
                if (!raisers.Contains(GameplayController.instance.session.localPlayer.GetName()))
                {
                    raisers.Add(GameplayController.instance.session.localPlayer.GetName());
                }
                EventManager.instance.SendOnAuction(playerName, placeId, GameplayController.instance.session.localPlayer.GetName(), bid + Keys.Gameplay.RAISE_BID_VALUE, "");
            };

            auctionPopup.AddButton(passString, passAction);
            if (GameplayController.instance.session.localPlayer.Money >= bid + Keys.Gameplay.RAISE_BID_VALUE)
            {
                auctionPopup.AddButton(raiseString, raiseAction);
            }

            auctionPopup.onClose = passAction;
        }
        PopupSystem.instance.AddPopup(auctionPopup);
    }
示例#19
0
 public void ClearAuction()
 {
     auctionPopup = null;
     raisers.Clear();
     bidders = new List <string>(auctionPlayers); //Dodawanie wszystkich graczy do licytacji
 }