예제 #1
0
        protected override UpgradePolicyDescription PopulateInstanceUsingJObject(JObject jObject, UpgradePolicyDescription targetObject, Newtonsoft.Json.JsonSerializer serializer)
        {
            // UpgradeKind is required property.
            UpgradeKind jUpgradeKind = jObject["UpgradeKind"].ToObject <UpgradeKind>();

            if (jUpgradeKind == UpgradeKind.Rolling)
            {
                return(jObject.ToObject <RollingUpgradePolicyDescription>(serializer));
            }

            throw new FabricSerializationException(string.Format("UpgradePolicyDescriptionJsonConverter: PopulateInstanceUsingJObject(): Invalid UpgradeKind: {0}.", jUpgradeKind));
        }
예제 #2
0
 public ActiveState()
 {
     activeLicenceKind = LicenceKind.SecondLicence;
     activeRoad = null;
     activeTown = null;
     activeHexa = null;
     activeTownPos = 255;
     activeSourceKind = SourceKind.Count;
     activeUpgradeKind = UpgradeKind.SecondUpgrade;
     activeSourceBuildingKind = SourceBuildingKind.Count;
     activePlayer = null;
 }
예제 #3
0
        public virtual BuyingUpgradeError CanActivePlayerBuyUpgrade(UpgradeKind upgradeKind, int upgradeNumber)
        {
            GameMaster gm = GameMaster.Inst();
            Player activePlayer = gm.GetActivePlayer();

            if (upgradeCount == upgradeMax)
            {
                GameState.map.GetMapController().SetLastError(Strings.ERROR_MAX_UPGRADES);
                return BuyingUpgradeError.MaxUpgrades;
            }

            if (!GetUpgradeCost(upgradeKind, upgradeNumber).HasPlayerSources(activePlayer))
            {
                GameState.map.GetMapController().SetLastError(Strings.ERROR_NO_SOURCES);
                return BuyingUpgradeError.NoSources;
            }

            return BuyingUpgradeError.OK;
        }
예제 #4
0
        private Texture2D GetUpgradeIcon(UpgradeKind kind, int upgradeNumber)
        {
            switch (kind)
            {
                case UpgradeKind.FirstUpgrade:
                    switch (upgradeNumber)
                    {
                        case 0: return GameResources.Inst().GetHudTexture(HUDTexture.IconMill1);
                        case 1: return GameResources.Inst().GetHudTexture(HUDTexture.IconStepherd1);
                        case 2: return GameResources.Inst().GetHudTexture(HUDTexture.IconQuarry1);
                        case 3: return GameResources.Inst().GetHudTexture(HUDTexture.IconWood1);
                        case 4: return GameResources.Inst().GetHudTexture(HUDTexture.IconMine1);
                    }
                    break;
                case UpgradeKind.SecondUpgrade:
                    switch (upgradeNumber)
                    {
                        case 0: return GameResources.Inst().GetHudTexture(HUDTexture.IconMill2);
                        case 1: return GameResources.Inst().GetHudTexture(HUDTexture.IconStepherd2);
                        case 2: return GameResources.Inst().GetHudTexture(HUDTexture.IconQuarry2);
                        case 3: return GameResources.Inst().GetHudTexture(HUDTexture.IconWood2);
                        case 4: return GameResources.Inst().GetHudTexture(HUDTexture.IconMine2);
                    }
                    break;
            }

            return null;
        }
