123456789101112131415161718192021222324 |
- extern crate specs;
- use specs::prelude::*;
- use super::{Viewshed, Monster, Name};
- extern crate rltk;
- use rltk::{Point};
- pub struct MonsterAI {}
- impl<'a> System<'a> for MonsterAI {
- type SystemData = ( ReadExpect<'a, Point>,
- ReadStorage<'a, Viewshed>,
- ReadStorage<'a, Monster>,
- ReadStorage<'a, Name>);
- fn run(&mut self, data : Self::SystemData) {
- let (player_pos, viewshed, monster, name) = data;
- for (viewshed,_monster,name) in (&viewshed, &monster, &name).join() {
- if viewshed.visible_tiles.contains(&*player_pos) {
- println!("{} shouts insults", name.name);
- }
- }
- }
- }
|