예제 #1
0
        public void Draw(SpriteBatch spriteBatch)
        {
            if (panel != null)
            {
                if (CurrentlySelected != null)
                {
                    CircleEffect.Draw(spriteBatch);
                }
                spriteBatch.Begin();
                spriteBatch.Draw(UpperBar, new Vector2(828, 10), Color.White); // Draw Upper Panel.
                spriteBatch.Draw(panel, PanelRec, Color.White);                // Draw Lower Panel.
                //Write Information in lower Panel
                spriteBatch.DrawString(ButtonTower.font, "" + Gold, WhereToWriteFont1, Color.Gold);
                spriteBatch.DrawString(ButtonTower.font, "" + Game1.Life, WhereToWriteFont2, Color.Green);
                spriteBatch.DrawString(ButtonTower.font, "" + Materia, WhereToWriteFont3, Color.Violet);
                spriteBatch.DrawString(ButtonTower.font, "" + ((int)((Game1.DelayBetweenSpawns - Game1.TimeElaspedSinceWaveKilled) / 1000) == 5 ? 0 : (int)((Game1.DelayBetweenSpawns - Game1.TimeElaspedSinceWaveKilled) / 1000)) + "", WhereToWriteFont4, Color.Red);
                spriteBatch.DrawString(ButtonTower.font, "" + Game1.WavesElasped + "", WhereToWriteFont5, Color.WhiteSmoke);

                if (EnemySelected != null) //Writing about enemy Information.
                {
                    spriteBatch.Draw(EnemySelected.spriteAnimation.texture, new Rectangle(440, 600, 100, 100), EnemySelected.spriteAnimation.GetDefaultAnimation().animations[0], Color.White);
                    //spriteBatch.DrawString(ButtonTower.font, "Element Type: ", new Vector2(Game1.graphicsDev.Viewport.Width - 730, PanelRec.Y + 120), Color.WhiteSmoke);

                    spriteBatch.DrawString(ButtonTower.font, "Type: " + EnemySelected.Type.ToString(), new Vector2(Game1.graphicsDev.Viewport.Width - 568, PanelRec.Y + 78), CollorPallet[(int)EnemySelected.Type]);

                    if ((int)EnemySelected.Type == 6)
                    {
                        spriteBatch.DrawString(ButtonTower.font, "100% Damage From All ", new Vector2(Game1.graphicsDev.Viewport.Width - 575, PanelRec.Y + 90), CollorPallet[(int)EnemySelected.Type]);
                    }
                    else
                    {
                        Vector2 test = new Vector2(Game1.graphicsDev.Viewport.Width - 575, PanelRec.Y + 90);
                        for (int i = 0; i < EnemyLowTower.Count; i++)
                        {
                            spriteBatch.DrawString(ButtonTower.font, "50% Damage From " + ((ElementalTypes)EnemyLowTower[i]).ToString(), test, CollorPallet[EnemyLowTower[i]]);
                            test.Y += 12;
                        }

                        for (int i = 0; i < EnemyLowTower.Count; i++)
                        {
                            spriteBatch.DrawString(ButtonTower.font, "150% Damage From " + ((ElementalTypes)EnemyHighTower[i]).ToString(), test, CollorPallet[EnemyHighTower[i]]);
                            test.Y += 12;
                        }
                    }


                    spriteBatch.Draw(HealthBar, new Vector2(Game1.graphicsDev.Viewport.Width - 730, PanelRec.Y + 160), new Rectangle(0, 0, 320, 12), Color.Black);
                    spriteBatch.Draw(HealthBar, new Vector2(Game1.graphicsDev.Viewport.Width - 730, PanelRec.Y + 160), new Rectangle(0, 0, (int)((((float)EnemySelected.health) / (float)(EnemySelected.totalHealth)) * 320), 12), Color.GreenYellow);
                    spriteBatch.DrawString(ButtonTower.font, EnemySelected.health + " / " + EnemySelected.totalHealth, new Vector2(Game1.graphicsDev.Viewport.Width - 600, PanelRec.Y + 155), CollorPallet[(int)EnemySelected.Type]);
                }
                spriteBatch.End();
            }

            //Draw Spin Buttons.
            spinButton.Draw(spriteBatch);

            //Draw Buttons
            foreach (Button b in ButtonsToDisplay)
            {
                b.Draw(spriteBatch);
            }

            if (spinButton.isAnimation1)
            {
                //If we have Clicked An Icon that it will draw;
                DrawClickedTowerIcon(spriteBatch);
                //If we have clicked a tower its Information will be displayed here.
                DrawSelectedTowerInfo(spriteBatch);

                if (DisplayHoverToolBar)
                {
                    spriteBatch.Begin();
                    Vector2 WritingForPanel = LocationForHoverPanel;
                    WritingForPanel.Y  = PanelRec.Y - 85;
                    WritingForPanel.X += 2;
                    //Drawing Text for Panel.
                    Rectangle OnHoverPanelRec = new Rectangle(Game1.graphicsDev.Viewport.Width - 350, PanelRec.Y - 85, 350, 115);
                    spriteBatch.Draw(OnHoverPanel, OnHoverPanelRec, Color.WhiteSmoke);

                    //Writing For The Panel
                    if (onHoverButton != null)
                    {
                        spriteBatch.DrawString(ButtonTower.font, onHoverButton.Value.TowerName.ToString(), new Vector2(WritingForPanel.X + (OnHoverPanelRec.Width / 2) - ButtonTower.font.MeasureString(onHoverButton.Value.TowerName).X - 2, WritingForPanel.Y), Color.WhiteSmoke);

                        spriteBatch.DrawString(ButtonTower.font, " (Gold: " + onHoverButton.GoldToCreate + ")", new Vector2(WritingForPanel.X + (OnHoverPanelRec.Width / 2) - ButtonTower.font.MeasureString(onHoverButton.Value.TowerName).X + ButtonTower.font.MeasureString(onHoverButton.Value.TowerName).X + 4, WritingForPanel.Y), Color.Gold);

                        WritingForPanel.Y += 20;
                        WritingForPanel.X += 3;

                        Vector2 WritingElementalRequirements = WritingForPanel;
                        spriteBatch.DrawString(ButtonTower.font, "Requirements: ", WritingElementalRequirements, Color.WhiteSmoke);


                        WritingElementalRequirements.X += 107;
                        Edge EdgeChosen = null;

                        foreach (Edge e in onHoverButton.Value.TowersThisCanBeUpgradedInto)
                        {
                            if (e.Destination == onHoverButton.Value)
                            {
                                EdgeChosen = e;
                            }
                        }

                        if (EdgeChosen != null)
                        {
                            foreach (ElementalTypes type in EdgeChosen.ElementsRequiredToCreate)
                            {
                                spriteBatch.DrawString(ButtonTower.font, type.ToString(), WritingElementalRequirements, CollorPallet[(int)type]);
                                WritingElementalRequirements.X += 50;
                            }
                        }
                        else
                        {
                            WritingElementalRequirements.X += 20;
                            spriteBatch.DrawString(ButtonTower.font, "None", WritingElementalRequirements, Color.WhiteSmoke);
                        }

                        WritingForPanel.Y += 15;
                        spriteBatch.DrawString(ButtonTower.font, "Type: ", WritingForPanel, Color.WhiteSmoke);
                        spriteBatch.DrawString(ButtonTower.font, onHoverButton.Value.Type.ToString(), new Vector2(WritingForPanel.X + 50, WritingForPanel.Y), CollorPallet[(int)onHoverButton.Value.Type]);

                        WritingForPanel.Y += 15;
                        spriteBatch.DrawString(ButtonTower.font, "Range: " + onHoverButton.Value.TowerRange.ToString(), WritingForPanel, Color.WhiteSmoke);

                        WritingForPanel.Y += 15;
                        spriteBatch.DrawString(ButtonTower.font, "AoE: " + onHoverButton.Value.Aoe.ToString(), WritingForPanel, Color.WhiteSmoke);

                        WritingForPanel.Y += 15;
                        spriteBatch.DrawString(ButtonTower.font, "Damage: " + onHoverButton.Value.Damage.ToString(), WritingForPanel, Color.WhiteSmoke);

                        WritingForPanel.Y += 15;
                        spriteBatch.DrawString(ButtonTower.font, "Rate Of Attack: " + onHoverButton.Value.DelayBetweenShots, WritingForPanel, Color.WhiteSmoke);
                    }
                    spriteBatch.End();
                }
            }
            else
            {
                Vector2 DarkColoumn  = new Vector2(Game1.graphicsDev.Viewport.Width - 300, PanelRec.Y + 90);
                Vector2 LightColoumn = new Vector2(DarkColoumn.X + 50, DarkColoumn.Y);
                Vector2 WaterColoumn = new Vector2(LightColoumn.X + 50, LightColoumn.Y);
                Vector2 WindColoumn  = new Vector2(WaterColoumn.X + 50, WaterColoumn.Y);
                Vector2 FireColoumn  = new Vector2(WindColoumn.X + 50, WindColoumn.Y);
                Vector2 EarthColoumn = new Vector2(FireColoumn.X + 50, FireColoumn.Y);
                spriteBatch.Begin();
                spriteBatch.DrawString(ButtonTower.font, "Elements Available", new Vector2(DarkColoumn.X - 850, DarkColoumn.Y - 30), Color.WhiteSmoke);

                spriteBatch.DrawString(ButtonTower.font, "Elements Bought", new Vector2(DarkColoumn.X + 25, DarkColoumn.Y - 30), Color.WhiteSmoke);

                spriteBatch.DrawString(ButtonTower.font, "Level 1:", new Vector2(DarkColoumn.X - 65, DarkColoumn.Y), Color.WhiteSmoke);
                spriteBatch.DrawString(ButtonTower.font, "Level 2:", new Vector2(DarkColoumn.X - 65, DarkColoumn.Y + 33), Color.WhiteSmoke);
                spriteBatch.DrawString(ButtonTower.font, "Level 3:", new Vector2(DarkColoumn.X - 65, DarkColoumn.Y + 66), Color.WhiteSmoke);
                //Vector2
                foreach (ElementalTypes type in BoughtElementsList)
                {
                    if (type == 0)
                    {
                        spriteBatch.Draw(MenuBallSmall[(int)type], DarkColoumn, Color.WhiteSmoke);
                        DarkColoumn.Y += 30;
                    }
                    else if (type == (ElementalTypes)1)
                    {
                        spriteBatch.Draw(MenuBallSmall[(int)type], LightColoumn, Color.WhiteSmoke);
                        LightColoumn.Y += 30;
                    }
                    else if (type == (ElementalTypes)2)
                    {
                        spriteBatch.Draw(MenuBallSmall[(int)type], WaterColoumn, Color.WhiteSmoke);
                        WaterColoumn.Y += 30;
                    }
                    else if (type == (ElementalTypes)3)
                    {
                        spriteBatch.Draw(MenuBallSmall[(int)type], WindColoumn, Color.WhiteSmoke);
                        WindColoumn.Y += 30;
                    }
                    else if (type == (ElementalTypes)4)
                    {
                        spriteBatch.Draw(MenuBallSmall[(int)type], FireColoumn, Color.WhiteSmoke);
                        FireColoumn.Y += 30;
                    }
                    else if (type == (ElementalTypes)5)
                    {
                        spriteBatch.Draw(MenuBallSmall[(int)type], EarthColoumn, Color.WhiteSmoke);
                        EarthColoumn.Y += 30;
                    }
                }

                spriteBatch.End();
            }
        }