예제 #5
0
        public SourceBuildingModel(Player playerOwner, int townID, int hexaID)
            : base(playerOwner)
        {
            this.townID = townID;
            this.hexaID = hexaID;
            upgrade = UpgradeKind.NoUpgrade;

            TownModel town = GameState.map.GetTownByID(townID);
            int buildingPos = town.FindBuildingByHexaID(hexaID);
            HexaModel hexa = town.GetHexa(buildingPos);

            SourceAll sourceNormal = new SourceAll(0);
            int amountNormal = hexa.GetStartSource();
            switch (hexa.GetKind())
            {
                case HexaKind.Forest:
                    sourceNormal = new SourceAll(0, 0, 0, amountNormal, 0);
                    break;

                case HexaKind.Stone:
                    sourceNormal = new SourceAll(0, 0, amountNormal, 0, 0);
                    break;

                case HexaKind.Cornfield:
                    sourceNormal = new SourceAll(amountNormal, 0, 0, 0, 0);
                    break;

                case HexaKind.Pasture:
                    sourceNormal = new SourceAll(0, amountNormal, 0, 0, 0);
                    break;

                case HexaKind.Mountains:
                    sourceNormal = new SourceAll(0, 0, 0, 0, amountNormal);
                    break;
            }
            playerOwner.AddCollectSources(sourceNormal, new SourceAll(0));

            upgrade1cost = new SourceAll(0);
            upgrade2cost = new SourceAll(0);
            switch (hexa.GetKind())
            {
                case HexaKind.Mountains:
                    buildingKind = SourceBuildingKind.Mine;
                    titleBuilding = Strings.PROMT_TITLE_WANT_TO_BUILD_MINE;
                    upgrade1Title = Strings.PROMPT_TITLE_WANT_TO_UPGRADE_1_MINE;
                    upgrade2Title = Strings.PROMPT_TITLE_WANT_TO_UPGRADE_2_MINE;
                    upgrade1Description = Strings.PROMPT_DESCRIPTION_WANT_TO_UPGRADE_1_MINE;
                    upgrade2Description = Strings.PROMPT_DESCRIPTION_WANT_TO_UPGRADE_2_MINE;
                    upgrade0iconActive = GameResources.Inst().GetHudTexture(HUDTexture.IconMineActive);
                    upgrade0icon = GameResources.Inst().GetHudTexture(HUDTexture.IconMine);
                    upgrade1icon = GameResources.Inst().GetHudTexture(HUDTexture.IconMine1);
                    upgrade2icon = GameResources.Inst().GetHudTexture(HUDTexture.IconMine2);
                    break;
                case HexaKind.Forest:
                    buildingKind = SourceBuildingKind.Saw;
                    titleBuilding = Strings.PROMT_TITLE_WANT_TO_BUILD_SAW;
                    upgrade1Title = Strings.PROMPT_TITLE_WANT_TO_UPGRADE_1_SAW;
                    upgrade2Title = Strings.PROMPT_TITLE_WANT_TO_UPGRADE_2_SAW;
                    upgrade1Description = Strings.PROMPT_DESCRIPTION_WANT_TO_UPGRADE_1_SAW;
                    upgrade2Description = Strings.PROMPT_DESCRIPTION_WANT_TO_UPGRADE_2_SAW;
                    upgrade0iconActive = GameResources.Inst().GetHudTexture(HUDTexture.IconSawActive);
                    upgrade0icon = GameResources.Inst().GetHudTexture(HUDTexture.IconSaw);
                    upgrade1icon = GameResources.Inst().GetHudTexture(HUDTexture.IconSaw1);
                    upgrade2icon = GameResources.Inst().GetHudTexture(HUDTexture.IconSaw2);
                    break;
                case HexaKind.Cornfield:
                    buildingKind = SourceBuildingKind.Mill;
                    titleBuilding = Strings.PROMT_TITLE_WANT_TO_BUILD_MILL;
                    upgrade1Title = Strings.PROMPT_TITLE_WANT_TO_UPGRADE_1_MILL;
                    upgrade2Title = Strings.PROMPT_TITLE_WANT_TO_UPGRADE_2_MILL;
                    upgrade1Description = Strings.PROMPT_DESCRIPTION_WANT_TO_UPGRADE_1_MILL;
                    upgrade2Description = Strings.PROMPT_DESCRIPTION_WANT_TO_UPGRADE_2_MILL;
                    upgrade0iconActive = GameResources.Inst().GetHudTexture(HUDTexture.IconMillActive);
                    upgrade0icon = GameResources.Inst().GetHudTexture(HUDTexture.IconMill);
                    upgrade1icon = GameResources.Inst().GetHudTexture(HUDTexture.IconMill1);
                    upgrade2icon = GameResources.Inst().GetHudTexture(HUDTexture.IconMill2);
                    break;
                case HexaKind.Pasture:
                    buildingKind = SourceBuildingKind.Stepherd;
                    titleBuilding = Strings.PROMT_TITLE_WANT_TO_BUILD_STEPHERD;
                    upgrade1Title = Strings.PROMPT_TITLE_WANT_TO_UPGRADE_1_STEPHERD;
                    upgrade2Title = Strings.PROMPT_TITLE_WANT_TO_UPGRADE_2_STEPHERD;
                    upgrade1Description = Strings.PROMPT_DESCRIPTION_WANT_TO_UPGRADE_1_STEPHERD;
                    upgrade2Description = Strings.PROMPT_DESCRIPTION_WANT_TO_UPGRADE_2_STEPHERD;
                    upgrade0iconActive = GameResources.Inst().GetHudTexture(HUDTexture.IconStepherdActive);
                    upgrade0icon = GameResources.Inst().GetHudTexture(HUDTexture.IconStepherd);
                    upgrade1icon = GameResources.Inst().GetHudTexture(HUDTexture.IconStepherd1);
                    upgrade2icon = GameResources.Inst().GetHudTexture(HUDTexture.IconStepherd2);
                    break;
                case HexaKind.Stone:
                    buildingKind = SourceBuildingKind.Quarry;
                    titleBuilding = Strings.PROMT_TITLE_WANT_TO_BUILD_QUARRY;
                    upgrade1Title = Strings.PROMPT_TITLE_WANT_TO_UPGRADE_1_QUARRY;
                    upgrade2Title = Strings.PROMPT_TITLE_WANT_TO_UPGRADE_2_QUARRY;
                    upgrade1Description = Strings.PROMPT_DESCRIPTION_WANT_TO_UPGRADE_1_QUARRY;
                    upgrade2Description = Strings.PROMPT_DESCRIPTION_WANT_TO_UPGRADE_2_QUARRY;
                    upgrade0iconActive = GameResources.Inst().GetHudTexture(HUDTexture.IconQuarryActive);
                    upgrade0icon = GameResources.Inst().GetHudTexture(HUDTexture.IconQuarry);
                    upgrade1icon = GameResources.Inst().GetHudTexture(HUDTexture.IconQuarry1);
                    upgrade2icon = GameResources.Inst().GetHudTexture(HUDTexture.IconQuarry2);
                    break;
            }
        }
