rplpa

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2023 License: MIT Imports: 11 Imported by: 0

README

rplpa

rplpa is an osu! replay parser/writer for golang.

Examples:

Reading the replay

package main

import (
  "ioutil"

  "github.com/wieku/rplpa"
)

func main() {
  b, err := ioutil.ReadFile("path/to/replay.osr")
  if err != nil {
    panic(err)
  }
  replay, err := ParseReplay(b)
  if err != nil {
    panic(err)
  }
}

Reading compressed input data

package main

import (
  "ioutil"

  "github.com/wieku/rplpa"
)

func main() {
  RawData := []byte{} // Compressed LZMA stream of input events in delta1|x1|y1|keys1,delta2|x2|y2|keys2 format
  replaydata, err := ParseCompressed(RawData)
  if err != nil {
    panic(err)
  }
}

Documentation

Index

Constants

View Source
const (
	OSU   = 0
	TAIKO = 1
	CTB   = 2
	MANIA = 3
)

All osu playmodes

View Source
const (
	LEFTCLICK  = 1 << 0
	RIGHTCLICK = 1 << 1
	KEY1       = 1 << 2
	KEY2       = 1 << 3
	SMOKE      = 1 << 4
)

ClickState

Variables

This section is empty.

Functions

func SerializeFrames

func SerializeFrames(data []*ReplayData) ([]byte, error)

func WriteReplay

func WriteReplay(r *Replay) ([]byte, error)

Types

type KeyPressed

type KeyPressed struct {
	LeftClick  bool
	RightClick bool
	Key1       bool
	Key2       bool
	Smoke      bool
}

KeyPressed is the Parsed Compressed KeyPressed.

type LifeBarGraph

type LifeBarGraph struct {
	Time int32
	HP   float32
}

LifeBarGraph is the Bar under the Score stuff.

type MaximumStatistics

type MaximumStatistics struct {
	*Statistics
	LargeBonus float64
}

type ModInfo

type ModInfo struct {
	Acronym         string                 `json:"acronym"`
	Settings        map[string]interface{} `json:"settings,omitempty"`
	SpeedChange     string                 `json:"speed_change,omitempty"`
	ApproachRate    string                 `json:"approach_rate,omitempty"`
	ExtendedLimits  string                 `json:"extended_limits,omitempty"`
	ClassicNoteLock string                 `json:"classic_note_lock,omitempty"`
}

type Replay

type Replay struct {
	PlayMode     int8
	OsuVersion   int32
	BeatmapMD5   string
	Username     string
	ReplayMD5    string
	Count300     uint16
	Count100     uint16
	Count50      uint16
	CountGeki    uint16
	CountKatu    uint16
	CountMiss    uint16
	Score        int32
	MaxCombo     uint16
	Fullcombo    bool
	Mods         uint32
	LifebarGraph []LifeBarGraph
	Timestamp    time.Time
	ReplayData   []*ReplayData
	ScoreID      int64 // idk if it's the scoreid, maybe it is maybe not.
	ScoreInfo    *ScoreInfo
}

Replay is the Parsed replay.

func NewReplay

func NewReplay() *Replay

NewReplay returns an Empty Replay

func ParseReplay

func ParseReplay(file []byte) (r *Replay, err error)

ParseReplay parses a Replay and returns a *Replay

type ReplayData

type ReplayData struct {
	Time       int64
	MouseX     float32
	MouseY     float32
	KeyPressed *KeyPressed
}

ReplayData is the Parsed Compressed Replay data.

func ParseCompressed

func ParseCompressed(file []byte) (d []*ReplayData, err error)

ParseCompressed parses a compressed replay, (ReplayData)

type ScoreInfo

type ScoreInfo struct {
	Mods              []*ModInfo
	Statistics        *Statistics
	MaximumStatistics []*MaximumStatistics
}

func ParseCompressedScoreInfo

func ParseCompressedScoreInfo(file []byte) (ScoreInfo, error)

ParseCompressedScoreInfo parses compressed ScoreInfo, (ScoreInfo)

type Statistics

type Statistics struct {
	Miss          float64
	Great         float64
	SmallTickHit  float64
	LargeTickMiss float64
	SmallBonus    float64
	Ok            float64
	SmallTickMiss float64
	LargeTickHit  float64
	IgnoreMiss    float64
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL