public void Absorb(Atom atom, int amo) { if (amo == 0) { return; } AtomData data = FindAtomData(atom.GetAtomicNumber()); if (data == null) { return; } if (!data.IsDiscovered()) { data.SetIsDiscovered(true); if (OnAtomDiscover != null) { OnAtomDiscover(atom, amo); } if (maxAtom == null || atom.GetAtomicNumber() > maxAtom.GetAtomicNumber()) { maxAtom = atom; } } if (amo + data.GetCurrAmo() < data.GetCurrAmo()) { amo = int.MaxValue - data.GetCurrAmo(); if (amo == 0) { return; } } data.Gain(amo); if (OnAtomAdd != null) { OnAtomAdd(atom, amo); } }