예제 #6
0
 public void BuyUpgrade(UpgradeKind kind, int upgradeNumber)
 {
     upgradeCount++;
     ApplyEffect(kind, upgradeNumber);
 }
예제 #7
0
        public override void SetPromptWindow(PromptWindow.Mod mod)
        {
            PromptWindow win = PromptWindow.Inst();
            GameResources res = GameResources.Inst();
            win.Show(mod, titleBuilding, true);
            upgrade = GetUpgrade();
            if (upgrade == UpgradeKind.NoUpgrade)
                win.AddPromptItem(new SpecialBuildingPromptItem(townID, hexaID, UpgradeKind.FirstUpgrade, 0, this, upgrade1Title, upgrade1Description, upgrade1cost, true, upgrade1icon));
            else if (upgrade == UpgradeKind.FirstUpgrade)
                win.AddPromptItem(new SpecialBuildingPromptItem(townID, hexaID, UpgradeKind.SecondUpgrade, 0, this, upgrade2Title, upgrade2Description, upgrade2cost, true, upgrade2icon));
            else
            {
                win.AddPromptItem(new SpecialBuildingPromptItem(townID, hexaID, UpgradeKind.SecondUpgrade, 0, this, titleBuilding, Strings.PROMPT_DESCRIPTION_ALL_UPGRADES_USED, new SourceAll(0), true, upgrade2icon));

                //win.AddPromptItem(new PromptItem(titleBuilding, Strings.PROMPT_DESCRIPTION_ALL_UPGRADES_USED, new SourceAll(0), false, false, upgrade2icon));
            }
        }
예제 #8
0
 protected override void ApplyEffect(UpgradeKind upgradeKind, int upgradeNumber)
 {
     upgrade = upgradeKind;
     SetPromptWindow(PromptWindow.Mod.Buyer);
 }
