Struct veloren_world::site2::Site
source · pub struct Site {
pub origin: Vec2<i32>,
name: String,
pub tiles: TileGrid,
pub plots: Store<Plot>,
pub plazas: Vec<Id<Plot>>,
pub roads: Vec<Id<Plot>>,
}
Fields§
§origin: Vec2<i32>
§name: String
§tiles: TileGrid
§plots: Store<Plot>
§plazas: Vec<Id<Plot>>
§roads: Vec<Id<Plot>>
Implementations§
source§impl Site
impl Site
pub fn radius(&self) -> f32
pub fn spawn_rules(&self, wpos: Vec2<i32>) -> SpawnRules
pub fn bounds(&self) -> Aabr<i32>
pub fn plot(&self, id: Id<Plot>) -> &Plot
pub fn plots(&self) -> impl ExactSizeIterator<Item = &Plot> + '_
pub fn plazas(&self) -> impl ExactSizeIterator<Item = Id<Plot>> + '_
pub fn create_plot(&mut self, plot: Plot) -> Id<Plot>
pub fn blit_aabr(&mut self, aabr: Aabr<i32>, tile: Tile)
pub fn create_road( &mut self, land: &Land<'_>, rng: &mut impl Rng, a: Vec2<i32>, b: Vec2<i32>, w: u16, ) -> Option<Id<Plot>>
pub fn find_aabr( &mut self, search_pos: Vec2<i32>, area_range: Range<u32>, min_dims: Extent2<u32>, ) -> Option<(Aabr<i32>, Vec2<i32>, Vec2<i32>)>
pub fn find_roadside_aabr( &mut self, rng: &mut impl Rng, area_range: Range<u32>, min_dims: Extent2<u32>, ) -> Option<(Aabr<i32>, Vec2<i32>, Vec2<i32>)>
pub fn find_rural_aabr( &mut self, rng: &mut impl Rng, area_range: Range<u32>, min_dims: Extent2<u32>, ) -> Option<(Aabr<i32>, Vec2<i32>, Vec2<i32>)>
pub fn make_plaza_at( &mut self, land: &Land<'_>, pos: &Vec2<i32>, radius: i32, rng: &mut impl Rng, ) -> Option<Id<Plot>>
pub fn make_plaza( &mut self, land: &Land<'_>, rng: &mut impl Rng, generator_stats: &mut SitesGenMeta, site_name: &String, ) -> Option<Id<Plot>>
pub fn demarcate_obstacles(&mut self, land: &Land<'_>)
sourcepub fn make_initial_plaza(
&mut self,
land: &Land<'_>,
rng: &mut impl Rng,
plaza_radius: u32,
search_inner_radius: u32,
search_width: u32,
generator_stats: &mut SitesGenMeta,
site_name: &String,
) -> Option<Id<Plot>>
pub fn make_initial_plaza( &mut self, land: &Land<'_>, rng: &mut impl Rng, plaza_radius: u32, search_inner_radius: u32, search_width: u32, generator_stats: &mut SitesGenMeta, site_name: &String, ) -> Option<Id<Plot>>
The find_roadside_aabr function wants to have an existing plaza or road. This function is used to find a suitable location for the first plaza in a town, which has the side-effect of creating at least one road. This function is more expensive than the make_plaza function but fails to find a plaza location only if there are no suitable locations within the entire search radius.
It works by exhaustively finding all tiles within a ring pattern around the town center where the tile and all surrounding tiles to the plaza radius are not hazards or roads. It then chooses the tile with the minimum distance from the town center as the plaza location. See the comments in common/src/spiral.rs for more information on the spiral ring pattern.
demarcate_obstacles() should be called before this function to mark the obstacles and roads. (Cliff Towns are an exception).
sourcepub fn make_initial_plaza_default(
&mut self,
land: &Land<'_>,
rng: &mut impl Rng,
generator_stats: &mut SitesGenMeta,
site_name: &String,
) -> Option<Id<Plot>>
pub fn make_initial_plaza_default( &mut self, land: &Land<'_>, rng: &mut impl Rng, generator_stats: &mut SitesGenMeta, site_name: &String, ) -> Option<Id<Plot>>
This is make_initial_plaza with default options/parameters. This calls make_initial_plaza with the default parameters for the plaza_radius and search_inner_radius. The plaza_radius will be in the range 1-3, and the search_inner_radius will be 7 + plaza_radius. The search_width will be PLAZA_MAX_SEARCH_RADIUS - search_inner_radius. The search_inner_radius is approximately the same distance from the center of town as for the original make_plaza function, so this function will place the initial plaza and roads near where the original make_plaza function would place them in the case where the site is clear of hazards.
This default plaza generation function is used for generating cities, cliff towns, savannah towns, and coastal towns. The other town types (terracotta, myrmidon, desert city) have a central feature so they use specific plaza generation parameters and call the make_initial_plaza function directly.
demarcate_obstacles() should be called before this function to mark the obstacles and roads.
pub fn name(&self) -> &str
pub fn generate_mine( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_citadel( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_gnarling( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_adlet( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, index: IndexRef<'_>, ) -> Self
pub fn generate_terracotta( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, generator_stats: &mut SitesGenMeta, ) -> Self
pub fn generate_myrmidon( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, generator_stats: &mut SitesGenMeta, ) -> Self
pub fn generate_giant_tree( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_city( land: &Land<'_>, index: IndexRef<'_>, rng: &mut impl Rng, origin: Vec2<i32>, size: f32, calendar: Option<&Calendar>, generator_stats: &mut SitesGenMeta, ) -> Self
pub fn generate_glider_course( land: &Land<'_>, _index: IndexRef<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_cliff_town( land: &Land<'_>, index: IndexRef<'_>, rng: &mut impl Rng, origin: Vec2<i32>, generator_stats: &mut SitesGenMeta, ) -> Self
pub fn generate_savannah_town( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, generator_stats: &mut SitesGenMeta, ) -> Self
pub fn generate_coastal_town( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, generator_stats: &mut SitesGenMeta, ) -> Self
pub fn generate_desert_city( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, generator_stats: &mut SitesGenMeta, ) -> Self
pub fn generate_farm( is_desert: bool, rng: &mut impl Rng, site: &mut Site, land: &Land<'_>, ) -> bool
pub fn generate_haniwa( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_chapel_site( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_pirate_hideout( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_jungle_ruin( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_rock_circle( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_troll_cave( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_camp( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_cultist( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_sahagin( land: &Land<'_>, index: IndexRef<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_vampire_castle( land: &Land<'_>, rng: &mut impl Rng, origin: Vec2<i32>, ) -> Self
pub fn generate_bridge( land: &Land<'_>, index: IndexRef<'_>, rng: &mut impl Rng, start: Vec2<i32>, end: Vec2<i32>, ) -> Self
pub fn wpos_tile_pos(&self, wpos2d: Vec2<i32>) -> Vec2<i32>
pub fn wpos_tile(&self, wpos2d: Vec2<i32>) -> &Tile
pub fn tile_wpos(&self, tile: Vec2<i32>) -> Vec2<i32>
pub fn tile_center_wpos(&self, tile: Vec2<i32>) -> Vec2<i32>
pub fn render_tile( &self, canvas: &mut Canvas<'_>, dynamic_rng: &mut impl Rng, tpos: Vec2<i32>, )
pub fn render(&self, canvas: &mut Canvas<'_>, dynamic_rng: &mut impl Rng)
pub fn apply_supplement( &self, dynamic_rng: &mut impl Rng, wpos2d: Vec2<i32>, supplement: &mut ChunkSupplement, )
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Site
impl RefUnwindSafe for Site
impl Send for Site
impl Sync for Site
impl Unpin for Site
impl UnwindSafe for Site
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
§impl<Context> SubContext<Context> for Context
impl<Context> SubContext<Context> for Context
fn sub_context(self) -> Context
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> TryDefault for Twhere
T: Default,
impl<T> TryDefault for Twhere
T: Default,
§fn try_default() -> Result<T, String>
fn try_default() -> Result<T, String>
§fn unwrap_default() -> Self
fn unwrap_default() -> Self
try_default
and panics on an error case.