HugoDzz/rust-sandbox
11
1mod blood;2mod bone;3mod grain;4mod grid;5mod setup;6mod utils;7 8use crate::blood::shade_blood;9use crate::grain::{add_grain, update_grain};10use crate::grid::{update_grid_data, Grid};11use crate::setup::setup;12use crate::utils::constants::{TICK_RATE, WINDOW_SIZE};13use crate::utils::tick::TickCounter;14 15use bevy::prelude::*;16use bevy::window::PresentMode;17use bevy_pixel_camera::PixelCameraPlugin;18 19/*20 21 🦀 Main function, used to:22 - Add Ressources -> Resources are global data we can use later across Systems, independently of entities. Learn more: https://bevy-cheatbook.github.io/programming/res.html23 - Register Systems -> Think Bevy ECS Systems like a database, Systems are a way to "query" our data to implement game logic. Learn more: https://bevy-cheatbook.github.io/programming/systems.html24 - Run our app25 26*/27 28fn main() {29 App::new()30 .add_plugins((31 DefaultPlugins32 .set(ImagePlugin::default_nearest())33 .set(WindowPlugin {34 primary_window: Some(Window {35 title: "Hell".into(),36 resolution: (WINDOW_SIZE[0], WINDOW_SIZE[1]).into(),37 resizable: false,38 present_mode: PresentMode::AutoVsync,39 // Used to run the game in my own Canvas in my Svelte web app40 canvas: Some("#bevy-canvas".to_string()),41 ..default()42 }),43 ..default()44 })45 .build(),46 PixelCameraPlugin,47 ))48 .insert_resource(ClearColor(Color::hex("221e22").unwrap()))49 .insert_resource(TickCounter {50 count: 0,51 tick_rate: TICK_RATE,52 })53 .insert_resource(Grid::new())54 .add_systems(Startup, setup)55 .add_systems(Update, add_grain)56 .add_systems(Update, update_grain)57 .add_systems(Update, update_grid_data)58 .add_systems(Update, shade_blood)59 .run();60}61 