private void AddPurchaseButton(int y) { if (clickedTower.Cost <= Session.ActivePlayer.Money && clickedTower.Level < clickedTower.MaxLevel) { string bt = String.Format("Buy Tower (Costs {0})", clickedTower.Cost); Vector2 btdim = spriteFont.MeasureString(bt); Vector2 bpos = new Vector2((int)(SelectedTower.Dimensions.Left + (Session.Map.SmallNormalButtonTexture.Width / 2.0f) + (SelectedTower.Dimensions.Width - Session.Map.SmallNormalButtonTexture.Width) / 2.0f), (int)(y + (Session.Map.SmallNormalButtonTexture.Height / 2.0f))); Vector2 tpos = new Vector2((int)(bpos.X - Session.Map.SmallNormalButtonTexture.Width / 2.0f + padding), (int)(y + (Session.Map.SmallNormalButtonTexture.Height - btdim.Y) / 2.0f)); Button b = new Button(Session.Map.SmallNormalButtonTexture, bpos, new Text(bt, spriteFont, tpos), Session.Map.ForeColor, clickedTower); b.LeftClickEvent += new EventHandler(buyTower_LeftClick); SelectedTower.Add("BuyTower", b); } else { string bt = String.Format("Buy Tower (Costs {0})", clickedTower.Cost); Vector2 btdim = spriteFont.MeasureString(bt); Vector2 bpos = new Vector2((int)(SelectedTower.Dimensions.Left + (Session.Map.SmallErrorButtonTexture.Width / 2.0f) + (SelectedTower.Dimensions.Width - Session.Map.SmallErrorButtonTexture.Width) / 2.0f), (int)(y + (Session.Map.SmallErrorButtonTexture.Height / 2.0f))); Vector2 tpos = new Vector2((int)(bpos.X - Session.Map.SmallErrorButtonTexture.Width / 2.0f + padding), (int)(y + (Session.Map.SmallErrorButtonTexture.Height - btdim.Y) / 2.0f)); Button b = new Button(Session.Map.SmallErrorButtonTexture, bpos, new Text(bt, spriteFont, tpos), Session.Map.ErrorColor, clickedTower); b.Deactivate(); SelectedTower.Add("BuyTower", b); } }
private int AddUpgradeButton(int y) { Button b = null; if (clickedTower.UpgradeCost <= Session.ActivePlayer.Money && clickedTower.Level + 1 < clickedTower.MaxLevel) { string bt = String.Format("Upgrade Tower (Costs {0})", clickedTower.UpgradeCost); Vector2 btdim = spriteFont.MeasureString(bt); Vector2 bpos = new Vector2((int)(SelectedTower.Dimensions.Left + (Session.Map.SmallNormalButtonTexture.Width / 2.0f) + (SelectedTower.Dimensions.Width - Session.Map.SmallNormalButtonTexture.Width) / 2.0f), (int)(y + (Session.Map.SmallNormalButtonTexture.Height / 2.0f))); Vector2 tpos = new Vector2((int)(bpos.X - Session.Map.SmallNormalButtonTexture.Width / 2.0f + padding), (int)(y + (Session.Map.SmallNormalButtonTexture.Height - btdim.Y) / 2.0f)); b = new Button(Session.Map.SmallNormalButtonTexture, bpos, new Text(bt, spriteFont, tpos), Session.Map.ForeColor, clickedTower); b.LeftClickEvent += new EventHandler(upgradeTower_LeftClick); SelectedTower.Add("UpgradeTower", b); } else { string bt = String.Format("Upgrade Tower (Costs {0})", clickedTower.UpgradeCost); Vector2 btdim = spriteFont.MeasureString(bt); Vector2 bpos = new Vector2((int)(SelectedTower.Dimensions.Left + (Session.Map.SmallErrorButtonTexture.Width / 2.0f) + (SelectedTower.Dimensions.Width - Session.Map.SmallErrorButtonTexture.Width) / 2.0f), (int)(y + (Session.Map.SmallErrorButtonTexture.Height / 2.0f))); Vector2 tpos = new Vector2((int)(bpos.X - Session.Map.SmallErrorButtonTexture.Width / 2.0f + padding), (int)(y + (Session.Map.SmallErrorButtonTexture.Height - btdim.Y) / 2.0f)); b = new Button(Session.Map.SmallErrorButtonTexture, bpos, new Text(bt, spriteFont, tpos), Session.Map.ErrorColor, clickedTower); b.Deactivate(); SelectedTower.Add("UpgradeTower", b); } return((int)(b.Position.Y - b.Origin.Y) + b.Texture.Height); }
private void AddSellButton(int y) { Button b = null; string st = String.Format("Sell Tower (Receive {0})", (int)(clickedTower.TotalCost * clickedTower.SellScalar)); Vector2 stdim = spriteFont.MeasureString(st); Vector2 bpos = new Vector2((int)(SelectedTower.Dimensions.Left + (Session.Map.SmallNormalButtonTexture.Width / 2.0f) + (SelectedTower.Dimensions.Width - Session.Map.SmallNormalButtonTexture.Width) / 2.0f), (int)(y + (Session.Map.SmallNormalButtonTexture.Height / 2.0f))); Vector2 tpos = new Vector2((int)(bpos.X - Session.Map.SmallNormalButtonTexture.Width / 2.0f + padding), (int)(y + (Session.Map.SmallNormalButtonTexture.Height - stdim.Y) / 2.0f)); b = new Button(Session.Map.SmallNormalButtonTexture, bpos, new Text(st, spriteFont, tpos), Session.Map.ForeColor, clickedTower); b.LeftClickEvent += new EventHandler(sellTower_LeftClick); SelectedTower.Add("SellTower", b); }
private void InitializeSelectedTower(Tower t) { SelectedTower.ClearAll(); Image icon = new Image(clickedTower.Texture, new Vector2(SelectedTower.Dimensions.Left, SelectedTower.Dimensions.Top + padding)); SelectedTower.Add("TowerIcon", icon); SelectedTower.Add("TowerName", new Text(clickedTower.Name + " " + (clickedTower.Level + 1).ToString(), spriteFont, new Vector2(icon.Rectangle.Right + padding, SelectedTower.Dimensions.Top + padding))); SelectedTower.Add("TowerDescription", new Text(clickedTower.Description, spriteFont, new Vector2(icon.Rectangle.Right + padding, SelectedTower.Dimensions.Top + padding + spriteFont.LineSpacing))); Text stats = new Text(clickedTower.CurrentStatistics.ToShortString(), spriteFont, new Vector2(SelectedTower.Dimensions.Left + padding, icon.Rectangle.Bottom)); SelectedTower.Add("Stats", stats); Text specials = new Text(String.Format("Specials: {0}", t.bulletBase.Type == BulletType.Normal ? "None" : t.bulletBase.Type.ToString()), spriteFont, new Vector2(SelectedTower.Dimensions.Left + padding, stats.Rectangle.Bottom)); SelectedTower.Add("Specials", specials); Text price = new Text(String.Format("Price: {0}", clickedTower.TotalCost), spriteFont, new Vector2(SelectedTower.Dimensions.Left + padding, specials.Rectangle.Bottom)); SelectedTower.Add("Price", price); if (t.IsPlaced) { int pb = AddUpgradeButton(price.Rectangle.Bottom + padding); AddSellButton(pb + padding); } else { AddPurchaseButton(price.Rectangle.Bottom + padding); } string s = t.IsPlaced ? "Deselect Tower" : "Cancel"; Vector2 sdim = spriteFont.MeasureString(s); Vector2 cbpos = new Vector2((int)(SelectedTower.Dimensions.Left + (Session.Map.SmallNormalButtonTexture.Width / 2.0f) + (SelectedTower.Dimensions.Width - Session.Map.SmallNormalButtonTexture.Width) / 2.0f), (int)(SelectedTower.Dimensions.Bottom - (Session.Map.SmallNormalButtonTexture.Height / 2.0f) - padding)); Vector2 ctpos = new Vector2((int)(cbpos.X - Session.Map.SmallNormalButtonTexture.Width / 2.0f + padding), (int)(SelectedTower.Dimensions.Bottom - (Session.Map.SmallNormalButtonTexture.Height + sdim.Y) / 2.0f - padding)); Button cb = new Button(Session.Map.SmallNormalButtonTexture, cbpos, new Text(s, spriteFont, ctpos), Session.Map.ForeColor, null); cb.LeftClickEvent += new EventHandler(cancelButton_LeftClick); SelectedTower.Add("Cancel", cb); }