示例#1
0
        public override void Sieht(Zucker zucker)
        {
            if (Speicher.akt_zucker == null && Koordinate.BestimmeEntfernung(Speicher.bau, zucker) < 1050)
            {
                Speicher.akt_zucker = zucker;
            }
            else
            if (!Speicher.zucker_list.Contains(zucker) && Koordinate.BestimmeEntfernung(Speicher.bau, zucker) < 1050)
            {
                Speicher.zucker_list.Add(zucker);
                Speicher.zucker_sort();
            }

            if (Kaste == "Sammler" && ZielOptimized == null)
            {
                GeheZuZielOptimized(zucker);
            }
        }
示例#2
0
        public override void Tick()
        {
            // Ziel erreicht Aktion
            if (ZielOptimized != null)
            {
                int distance = Koordinate.BestimmeEntfernung(this, ZielOptimized);
                if (distance < Sichtweite / 1.5)
                {
                    GeheZuZiel(ZielOptimized);
                    ZielOptimized = null;
                }
            }

            // Resurcen Refresher
            if (Speicher.akt_zucker != null && Speicher.akt_zucker.Menge <= 0)
            {
                Speicher.zucker_sort();
            }
            if (Speicher.zucker_counter >= 100)
            {
                Speicher.zucker_refresh();
                Speicher.zucker_counter = 0;
            }
            if (Speicher.obst_counter >= 5)
            {
                Speicher.obst_refresh();
                Speicher.obst_counter = 0;
            }
            if (Speicher.wanzen_counter >= 10)
            {
                Speicher.akt_wanze      = null;
                Speicher.wanzen_counter = 0;
            }

            // Obst tragerichtung reset
            if (Kaste == "Sammler" && GetragenesObst != null && AktuelleLast > 0)
            {
                obst_angle_reset = obst_angle_reset + 1;
                if (obst_angle_reset >= 250)
                {
                    GeheZuBauOptimized();
                    obst_angle_reset = 0;
                }
            }

            // Zuweit laufende Ameisen korigieren
            if (Kaste == "Sammler" && AktuelleLast == 10 && EntfernungZuBau < 80)
            {
                GeheZuBauOptimized();
            }

            // Zulange nichts reset // bringt nicht viel
            if ((Kaste == "Sammler" || Kaste == "ZuckerKämpfer") && ZielOptimized == null)
            {
                do_nothing_counter = do_nothing_counter + 1;
                if (do_nothing_counter >= 100)
                {
                    BleibStehen();
                    do_nothing_counter = 0;
                }
            }

            // Kampfradius
            if (Kaste == "Kämpfer" && EntfernungZuBau > 350)
            {
                GeheZuBauOptimized();
            }

            // Zuckerkämpfer beim Zucker behalten
            if (Kaste == "Zuckerkämpfer" && Koordinate.BestimmeEntfernung(this, Speicher.akt_zucker) > 50)
            {
                GeheZuZielOptimized(Speicher.akt_zucker);
            }

            // Identifier
            if (Kaste == "FSpäher" || Kaste == "Späher1" || Kaste == "Späher2" || Kaste == "Späher3" || Kaste == "Späher4")
            {
                Denke("SP");
            }
            if (Kaste == "Sammler")
            {
                Denke("S");
            }
            if (Kaste == "Kämpfer")
            {
                Denke("K");
            }
            if (Kaste == "ZuckerKämpfer")
            {
                Denke("ZK");
            }
        }