z_mirror/sdl-osu

git clone https://git.raiguard.me/z_mirror/sdl-osu

Caleb HeuerSwitch to four-space indents and inline braces836a89c

trunk
1.2 KiB37 linesraw
1#pragma once
2#include "hitsound.h"
3#include <SDL3/SDL_stdinc.h>
4
5struct Osu_Beatmap;
6struct Osu_Game;
7struct Osu_Graphics;
8
9// TODO: Read AR from beatmap file and use to calculate these values.
10static const Uint16 OSU_HITOBJECT_LEAD_IN = 500;
11static const Uint16 OSU_HITOBJECT_LEAD_OUT = 100;
12
13enum Osu_HitObjectType : Uint8 {
14    OSU_HITOBJECT_TYPE_CIRCLE,
15    OSU_HITOBJECT_TYPE_SLIDER,
16    OSU_HITOBJECT_TYPE_SPINNER,
17};
18
19struct Osu_HitObject {
20    enum Osu_HitObjectType type;
21    Osu_HitSounds hitSounds; // Which hit sounds should be played when the object is hit.
22    float x, y;              // Position in osu! pixels.
23    Sint32 time;             // Time in ticks (milliseconds) when the object should be hit.
24};
25
26// A collection of hit objects.
27struct Osu_HitObjects {
28    struct Osu_HitObject* objects;
29    size_t len;
30    size_t cursor;
31};
32
33struct Osu_HitObjects* Osu_LoadHitObjectsFromBeatmap(struct Osu_Beatmap* beatmap);
34void Osu_DestroyHitObjects(struct Osu_HitObjects* hitObjects);
35
36void Osu_UpdateHitObjects(struct Osu_HitObjects* hitObjects, struct Osu_Game* game);
37void Osu_RenderHitObjects(struct Osu_HitObjects* hitObjects, struct Osu_Graphics* graphics, Sint32 tick);