41 lines
1021 B
Go
41 lines
1021 B
Go
package types
|
|
|
|
import (
|
|
"time"
|
|
|
|
"symph/parameter"
|
|
)
|
|
|
|
// Note represents a single musical note
|
|
type Note struct {
|
|
Value Value
|
|
|
|
// TODO: more properties to be added
|
|
}
|
|
|
|
// IsEmpty reports whether the Note has no content
|
|
func (n Note) IsEmpty() bool { return n.Value == ValueNone }
|
|
|
|
// IsWall reports whether the Note is a Wall obstacle
|
|
func (n Note) IsWall() bool { return n.Value == ValueWall }
|
|
|
|
// Chord represents a 3x3 grid of notes
|
|
type Chord struct {
|
|
Notes [parameter.GamePlayIndexYMax][parameter.GamePlayIndexXMax]Note // 3x3 grid of notes
|
|
}
|
|
|
|
type Song struct {
|
|
Chords []Chord
|
|
}
|
|
|
|
// PlayerState holds the current playing position and temporal displacement state.
|
|
// Lane (X) position is persistent; row (Y) displacement expires back to BaseIndexY
|
|
type PlayerState struct {
|
|
ResetTime time.Time // When the current row displacement expires (Zero = no reset)
|
|
|
|
PlayIndexY int // Current Y coordinate
|
|
PlayIndexX int // Current X coordinate
|
|
|
|
BaseIndexY int // Resting row (returns here after jump/slide expiry)
|
|
}
|