Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
 public void Setup()
 {
     _uut               = new DefensiveUnitUtilities();
     fakePlayer         = Substitute.For <Player>("IB");
     fakeDefensiveUnit  = Substitute.For <ArcherTower>();
     fakeDefensiveUnit1 = Substitute.For <CannonTower>();
 }
Beispiel #3
0
    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);
    }
Beispiel #4
0
 public void Setup()
 {
     //  var username=new Player("");
     DefUtilities        = new DefensiveUnitUtilities();
     fakePlayer          = Substitute.For <Player>("IB");
     DefensiveUnitArcher = new ArcherTower();
     DefensiveUnitCannon = new CannonTower();
 }
Beispiel #5
0
 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);
        }
Beispiel #7
0
        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();
        }
Beispiel #8
0
 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);
     }
 }
Beispiel #9
0
        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;
            }
        }
Beispiel #10
0
 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!");
        }
Beispiel #12
0
 public ArcherTowerUC()
 {
     InitializeComponent();
     TowerHitBox = new Rect(0, 0, 128, 128);
     ArcherTower = new ArcherTower();
 }