43 typedef u32 ElementType;
45 template <
class CC>
class Atom;
54 typedef typename CC::ATOM_TYPE T;
55 typedef typename CC::PARAM_CONFIG P;
56 enum { R = P::EVENT_WINDOW_RADIUS };
62 ElementParameters<CC> m_elementParameters;
68 AtomicParameters<CC> m_atomicParameters;
91 bool m_renderLowlight;
103 const char* m_atomicSymbol;
121 T defaultAtom(this->
GetType(), 0, 0, 0);
161 MFM_API_ASSERT_NONNULL(symbol);
163 switch (strlen(symbol))
166 if (!(symbol[1] >=
'a' && symbol[1] <=
'z'))
173 if (symbol[0] >=
'A' && symbol[0] <=
'Z')
198 FAIL(ILLEGAL_ARGUMENT);
200 m_atomicSymbol = symbol;
235 const T& me,
const SPoint& offset)
const = 0;
248 m_renderLowlight(false),
249 m_atomicSymbol(
"!!"),
252 LOG.
Debug(
"Constructed %@",&m_UUID);
307 return m_atomicSymbol;
388 return m_defaultAtom;
421 return "NO DESCRIPTION";
447 r = (oc & 0x00ff0000) >> 17;
448 g = (oc & 0x0000ff00) >> 9;
449 b = (oc & 0x000000ff) >> 1;
451 return 0xff000000 | (r << 16) | (g << 8) | b;
460 m_renderLowlight = !m_renderLowlight;
520 return m_elementParameters;
525 return m_elementParameters;
528 const AtomicParameters<CC> & GetAtomicParameters()
const
530 return m_atomicParameters;
533 AtomicParameters<CC> & GetAtomicParameters()
535 return m_atomicParameters;
538 <<<<<<< Updated upstream
542 template <
class CC, u32 R>
543 struct ElementParameterNeighborhood :
public Parameters::Neighborhood<R>
545 ElementParameterNeighborhood(Element<CC> * elt,
548 const char * description)
549 : Parameters::Neighborhood<R>(elt->GetElementParameters(), tag, name, description)
555 struct ElementParameterS32 :
public Parameters::S32
557 ElementParameterS32(Element<CC> * elt,
560 const char * description,
561 s32 min, s32 initial, s32 max, s32 snap)
562 : Parameters::S32(elt->GetElementParameters(), tag, name, description, min, initial, max, snap)
566 >>>>>>> Stashed changes
571 #include "Element.tcc"
void Diffuse(EventWindow< CC > &window) const
Definition: Element.tcc:73
u32 GetType() const
Definition: Element.h:290
Definition: Parameter.h:48
void AllocateType()
Definition: Element.h:273
virtual const char * GetDescription() const
Definition: Element.h:419
static const u32 COMPLETE_DIFFUSABILITY
Definition: Element.h:516
u32 NoDiffusability(EventWindow< CC > &ew, SPoint nowAt, SPoint maybeAt) const
Definition: Element.h:508
void ToggleLowlightPhysicsColor()
Definition: Element.h:458
virtual u32 DefaultPhysicsColor() const =0
void SetName(const char *name)
Definition: Element.h:209
void SetAtomicSymbol(const char *symbol)
Definition: Element.h:193
const char * GetName() const
Definition: Element.h:316
virtual u32 Diffusability(EventWindow< CC > &ew, SPoint nowAt, SPoint maybeAt) const
Definition: Element.h:497
const UUID & GetUUID() const
Definition: Element.h:355
virtual const T & GetDefaultAtom() const
Definition: Element.h:382
virtual u32 PercentMovable(const T &you, const T &me, const SPoint &offset) const =0
virtual void Behavior(EventWindow< CC > &window) const =0
bool IsType(u32 type) const
Definition: Element.h:345
void Debug(const char *format,...)
Definition: Logger.h:301
Element(const UUID &uuid)
Definition: Element.h:246
virtual u32 LocalPhysicsColor(const T &atom, u32 selector) const
Definition: Element.h:478
virtual T BuildDefaultAtom() const
Definition: Element.h:119
Definition: ElementTable.h:43
const char * GetAtomicSymbol() const
Definition: Element.h:305
bool IsValidAtomicSymbol(const char *symbol)
Definition: Element.h:159
Definition: BitVector.h:47
virtual u32 PhysicsColor() const
Definition: Element.h:398
Definition: StaticLoader.h:58
const BitVector< P::BITS_PER_ATOM > & GetBits(const T &atom) const
Definition: Element.h:132
virtual void AppendDescription(const T *atom, OString64 &desc) const
Definition: Element.h:331
virtual u32 DefaultLowlightColor() const
Definition: Element.h:441
BitVector< P::BITS_PER_ATOM > & GetBits(T &atom) const
Definition: Element.h:144