Module: MaimaiNet::Model::Result

Defined in:
lib/maimai_net/model.rb

Constant Summary collapse

Progress =
Base::Struct.new(
  value: Integer,
  max: Integer,
) do
  def to_s; "#{value}/#{max}"; end
  alias to_i value
  alias inspect to_s
end
RivalInfo =
Base::Struct.new(
  player: PlayerData::Lite,
  score:  Float,
)
TourMember =
Base::Struct.new(
  icon: URI::Generic,
  grade: Integer,
  level: Integer,
)
Judgment =
Base::Struct.new(
  just: Integer,
  perfect: Integer,
  great: Integer,
  good: Integer,
  miss: Integer,
)
Offset =
Base::Struct.new(
  early: Integer,
  late: Integer,
)
Challenge =
Base::Struct.new(
  type: Symbol,
  lives: Progress,
)
ScoreLite =
Base::Struct.new(
  score: Float,
  deluxe_score: Progress,
  grade: Symbol,
  flags: Generic[Array, Symbol],
)
Score =
Base::Struct.new(
  score: Float,
  deluxe_score: Progress,
  combo: Progress,
  sync_score: Progress,
  grade: Symbol,
  flags: Generic[Array, Symbol],
)
ReferenceWebID =
Base::Struct.new(
  order: Integer,
  time: Time,
) do
  def self.parse(s)
    order, time = s.split(',').first(2).map(&:to_i)
    new(order: order, time: Time.at(time).localtime(32400).freeze)
  end

  def to_str
    [order, time.to_i].join(',')
  end
  alias to_s to_str
end
Track =
Base::Struct.new(
  info: Chart::Info,
  score: Either[Score, ScoreLite],
  order: Integer,
  time: Time,
  challenge: Optional[Challenge],
)
TrackReference =
Base::Struct.new(
  track: Track,
  ref_web_id: ReferenceWebID,
)
Data =
Base::Struct.new(
  track: Track,
  breakdown: Generic[Hash, Symbol, Judgment],
  timing: Offset,
  members: Generic[Array, TourMember],
  rival: Optional[RivalInfo],
)