예제 #1
0
        public override void Tick(IVoxelHandle handle)
        {
            if (handle.Seeder.NextFloat(0, 100) > 1)
            {
                return;
            }
            randomizeColor(handle);
            var possible = handle.Get8Connected().Where(isInfecteable).ToArray();

            if (possible.Length == 0)
            {
                return;
            }
            var i = handle.Seeder.NextInt(0, possible.Length - 1);

            var target = possible[i];

            if (target.Data.MagicLevel > 10)
            {
                return;
            }
            target.Data.MagicLevel--;
            if (target.Data.MagicLevel < 0)
            {
                target.Data.MagicLevel = 0;
                InfestVoxel(target);
            }
        }
 private static void doRemove(IVoxelHandle voxel, Town clickedTown)
 {
     if (clickedTown == null)
     {
         return;
     }
     if (clickedTown.CanRemove(voxel.GetInternalVoxel()))
     {
         clickedTown.RemoveVoxel(voxel.GetInternalVoxel());
         voxel.MarkChanged();
         voxel.Get8Connected().ForEach(v => v.MarkChanged());
     }
 }
예제 #3
0
 private IEnumerable <IVoxelHandle> getHarvestableVoxels(IVoxelHandle handle)
 {
     return(handle.Get8Connected().Where(v => v.Type is CropType && v.Data.DataValue >= CropType.HarvestDataVal));
 }
예제 #4
0
 private bool checkWaterInRange(IVoxelHandle handle)
 {
     return(handle.Get8Connected().Select(h => h.Get4Connected()).Any(conn => conn.Any(h01 => h01.Type is WaterType)));
 }