27 #ifndef ABSTRACTELEMENT_WANDERER_H
28 #define ABSTRACTELEMENT_WANDERER_H
42 typedef typename CC::ATOM_TYPE T;
43 typedef typename CC::PARAM_CONFIG P;
44 enum { R = P::EVENT_WINDOW_RADIUS };
47 virtual u32 GetWanderDistance()
const = 0;
56 const T& me,
const SPoint& offset)
const
65 Dir d = (Dir)rand.
Create(Dirs::DIR_COUNT);
69 wanderPt *=
Dirs::IsCorner(d) ? (GetWanderDistance() / 2) : GetWanderDistance();
u32 GetType() const
Definition: Element.h:290
static bool IsCorner(Dir dir)
Definition: Dirs.h:73
Definition: Element_Empty.h:41
bool IsLiveSite(const SPoint &location) const
Definition: EventWindow.h:148
Random & GetRandom()
Definition: EventWindow.h:122
const T & GetRelativeAtom(const SPoint &offset) const
Definition: EventWindow.tcc:26
u32 Create()
Definition: Random.h:161
Definition: ElementTable.h:43
static void FillDir(SPoint &pt, Dir dir)
Definition: Dirs.cpp:22
virtual void Behavior(EventWindow< CC > &window) const
Definition: AbstractElement_Wanderer.h:61
virtual u32 PercentMovable(const T &you, const T &me, const SPoint &offset) const
Definition: AbstractElement_Wanderer.h:55
Definition: AbstractElement_Wanderer.h:39
void SwapAtoms(const SPoint &locA, const SPoint &locB)
Definition: EventWindow.tcc:40