예제 #9
0
        protected override void ApplyEffect(UpgradeKind upgradeKind, int upgradeNumber)
        {
            PromptWindow win = PromptWindow.Inst();
            GameResources res = GameResources.Inst();
            GameMaster gm = GameMaster.Inst();

            upgradeCount--;
            switch (upgradeKind)
            {
                case UpgradeKind.FirstUpgrade:
                    switch (upgradeNumber)
                    {
                        case 0 :
                            //costCaptureHexa += new SourceAll(30);
                            gm.GetActivePlayer().AddSources(GetUpgradeCost(upgradeKind, upgradeNumber), TransactionState.TransactionStart);
                            gm.GetActivePlayer().AddSources(new SourceAll(0), TransactionState.TransactionEnd);
                            gm.GetActivePlayer().AddSources(new SourceAll(0), TransactionState.TransactionEnd);
                            HexaModel.SetHexaFort(this);
                            gm.SetFortState(EFortState.CapturingHexa);
                            win.Deactive();
                            break;

                        case 1:
                            gm.GetActivePlayer().AddSources(GetUpgradeCost(upgradeKind, upgradeNumber), TransactionState.TransactionStart);
                            gm.GetActivePlayer().AddSources(new SourceAll(0), TransactionState.TransactionEnd);
                            gm.GetActivePlayer().AddSources(new SourceAll(0), TransactionState.TransactionEnd);
                            HexaModel.SetHexaFort(this);
                            gm.SetFortState(EFortState.DestroyingHexa);
                            win.Deactive();
                            break;

                        case 2 :
                            //costSources += new SourceAll(30);
                            gm.GetActivePlayer().AddSources(GetUpgradeCost(upgradeKind, upgradeNumber), TransactionState.TransactionStart);
                            gm.GetActivePlayer().AddSources(new SourceAll(0), TransactionState.TransactionEnd);
                            gm.GetActivePlayer().AddSources(new SourceAll(0), TransactionState.TransactionEnd);
                            win.Show(PromptWindow.Mod.Buyer, Strings.PROMPT_TITLE_WANT_TO_BUY_FORT_ACTION_SOURCES, true);
                            for (int loop1 = 0; loop1 < gm.GetPlayerCount(); loop1++)
                            {
                                if (gm.GetPlayer(loop1) != gm.GetActivePlayer())
                                {
                                    win.AddPromptItem(new PlayerPromptItem(gm.GetPlayer(loop1), gm.GetPlayer(loop1).GetName(), Strings.PROMPT_DESCRIPTION_WANT_TO_BUY_FORT_ACTION_SOURCES_CHOISING_PLAYER, gm.GetPlayer(loop1).GetSource(), false, res.GetHudTexture(HUDTexture.IconTown)));
                                }
                            }
                            playerPrompt = true;
                            break;

                        case 3 :
                            gm.GetActivePlayer().AddSources(GetUpgradeCost(upgradeKind, upgradeNumber), TransactionState.TransactionStart);
                            gm.GetActivePlayer().AddSources(new SourceAll(0), TransactionState.TransactionEnd);
                            gm.GetActivePlayer().AddSources(new SourceAll(0), TransactionState.TransactionEnd);
                            ShowParade();
                            //win.Deactive();
                            break;
                    }
                    break;
                case UpgradeKind.SecondUpgrade:
                    break;
            }
        }
예제 #10
0
        public override SourceAll GetUpgradeCost(UpgradeKind upgradeKind, int upgradeNumber)
        {
            switch (upgradeKind)
            {
                case UpgradeKind.FirstUpgrade:
                    switch (upgradeNumber)
                    {
                        case 0: return upgrade1cost;
                    }
                    break;
                case UpgradeKind.SecondUpgrade:
                    switch (upgradeNumber)
                    {
                        case 0: return upgrade2cost;
                    }
                    break;
            }

            return new SourceAll(0);
        }
