mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Rework functionality of leveled nodes (#9852)
Co-authored-by: sfan5 <sfan5@live.de> Co-authored-by: SmallJoker <SmallJoker@users.noreply.github.com>
This commit is contained in:
parent
7d3972a504
commit
c94d37827d
8 changed files with 79 additions and 34 deletions
|
@ -584,7 +584,7 @@ u8 MapNode::getMaxLevel(const NodeDefManager *nodemgr) const
|
|||
if( f.liquid_type == LIQUID_FLOWING || f.param_type_2 == CPT2_FLOWINGLIQUID)
|
||||
return LIQUID_LEVEL_MAX;
|
||||
if(f.leveled || f.param_type_2 == CPT2_LEVELED)
|
||||
return LEVELED_MAX;
|
||||
return f.leveled_max;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -603,14 +603,15 @@ u8 MapNode::getLevel(const NodeDefManager *nodemgr) const
|
|||
if (level)
|
||||
return level;
|
||||
}
|
||||
if (f.leveled > LEVELED_MAX)
|
||||
return LEVELED_MAX;
|
||||
// Return static value from nodedef if param2 isn't used for level
|
||||
if (f.leveled > f.leveled_max)
|
||||
return f.leveled_max;
|
||||
return f.leveled;
|
||||
}
|
||||
|
||||
u8 MapNode::setLevel(const NodeDefManager *nodemgr, s8 level)
|
||||
s8 MapNode::setLevel(const NodeDefManager *nodemgr, s16 level)
|
||||
{
|
||||
u8 rest = 0;
|
||||
s8 rest = 0;
|
||||
const ContentFeatures &f = nodemgr->get(*this);
|
||||
if (f.param_type_2 == CPT2_FLOWINGLIQUID
|
||||
|| f.liquid_type == LIQUID_FLOWING
|
||||
|
@ -631,18 +632,18 @@ u8 MapNode::setLevel(const NodeDefManager *nodemgr, s8 level)
|
|||
if (level < 0) { // zero means default for a leveled nodebox
|
||||
rest = level;
|
||||
level = 0;
|
||||
} else if (level > LEVELED_MAX) {
|
||||
rest = level - LEVELED_MAX;
|
||||
level = LEVELED_MAX;
|
||||
} else if (level > f.leveled_max) {
|
||||
rest = level - f.leveled_max;
|
||||
level = f.leveled_max;
|
||||
}
|
||||
setParam2((level & LEVELED_MASK) | (getParam2() & ~LEVELED_MASK));
|
||||
}
|
||||
return rest;
|
||||
}
|
||||
|
||||
u8 MapNode::addLevel(const NodeDefManager *nodemgr, s8 add)
|
||||
s8 MapNode::addLevel(const NodeDefManager *nodemgr, s16 add)
|
||||
{
|
||||
s8 level = getLevel(nodemgr);
|
||||
s16 level = getLevel(nodemgr);
|
||||
level += add;
|
||||
return setLevel(nodemgr, level);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue