Skip to content

04 Stage

In this chapter, we will implement the stage drawing function.

Existing Sprite

The shared Skin already declares the judgment line sprite from play mode. This code is for reference. Do not edit guide/lib/skin.py:

python
from sonolus.script.sprite import StandardSprite, skin


@skin
class Skin:
    # ...

    judge_line: StandardSprite.JUDGMENT_LINE

Stage Drawing Function

Create guide/tutorial/stage.py with the following drawing function:

python
from sonolus.script.quad import Rect

from guide.lib.layout import Config
from guide.lib.skin import Skin


def draw_stage():
    layout = Rect(
        l=Config.judge_line_l,
        r=Config.judge_line_r,
        t=1 - Config.note_radius / 4,
        b=1 + Config.note_radius / 4,
    )

    Skin.judge_line.draw(layout, z=0, a=1)

The z value places the judgment line in layer 0.

Updating

Replace guide/tutorial/update.py with the following code so the stage is drawn every frame:

python
from guide.tutorial.stage import draw_stage


def update():
    draw_stage()

The tutorial now displays the judgment line.