예제 #11
0
        int upgradeNumber; /// which from 5 upgraded player wants to upgrade

        #endregion Fields

        #region Constructors

        public SpecialBuildingPromptItem(int townID, int hexaID, UpgradeKind upgradeKind, int upgradeNumber, SpecialBuilding building, String title, String description, SourceAll source, bool isSourceCost, Texture2D icon)
            : base(title, description, source, isSourceCost, false, icon)
        {
            this.townID = townID;
            this.hexaID = hexaID;
            this.upgradeKind = upgradeKind;
            this.upgradeNumber = upgradeNumber;
            this.building = building;
        }
예제 #12
0
파일: Player.cs 프로젝트: alenkacz/Expanze
 public void SetSourceBuildingUpdate(UpgradeKind upgradeKind, int upgradeNumber)
 {
     statistic.AddStat(Statistic.Kind.Upgrades, 1, GameMaster.Inst().GetTurnNumber());
     if (upgradeKind == UpgradeKind.FirstUpgrade)
     {
         AddPoints(PlayerPoints.UpgradeLvl1);
         switch (upgradeNumber)
         {
             case 0:
                 AddCollectSources(new SourceAll(collectSourcesNormal.GetCorn() / 2, 0, 0, 0, 0), new SourceAll(0)); break;
             case 1:
                 AddCollectSources(new SourceAll(0, collectSourcesNormal.GetMeat() / 2, 0, 0, 0), new SourceAll(0)); break;
             case 2:
                 AddCollectSources(new SourceAll(0, 0, collectSourcesNormal.GetStone() / 2, 0, 0), new SourceAll(0)); break;
             case 3:
                 AddCollectSources(new SourceAll(0, 0, 0, collectSourcesNormal.GetWood() / 2, 0), new SourceAll(0)); break;
             case 4:
                 AddCollectSources(new SourceAll(0, 0, 0, 0, collectSourcesNormal.GetOre() / 2), new SourceAll(0)); break;
         }
     }
     else
     {
         AddPoints(PlayerPoints.UpgradeLvl2);
         switch (upgradeNumber)
         {
             case 0:
                 AddCollectSources(new SourceAll(collectSourcesNormal.GetCorn() / 3, 0, 0, 0, 0), new SourceAll(0)); break;
             case 1:
                 AddCollectSources(new SourceAll(0, collectSourcesNormal.GetMeat() / 3, 0, 0, 0), new SourceAll(0)); break;
             case 2:
                 AddCollectSources(new SourceAll(0, 0, collectSourcesNormal.GetStone() / 3, 0, 0), new SourceAll(0)); break;
             case 3:
                 AddCollectSources(new SourceAll(0, 0, 0, collectSourcesNormal.GetWood() / 3, 0), new SourceAll(0)); break;
             case 4:
                 AddCollectSources(new SourceAll(0, 0, 0, 0, collectSourcesNormal.GetOre() / 3), new SourceAll(0)); break;
         }
     }
     upgradeMonastery[upgradeNumber] = upgradeKind;
 }
예제 #13
0
 protected override void ApplyEffect(UpgradeKind upgradeKind, int upgradeNumber)
 {
     Player player = GameMaster.Inst().GetActivePlayer();
     player.SetSourceBuildingUpdate(upgradeKind, upgradeNumber);
     if (!player.GetIsAI())
     {
         int tempItem = PromptWindow.Inst().GetActiveItem();
         SetPromptWindow(PromptWindow.Mod.Buyer);
         PromptWindow.Inst().SetActiveItem(tempItem);
     }
     else
     {
         Message.Inst().Show(player.GetName() + " vynalezl pokrok", player.GetName() + " vynalezl " + GetUpgradeKindString(upgradeKind) + " pro větší zisky surovin z " + GetUpgradeBuildingName(upgradeNumber) + ".", GetUpgradeIcon(upgradeKind, upgradeNumber));
     }
 }
예제 #14
0
 public abstract SourceAll GetUpgradeCost(UpgradeKind upgradeKind, int upgradeNumber);
