public void DowngradeUnit(ref ArcherTower unit, ref Player player) { ///<summary> /// when this feature is calles, we check the towers level. /// if the level is 0 the tower is not upgraded, and no action should be3 taken. /// if the level is 1 the tower should be downgraded to level 0, appropiate subtractions are made from the towers defensive prpoerties, and the name is adjusted to the "plain name" /// if the level is >1 the tower should be downgraded to current level -1, appropiate subtractions are made from the towers defensive prpoerties, and the name is adjusted to "plain name + "level XX" - 1" /// </summary> if (unit.defensiveLevel > 1) { player.updateBank(unit.unitValue); unit.unitValue = unit.unitValue / unit.defensiveLevel; unit.defensiveLevel = unit.defensiveLevel - 1; unit.nameDefensiveUnit = "ArcherTower Level " + unit.defensiveLevel; unit.defensivePower = unit.defensivePower - 2; unit.defenseType = unit.defenseType; unit.defenseRange = unit.defenseRange - 1; unit.upgradeCost = unit.upgradeCost / upgradeCostFactor; } else if (unit.defensiveLevel == 1) { return; } }
public void Setup() { _uut = new DefensiveUnitUtilities(); fakePlayer = Substitute.For <Player>("IB"); fakeDefensiveUnit = Substitute.For <ArcherTower>(); fakeDefensiveUnit1 = Substitute.For <CannonTower>(); }
private void OnSceneGUI() { ArcherTower at = (ArcherTower)target; Handles.DrawWireArc(at.transform.position, Vector3.forward, Vector3.up, 360, at.range); Handles.DrawWireCube(at.transform.position + new Vector3(at.firePointOffset.x, at.firePointOffset.y, 0), Vector3.one * 0.05f); }
public void Setup() { // var username=new Player(""); DefUtilities = new DefensiveUnitUtilities(); fakePlayer = Substitute.For <Player>("IB"); DefensiveUnitArcher = new ArcherTower(); DefensiveUnitCannon = new CannonTower(); }
public void Setup() { // var username=new Player(""); DefUtilities = new DefensiveUnitUtilities(); userPlayer = new Player("IB"); DefensiveUnitArcher = new ArcherTower(); DefensiveUnitCannon = new CannonTower(); }
/// <summary> /// check Opppnent base to see if it's engineered base or not /// </summary> /// <returns>true if engineered</returns> public static bool IsEngineeredBase() { var defenses = ArcherTower.Find()?.Count(); defenses += WizardTower.Find()?.Count(); defenses += AirDefense.Find().Count(); if (defenses <= 3) { return(true); } return(false); }
private void MouseLeftClick(object sender, MouseButtonEventArgs e) //If a tower is selected, place a tower if it is in the map and not on the path. If not, do nothing { if (CheckSelected() && ValidPosition((float)(Mouse.GetPosition(this).X - selected.Height / 2), (float)(Mouse.GetPosition(this).Y - selected.Height / 2))) { if (archerSelected) { ArcherTower newTower = new ArcherTower(new BitmapImage(new Uri(System.AppDomain.CurrentDomain.BaseDirectory + "Assets/archertower.png")), (float)(Mouse.GetPosition(this).X - selected.Height / 2), (float)(Mouse.GetPosition(this).Y - selected.Height / 2)); Canvas.SetLeft(newTower.Img, newTower.X); Canvas.SetTop(newTower.Img, newTower.Y); newTower.Img.Height = 60; mapCanvas.Children.Add(newTower.Img); towerList.Add(newTower); newTower.thr = new Thread(() => TowerFiring(newTower)); newTower.thr.Start(); SetAllFalse(); } else if (darkWizardSelected) { DarkWizardTower newTower = new DarkWizardTower(new BitmapImage(new Uri(System.AppDomain.CurrentDomain.BaseDirectory + "Assets/darkwizardtower.png")), (float)(Mouse.GetPosition(this).X - selected.Height / 2), (float)(Mouse.GetPosition(this).Y - selected.Height / 2)); Canvas.SetLeft(newTower.Img, newTower.X); Canvas.SetTop(newTower.Img, newTower.Y); newTower.Img.Height = 60; mapCanvas.Children.Add(newTower.Img); towerList.Add(newTower); newTower.thr = new Thread(() => TowerFiring(newTower)); newTower.thr.Start(); SetAllFalse(); } else if (cannonTowerSelected) { CannonTower newTower = new CannonTower(new BitmapImage(new Uri(System.AppDomain.CurrentDomain.BaseDirectory + "Assets/cannontower.png")), (float)(Mouse.GetPosition(this).X - selected.Height / 2), (float)(Mouse.GetPosition(this).Y - selected.Height / 2)); Canvas.SetLeft(newTower.Img, newTower.X); Canvas.SetTop(newTower.Img, newTower.Y); newTower.Img.Height = 60; mapCanvas.Children.Add(newTower.Img); towerList.Add(newTower); newTower.thr = new Thread(() => TowerFiring(newTower)); newTower.thr.Start(); SetAllFalse(); } } else if (CheckSelected()) { MessageBox.Show("Invalid placement!"); } UpdateGameInfo(); }
static void Postfix(ArcherTower __instance, ref int __result, int maxHeight) { try { Cell cell = World.inst.GetCellData(__instance.transform.position); if (cell != null) { CellMark mark = ElevationManager.GetCellMark(cell); if (mark != null) { __result = Mathff.Clamp(__result + mark.elevationTier, 0, maxHeight); } } } catch (Exception ex) { DebugExt.HandleException(ex); } }
private double upgradeCostFactor = 1.5; // this is the factor which changes the cost of upgrading a tower. //private double downgradeReturnValueFactor = /* public IDefensiveUnit SpawnDefensivUnit(IDefensiveUnit tower, IMaps map, IPlayer player) * { * if (tower.unitCost < player.bank) * { * player.updateBank(tower.unitCost);//update bank * return tower; * } * else * { * return null; * } * } * * public void UpgradeUnit(ref IDefensiveUnit unit, ref IPlayer player) * { * if (unit.upgradeCost < player.bank) * { * double valuta = unit.upgradeCost; * player.updateBank(- valuta); * * unit.defensiveLevel = unit.defensiveLevel + 1; * // if we need to be upgrade levels , we'd need the name to be something like: * unit.nameDefensiveUnit = unit.nameDefensiveUnit + " Level " + unit.defensiveLevel; * unit.defensivePower = unit.defensivePower + 2; // think we should keep this to addition * //tower.defenseType = * // unit.defenseType; // only necessary if we actually change the tower type when upgrading * unit.defenseRange = unit.defenseRange + 1; * unit.defensiveTiles = unit.defensiveTiles; // What is this for ? * unit.upgradeCost = unit.upgradeCost * upgradeCostFactor; //new upprice * unit.unitValue += unit.upgradeCost; * * * // player.updateBank(-unit.upgradeCost); //subtrac the price from user bank * * //add the tower to the map list of towers * } * else * { * return; * * } * //needs the * * //When this feature is called, adding to * //power must be added by ?? exp, * //level 1 up, new name?, * //new type?, new tiles? * //new downprice and * //new upprice * * //subtrac the price from user bank * //add overwrit the old tower * //add the tower to the map list of towers * }*/ public void UpgradeUnit(ref ArcherTower unit, ref Player player) { if (unit.upgradeCost < player.bank) { double valuta = unit.upgradeCost; player.updateBank(-valuta); unit.defensiveLevel = unit.defensiveLevel + 1; unit.nameDefensiveUnit = unit.nameDefensiveUnit + " Level " + unit.defensiveLevel; unit.defensivePower = unit.defensivePower + 2; unit.defenseRange = unit.defenseRange + 1; unit.unitValue += unit.upgradeCost; unit.upgradeCost = unit.upgradeCost * upgradeCostFactor; //new upprice } else { return; } }
public void Setup() { _uut = new ArcherTower(); }
void CreateDebugImages() { List <InfernoTower> infernos = InfernoTower.Find(CacheBehavior.Default).ToList(); List <WizardTower> wizTowers = WizardTower.Find(CacheBehavior.Default).ToList(); List <ArcherTower> archerTowers = ArcherTower.Find(CacheBehavior.Default).ToList(); List <ElixirStorage> elixirStorages = ElixirStorage.Find(CacheBehavior.Default).ToList(); EagleArtillery eagle = EagleArtillery.Find(CacheBehavior.Default); var d = DateTime.UtcNow; var debugFileName = $"Dragon Deploy {d.Year}-{d.Month}-{d.Day} {d.Hour}-{d.Minute}-{d.Second}-{d.Millisecond}"; using (Bitmap canvas = Screenshot.Capture()) { Screenshot.Save(canvas, $"{debugFileName}_1"); //Draw some stuff on it. Visualize.Axes(canvas); Visualize.Grid(canvas, redZone: true); Visualize.Target(canvas, mainTarget.Center, 40, Color.Red); Visualize.Target(canvas, deFunnelPoints[0], 40, Color.White); Visualize.Target(canvas, deFunnelPoints[1], 40, Color.White); Visualize.Target(canvas, balloonFunnelPoints[0], 40, Color.Pink); Visualize.Target(canvas, balloonFunnelPoints[1], 40, Color.Pink); for (int i = 0; i < infernos.Count(); i++) { Visualize.Target(canvas, infernos.ElementAt(i).Location.GetCenter(), 30, Color.Orange); } for (int i = 0; i < airDefenses.Count(); i++) { Visualize.Target(canvas, airDefenses.ElementAt(i).Location.GetCenter(), 30, Color.Cyan); } for (int i = 0; i < wizTowers.Count(); i++) { Visualize.Target(canvas, wizTowers.ElementAt(i).Location.GetCenter(), 30, Color.Purple); } for (int i = 0; i < archerTowers.Count(); i++) { Visualize.Target(canvas, archerTowers.ElementAt(i).Location.GetCenter(), 30, Color.RosyBrown); } if (eagle != null) { Visualize.Target(canvas, eagle.Location.GetCenter(), 30, Color.YellowGreen); } Visualize.Target(canvas, mainTarget.DeployGrunts, 40, Color.Beige); Screenshot.Save(canvas, $"{debugFileName}_2"); } //Write a text file that goes with all images that shows what is in the image. StringBuilder sb = new StringBuilder(); for (int i = 0; i < airDefenses.Count(); i++) { sb.AppendLine($"Air Defense {i + 1} - Level:{airDefenses.ElementAt(i).Level}"); } for (int i = 0; i < infernos.Count(); i++) { sb.AppendLine($"Inferno Tower {i + 1} - Level:{infernos.ElementAt(i).Level}"); } for (int i = 0; i < wizTowers.Count(); i++) { sb.AppendLine($"Wizard Tower {i + 1} - Level:{wizTowers.ElementAt(i).Level}"); } for (int i = 0; i < archerTowers.Count(); i++) { sb.AppendLine($"Archer Tower {i + 1} - Level:{archerTowers.ElementAt(i).Level}"); } if (eagle != null) { sb.AppendLine($"Eagle Artillery 1 - Level:{eagle.Level}"); } //System.IO.File.WriteAllText($@"C:\RaccoonBot\Debug Screenshots\{debugFileName}_3.txt", sb.ToString()); Log.Info($"{Tag} Deploy Debug Image Saved!"); }
public ArcherTowerUC() { InitializeComponent(); TowerHitBox = new Rect(0, 0, 128, 128); ArcherTower = new ArcherTower(); }