Exemplo n.º 1
0
        //Pre: None
        //Post: Various tower upgrade updates are made
        //Description: Subprogram to hold update logic for upgrades
        public virtual void UpgradeLogic()
        {
            //Looping through each upgrade
            for (int i = 0; i < 2; i++)
            {
                //If user clicks on item and is eligible for purchase
                if (Driver.CollisionDetection.PointToRectangle(upgradeItems[i].rect, GUI.Cursor.circle.center) &&
                    Driver.Main.NewButtonPress(Driver.Main.newGamePadState.Buttons.A, Driver.Main.oldGamePadState.Buttons.A) &&
                    upgradeItems[i].PurchaseEligibility() && propertyLevel[i] < 4)
                {
                    //Completing transaction and updatting appropriate property
                    upgradeItems[i].CompleteTransaction();
                    if (i == 0)
                    {
                        Upgrade1();
                    }
                    else
                    {
                        Upgrade2();
                    }

                    //Updating or clearing shop item, depending on property level
                    if (propertyLevel[i] < 4)
                    {
                        upgradeItems[i] = new GameData.ShopItem(upgradeItems[i].name, propertyLevel[i] * (priceGold) / 2, propertyLevel[i] * (priceWood) / 2, propertyLevel[i] * (priceSteel) / 2, upgradeItems[i].upgradeType, (int)(propertyValue[i] * 0.25), upgradeItems[i].img, upgradeItems[i].rect);
                    }
                    else
                    {
                        upgradeItems[i].Clear();
                    }
                }
            }
        }
Exemplo n.º 2
0
        //Constructor for Cannon object
        public Cannon(int x, int y) : base(x, y)
        {
            //Setting image and type of cannon
            img       = cannonImg;
            towerType = "Cannon";

            //Setting tower price
            priceGold  = GOLD_PRICE;
            priceWood  = WOOD_PRICE;
            priceSteel = STEEL_PRICE;

            //Setting damage, range, and shoot time of tower
            propertyValue[0] = DEFAULT_DAMAGE;
            propertyValue[1] = DEFAULT_RANGE;
            shootFrameMax    = SHOOT_TIME;

            //Setting up defense tower range circles
            currentRangeCircle = new GUI.Circle(center, (int)propertyValue[1], Color.White * 0.25f);
            futureRangeCircle  = new GUI.Circle(center, (int)Math.Round(propertyValue[1] * 1.25), Color.Green * 0.25f);

            //Setting up animation components
            sourceRect = new Rectangle(rect.X + 25, rect.Y + 25, 50, 50);
            origin     = new Vector2(50, 50);
            rotation   = (float)(Math.PI / 2.0);

            //Setting up shop item variables for possible upgrades
            upgradeItems[0] = new GameData.ShopItem("Damage +", GOLD_PRICE / 2, WOOD_PRICE / 2, STEEL_PRICE / 2, "Damage", (int)Math.Round(propertyValue[0] * 0.25), upgradeButtonImg, upgradeButtonRect[0]);
            upgradeItems[1] = new GameData.ShopItem("Range +", GOLD_PRICE / 2, WOOD_PRICE / 2, STEEL_PRICE / 2, "Range", (int)Math.Round(propertyValue[1] * 0.25), upgradeButtonImg, upgradeButtonRect[1]);
        }
Exemplo n.º 3
0
        //Overloaded constructor for defense tower class
        public Cannon(int x, int y, int propLevel1, int propLevel2, int total) : base(x, y, propLevel1, propLevel2, total)
        {
            //Setting image and type of archer
            img       = cannonImg;
            towerType = "Cannon";

            //Setting tower price
            priceGold  = GOLD_PRICE;
            priceWood  = WOOD_PRICE;
            priceSteel = STEEL_PRICE;

            //Setting damage, range, shoot time, and kills
            propertyValue[0] = (int)(DEFAULT_DAMAGE * Math.Pow(1.25, propLevel1));
            propertyValue[1] = (int)(DEFAULT_RANGE * Math.Pow(1.25, propLevel2));
            shootFrameMax    = SHOOT_TIME;
            totalKills       = total;

            //Setting up defense tower range circles
            currentRangeCircle = new GUI.Circle(center, propertyValue[1], Color.White * 0.25f);
            futureRangeCircle  = new GUI.Circle(center, (int)Math.Round(propertyValue[1] * 1.25), Color.Green * 0.25f);

            //Setting up animation components
            sourceRect = new Rectangle(rect.X + 25, rect.Y + 25, 50, 50);
            origin     = new Vector2(50, 50);
            rotation   = (float)(Math.PI / 2.0);

            //Selection to either update 1st shop item or clear shop item, depending on level
            if (propertyLevel[0] < 4)
            {
                upgradeItems[0] = new GameData.ShopItem("Damage +", propertyLevel[0] * (priceGold) / 2, propertyLevel[0] * (priceWood) / 2, propertyLevel[0] * (priceSteel) / 2, "Damage", (int)(propertyValue[0] * 0.25), upgradeButtonImg, upgradeButtonRect[0]);
            }
            else
            {
                upgradeItems[0] = new GameData.ShopItem(0);
                upgradeItems[0].Clear();
            }

            //Selection to either update 2nd shop item or clear shop item, depending on level
            if (propertyLevel[1] < 4)
            {
                upgradeItems[1] = new GameData.ShopItem("Range +", propertyLevel[1] * (priceGold) / 2, propertyLevel[1] * (priceWood) / 2, propertyLevel[1] * (priceSteel) / 2, "Range", (int)(propertyValue[1] * 0.25), upgradeButtonImg, upgradeButtonRect[1]);
            }
            else
            {
                upgradeItems[1] = new GameData.ShopItem(1);
                upgradeItems[1].Clear();
            }
        }
