Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct LevelNoEntities {
- current_entity: usize,
- foo: i32,
- }
- struct Level {
- entities: Vec<Entity>,
- noentities: LevelNoEntities,
- }
- struct Entity;
- enum Action {
- Walk,
- }
- impl Level {
- fn update(&mut self) {
- while self.noentities.current_entity < self.entities.len() {
- let entity = &mut self.entities[self.noentities.current_entity];
- let action = entity.get_action(&self.noentities);
- action.perform(&mut self.noentities);
- //logic...
- self.noentities.current_entity += 1;
- }
- self.noentities.current_entity = 0;
- }
- }
- impl Entity {
- fn get_action(&mut self, _level: &LevelNoEntities) -> Action {
- // logic...
- Action::Walk
- }
- }
- impl Action {
- fn perform(&self, level: &mut LevelNoEntities) -> bool {
- level.foo += 1; // mutate level
- //logic...
- true
- }
- }
- fn main() {
- let mut level = Level {
- entities: vec![Entity],
- noentities: LevelNoEntities {
- current_entity: 0, foo: 0,
- }
- };
- level.update();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement