12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- use std::default::Default;
- use bevy::core::FixedTimestep;
- use bevy::prelude::*;
- use bevy::render::pass::ClearColor;
- pub mod components;
- use crate::components as c;
- pub mod game;
- pub mod snake;
- fn main() {
- App::build()
- .insert_resource(WindowDescriptor {
- title: "Snake!".to_string(),
- width: 500.0,
- height: 500.0,
- ..Default::default()
- })
- .insert_resource(ClearColor(Color::rgb(0.04, 0.04, 0.04)))
- .insert_resource(c::SnakeSegments::default())
- .insert_resource(c::LastTailPosition::default())
- .add_startup_system(game::setup.system())
- .add_startup_stage("game_setup", SystemStage::single(snake::spawn.system()))
- .add_plugins(DefaultPlugins)
- .add_system(
- snake::input
- .system()
- .label(c::SnakeMovement::Input)
- .before(c::SnakeMovement::Movement),
- )
- .add_system(snake::die.system().after(c::SnakeMovement::Movement))
- .add_system_set(
- SystemSet::new()
- .with_run_criteria(FixedTimestep::step(0.3))
- .with_system(snake::movement.system().label(c::SnakeMovement::Movement))
- .with_system(
- snake::eating
- .system()
- .label(c::SnakeMovement::Eating)
- .after(c::SnakeMovement::Movement),
- )
- .with_system(
- snake::growth
- .system()
- .label(c::SnakeMovement::Growth)
- .after(c::SnakeMovement::Eating),
- ),
- )
- .add_system_set_to_stage(
- CoreStage::PostUpdate,
- SystemSet::new()
- .with_system(game::position_translation.system())
- .with_system(game::size_scaling.system()),
- )
- .add_system_set(
- SystemSet::new()
- .with_run_criteria(FixedTimestep::step(0.9))
- .with_system(snake::food.system()),
- )
- .add_event::<c::GrowthEvent>()
- .add_event::<c::GameOverEvent>()
- .run();
- }
|