1
0
Fork 0
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:
Wuzzy 2020-05-19 21:08:37 +02:00 committed by GitHub
parent 7d3972a504
commit c94d37827d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 79 additions and 34 deletions

View file

@ -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);
}