Exemplo n.º 4
0
        //Pre: None
        //Post: Various shop updates are made regarding new item addition
        //Description: Subprogram to hold update logic for new item addition
        private static void NewItemAdditionLogic()
        {
            //If user clicks on a tile with a shop item
            if (Driver.Main.NewButtonPress(Driver.Main.newGamePadState.Buttons.A, Driver.Main.oldGamePadState.Buttons.A) &&
                Cursor.gridLoc.X < 13 && Cursor.gridLoc.Y < 11 && isItemInHand)
            {
                //Logic to ensure placement is apprropriate
                if (((newItem.name == "Arrow Drop" || newItem.name == "Giant Bomb") && GameLevel.mapTiles[(int)Cursor.gridLoc.Y, (int)Cursor.gridLoc.X] == 1) ||
                    (newItem.name != "Arrow Drop" && newItem.name != "Giant Bomb" && !GameLevel.towerDictionary.ContainsKey(Cursor.gridLoc) && GameLevel.mapTiles[(int)Cursor.gridLoc.Y, (int)Cursor.gridLoc.X] == 0))
                {
                    //Completing transaction, and moving item from hand to game level
                    newItem.CompleteTransaction();
                    GameLevel.AddItem(itemName);
                    isItemInHand = false;
                }
            }

            //If user clicks 'A' on a shop item
            if (Driver.Main.NewButtonPress(Driver.Main.newGamePadState.Buttons.A, Driver.Main.oldGamePadState.Buttons.A))
            {
                for (int i = 0; i < 8; i++)
                {
                    if (Driver.CollisionDetection.PointToRectangle(shopItems[i].rect, Cursor.circle.center))
                    {
                        //If user is elidigible for purchase
                        if (shopItems[i].PurchaseEligibility())
                        {
                            //Set data for current shop item in hand
                            itemName     = shopItems[i].name;
                            itemImg      = shopItems[i].img;
                            newItem      = shopItems[i];
                            itemRange    = new Circle(new Vector2(), newItem.radius, Color.White * 0.25f);
                            isItemInHand = true;
                        }
                    }
                }
            }
            else if (Driver.Main.NewButtonPress(Driver.Main.newGamePadState.Buttons.B, Driver.Main.oldGamePadState.Buttons.B))
            {
                //If user clicks 'B', clear item in hand
                isItemInHand = false;
            }
        }
