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) }