class DisplayElementTendency extends DisplayElementBase { protected int TENDENCY_MASK = 7;// first x bits protected int SERIOUSNESS_BIT_MASK = 7;// second x bits protected int SERIOUSNESS_BIT_OFFSET = 3;//bit offset - points to where seriousness bit starts(TODO: get as log from mask) void DisplayElementTendency(PlayerBase player) { NUM_OF_BITS = 6;//the overall num of bits this element occupies(can be calculated from masks, better leave it explicit) } void SetSeriousnessLevel( DSLevels level ) { m_Value = (~(SERIOUSNESS_BIT_MASK << SERIOUSNESS_BIT_OFFSET)) & m_Value;//clear the last value m_Value = (level << SERIOUSNESS_BIT_OFFSET) | m_Value; } override void UpdateHUD() { super.UpdateHUD(); int seriousness = m_Value >> SERIOUSNESS_BIT_OFFSET; int tendency = TENDENCY_MASK & m_Value; //PrintString(tendency.ToString()); if(tendency > 3) { tendency = -(tendency - 3); } /* PrintString(this.ToString()); PrintString("ser:"+ seriousness.ToString()); PrintString("tnd:"+ tendency.ToString()); */ m_ModulePlayerStatus.DisplayTendency(m_Key, tendency, TranslateLevelToStatus(seriousness)); } void SetTendency(int tendency) { m_Value = (~TENDENCY_MASK) & m_Value;//clear the last value m_Value = tendency | m_Value;//insert the new one //PrintString(m_Value.ToString()); } }