Exemplo n.º 5
0
        //Pre: 'Content', the content manager required to load content
        //Post: Various shop components are loaded and setup
        //Description: Subprogram to load and setup various shop components
        public static void Load(ContentManager Content)
        {
            //Importing and setting up shop background image and rectangle
            backImg  = Content.Load <Texture2D>("Images/Backgrounds/ShopComponents/shopBackground");
            backRect = new Rectangle(650, 0, 150, 550);

            //Importing and setting up resource images, rectangles, and message locations
            resourceImg[0] = Content.Load <Texture2D>("Images/Backgrounds/ShopComponents/heartResource");
            resourceImg[1] = Content.Load <Texture2D>("Images/Backgrounds/ShopComponents/goldResource");
            resourceImg[2] = Content.Load <Texture2D>("Images/Backgrounds/ShopComponents/woodResource");
            resourceImg[3] = Content.Load <Texture2D>("Images/Backgrounds/ShopComponents/steelResource");
            frameImg       = Content.Load <Texture2D>("Images/Backgrounds/ShopComponents/woodenFrame");
            for (int i = 0; i < 4; i++)
            {
                resourceRect[i]    = new Rectangle(655, 5 + 40 * i, 35, 35);
                resourcesMsgLoc[i] = new Vector2(700, 3 + 40 * i);
            }

            //Setting up shop items
            GameData.ShopItem.informationBoxImg = Content.Load <Texture2D>("Images/Sprites/informationBoxImg");
            shopItems[0] = new GameData.ShopItem("Cannon", Towers.Cannon.GOLD_PRICE, Towers.Cannon.WOOD_PRICE, Towers.Cannon.STEEL_PRICE, Towers.Cannon.DEFAULT_DAMAGE, Towers.Cannon.DEFAULT_RANGE, Towers.Cannon.cannonImg, new Rectangle(666, 180, 50, 50));
            shopItems[1] = new GameData.ShopItem("Archer", Towers.Archer.GOLD_PRICE, Towers.Archer.WOOD_PRICE, Towers.Archer.STEEL_PRICE, Towers.Archer.DEFAULT_DAMAGE, Towers.Archer.DEFAULT_RANGE, Towers.Archer.archerImg, new Rectangle(734, 180, 50, 50));
            shopItems[2] = new GameData.ShopItem("Bomber", Towers.Bomber.GOLD_PRICE, Towers.Bomber.WOOD_PRICE, Towers.Bomber.STEEL_PRICE, Towers.Bomber.DEFAULT_DAMAGE, Towers.Bomber.DEFAULT_RANGE, Towers.Bomber.bomberImg, new Rectangle(666, 240, 50, 50));
            shopItems[3] = new GameData.ShopItem("Roaster", Towers.Roaster.GOLD_PRICE, Towers.Roaster.WOOD_PRICE, Towers.Roaster.STEEL_PRICE, Towers.Roaster.DEFAULT_DAMAGE, Towers.Roaster.DEFAULT_RANGE, Towers.Roaster.roasterImg, new Rectangle(734, 240, 50, 50));
            shopItems[4] = new GameData.ShopItem("Steel Mine", Towers.SteelMine.GOLD_PRICE, Towers.SteelMine.WOOD_PRICE, Towers.SteelMine.STEEL_PRICE, Towers.SteelMine.steelMineImg, new Rectangle(666, 300, 50, 50));
            shopItems[5] = new GameData.ShopItem("Forestry", Towers.Forestry.GOLD_PRICE, Towers.Forestry.WOOD_PRICE, Towers.Forestry.STEEL_PRICE, Towers.Forestry.forestryImg, new Rectangle(734, 300, 50, 50));
            shopItems[6] = new GameData.ShopItem("Arrow Drop", Items.ArrowDrop.GOLD_PRICE, Items.ArrowDrop.WOOD_PRICE, Items.ArrowDrop.STEEL_PRICE, Items.ArrowDrop.DAMAGE, Items.ArrowDrop.RANGE, Items.ArrowDrop.arrowImg, new Rectangle(666, 360, 50, 50));
            shopItems[7] = new GameData.ShopItem("Giant Bomb", Items.GiantBomb.GOLD_PRICE, Items.GiantBomb.WOOD_PRICE, Items.GiantBomb.STEEL_PRICE, Items.GiantBomb.DAMAGE, Items.GiantBomb.RANGE, Items.GiantBomb.giantBombImg, new Rectangle(734, 360, 50, 50));

            //Importing fonts
            resourcesFont = Content.Load <SpriteFont>("Fonts/ResourceFont");
            for (int i = 0; i < 2; i++)
            {
                GameData.ShopItem.resourceDataFont[i] = Content.Load <SpriteFont>("Fonts/ResourceDataFont" + (i + 1));
            }

            //Importing soundeffects and setting up instances
            GameData.ShopItem.transactionSnd         = Content.Load <SoundEffect>("Audio/SoundEffects/cashSound");
            GameData.ShopItem.transactionSndInstance = GameData.ShopItem.transactionSnd.CreateInstance();
            GameData.ShopItem.errorSnd         = Content.Load <SoundEffect>("Audio/SoundEffects/errorSoundEffect");
            GameData.ShopItem.errorSndInstance = GameData.ShopItem.errorSnd.CreateInstance();
        }
