[package]
name = "chain-reaction-collapse"
authors = ["RobertoMaurizzi <roberto.maurizzi@gmail.com>"]
version = "0.1.0"
edition = "2024"

[dependencies]
bevy = { version = "0.16", features = ["wayland"] }
rand = "0.8"
# Compile low-severity logs out of native builds for performance.
log = { version = "0.4", features = [
    "max_level_debug",
    "release_max_level_warn",
] }
# Compile low-severity logs out of web builds for performance.
tracing = { version = "0.1", features = [
    "max_level_debug",
    "release_max_level_warn",
] }
bevy_ecs_ldtk = "0.12.0"
bevy-inspector-egui = { version = "0.31.0", optional = true }

# Your web builds will start failing if you add a dependency that pulls in `getrandom` v0.3+.
# To fix this, you should tell `getrandom` to use the `wasm_js` backend on Wasm.
# See: <https://docs.rs/getrandom/0.3.3/getrandom/#webassembly-support>.
#[target.wasm32-unknown-unknown.dependencies]
#getrandom = { version = "0.3", features = ["wasm_js"] }
# In addition to enabling the `wasm_js` feature, you need to include `--cfg 'getrandom_backend="wasm_js"'`
# in your rustflags for both local and CI/CD web builds, taking into account that rustflags specified in
# multiple places are NOT combined (see <https://github.com/rust-lang/cargo/issues/5376>).
# Alternatively, you can opt out of the rustflags check with this patch:
#[patch.crates-io]
#getrandom = { git = "https://github.com/benfrankel/getrandom" }

[features]
# Default to a native dev build.
default = ["dev_native"]
dev = [
    # Improve compile times for dev builds by linking Bevy as a dynamic library.
    "bevy/dynamic_linking",
    "bevy/bevy_dev_tools",
    "bevy/bevy_ui_debug",
    # Improve error messages coming from Bevy
    "bevy/track_location",
]
dev_native = [
    "dev",
    # Enable asset hot reloading for native dev builds.
    "bevy/file_watcher",
    # Enable embedded asset hot reloading for native dev builds.
    "bevy/embedded_watcher",
]
inspector = ["bevy-inspector-egui"]


[package.metadata.bevy_cli.release]
# Disable dev features for release builds.
default-features = false

[package.metadata.bevy_cli.web]
# Disable native features for web builds.
default-features = false

[package.metadata.bevy_cli.web.dev]
features = ["dev"]


[lints.rust]
# Mark `bevy_lint` as a valid `cfg`, as it is set when the Bevy linter runs.
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(bevy_lint)"] }

[lints.clippy]
# Bevy supplies arguments to systems via dependency injection, so it's natural for systems to
# request more than 7 arguments, which would undesirably trigger this lint.
too_many_arguments = "allow"
# Queries may access many components, which would undesirably trigger this lint.
type_complexity = "allow"
# Make sure macros use their standard braces, such as `[]` for `bevy_ecs::children!`.
nonstandard_macro_braces = "warn"

# You can configure the warning levels of Bevy lints here. For a list of all lints, see:
# <https://thebevyflock.github.io/bevy_cli/bevy_lint/lints/>
[package.metadata.bevy_lint]
# panicking_methods = "deny"
# pedantic = "warn"


# Compile with Performance Optimizations:
# <https://bevyengine.org/learn/quick-start/getting-started/setup/#compile-with-performance-optimizations>

# Enable a small amount of optimization in the dev profile.
[profile.dev]
opt-level = 1

# Enable a large amount of optimization in the dev profile for dependencies.
[profile.dev.package."*"]
opt-level = 3

# Remove expensive debug assertions due to <https://github.com/bevyengine/bevy/issues/14291>
[profile.dev.package.wgpu-types]
debug-assertions = false

[profile.release]
# Compile the entire crate as one unit.
# Slows compile times, marginal improvements.
codegen-units = 1
# Do a second optimization pass over the entire program, including dependencies.
# Slows compile times, marginal improvements.
lto = "thin"

# This profile will be used by `bevy run web` automatically.
[profile.web-release]
# Default to release profile values.
inherits = "release"
# Optimize with size in mind (also try "z", sometimes it is better).
# Slightly slows compile times, great improvements to file size and runtime performance.
opt-level = "s"
# Strip all debugging information from the binary to slightly reduce file size.
strip = "debuginfo"

# Optimize for build time in CI.
[profile.ci]
inherits = "dev"
opt-level = 0
debug = "line-tables-only"
codegen-units = 4

[profile.ci.package."*"]
opt-level = 0
