using Microsoft.Xna.Framework; using Penguloon.Levels; using Penguloon.Projectiles; using System.Collections.Generic; namespace Penguloon.Objects { class CannonObject : ObjectBase { int extraPops = 0; public CannonObject(Vector2 position, Map map) : base(position, map) { this.Texture = ContentManager.GetTexture("Objects/cannon"); this.TileSpanX = 1; this.TileSpanY = 1; this.Range = Map.TileWidth * 3f; this.AttackSpeedMS = 2500; this.infoText = map.Level.ParentScene.Main.Resources.GetString(Resource.String.ObjectCannon); } public CannonObject(Map map) : base(map) { this.Texture = ContentManager.GetTexture("Objects/cannon"); this.TileSpanX = 1; this.TileSpanY = 1; this.Range = Map.TileWidth * 3f; this.AttackSpeedMS = 2500; this.infoText = map.Level.ParentScene.Main.Resources.GetString(Resource.String.ObjectCannon); } public override void CreateUpgrades() { ObjectUpgrade pop3 = new ObjectUpgrade(650, UpgradeType.PopCount, "+1 pop", null, Map.Level); ObjectUpgrade pop2 = new ObjectUpgrade(500, UpgradeType.PopCount, "+1 pop", pop3, Map.Level); ObjectUpgrade pop1 = new ObjectUpgrade(350, UpgradeType.PopCount, "+1 pop", pop2, Map.Level); pop1.OnClick += delegate { extraPops++; }; pop2.OnClick += delegate { extraPops++; }; pop3.OnClick += delegate { extraPops++; }; ObjectUpgrade rng3 = new ObjectUpgrade(650, UpgradeType.Range, "+1 range", null, Map.Level); ObjectUpgrade rng2 = new ObjectUpgrade(500, UpgradeType.Range, "+1 range", rng3, Map.Level); ObjectUpgrade rng1 = new ObjectUpgrade(350, UpgradeType.Range, "+1 range", rng2, Map.Level); rng1.OnClick += delegate { Range += Map.TileWidth; }; rng2.OnClick += delegate { Range += Map.TileWidth; }; rng3.OnClick += delegate { Range += Map.TileWidth; }; ObjectUpgrade spd3 = new ObjectUpgrade(650, UpgradeType.Speed, "+0.1 speed", null, Map.Level); ObjectUpgrade spd2 = new ObjectUpgrade(500, UpgradeType.Speed, "+0.1 speed", spd3, Map.Level); ObjectUpgrade spd1 = new ObjectUpgrade(350, UpgradeType.Speed, "+0.1 speed", spd2, Map.Level); spd1.OnClick += delegate { AttackSpeedMS -= 100; }; spd2.OnClick += delegate { AttackSpeedMS -= 100; }; spd3.OnClick += delegate { AttackSpeedMS -= 100; }; UpgradeList.Add(pop1); UpgradeList.Add(rng1); UpgradeList.Add(spd1); } public override void DrawUnique(float deltaTime) { } public override void UpdateUnique(float deltaTime) { } public override void SpawnUnique() { Projectiles.Add(new CannonballProjectile(this, this.Rotation, extraPops)); } } }