【Defold】ビット操作用モジュール「BitFlag」
bit 操作を少しでも簡単に行うための lua モジュールを作成しました。
local M = {}
function M.new()
local instance = {}
instance.flag = 0
function instance.add_flag(_flag)
instance.flag = bit.bor(instance.flag, bit.lshift(1, _flag))
end
function instance.del_flag(_flag)
instance.flag = bit.band(instance.flag, bit.bnot(bit.lshift(1, _flag)))
end
function instance.has_flag(_flag)
return (bit.band(instance.flag, bit.lshift(1, _flag)) ~= 0)
end
function instance.one_time_flag(_flag)
local temp = instance.has_flag(_flag);
instance.del_flag(_flag);
return temp;
end
function instance.reset_flag()
instance.flag = 0
end
return instance
end
return M
簡単なものですが、毎回作るは面倒なので公開しました。
※2020/06/20 ビットシフト抜け修正