Skip to content

Commit

Permalink
Change ENUMBRANCE_UPDATE item flag to boolean member:
Browse files Browse the repository at this point in the history
This means:
- it's ignored when comparing items (items with the flag stack together with items that don't have the flag),
- it's not saved, it's temporary anyway.
  • Loading branch information
BevapDin committed Dec 28, 2019
1 parent f8ba267 commit 394ff8f
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 5 deletions.
4 changes: 2 additions & 2 deletions src/character.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1266,10 +1266,10 @@ void Character::check_item_encumbrance_flag()
{
bool update_required = check_encumbrance;
for( auto &i : worn ) {
if( !update_required && i.has_flag( "ENCUMBRANCE_UPDATE" ) ) {
if( !update_required && i.encumbrance_update_ ) {
update_required = true;
}
i.unset_flag( "ENCUMBRANCE_UPDATE" );
i.encumbrance_update_ = false;
}

if( update_required ) {
Expand Down
2 changes: 1 addition & 1 deletion src/item.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3697,7 +3697,7 @@ void item::on_contents_changed()
convert( type->container->unseals_into );
}

set_flag( "ENCUMBRANCE_UPDATE" );
encumbrance_update_ = true;
}

void item::on_damage( int, damage_type )
Expand Down
5 changes: 5 additions & 0 deletions src/item.h
Original file line number Diff line number Diff line change
Expand Up @@ -2138,6 +2138,11 @@ class item : public visitable<item>
int mission_id = -1; // Refers to a mission in game's master list
int player_id = -1; // Only give a mission to the right player!

// Set when the item / its content changes. Used for worn item with
// encumbrance depending on their content.
// This not part serialized or compared on purpose!
bool encumbrance_update_ = false;

private:
/**
* Accumulated rot, expressed as time the item has been in standard temperature.
Expand Down
4 changes: 2 additions & 2 deletions src/player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3318,10 +3318,10 @@ void player::process_items()
} else if( identifier == "adv_UPS_off" ) {
ch_UPS += w.ammo_remaining() / 0.6;
}
if( !update_required && w.has_flag( "ENCUMBRANCE_UPDATE" ) ) {
if( !update_required && w.encumbrance_update_ ) {
update_required = true;
}
w.unset_flag( "ENCUMBRANCE_UPDATE" );
w.encumbrance_update_ = false;
}
if( update_required ) {
reset_encumbrance();
Expand Down

0 comments on commit 394ff8f

Please sign in to comment.