Exemplo n.º 6
0
        //Constructor for Steel Mine object
        public SteelMine(int x, int y) : base(x, y)
        {
            //Setting image and type of steel mine
            img       = steelMineImg;
            towerType = "Steel Mine";

            //Setting tower price
            priceGold  = GOLD_PRICE;
            priceWood  = WOOD_PRICE;
            priceSteel = STEEL_PRICE;

            //Setting yield amount and speed amount
            propertyValue[0] = DEFAULT_YIELD;
            propertyValue[1] = DEFAULT_SPEED;
            yieldRate        = propertyValue[0] * propertyValue[1];

            //Setting up shop item variables for possible upgrades
            upgradeItems[0] = new GameData.ShopItem("Amount +", GOLD_PRICE / 2, WOOD_PRICE / 2, STEEL_PRICE / 2, "Amount", (int)Math.Round(propertyValue[0] * 0.25), upgradeButtonImg, upgradeButtonRect[0]);
            upgradeItems[1] = new GameData.ShopItem("Speed +", GOLD_PRICE / 2, WOOD_PRICE / 2, STEEL_PRICE / 2, "Speed", (int)Math.Round(propertyValue[1] * 0.25), upgradeButtonImg, upgradeButtonRect[1]);
        }
Exemplo n.º 7
0
        //Overloaded constructor for defense tower class
        public SteelMine(int x, int y, int propLevel1, int propLevel2, int total) : base(x, y, propLevel1, propLevel2, total)
        {
            //Setting image and type of archer
            img       = steelMineImg;
            towerType = "Steel Mine";

            //Setting tower price
            priceGold  = GOLD_PRICE;
            priceWood  = WOOD_PRICE;
            priceSteel = STEEL_PRICE;

            //Setting damage, range, shoot time, and kills
            propertyValue[0] = (int)(DEFAULT_YIELD * Math.Pow(1.25, propLevel1));
            propertyValue[1] = (int)(DEFAULT_SPEED * Math.Pow(1.25, propLevel2));
            yieldRate        = propertyValue[0] * propertyValue[1];
            totalYield       = total;

            //Selection to either update 1st shop item or clear shop item, depending on level
            if (propertyLevel[0] < 4)
            {
                upgradeItems[0] = new GameData.ShopItem("Amount +", propertyLevel[0] * (priceGold) / 2, propertyLevel[0] * (priceWood) / 2, propertyLevel[0] * (priceSteel) / 2, "Amount", (int)(propertyValue[0] * 0.25), upgradeButtonImg, upgradeButtonRect[0]);
            }
            else
            {
                upgradeItems[0] = new GameData.ShopItem(0);
                upgradeItems[0].Clear();
            }

            //Selection to either update 2nd shop item or clear shop item, depending on level
            if (propertyLevel[1] < 4)
            {
                upgradeItems[1] = new GameData.ShopItem("Speed +", propertyLevel[1] * (priceGold) / 2, propertyLevel[1] * (priceWood) / 2, propertyLevel[1] * (priceSteel) / 2, "Speed", (int)(propertyValue[1] * 0.25), upgradeButtonImg, upgradeButtonRect[1]);
            }
            else
            {
                upgradeItems[1] = new GameData.ShopItem(1);
                upgradeItems[1].Clear();
            }
        }
Exemplo n.º 8
0
        //Constructor for Bomber object
        public Bomber(int x, int y) : base(x, y)
        {
            //Setting image and type of bomber
            img       = bomberImg;
            towerType = "Bomber";

            //Setting tower price
            priceGold  = GOLD_PRICE;
            priceWood  = WOOD_PRICE;
            priceSteel = STEEL_PRICE;

            //Setting damage, range, and shoot time of tower
            propertyValue[0] = DEFAULT_DAMAGE;
            propertyValue[1] = DEFAULT_RANGE;
            shootFrameMax    = SHOOT_TIME;

            //Setting up defense tower range circles
            currentRangeCircle = new GUI.Circle(center, (int)propertyValue[1], Color.White * 0.25f);
            futureRangeCircle  = new GUI.Circle(center, (int)Math.Round(propertyValue[1] * 1.25), Color.Green * 0.25f);

            //Setting up shop item variables for possible upgrades
            upgradeItems[0] = new GameData.ShopItem("Damage +", GOLD_PRICE / 2, WOOD_PRICE / 2, STEEL_PRICE / 2, "Damage", (int)Math.Round(propertyValue[0] * 0.25), upgradeButtonImg, upgradeButtonRect[0]);
            upgradeItems[1] = new GameData.ShopItem("Range +", GOLD_PRICE / 2, WOOD_PRICE / 2, STEEL_PRICE / 2, "Range", (int)Math.Round(propertyValue[1] * 0.25), upgradeButtonImg, upgradeButtonRect[1]);
        }