예제 #15
0
 public override SourceAll GetUpgradeCost(UpgradeKind upgradeKind, int upgradeNumber)
 {
     if (upgradeKind == UpgradeKind.FirstUpgrade)
     {
         switch (upgradeNumber)
         {
             case 0: return costCaptureHexa;
             case 1: return Settings.costFortCrusade;
             case 2: return costSources;
             case 3: return costParade;
         }
     }
     return new SourceAll(0);
 }
예제 #16
0
        public ISourceAll GetPrice(SourceBuildingKind buildingKind, UpgradeKind upgradeKind)
        {
            if (upgradeKind == UpgradeKind.NoUpgrade)
                return new SourceAll(0);

            return GetPrice(GetPriceForMonasteryUpgrade(upgradeKind, buildingKind));
        }
예제 #17
0
        public BuyingUpgradeError CanBuyUpgradeInSpecialBuilding(int townID, int hexaID, UpgradeKind upgradeKind, int upgradeNumber)
        {
            GameMaster gm = GameMaster.Inst();
            TownModel town = map.GetTownByID(townID);
            if (town == null)
            {
                SetLastError(Strings.ERROR_THERE_IS_NO_TOWN);
                return BuyingUpgradeError.ThereIsNoTown;
            }
            SpecialBuilding building = town.GetSpecialBuilding(hexaID);
            if (building == null)
            {
                SetLastError(Strings.ERROR_THERE_IS_NO_BUILDING);
                return BuyingUpgradeError.ThereIsNoBuilding;
            }

            return building.CanActivePlayerBuyUpgrade(upgradeKind, upgradeNumber);
        }
예제 #18
0
        public bool BuyUpgradeInSpecialBuilding(int townID, int hexaID, UpgradeKind upgradeKind, int upgradeNumber)
        {
            GameMaster gm = GameMaster.Inst();
            TownModel town = map.GetTownByID(townID);
            if (town == null)
                return false;
            SpecialBuilding building = town.GetSpecialBuilding(hexaID);
            if (building == null)
                return false;

            BuyingUpgradeError error = building.CanActivePlayerBuyUpgrade(upgradeKind, upgradeNumber);
            if (error == BuyingUpgradeError.OK)
            {
                gm.GetActivePlayer().PayForSomething(building.GetUpgradeCost(upgradeKind, upgradeNumber));
                building.BuyUpgrade(upgradeKind, upgradeNumber);

                return true;
            }
            return false;
        }
예제 #19
0
 private PriceKind GetPriceForMonasteryUpgrade(UpgradeKind upgradeKind, SourceBuildingKind buildingKind)
 {
     switch (upgradeKind)
     {
         case UpgradeKind.FirstUpgrade:
             switch (buildingKind)
             {
                 case SourceBuildingKind.Mill: return PriceKind.UMill1;
                 case SourceBuildingKind.Stepherd: return PriceKind.UStepherd1;
                 case SourceBuildingKind.Quarry: return PriceKind.UQuarry1;
                 case SourceBuildingKind.Saw: return PriceKind.USaw1;
                 case SourceBuildingKind.Mine: return PriceKind.UMine1;
             }
             break;
         case UpgradeKind.SecondUpgrade:
             switch (buildingKind)
             {
                 case SourceBuildingKind.Mill: return PriceKind.UMill2;
                 case SourceBuildingKind.Stepherd: return PriceKind.UStepherd2;
                 case SourceBuildingKind.Quarry: return PriceKind.UQuarry2;
                 case SourceBuildingKind.Saw: return PriceKind.USaw2;
                 case SourceBuildingKind.Mine: return PriceKind.UMine2;
             }
             break;
     }
     return PriceKind.UMill1;
 }
예제 #20
0
 protected abstract void ApplyEffect(UpgradeKind upgradeKind, int upgradeNumber);
예제 #21
0
 private String GetUpgradeKindString(UpgradeKind kind)
 {
     switch (kind)
     {
         case UpgradeKind.FirstUpgrade: return "první pokrok";
         case UpgradeKind.SecondUpgrade: return "druhý pokrok";
     }
     return "";
 }
