Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. struct LevelNoEntities {
  2. current_entity: usize,
  3. foo: i32,
  4. }
  5.  
  6. struct Level {
  7. entities: Vec<Entity>,
  8. noentities: LevelNoEntities,
  9. }
  10.  
  11. struct Entity;
  12.  
  13. enum Action {
  14. Walk,
  15. }
  16.  
  17. impl Level {
  18. fn update(&mut self) {
  19. while self.noentities.current_entity < self.entities.len() {
  20. let entity = &mut self.entities[self.noentities.current_entity];
  21. let action = entity.get_action(&self.noentities);
  22.  
  23. action.perform(&mut self.noentities);
  24. //logic...
  25. self.noentities.current_entity += 1;
  26. }
  27. self.noentities.current_entity = 0;
  28. }
  29. }
  30.  
  31. impl Entity {
  32. fn get_action(&mut self, _level: &LevelNoEntities) -> Action {
  33. // logic...
  34. Action::Walk
  35. }
  36. }
  37.  
  38. impl Action {
  39. fn perform(&self, level: &mut LevelNoEntities) -> bool {
  40. level.foo += 1; // mutate level
  41. //logic...
  42. true
  43. }
  44. }
  45.  
  46. fn main() {
  47. let mut level = Level {
  48. entities: vec![Entity],
  49. noentities: LevelNoEntities {
  50. current_entity: 0, foo: 0,
  51. }
  52. };
  53. level.update();
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement