Ren’Py改造メモ(6)

確認ダイアログの表示を設定出来るようにする

終了時、タイトルに戻る時、セーブ上書き時、ロード時、クイックロード時
それぞれで確認するかを以下の変数で設定できるようにします。
persistent.ask_quit
persistent.ask_title
persistent.ask_save
persistent.ask_load
persistent.ask_qload
まず初期値を決めるため、適当な場所に以下のコードを記述します。


    # 初回起動時のみ実行
    if not persistent.first_init:
        # confirm
        persistent.ask_quit = True
        persistent.ask_title = True
        persistent.ask_save = True
        persistent.ask_load = True
        persistent.ask_qload = True

        persistent.first_init = True

これで初回起動時のみこれらの値が設定されます。

次に実査の処理ですが、
終了、タイトルに戻るは単にscreens.rpyのAction Quit,MainMenuのキーワード引数にそれぞれの対応する変数を指定すればいいだけです。

右上の閉じるボタンだけは以前作成したラベルconfirm_quitを編集する必要があります。(v6.16からconfirm_quitは使用されなくなりました。使用するにはconfig.quit_action を ui.gamemenus(“_confirm_quit”) に設定してください。 )
以下のようにしてください。


#右上の閉じるボタンを押した時の処理
label confirm_quit:

    if persistent.ask_quit:
        if layout.yesno_prompt(None, layout.QUIT):
            python:
                if not renpy.context()._main_menu:
                    renpy.save("auto")
            jump _quit
        else:
            return
    python:
        if not renpy.context()._main_menu:
            renpy.save("auto")
    jump _quit

次に、Quickロードの処理ですが、QuickLoadは引数をとらないので、これは関数を上書きする必要があります。
適当な場所に以下のコードを記述します。


init python:
    # confirmを指定出来るように改造
    def QuickLoad2(confirm=False):
        return FileLoad(1, page="quick", confirm=confirm, newest=False)
    QuickLoad = QuickLoad2

これでQuickLoadにもconfirm引数を指定出来ます。

面倒なのがセーブロードです。
screen file_pickerを切り取って、その内容をscreen save,loadに貼り付けてください。
use file_pickerは共に削除してください。
つぎに、screen saveのFileAction(i)をFileSave(i, confirm=persistent.ask_save)に置き換えます。
同様に、screen loadのFileAction(i)をFileLoad(i, confirm=persistent.ask_load)に置き換えます。

ついでにセーブロードマウスを中央に自動移動し、マウスホイールでページを移動出来るようにしておきます。
これで以下のようになりました。


screen save:

    # 追加部分↓
    key 'mousedown_4' action FilePagePrevious()
    key 'mousedown_5' action FilePageNext()
    on "replace" action MouseMove(400, 150, 100)
    # 追加部分↑
    # This ensures that any other menu screen is replaced.
    tag menu

    use navigation
    frame:
        style "file_picker_frame"

        has vbox

        # The buttons at the top allow the user to pick a
        # page of files.
        hbox:
            style_group "file_picker_nav"

            textbutton _("Previous"):
                action FilePagePrevious()

            textbutton _("Auto"):
                action FilePage("auto")

            textbutton _("Quick"):
                action FilePage("quick")

            for i in range(1, 9):
                textbutton str(i):
                    action FilePage(i)

            textbutton _("Next"):
                # 追加部分↓
                action FilePageNext()
                # 追加部分↑

        $ columns = 2
        $ rows = 5

        # Display a grid of file slots.
        grid columns rows:
            transpose True
            xfill True
            style_group "file_picker"

            # Display ten file slots, numbered 1 - 10.
            for i in range(1, columns * rows + 1):

                # Each file slot is a button.
                button:
                    #追加部分↓
                    action FileSave(i, confirm=persistent.ask_save)
                    #追加部分↑
                    xfill True

                    has hbox

                    # Add the screenshot.
                    add FileScreenshot(i)

                    # Format the description, and add it as text.
                    $ description = "% 2s. %s\n%s" % (
                        FileSlotName(i, columns * rows),
                        FileTime(i, empty=_("Empty Slot.")),
                        FileSaveName(i))

                    text description

                    key "save_delete" action FileDelete(i)

screen load:

    # 追加部分↓
    key 'mousedown_4' action FilePagePrevious()
    key 'mousedown_5' action FilePageNext()
    on "replace" action MouseMove(400, 150, 100)
    # 追加部分↑
    # This ensures that any other menu screen is replaced.
    tag menu

    use navigation
    frame:
        style "file_picker_frame"

        has vbox

        # The buttons at the top allow the user to pick a
        # page of files.
        hbox:
            style_group "file_picker_nav"

            textbutton _("Previous"):
                action FilePagePrevious()

            textbutton _("Auto"):
                action FilePage("auto")

            textbutton _("Quick"):
                action FilePage("quick")

            for i in range(1, 9):
                textbutton str(i):
                    action FilePage(i)

            textbutton _("Next"):
                # 追加部分↓
                action FilePageNext()
                # 追加部分↑

        $ columns = 2
        $ rows = 5

        # Display a grid of file slots.
        grid columns rows:
            transpose True
            xfill True
            style_group "file_picker"

            # Display ten file slots, numbered 1 - 10.
            for i in range(1, columns * rows + 1):

                # Each file slot is a button.
                button:
                    #追加部分↓
                    action FileLoad(i, confirm=persistent.ask_load)]
                    #追加部分↑
                    xfill True

                    has hbox

                    # Add the screenshot.
                    add FileScreenshot(i)

                    # Format the description, and add it as text.
                    $ description = "% 2s. %s\n%s" % (
                        FileSlotName(i, columns * rows),
                        FileTime(i, empty=_("Empty Slot.")),
                        FileSaveName(i))

                    text description

                    key "save_delete" action FileDelete(i)

次回は、設定画面を作成します。


コメントを残す

メールアドレスが公開されることはありません。