simplify & fix UpdateRavi

This commit is contained in:
wish
2023-10-03 23:05:45 +11:00
parent d0431fbc1c
commit 0f2edbf028

View File

@@ -115,6 +115,7 @@ func (s *Server) GetRaviMultiplier() float64 {
func (s *Server) UpdateRavi(semaID uint32, index uint8, value uint32, update bool) (uint32, uint32) {
var prev uint32
var dest *[]uint32
switch semaID {
case 0x40000:
switch index {
@@ -123,28 +124,20 @@ func (s *Server) UpdateRavi(semaID uint32, index uint8, value uint32, update boo
default:
value = uint32(float64(value) * s.GetRaviMultiplier())
}
prev = s.raviente.state[index]
if prev != 0 && !update {
return prev, prev
}
s.raviente.state[index] += value
return prev, s.raviente.state[index]
dest = &s.raviente.state
case 0x50000:
prev = s.raviente.support[index]
if prev != 0 && !update {
return prev, prev
}
s.raviente.support[index] += value
return prev, s.raviente.support[index]
dest = &s.raviente.support
case 0x60000:
prev = s.raviente.register[index]
if prev != 0 && !update {
return prev, prev
}
s.raviente.register[index] += value
return prev, s.raviente.register[index]
dest = &s.raviente.register
default:
return 0, 0
}
return 0, 0
if update {
(*dest)[index] += value
} else {
(*dest)[index] = value
}
return prev, (*dest)[index]
}
// NewServer creates a new Server type.