Esempio n. 1
0
        /// <summary>
        /// Finds the nearest village, but only the given coordinates are withing it's bounding box plus the given the
        /// distance.
        /// </summary>
        public virtual Village FindNearestVillage(int par1, int par2, int par3, int par4)
        {
            Village village = null;
            //JAVA TO C# CONVERTER TODO TASK: Octal literals cannot be represented in C#:
            float f = 3.402823E+038F;
            IEnumerator <Village> iterator = VillageList.GetEnumerator();

            do
            {
                if (!iterator.MoveNext())
                {
                    break;
                }

                Village village1 = iterator.Current;
                float   f1       = village1.GetCenter().GetDistanceSquared(par1, par2, par3);

                if (f1 < f)
                {
                    int i = par4 + village1.GetVillageRadius();

                    if (f1 <= (float)(i * i))
                    {
                        village = village1;
                        f       = f1;
                    }
                }
            }while (true);

            return(village);
        }
Esempio n. 2
0
        private void AddNewDoorsToVillageOrCreateVillage()
        {
            for (int i = 0; i < NewDoors.Count; i++)
            {
                VillageDoorInfo       villagedoorinfo = (VillageDoorInfo)NewDoors[i];
                bool                  flag            = false;
                IEnumerator <Village> iterator        = VillageList.GetEnumerator();

                do
                {
                    if (!iterator.MoveNext())
                    {
                        break;
                    }

                    Village village1 = iterator.Current;
                    int     j        = (int)village1.GetCenter().GetEuclideanDistanceTo(villagedoorinfo.PosX, villagedoorinfo.PosY, villagedoorinfo.PosZ);

                    if (j > 32 + village1.GetVillageRadius())
                    {
                        continue;
                    }

                    village1.AddVillageDoorInfo(villagedoorinfo);
                    flag = true;
                    break;
                }while (true);

                if (!flag)
                {
                    Village village = new Village(WorldObj);
                    village.AddVillageDoorInfo(villagedoorinfo);
                    VillageList.Add(village);
                }
            }

            NewDoors.Clear();
        }
        /// <summary>
        /// main AI tick function, replaces updateEntityActionState
        /// </summary>
        protected override void UpdateAITick()
        {
            if (--RandomTickDivider <= 0)
            {
                WorldObj.VillageCollectionObj.AddVillagerPosition(MathHelper2.Floor_double(PosX), MathHelper2.Floor_double(PosY), MathHelper2.Floor_double(PosZ));
                RandomTickDivider = 70 + Rand.Next(50);
                VillageObj        = WorldObj.VillageCollectionObj.FindNearestVillage(MathHelper2.Floor_double(PosX), MathHelper2.Floor_double(PosY), MathHelper2.Floor_double(PosZ), 32);

                if (VillageObj == null)
                {
                    DetachHome();
                }
                else
                {
                    ChunkCoordinates chunkcoordinates = VillageObj.GetCenter();
                    SetHomeArea(chunkcoordinates.PosX, chunkcoordinates.PosY, chunkcoordinates.PosZ, VillageObj.GetVillageRadius());
                }
            }

            base.UpdateAITick();
        }
Esempio n. 4
0
        private bool Func_48575_c()
        {
            Vec3D vec3d = Func_48572_a(Field_48577_g, Field_48583_h, Field_48584_i);

            if (vec3d == null)
            {
                return(false);
            }

            EntityZombie entityzombie;

            try
            {
                entityzombie = new EntityZombie(Field_48582_a);
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
                Console.Write(exception.StackTrace);
                return(false);
            }

            entityzombie.SetLocationAndAngles((float)vec3d.XCoord, (float)vec3d.YCoord, (float)vec3d.ZCoord, Field_48582_a.Rand.NextFloat() * 360F, 0.0F);
            Field_48582_a.SpawnEntityInWorld(entityzombie);
            ChunkCoordinates chunkcoordinates = Field_48576_f.GetCenter();

            entityzombie.SetHomeArea(chunkcoordinates.PosX, chunkcoordinates.PosY, chunkcoordinates.PosZ, Field_48576_f.GetVillageRadius());
            return(true);
        }
Esempio n. 5
0
        private bool Func_48574_b()
        {
            List <EntityPlayer> list = Field_48582_a.PlayerEntities;

            for (IEnumerator <EntityPlayer> iterator = list.GetEnumerator(); iterator.MoveNext();)
            {
                EntityPlayer entityplayer = iterator.Current;
                Field_48576_f = Field_48582_a.VillageCollectionObj.FindNearestVillage((int)entityplayer.PosX, (int)entityplayer.PosY, (int)entityplayer.PosZ, 1);

                if (Field_48576_f != null && Field_48576_f.GetNumVillageDoors() >= 10 && Field_48576_f.GetTicksSinceLastDoorAdding() >= 20 && Field_48576_f.GetNumVillagers() >= 20)
                {
                    ChunkCoordinates chunkcoordinates = Field_48576_f.GetCenter();
                    float            f    = Field_48576_f.GetVillageRadius();
                    bool             flag = false;
                    int i = 0;

                    do
                    {
                        if (i >= 10)
                        {
                            break;
                        }

                        Field_48577_g = chunkcoordinates.PosX + (int)((double)(MathHelper2.Cos(Field_48582_a.Rand.NextFloat() * (float)Math.PI * 2.0F) * f) * 0.90000000000000002D);
                        Field_48583_h = chunkcoordinates.PosY;
                        Field_48584_i = chunkcoordinates.PosZ + (int)((double)(MathHelper2.Sin(Field_48582_a.Rand.NextFloat() * (float)Math.PI * 2.0F) * f) * 0.90000000000000002D);
                        flag          = false;
                        IEnumerator <Village> iterator1 = Field_48582_a.VillageCollectionObj.Func_48554_b().GetEnumerator();

                        do
                        {
                            if (!iterator1.MoveNext())
                            {
                                break;
                            }

                            Village village = iterator1.Current;

                            if (village == Field_48576_f || !village.IsInRange(Field_48577_g, Field_48583_h, Field_48584_i))
                            {
                                continue;
                            }

                            flag = true;
                            break;
                        }while (true);

                        if (!flag)
                        {
                            break;
                        }

                        i++;
                    }while (true);

                    if (flag)
                    {
                        return(false);
                    }

                    Vec3D vec3d = Func_48572_a(Field_48577_g, Field_48583_h, Field_48584_i);

                    if (vec3d != null)
                    {
                        Field_48579_e = 0;
                        Field_48578_d = 20;
                        return(true);
                    }
                }
            }

            return(false);
        }