41 lines
689 B
Lua
41 lines
689 B
Lua
|
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
|
||
|
|
||
|
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
|