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()); } }
private IEnumerable <IVoxelHandle> getHarvestableVoxels(IVoxelHandle handle) { return(handle.Get8Connected().Where(v => v.Type is CropType && v.Data.DataValue >= CropType.HarvestDataVal)); }
private bool checkWaterInRange(IVoxelHandle handle) { return(handle.Get8Connected().Select(h => h.Get4Connected()).Any(conn => conn.Any(h01 => h01.Type is WaterType))); }