From f4063c0d58d1a1812e24269efa1ebb8f9a7a2f2e Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Wed, 19 Feb 2014 23:22:10 -0800 Subject: Make mapflags bitmask instead of bitfield --- src/map/mapflag.cpp | 110 +++++----------------------------------------------- 1 file changed, 10 insertions(+), 100 deletions(-) (limited to 'src/map/mapflag.cpp') diff --git a/src/map/mapflag.cpp b/src/map/mapflag.cpp index 4b7b305..73d46f1 100644 --- a/src/map/mapflag.cpp +++ b/src/map/mapflag.cpp @@ -24,110 +24,15 @@ bool MapFlags::get(MapFlag mf) const { - switch (mf) - { - case MapFlag::NOTELEPORT: - return noteleport; - case MapFlag::NORETURN: - return noreturn; - case MapFlag::MONSTER_NOTELEPORT: - return monster_noteleport; - case MapFlag::NOSAVE: - return nosave; - case MapFlag::NOPENALTY: - return nopenalty; - case MapFlag::PVP: - return pvp; - case MapFlag::PVP_NOPARTY: - return pvp_noparty; - case MapFlag::PVP_NOCALCRANK: - return pvp_nocalcrank; - case MapFlag::NOWARP: - return nowarp; - case MapFlag::NOWARPTO: - return nowarpto; - case MapFlag::NOPVP: - return nopvp; - case MapFlag::SNOW: - return snow; - case MapFlag::FOG: - return fog; - case MapFlag::SAKURA: - return sakura; - case MapFlag::LEAVES: - return leaves; - case MapFlag::RAIN: - return rain; - case MapFlag::NO_PLAYER_DROPS: - return no_player_drops; - case MapFlag::TOWN: - return town; - default: - return false; - } + return flags & static_cast(mf); } void MapFlags::set(MapFlag mf, bool val) { - switch (mf) - { - case MapFlag::NOTELEPORT: - noteleport = val; - break; - case MapFlag::NORETURN: - noreturn = val; - break; - case MapFlag::MONSTER_NOTELEPORT: - monster_noteleport = val; - break; - case MapFlag::NOSAVE: - nosave = val; - break; - case MapFlag::NOPENALTY: - nopenalty = val; - break; - case MapFlag::PVP: - pvp = val; - break; - case MapFlag::PVP_NOPARTY: - pvp_noparty = val; - break; - case MapFlag::PVP_NOCALCRANK: - pvp_nocalcrank = val; - break; - case MapFlag::NOWARP: - nowarp = val; - break; - case MapFlag::NOWARPTO: - nowarpto = val; - break; - case MapFlag::NOPVP: - nopvp = val; - break; - case MapFlag::SNOW: - snow = val; - break; - case MapFlag::FOG: - fog = val; - break; - case MapFlag::SAKURA: - sakura = val; - break; - case MapFlag::LEAVES: - leaves = val; - break; - case MapFlag::RAIN: - rain = val; - break; - case MapFlag::NO_PLAYER_DROPS: - no_player_drops = val; - break; - case MapFlag::TOWN: - town = val; - break; - default: - break; - } + if (val) + flags |= static_cast(mf); + else + flags &=~ static_cast(mf); } template<> @@ -177,3 +82,8 @@ bool extract(XString str, MapFlag *mf) } return false; } + +MapFlag map_flag_from_int(int shift) +{ + return static_cast(1 << shift); +} -- cgit v1.2.3-60-g2f50