pulsar/shared/nflags.lua

45 lines
743 B
Lua
Raw Normal View History

2024-03-16 22:21:50 +00:00
nflags=klass()
function nflags:init(o)
self.c = o.c or 0 -- custom
self.e = o.e or 0 -- effect
self.v = o.v or 0 -- volume
self.w = o.w or 0 -- waveform
self.p = o.p or 0 -- pitch
self:validate()
end
2024-03-16 23:23:31 +00:00
function nflags:clone()
return nflags:new(self)
end
2024-03-16 22:21:50 +00:00
function nflags:validate()
local c,e,v,w,p
=self.c,self.e,self.v,self.w,self.p
assert_range(c,0,2,"custom")
assert_range(e,0,8,"effect")
assert_range(v,0,8,"volume")
assert_range(w,0,8,"waveform")
assert_range(p,0,64,"pitch")
end
function nflags:encode()
self:validate()
local c,e,v,w,p
=self.c,self.e,self.v,self.w,self.p
c &= 0xffff
e &= 0xffff
v &= 0xffff
w &= 0xffff
p &= 0xffff
return (
(c << 15) |
(e << 12) |
(v << 9) |
(w << 6) |
(p)
)
end