fix(sointu): use proper modulo in SongPos

The previous implementations used remained, not modulo, which could
cause issues with negative values.
This commit is contained in:
5684185+vsariola@users.noreply.github.com 2024-09-07 18:45:14 +03:00
parent 4e1fdf57d9
commit 5e65410d27

View File

@ -81,8 +81,8 @@ func (s *Score) SongPos(songRow int) SongPos {
if s.RowsPerPattern == 0 { if s.RowsPerPattern == 0 {
return SongPos{OrderRow: 0, PatternRow: 0} return SongPos{OrderRow: 0, PatternRow: 0}
} }
orderRow := songRow / s.RowsPerPattern patternRow := (songRow%s.RowsPerPattern + s.RowsPerPattern) % s.RowsPerPattern
patternRow := songRow % s.RowsPerPattern orderRow := ((songRow - patternRow) / s.RowsPerPattern)
return SongPos{OrderRow: orderRow, PatternRow: patternRow} return SongPos{OrderRow: orderRow, PatternRow: patternRow}
} }
@ -92,7 +92,7 @@ func (s *Score) SongRow(songPos SongPos) int {
func (s *Score) Wrap(songPos SongPos) SongPos { func (s *Score) Wrap(songPos SongPos) SongPos {
ret := s.SongPos(s.SongRow(songPos)) ret := s.SongPos(s.SongRow(songPos))
ret.OrderRow %= s.Length ret.OrderRow = (ret.OrderRow%s.Length + s.Length) % s.Length
return ret return ret
} }