Documentation ¶
Index ¶
Constants ¶
const ( NO_COUNTDOWN = iota NORMAL_COUNTDOWN HALF_COUNTDOWN DOUBLE_COUNTDOWN )
Countdown speed and length.
const ( OSU_GAMEMODE = iota TAIKO_GAMEMODE CTB_GAMEMODE MANIA_GAMEMODE )
All possible gamemodes
const ( CIRCLE = 1 << iota SLIDER NEW_COMBO SPINNER COMBO_SKIP_1 COMBO_SKIP_2 COMBO_SKIP_3 MANIA_HOLD_NOTE )
Bitmap for BaseHitObject.Type.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Background ¶
Background specifies parameters of beatmap background. Example of an Background:
0,0,"bg.jpg",0,0
func (*Background) FromString ¶
func (b *Background) FromString(str string) (err error)
FromString fills Background fields with data parsed from string.
func (Background) String ¶
func (b Background) String() string
String returns string of Background as it would be in .osu file
type BaseHitObject ¶
BaseHitObject provides common information that is used in all hit objects.
type Beatmap ¶
type Beatmap struct { FileFormatVersion int // Specifies version of beatmap file FilePath string // The location of beatmap .osu file // General // // Various properties about the beatmap's gameplay. AudioFilename string // The location of the audio file relative to the current folder AudioLeadIn int // The amount of time added before the audio file begins playing PreviewTime int // Defines when the audio file should begin playing when selected in the song selection menu Countdown int // The speed of the countdown which occurs before the first hit object appears SampleSet SampleSet // Specifies which set of hit sounds will be used throughout the beatmap StackLeniency float64 // How often closely placed hit objects will be stacked together GameMode int // Defines the game mode of the beatmap (0=osu!, 1=Taiko, 2=Catch the Beat, 3=osu!mania) LetterboxInBreaks bool // Whether the letterbox appears during breaks StoryFireInFront bool // Whether or not display the storyboard in front of combo fire SkinPreference string // The preferred skin to use during gameplay EpilepsyWarning bool // Whether or not show a 'This beatmap contains scenes with rapidly flashing colours...' warning at the beginning of the beatmap CountdownOffset int // How many beats earlier the countdown starts WidescreenStoryboard bool // Whether or not the storyboard should be widescreen SpecialStyle bool // Whether or not use the special N+1 style for osu!mania UseSkinSprites bool // Whether or not the storyboard can use user's skin resources // Editor // // Saved settings for mappers while editing beatmaps. Bookmarks []int // A list of times of editor bookmarks DistanceSpacing float64 // A multiplier for the "Distance Snap" feature BeatDivisor int // The beat division for placing objects GridSize int // The size of the grid for the "Grid Snap" feature TimelineZoom float64 // The zoom in the editor timeline // Metadata // // Descriptive information about the song and beatmap. Title string // The title of the song limited to ASCII characters TitleUnicode string // The title of the song with unicode support Artist string // The name of the song's artist limited to ASCII characters ArtistUnicode string // The name of the song's artist with unicode support Creator string // The username of the mapper Version string // The name of the beatmap's difficulty Source string // Describes the origin of the song Tags []string // A collection of words describing the song BeatmapID int // The web ID of the single beatmap BeatmapSetID int // The web ID of the beatmap set (Mapset) // Difficulty // // Values defining the difficulty of the beatmap. HPDrainRate float64 // How fast the health decreases CircleSize float64 // The size of the hit objects in the osu!standard mode. In osu!mania mode, CircleSize is the number of columns OverallDifficulty float64 // The harshness of the hit window and the difficulty of spinners ApproachRate float64 // Defines when hit objects start to fade in relatively to when they should be hit SliderMultiplier float64 // Specifies the multiplier of the slider velocity SliderTickRate float64 // The number of ticks per beat // Events // // A list of storyboard events. Background *Background // The location of the background image relative to the beatmap directory Breaks []*Break // Break times through the beatmap // Timing Points // // A list of the beatmap's timing points and hitsounds. // Describes a number of properties regarding beats per minute and // hit sounds. Sorted by offset in the timing points section. TimingPoints []*TimingPoint // Colours // // RGB values of the combo colours used. ComboColours []*RGB // Defines the colours of combos SliderBody *RGB SliderTrackOverride *RGB SliderBorder *RGB // Hit Objects // // A list of the beatmap's hit objects. HitObjects []interface{} }
Beatmap stores information about single beatmap.
func (*Beatmap) SortHitObjects ¶
func (b *Beatmap) SortHitObjects()
func (*Beatmap) SortTimingPoints ¶
func (b *Beatmap) SortTimingPoints()
type Break ¶
type Break struct { // Both are an number of milliseconds from the beginning of the song defining the start and end point of the break period StartTime int EndTime int }
Break defines a single break period. Example of an break period:
2,4627,5743
func (*Break) FromString ¶
FromString fills Break fields with data parsed from string.
type Circle ¶
type Circle struct {
BaseHitObject
}
Circle is a single hit in all osu! game modes. Example:
164,260,2434,1,0,0:0:0:0:
func (*Circle) FromString ¶
FromString fills Circle fields with data parsed from string.
type Extras ¶
type Extras struct { SampleSet SampleSet // The sample set of the normal hit sound. When sampleSet is 0, its value should be inherited from the timing point. AdditionalSet SampleSet // The sample set for the other hit sounds CustomIndex int // Custom sample set index SampleVolume int // Volume of the sample, and ranges from 0 to 100 (percent) Filename string // Names an audio file in the folder to play instead of sounds from sample sets }
Extras define additional parameters related to the hit sound samples. The most common example:
0:0:0:0:
func (*Extras) FromString ¶
FromString fills Extras fields with data parsed from string.
type HitSound ¶
type HitSound int
HitSound specifies a hit sounds to play when the hit object is successfully hit.
type ManiaHoldNote ¶
type ManiaHoldNote struct { BaseHitObject EndTime int }
ManiaHoldNote is a hold note unique to osu!mania. Example:
329,192,16504,128,0,16620:0:0:0:0:
func (*ManiaHoldNote) FromString ¶
func (hn *ManiaHoldNote) FromString(str string) (err error)
FromString fills ManiaHoldNote fields with data parsed from string.
func (ManiaHoldNote) String ¶
func (hn ManiaHoldNote) String() string
String returns string of ManiaHoldNote as it would be in .osu file.
type Mapset ¶
type Mapset struct { DirectoryPath string // The location of mapset directory, where located beatmaps. Beatmaps []*Beatmap // Unordered list of beatmaps BeatmapSetID int // The web ID of the beatmap set }
Mapset stores information about beatmaps, its location and other.
func (*Mapset) FromDirectory ¶
FromDirectory scans provided (from structure) directory and loads .osu files into Mapset.
type RGB ¶
type RGB struct {
R, G, B int
}
RGB provides color manipulation. Example:
128,128,0
func (*RGB) FromString ¶
FromString fills RGB triplet with data parsed from string.
type SampleSet ¶
type SampleSet int
SampleSet specifies which set of hit sounds will be used.
All possible sample sets.
func (*SampleSet) FromString ¶
FromString allows you to set sample sets with strings.
type Slider ¶
type Slider struct { BaseHitObject // Specifies path of the slider. SliderPath *SliderPath // The number of times a player will go over the slider. // A value of 1 will not repeat, 2 will repeat once, 3 twice, and so on. Repeat int // The length of the slider along the path of the described curve. // It is specified in osu!pixels, i.e. relative to the 512×384 virtual screen. PixelLength float64 // Applies only to the body of the slider. Only normal (0) and // whistle (2) are supported. The samples played are named // like soft-sliderslide4.wav for normal, and normal-sliderwhistle.wav for whistle. // These samples are meant to be looped, and may also be empty WAV files to mute // the slider. HitSound HitSound // List of HitSounds to apply to the circles of the slider. // The values are the same as those for regular hit objects. // The list must contain exactly repeat + 1 values, where the first value // is the hit sound to play when the slider is first clicked, and the last one // when the slider is released. EdgeHitSounds []HitSound // List of samples sets to apply to the circles of the slider. // The list contains exactly repeat + 1 elements. SampleSet and AdditionSet // are the same as for hit circles' extras fields. EdgeAdditions []*SliderEdgeAddition }
Slider also creates droplets in Catch the Beat, yellow drumrolls in Taiko, and does not appear in osu!mania. Example:
424,96,66,2,0,B|380:120|332:96|332:96|304:124,1,130,2|0,0:0|0:0,0:0:0:0:
func (*Slider) FromString ¶
FromString fills Slider fields with data parsed from string.
type SliderCurvePoint ¶
type SliderCurvePoint struct {
X, Y int
}
SliderCurvePoint describe a single point of the slider.
func (*SliderCurvePoint) FromString ¶
func (cp *SliderCurvePoint) FromString(str string) (err error)
FromString fills SliderCurvePoint fields with data parsed from string.
func (SliderCurvePoint) String ¶
func (cp SliderCurvePoint) String() string
String returns string of SliderCurvePoint as it would be in .osu file.
type SliderEdgeAddition ¶
SliderEdgeAddition is a sample sets to apply to the circles of the slider. SampleSet and AdditionSet are the same as for hit circles' extras fields.
func (*SliderEdgeAddition) FromString ¶
func (sea *SliderEdgeAddition) FromString(str string) (err error)
FromString fills SliderEdgeAddition fields with data parsed from string.
func (SliderEdgeAddition) String ¶
func (sea SliderEdgeAddition) String() string
String returns string of SliderEdgeAddition as it would be in .osu file.
type SliderPath ¶
type SliderPath struct { SliderType string CurvePoints []*SliderCurvePoint }
SliderPath specifies path of the slider.
func (*SliderPath) FromString ¶
func (sp *SliderPath) FromString(str string) (err error)
FromString fills SliderPath fields SliderPath with data parsed from string.
func (SliderPath) String ¶
func (sp SliderPath) String() string
String returns string of SliderPath as it would be in .osu file.
type Spinner ¶
type Spinner struct { BaseHitObject EndTime int // When the spinner will end, in milliseconds from the beginning of the song }
Spinner also creates bananas in Catch the Beat, a spinner in osu!taiko, and does not appear in osu!mania. Hit sounds play at the end of the spinner. Example:
256,192,730,12,8,3983
func (*Spinner) FromString ¶
FromString fills Spinner fields with data parsed from string.
type TimingPoint ¶
type TimingPoint struct { Offset int // Define when the timing point starts // Defines the duration of one beat. It affect the scrolling speed in osu!taiko or // osu!mania, and the slider speed in osu!standard. MillisecondsPerBeat float64 Meter int // The number of beats in a measure SampleSet SampleSet // The default sample set for hit objects SampleIndex int // The default custom index Volume int // The default hitsound volume, ranges from 0 to 100 (percent) // Tells if the timing point can be inherited from. // A positive milliseconds per beat implies inherited is true (1), and a negative // one implies it is false (0). Note that false (0) means green line, true (1) means // red line. Inherited bool Kiai bool // Defines whether or not Kiai Time effects are active }
TimingPoint describe a number of properties regarding beats per minute and hit sounds.
Example of a TimingPoint:
66,315.789473684211,4,2,0,45,1,0
Example of an inherited TimingPoint:
10171,-100,4,2,0,60,0,1
func (*TimingPoint) FromString ¶
func (tp *TimingPoint) FromString(str string) (err error)
FromString fills TimingPoint fields with data parsed from string.
func (TimingPoint) String ¶
func (tp TimingPoint) String() string
String returns string of TimingPoint as it would be in .osu file