forked from catmirrors/xlvns
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sizuku_menu.c
157 lines (136 loc) · 3.29 KB
/
sizuku_menu.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/*
* LEAF Visual Novel System For X
* (c) Copyright 1999,2000 Go Watanabe mailto:[email protected]
* All rights reserverd.
*
* ORIGINAL LVNS (c) Copyright 1996-1999 LEAF/AQUAPLUS Inc.
*
* $Id: sizuku_menu.c,v 1.10 2001/08/05 10:58:10 go Exp $
*
*/
/*
* 雫 しおり選択メニュー表示
*/
#include <stdio.h>
#include <string.h>
#include "sizuku.h"
/* ------------------------------------------------------------ */
/** ロード確認用メニュー */
static MenuLine load_confirm_menu_line[] = {
MENULINE(4, "ロードします。", 0),
MENULINE(5, "よろしいですか?", 0),
MENULINE(7, "はい",1),
MENULINE(8, "いいえ", 2),
MENULINE(0, NULL, 0),
};
static MenuData load_confirm_menu = {
load_confirm_menu_line,
2, 0,
NULL,
};
/* ------------------------------------------------------------ */
/** セーブ確認用メニュー */
static MenuLine save_confirm_menu_line[] = {
MENULINE(4, "セーブします。", 0),
MENULINE(5, "よろしいですか?", 0),
MENULINE(7, "はい",1),
MENULINE(8, "いいえ", 2),
MENULINE(0, NULL, 0),
};
static MenuData save_confirm_menu = {
save_confirm_menu_line,
2, 0,
NULL,
};
/* ------------------------------------------------------------ */
/** 終了確認メニュー */
static MenuLine end_confirm_menu_line[] = {
MENULINE(4, "終了します。", 0),
MENULINE(5, "よろしいですか?", 0),
MENULINE(7, "はい", 1),
MENULINE(8, "いいえ", 2),
MENULINE(0, NULL, 0),
};
static MenuData end_confirm_menu = {
end_confirm_menu_line,
2, 0,
NULL,
};
/*
* 雫メニュー処理
*/
static MenuLine sizuku_menu_line[] = {
MENULINE(3, "文字を消す",1),
MENULINE(4, "ロードする", 2),
MENULINE(5, "セーブする", 3),
MENULINE(6, "シナリオ回想", 4),
MENULINE(7, "一つ前の選択肢に戻る", 5),
MENULINE(8, "ゲーム終了", 6),
MENULINE(0, NULL, 0),
};
static int
SizukuMenuEngine(Lvns *lvns, int select)
{
SizukuState *state = (SizukuState *)lvns->system_state;
switch (select) {
case 1:
/* 画像表示モード */
LvnsImageMode(lvns);
break;
case 2:
/* ロード */
switch (LvnsMenu(lvns, &load_confirm_menu, True)) {
case -1: /* cancel */
return 0;
case 1:
/* ロード処理 */
SizukuLoad(lvns);
LvnsClear(lvns, LVNS_EFFECT_WIPE_TTOB);
LvnsJump(lvns, LVNS_JUMP_RESTART);
case 2:
break;
}
break;
case 3:
/* セーブ */
switch (LvnsMenu(lvns, &save_confirm_menu, True)) {
case -1: /* cancel */
return 0;
case 1:
/* セーブ処理 */
SizukuSave(lvns);
case 2:
break;
}
break;
case 4:
/* 回想モード */
LvnsHistoryMode(lvns);
break;
case 5:
/* 選択肢に戻る */
lvns->savepoint = lvns->selectpoint;
memcpy(state->flag_save, state->flag_select, sizeof state->flag);
LvnsClear(lvns, LVNS_EFFECT_WIPE_TTOB);
LvnsJump(lvns, LVNS_JUMP_RESTART);
case 6:
/* タイトルに戻る */
switch (LvnsMenu(lvns, &end_confirm_menu, True)) {
case -1: /* cancel */
return 0;
case 1:
LvnsClear(lvns, LVNS_EFFECT_WIPE_TTOB);
LvnsJump(lvns, LVNS_JUMP_TITLE);
case 2:
break;
}
break;
default:;
}
return select;
}
MenuData sizuku_menu = {
sizuku_menu_line,
6, 0,
SizukuMenuEngine
};