예제 #22
0
        public override SourceAll GetUpgradeCost(UpgradeKind upgradeKind, int upgradeNumber)
        {
            switch (upgradeKind)
            {
                case UpgradeKind.FirstUpgrade :
                    switch (upgradeNumber)
                    {
                        case 0: return Settings.costMonasteryCorn1;
                        case 1: return Settings.costMonasteryMeat1;
                        case 2: return Settings.costMonasteryStone1;
                        case 3: return Settings.costMonasteryWood1;
                        case 4: return Settings.costMonasteryOre1;
                    }
                    break;
                case UpgradeKind.SecondUpgrade :
                    switch (upgradeNumber)
                    {
                        case 0: return Settings.costMonasteryCorn2;
                        case 1: return Settings.costMonasteryMeat2;
                        case 2: return Settings.costMonasteryStone2;
                        case 3: return Settings.costMonasteryWood2;
                        case 4: return Settings.costMonasteryOre2;
                    }
                    break;
            }

            return new SourceAll(0);
        }
예제 #23
0
        public override BuyingUpgradeError CanActivePlayerBuyUpgrade(UpgradeKind upgradeKind, int upgradeNumber)
        {
            GameMaster gm = GameMaster.Inst();
            Player activePlayer = gm.GetActivePlayer();

            if (activePlayer.GetMonasteryUpgrade(buildingKind) == UpgradeKind.NoUpgrade ||
                (activePlayer.GetMonasteryUpgrade(buildingKind) == UpgradeKind.FirstUpgrade &&
                 upgradeKind == UpgradeKind.SecondUpgrade))
            {
                return BuyingUpgradeError.NoUpgrade;
            }

            if (upgradeKind == UpgradeKind.SecondUpgrade)
            {
                if (upgrade == UpgradeKind.NoUpgrade)
                {
                    GameState.map.GetMapController().SetLastError(Strings.YOU_DONT_HAVE_FIRST_UPGRADE);
                    return BuyingUpgradeError.YouDontHaveFirstUpgrade;
                }
                if (upgrade == UpgradeKind.SecondUpgrade)
                {
                    GameState.map.GetMapController().SetLastError(Strings.ERROR_HAVE_SECOND_UPGRADE);
                    return BuyingUpgradeError.YouAlreadyHaveSecondUpgrade;
                }
            }

            if (!GetUpgradeCost(upgradeKind, upgradeNumber).HasPlayerSources(activePlayer))
            {
                GameState.map.GetMapController().SetLastError(Strings.ERROR_NO_SOURCES);
                return BuyingUpgradeError.NoSources;
            }

            return BuyingUpgradeError.OK;
        }
예제 #24
0
 /// <summary>
 /// <para>Initializes an instance of the <see cref="System.Fabric.Description.UpgradePolicyDescription" /> class with the upgrade kind.</para>
 /// </summary>
 /// <param name="kind">
 /// <para>
 ///     <see cref="System.Fabric.Description.UpgradeKind" />: Describes the kind of upgrade.</para>
 /// </param>
 protected UpgradePolicyDescription(UpgradeKind kind)
 {
     this.Kind = kind;
 }
예제 #25
0
        protected override void ApplyEffect(UpgradeKind upgradeKind, int upgradeNumber)
        {
            LicenceKind licenceKind;
            switch (upgradeKind)
            {
                case UpgradeKind.NoUpgrade: licenceKind = LicenceKind.NoLicence; break;
                case UpgradeKind.FirstUpgrade: licenceKind = LicenceKind.FirstLicence; break;
                default: licenceKind = LicenceKind.SecondLicence; break;
            }
            Player p = GameMaster.Inst().GetActivePlayer();
            p.BuyMarketLicence(licenceKind, upgradeNumber);

            if (!p.GetIsAI())
            {
                int tempItem = PromptWindow.Inst().GetActiveItem();
                SetPromptWindow(PromptWindow.Mod.Buyer);
                PromptWindow.Inst().SetActiveItem(tempItem);
            }
            else
            {
                Message.Inst().Show(p.GetName() + " koupil licenci", p.GetName() + " zakoupil " + GetLicenceKindString(licenceKind) + " pro výhodnější výměnu " + GetLicenceSourceName(upgradeNumber) + ".", GetLicenceIcon(licenceKind, upgradeNumber));
            }
        }