# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== class DmgTypes: """Container for damage data stats.""" def __init__(self, em, thermal, kinetic, explosive): self.em = em self.thermal = thermal self.kinetic = kinetic self.explosive = explosive self.total = em + thermal + kinetic + explosive # Iterator is needed to support tuple-style unpacking def __iter__(self): yield self.em yield self.thermal yield self.kinetic yield self.explosive yield self.total def __eq__(self, other): if not isinstance(other, DmgTypes): return NotImplemented return all(( self.em == other.em, self.thermal == other.thermal, self.kinetic == other.kinetic, self.explosive == other.explosive, self.total == other.total)) def __bool__(self): return any(( self.em, self.thermal, self.kinetic, self.explosive, self.total)) def __hash__(self): return hash(( DmgTypes.__qualname__, self.em, self.thermal, self.kinetic, self.explosive, self.total))