home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1998 November
/
VPR9811A.BIN
/
FFILLY
/
Nov_View
/
Nov_View.tfy
< prev
next >
Wrap
Text File
|
1998-08-13
|
25KB
|
990 lines
//
// マルチメディア・ノベルビューアー NOV_VIEW for FILLY Version 1.1
//
// designed by TAMUrA Aug.14,1998 ☆ミ
//
#info INAM "Multimedia Novel Viewer (NOV_VIEW) V1.1"
#info GENR "tool"
#info ICOP "TAMUrA,GAF07007@nifty.ne.jp"
#info MDFY "OK"
#info TRNS "OK"
int PageCnt; //現在のページ
int PageMax; //ページ数
str IniName; //シナリオファイル
str UserIniName; //設定保存ファイル
int white, yellow, blue;
int pic;
int base_pic; //画像用のピクチャー
int word_pic; //テキスト用のピクチャー
int piccast, wordcast; //画像用キャスト、テキスト用キャスト
str Font, Title; //テキストのフォント、ウィンドウに表示されるタイトル
int base_pic_x, base_pic_y;
int OldPic;
str flag[]; //条件分岐用フラグ
int FlagMax; //条件分岐用フラグの数
int Startpoint;
int Menuflg;
//ページごと
str picname[]; //画像
str MIDIfile[]; //音楽
str WAVEfile[]; //音声
int R[],G[],B[]; //テキストの色
int SelectR[],SelectG[],SelectB[];//選択肢の色
int nextpage[]; //次のページ
int chgmode[]; //シーンチェンジモード
//行ごと
int jumptag[],jumpto[]; //選択肢の行番号、選択肢の飛び先
str Text[]; //テキスト
int Transcol; //透明色
int Shadow[]; //影
str Date[];
main(){
int i, cnt;
int oldR, oldG, oldB;
str dirstr;
IniName="novel.ini"; //シナリオの書かれたファイル:必要に応じて書き換えること
UserIniName="nov_user.ini"; //しおり保存用ファイル:必要に応じて書き換えること
//パスをカレントディレクトリにする
dirstr=GetCWD();
if(SubStr(dirstr,StrLen(dirstr)-1,1)!="\"){
dirstr=StrPrint("%s\",dirstr);
}
UserIniName=StrPrint("%s%s",dirstr,UserIniName);
IniName=StrPrint("%s%s",dirstr,IniName);
//初期値設定
PageCnt=1;
Startpoint=1;
Menuflg=0;
BackMode(1);
white=LoadPic("white.bmp");
yellow=LoadPic("yellow.bmp");
blue=LoadPic("blue.bmp");
word_pic=CreatePic(white);
R[1]=GetIniInt("Page1","R",0,IniName);
G[1]=GetIniInt("Page1","G",0,IniName);
B[1]=GetIniInt("Page1","B",0,IniName);
SelectR[1]=GetIniInt("Page1","SelectR",255,IniName);
SelectG[1]=GetIniInt("Page1","SelectG",255,IniName);
SelectB[1]=GetIniInt("Page1","SelectB",0,IniName);
MoveWord_pic();
FlagMax=0;
//設定読み込み:ウィンドウのタイトル
Title=StrPrint("%s // [SPACE]→次頁, [ESC]→メニュー",GetIniStr("Main","Title","",IniName));
//設定読み込み:セーブの日付
Date[1]=GetIniStr("A","Date","",UserIniName);
Date[2]=GetIniStr("B","Date","",UserIniName);
Date[3]=GetIniStr("C","Date","",UserIniName);
//設定読み込み:絵
for(i=1;GetIniStr(StrPrint("Page%ld",i),"Text1","/E",IniName)!="/E";i=i+1){
picname[i]=GetIniStr(StrPrint("Page%ld",i),"Picture","",IniName);
}
PageMax=i-1;
if(PageMax==0){
ExitTitle();
}
//設定読み込み:音楽
for(i=1;i<=PageMax;i=i+1){
MIDIfile[i]=GetIniStr(StrPrint("Page%ld",i),"MIDI","",IniName);
}
//設定読み込み:音声
for(i=1;i<=PageMax;i=i+1){
WAVEfile[i]=GetIniStr(StrPrint("Page%ld",i),"Wave","",IniName);
}
//設定読み込み:シーンチェンジモード
for(i=1;i<=PageMax;i=i+1){
chgmode[i]=GetIniInt(StrPrint("Page%ld",i),"Chgmode",0,IniName);
}
//設定読み込み:次ページ
for(i=1;i<=PageMax;i=i+1){
nextpage[i]=GetIniInt(StrPrint("Page%ld",i),"Nextpage",i+1,IniName);
}
//設定読み込み:フォント
Font=GetIniStr("Main","Font","MS ゴシック",IniName);
SetFont(22,Font,128,0,0,0,800);
//設定読み込み:テキストの色
oldR=0;
oldG=0;
oldB=0;
for(i=2;i<=PageMax;i=i+1){
R[i]=GetIniInt(StrPrint("Page%ld",i),"R",oldR,IniName);
G[i]=GetIniInt(StrPrint("Page%ld",i),"G",oldG,IniName);
B[i]=GetIniInt(StrPrint("Page%ld",i),"B",oldB,IniName);
oldR=R[i];
oldG=G[i];
oldB=B[i];
}
oldR=255;
oldG=255;
oldB=0;
//影付きの指定
for(i=1;i<=PageMax;i=i+1){
Shadow[i]=GetIniInt(StrPrint("Page%ld",i),"Shadow",0,IniName);
}
//設定読み込み:選択肢の色
for(i=1;i<=PageMax;i=i+1){
SelectR[i]=GetIniInt(StrPrint("Page%ld",i),"SelectR",oldR,IniName);
SelectG[i]=GetIniInt(StrPrint("Page%ld",i),"SelectG",oldG,IniName);
SelectB[i]=GetIniInt(StrPrint("Page%ld",i),"SelectB",oldB,IniName);
oldR=SelectR[i];
oldG=SelectG[i];
oldB=SelectB[i];
}
//1ページ目のテキストの影
if (Shadow[1]==1){
TextColor(R[1]/2,G[1]/2,B[1]/2);
for(i=1;i<=16;i=i+1){
Text[i]=GetIniStr("Page1",StrPrint("Text%ld",i),"",IniName);
TextWrite(Text[i],word_pic,13,10+(i-1)*24);
}
}
//1ページ目のテキスト
TextColor(R[1],G[1],B[1]);
for(i=1;i<=16;i=i+1){
Text[i]=GetIniStr("Page1",StrPrint("Text%ld",i),"",IniName);
TextWrite(Text[i],word_pic,11,8+(i-1)*24);
}
//1ページ目の選択肢
ShowSelection();
//1ページ目のフラグのセット
SetFlag();
//1ページ目のbmp
if(picname[1]!=""){
pic=LoadPic(picname[1]);
}else{ //絵の指定がなかった場合
DefPicLoad(1);
}
//ウィンドウを開く
base_pic=CreatePic(pic);
piccast=PutCast(pic,base_pic,0,0);
wordcast=PutCast(word_pic,base_pic,0,0,Transcol);
base_pic_x=PicWidth(base_pic);
base_pic_y=PicHeight(base_pic);
CapTitle(Title);
OpenWin(base_pic);
//1ページ目の音楽
if (MIDIfile[1]!="") {
if(MIDIfile[1]=="STOP"){
MCI("stop song");
}else{
PlayMIDI(MIDIfile[1]);
}
}
//1ページ目の音声
if (WAVEfile[1]!="") {
PlayWAVE(WAVEfile[1]);
}
//演奏終了後、再演奏
mes(MIDI_END){
for(cnt=PageCnt;cnt>=1;cnt=cnt-1){
if (MIDIfile[cnt]!=""){
break;
}
}
if(cnt>0){
if(MIDIfile[cnt]!="STOP"){
PlayMIDI(MIDIfile[cnt]);
}
}
}
mes(RBUP){
}
//メインメニュー表示(マウス)
mes(RBDOWN){
RBMenu();
}
//キーボードによる処理
mes(KEY_DOWN){
if(Menuflg==0){ //本文表示中→メインメニューへ移行
if(MesP2==0x1B){ //ESC
RBMenu();
}else{
if(jumptag[1]==0){ //選択肢分岐なしの場合
if(MesP2==0x20){ //SPACE
DispStory(); //ストーリー表示
}
}else{ //選択肢分岐
for(i=1;i<=9;i=i+1){
if(jumptag[i]==0){
break;
}
if(MesP2==48+i){ //該当する数字が押されたら
//飛び先が最終ページより後ろか0以下であれば作品を終了する
if(jumpto[i]<=0 || jumpto[i]>PageMax){
Exit_Nov_View();
}else{
PlayWAVE("slam.wav");
Startpoint=jumpto[i];
//次ページに進む場合
if(jumpto[i]==PageCnt+1){
PageCnt=jumpto[i];
JmpNextPage();
//次ページ以外に進む場合
}else{
PageCnt=jumpto[i];
JmpPage();
}
}
break;
}
}
}
}
}else{
if(Menuflg==-1){ //メインメニュー表示中→セーブ・ロードメニューへ移行
//メインメニュー操作(キーボード)
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
TextColor(R[PageCnt],G[PageCnt],B[PageCnt]);
if(MesP2==0x71){ //ロード(F2)
LoadMenu();
}
if(MesP2==0x72){ //セーブ(F3)
SaveMenu();
}
if(MesP2==0x73){ //先頭ページ(F4)
Mnu_GoTop();
}
if(MesP2==0x74){ //前のページ(F5)
Mnu_Back();
}
if(MesP2==0x1B){ //戻る(ESC)
Mnu_ExitMenu();
}
if(MesP2==0x77){ //終了(F8)
Exit_Nov_View();
}
}else{
if(Menuflg==-2){ //セーブメニュー
if(MesP2==0x71){ //F2
Mnu_Save("A");
}
if(MesP2==0x72){ //F3
Mnu_Save("B");
}
if(MesP2==0x73){ //F4
Mnu_Save("C");
}
if(MesP2==0x1B){ //ESC
RBMenu();
}
}else{ //ロードメニュー
if(MesP2==0x71){ //F2
Mnu_Load("A");
}
if(MesP2==0x72){ //F3
Mnu_Load("B");
}
if(MesP2==0x73){ //F4
Mnu_Load("C");
}
if(MesP2==0x1B){ //ESC
RBMenu();
}
}
}
}
}
mes(LBDOWN){
//メインメニュー項目色反転
if(Menuflg==-1){
TextColor(255-R[PageCnt],255-G[PageCnt],255-B[PageCnt]);
if(MesP2>=260 && MesP2<380 && MesP3>=56 && MesP3<80){ //ロード
TextWrite("F2 :ロード",base_pic,260,56);
}
if(MesP2>=260 && MesP2<380 && MesP3>=104 && MesP3<128){ //セーブ
TextWrite("F3 :セーブ",base_pic,260,104);
}
if(MesP2>=240 && MesP2<410 && MesP3>=152 && MesP3<176){ //先頭ページ
TextWrite("F4 :先頭ページ",base_pic,240,152);
}
if(MesP2>=240 && MesP2<410 && MesP3>=200 && MesP3<224){ //前のページ
TextWrite("F5 :前のページ",base_pic,240,200);
}
if(MesP2>=270 && MesP2<368 && MesP3>=248 && MesP3<272){ //戻る
TextWrite("ESC:戻る",base_pic,270,248);
}
if(MesP2>=270 && MesP2<368 && MesP3>=296 && MesP3<320){ //終了
TextWrite("F8 :終了",base_pic,270,296);
}
}else{ //セーブ・ロードメニュー項目色反転
if(Menuflg==-2 || Menuflg==-3){
TextColor(255-R[PageCnt],255-G[PageCnt],255-B[PageCnt]);
if(MesP2>=180 && MesP2<450 && MesP3>=152 && MesP3<176){
TextWrite(StrPrint("F2:A %s",Date[1]),base_pic,180,152);
}
if(MesP2>=180 && MesP2<450 && MesP3>=200 && MesP3<224){
TextWrite(StrPrint("F3:B %s",Date[2]),base_pic,180,200);
}
if(MesP2>=180 && MesP2<450 && MesP3>=248 && MesP3<272){
TextWrite(StrPrint("F4:C %s",Date[3]),base_pic,180,248);
}
if(MesP2>=180 && MesP2<350 && MesP3>=296 && MesP3<320){
TextWrite("ESC:キャンセル",base_pic,180,296);
}
}
}
}
mes(LBUP){
if(Menuflg==-1){ //メインメニュー操作(マウス)
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
TextColor(R[PageCnt],G[PageCnt],B[PageCnt]);
if(MesP2>=260 && MesP2<380 && MesP3>=56 && MesP3<80){ //ロード
LoadMenu();
}
if(MesP2>=260 && MesP2<380 && MesP3>=104 && MesP3<128){ //セーブ
SaveMenu();
}
if(MesP2>=240 && MesP2<410 && MesP3>=152 && MesP3<176){ //先頭ページ
Mnu_GoTop();
}
if(MesP2>=240 && MesP2<410 && MesP3>=200 && MesP3<224){ //前のページ
Mnu_Back();
}
if(MesP2>=270 && MesP2<368 && MesP3>=248 && MesP3<272){ //メニューから抜ける
Mnu_ExitMenu();
}
if(MesP2>=270 && MesP2<368 && MesP3>=296 && MesP3<320){ //終了
Exit_Nov_View();
}
}else{
if(Menuflg==-2){ //セーブメニュー操作(マウス)
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
if(MesP2>=180 && MesP2<450 && MesP3>=152 && MesP3<176){
Mnu_Save("A");
}
if(MesP2>=180 && MesP2<450 && MesP3>=200 && MesP3<224){
Mnu_Save("B");
}
if(MesP2>=180 && MesP2<450 && MesP3>=248 && MesP3<272){
Mnu_Save("C");
}
if(MesP2>=180 && MesP2<350 && MesP3>=296 && MesP3<320){
RBMenu();
}
}else{
if(Menuflg==-3){ //ロードメニュー操作(マウス)
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
if(MesP2>=180 && MesP2<450 && MesP3>=152 && MesP3<176){
Mnu_Load("A");
}
if(MesP2>=180 && MesP2<450 && MesP3>=200 && MesP3<224){
Mnu_Load("B");
}
if(MesP2>=180 && MesP2<450 && MesP3>=248 && MesP3<272){
Mnu_Load("C");
}
if(MesP2>=180 && MesP2<350 && MesP3>=296 && MesP3<320){
RBMenu();
}
}else{ //ストーリー表示
if(jumptag[1]==0){ //選択肢分岐なしの場合
if(MesP2>=0 && MesP2<base_pic_x && MesP3>=0 && MesP3<base_pic_y){
DispStory();
}
}else{ //選択肢分岐の場合
for(i=1;i<=9;i=i+1){
if(jumptag[i]==0){
break;
}
if(MesP2>=0 && MesP2<base_pic_x && MesP3>=(jumptag[i]-1)*24+8 && MesP3<jumptag[i]*24+8){
//飛び先が最終ページより後ろか0以下であれば作品を終了する
if(jumpto[i]<=0 || jumpto[i]>PageMax){
Exit_Nov_View();
}else{
PlayWAVE("slam.wav");
Startpoint=jumpto[i];
//次ページに進む場合
if(jumpto[i]==PageCnt+1){
PageCnt=jumpto[i];
JmpNextPage();
//次ページ以外に進む場合
}else{
PageCnt=jumpto[i];
JmpPage();
}
}
break;
}
}
}
}
}
}
}
}
//ストーリー表示
DispStory(){
str FlagName[];
int FlagDest;
str workstr;
int Dest;
int i,j,k,n;
int max;
int found;
Dest=0;
//フラグ分岐の場合
for(i=1;i<=9;i=i+1){
if(Dest!=0){
break;
}
workstr=GetIniStr(StrPrint("Page%ld",PageCnt),StrPrint("FlagJump%ld",i),"",IniName);
if(workstr==""){
break;
}
n=StrFind(workstr,",");
if(n!=-1){ // ","がない場合は無処理
//フラグの切り出し
for(j=1;j<=9;j=j+1){
if(n==-1){ // ","がなくなったら残りを飛び先ページにして抜ける
FlagDest=StrtoInt(workstr);
max=j-1;
break;
}
FlagName[j]=SubStr(workstr,0,n);
workstr=SubStr(workstr,n+1,StrLen(workstr)-n-1);
n=StrFind(workstr,",");
}
//フラグ分岐成立判定
found=-1;
for(j=1;j<=max;j=j+1){
for(k=1;k<=FlagMax;k=k+1){
if(flag[k]==FlagName[j]){
break;
}
}
if(k>FlagMax){ //フラグが立っていなかった場合
found=0;
break;
}
}
//フラグ分岐が成立したら、指定ページをジャンプ先とする
if(found==-1){
Dest=FlagDest;
Startpoint=Dest;
}
}
}
//フラグ分岐が不成立の場合はnextpageとして指定されているページをジャンプ先とする
if(Dest==0){
Dest=nextpage[PageCnt];
}
//飛び先が最終ページより後ろか0以下であれば作品を終了する
if(Dest<=0 || Dest>PageMax){
Exit_Nov_View();
}else{
//次ページに進む場合
if(Dest==PageCnt+1){
PageCnt=Dest;
JmpNextPage();
//次ページ以外に進む場合
}else{
Startpoint=Dest;
PageCnt=Dest;
JmpPage();
}
}
}
//PageCntで指定したページを表示する
JmpPage(){
int i,n;
str workstr;
//テキスト消去
MoveWord_pic();
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
//絵
for(i=PageCnt;i>=1;i=i-1){
if(picname[i]!=""){
break;
}
}
OldPic=pic;
if(i>0){
pic=LoadPic(picname[i]);
}else{
DefPicLoad(i);
}
if(chgmode[PageCnt]!=0){
SceneChange();
}else{
MoveCast(piccast,pic,0,0,0,640,400,0,0,0x80000000);
DelPic(OldPic);
}
//音楽
for(i=PageCnt;i>=1;i=i-1){
if (MIDIfile[i]!=""){
break;
}
}
if(i>0){
if(MIDIfile[i]=="STOP"){
MCI("stop song");
}else{
PlayMIDI(MIDIfile[i]);
}
}
//音声
if (WAVEfile[PageCnt]!="") {
PlayWAVE(WAVEfile[PageCnt]);
}
//テキストの影
if (Shadow[PageCnt]==1){
TextColor(R[PageCnt]/2,G[PageCnt]/2,B[PageCnt]/2);
for(i=1;i<=16;i=i+1){
Text[i]=GetIniStr(StrPrint("Page%ld",PageCnt),StrPrint("Text%ld",i),"",IniName);
TextWrite(Text[i],word_pic,13,10+(i-1)*24);
}
}
//テキスト
TextColor(R[PageCnt],G[PageCnt],B[PageCnt]);
for(i=1;i<=16;i=i+1){
Text[i]=GetIniStr(StrPrint("Page%ld",PageCnt),StrPrint("Text%ld",i),"",IniName);
TextWrite(Text[i],word_pic,11,8+(i-1)*24);
}
//選択肢
ShowSelection();
//フラグをセットする
SetFlag();
//テキスト表示
if(chgmode[PageCnt]==0){
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
}
}
//PageCntで指定されたシーンの表示
JmpNextPage(){
int i;
//テキスト消去
MoveWord_pic();
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
//絵
if(picname[PageCnt]!=""){
OldPic=pic;
pic=LoadPic(picname[PageCnt]);
if(chgmode[PageCnt]!=0){
SceneChange();
}else{
MoveCast(piccast,pic,0,0,0,640,400,0,0,0x80000000);
DelPic(OldPic);
}
}
//音楽
if(MIDIfile[PageCnt]!=""){
if(MIDIfile[PageCnt]=="STOP"){
MCI("stop song");
}else{
PlayMIDI(MIDIfile[PageCnt]);
}
}
//音声
if (WAVEfile[PageCnt]!="") {
PlayWAVE(WAVEfile[PageCnt]);
}
//テキストの影
if (Shadow[PageCnt]==1){
TextColor(R[PageCnt]/2,G[PageCnt]/2,B[PageCnt]/2);
for(i=1;i<=16;i=i+1){
Text[i]=GetIniStr(StrPrint("Page%ld",PageCnt),StrPrint("Text%ld",i),"",IniName);
TextWrite(Text[i],word_pic,13,10+(i-1)*24);
}
}
//テキスト
TextColor(R[PageCnt],G[PageCnt],B[PageCnt]);
for(i=1;i<=16;i=i+1){
Text[i]=GetIniStr(StrPrint("Page%ld",PageCnt),StrPrint("Text%ld",i),"",IniName);
TextWrite(Text[i],word_pic,11,8+(i-1)*24);
}
//選択肢
ShowSelection();
//フラグをセットする
SetFlag();
//テキスト表示
if(chgmode[PageCnt]==0){
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
}
}
//選択肢表示
ShowSelection(){
int i,n;
str workstr;
TextColor(SelectR[PageCnt],SelectG[PageCnt],SelectB[PageCnt]);
for(i=1;i<=9;i=i+1){
workstr=GetIniStr(StrPrint("Page%ld",PageCnt),StrPrint("Selection%ld",i),"",IniName);
if(workstr==""){
jumptag[i]=0;
jumpto[i]=0;
break;
}
n=StrFind(workstr,",");
jumptag[i]=StrtoInt(SubStr(workstr,0,n));
jumpto[i]=StrtoInt(SubStr(workstr,n+1,StrLen(workstr)-n-1));
//テキストの影
if (Shadow[PageCnt]==1){
TextColor(SelectR[PageCnt]/2,SelectG[PageCnt]/2,SelectB[PageCnt]/2);
TextWrite(Text[jumptag[i]],word_pic,13,10+(jumptag[i]-1)*24);
TextColor(SelectR[PageCnt],SelectG[PageCnt],SelectB[PageCnt]);
}
TextWrite(Text[jumptag[i]],word_pic,11,8+(jumptag[i]-1)*24);
}
}
//シーンチェンジ
SceneChange(){
mes(TIME){step(20){
MovePic(pic,0,0,640,400,base_pic,0,0,chgmode[PageCnt],20);,
MoveCast(piccast,pic,0,0,0,640,400,0,0,0x80000000);,
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
DelPic(OldPic);
del_me;
}}
}
//フラグをセットする
SetFlag(){
int i,j;
str workstr;
for(i=1;i<=9;i=i+1){
workstr=GetIniStr(StrPrint("Page%ld",PageCnt),StrPrint("SetFlag%ld",i),"",IniName);
if(workstr==""){
break;
}
//同じフラグがすでに定義されていれば追加しない
for(j=1;j<=FlagMax;j=j+1){
if(flag[j]==workstr){
workstr="";
break;
}
}
if(workstr!=""){
FlagMax=FlagMax+1;
flag[FlagMax]=workstr;
}
}
}
//メインメニュー表示ルーチン
RBMenu(){
if(Menuflg!=-1){ //メインメニューへの移行
Menuflg=-1;
PlayWAVE("slam.wav");
MoveWord_pic();
//テキストの影
if (Shadow[PageCnt]==1){
TextColor(R[PageCnt]/2,G[PageCnt]/2,B[PageCnt]/2);
TextWrite("F2 :ロード",word_pic,262,58);
TextWrite("F3 :セーブ",word_pic,262,106);
TextWrite("F4 :先頭ページ",word_pic,242,154);
TextWrite("F5 :前のページ",word_pic,242,202);
TextWrite("ESC:戻る",word_pic,272,250);
TextWrite("F8 :終了",word_pic,272,298);
}
//テキスト
TextColor(R[PageCnt],G[PageCnt],B[PageCnt]);
TextWrite("F2 :ロード",word_pic,260,56);
TextWrite("F3 :セーブ",word_pic,260,104);
TextWrite("F4 :先頭ページ",word_pic,240,152);
TextWrite("F5 :前のページ",word_pic,240,200);
TextWrite("ESC:戻る",word_pic,270,248);
TextWrite("F8 :終了",word_pic,270,296);
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
}
}
//セーブメニュー表示ルーチン
SaveMenu(){
if(Menuflg==-1){ //セーブメニューへの移行
Menuflg=-2;
PlayWAVE("slam.wav");
MoveWord_pic();
//テキストの影
if (Shadow[PageCnt]==1){
TextColor(R[PageCnt]/2,G[PageCnt]/2,B[PageCnt]/2);
TextWrite("どこにセーブしますか?",word_pic,182,58);
TextWrite(StrPrint("F2:A %s",Date[1]),word_pic,182,154);
TextWrite(StrPrint("F3:B %s",Date[2]),word_pic,182,202);
TextWrite(StrPrint("F4:C %s",Date[3]),word_pic,182,250);
TextWrite("ESC:キャンセル",word_pic,182,298);
}
//テキスト
TextColor(R[PageCnt],G[PageCnt],B[PageCnt]);
TextWrite("どこにセーブしますか?",word_pic,180,56);
TextWrite(StrPrint("F2:A %s",Date[1]),word_pic,180,152);
TextWrite(StrPrint("F3:B %s",Date[2]),word_pic,180,200);
TextWrite(StrPrint("F4:C %s",Date[3]),word_pic,180,248);
TextWrite("ESC:キャンセル",word_pic,180,296);
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
}
}
//ロードメニュー表示ルーチン
LoadMenu(){
if(Menuflg==-1){ //ロードメニューへの移行
Menuflg=-3;
PlayWAVE("slam.wav");
MoveWord_pic();
//テキストの影
if (Shadow[PageCnt]==1){
TextColor(R[PageCnt]/2,G[PageCnt]/2,B[PageCnt]/2);
TextWrite("どれをロードしますか?",word_pic,182,58);
TextWrite(StrPrint("F2:A %s",Date[1]),word_pic,182,154);
TextWrite(StrPrint("F3:B %s",Date[2]),word_pic,182,202);
TextWrite(StrPrint("F4:C %s",Date[3]),word_pic,182,250);
TextWrite("ESC:キャンセル",word_pic,182,298);
}
//テキスト
TextColor(R[PageCnt],G[PageCnt],B[PageCnt]);
TextWrite("どれをロードしますか?",word_pic,180,56);
TextWrite(StrPrint("F2:A %s",Date[1]),word_pic,180,152);
TextWrite(StrPrint("F3:B %s",Date[2]),word_pic,180,200);
TextWrite(StrPrint("F4:C %s",Date[3]),word_pic,180,248);
TextWrite("ESC:キャンセル",word_pic,180,296);
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
}
}
//しおりの読込
Mnu_Load(str SectionName){
int i;
PlayWAVE("slam.wav");
//フラグ再設定
FlagMax=GetIniInt(SectionName,"FlagMax",0,UserIniName);
for(i=1;i<=FlagMax;i=i+1){
flag[i]=GetIniStr(SectionName,StrPrint("Flag%ld",i),"",UserIniName);
if(flag[i]==""){
break;
}
}
PageCnt=GetIniInt(SectionName,"SavePoint",1,UserIniName);
Startpoint=GetIniInt(SectionName,"StartPoint",1,UserIniName);
JmpPage();
Menuflg=0;
}
//しおりの保存
Mnu_Save(str SectionName){
int i;
int nn;
int yy;
int mm;
int dd;
int t;
int m;
int s;
// PlayWAVE("slam.wav");
WriteIniInt(SectionName,"SavePoint",PageCnt,UserIniName);
WriteIniInt(SectionName,"FlagMax",FlagMax,UserIniName);
WriteIniInt(SectionName,"StartPoint",Startpoint,UserIniName);
nn=WhatDay();
yy=nn/10000;
nn=nn-yy*10000;
mm=nn/100;
dd=nn-mm*100;
nn=WhatTime();
t=nn/10000;
nn=nn-t*10000;
m=nn/100;
s=nn-m*100;
WriteIniStr(SectionName,"Date",StrPrint("%2ld/%2ld/%2ld %2ld:%2ld:%2ld",yy,mm,dd,t,m,s),UserIniName);
for(i=1;i<=FlagMax;i=i+1){
WriteIniStr(SectionName,StrPrint("Flag%ld",i),flag[i],UserIniName);
}
//設定読み込み:セーブの日付
Date[1]=GetIniStr("A","Date","",UserIniName);
Date[2]=GetIniStr("B","Date","",UserIniName);
Date[3]=GetIniStr("C","Date","",UserIniName);
RBMenu();
}
//先頭ページへジャンプ
Mnu_GoTop(){
if(PageCnt>1){
PlayWAVE("slam.wav");
PageCnt=1;
Startpoint=1;
FlagMax=0;
JmpPage();
Menuflg=0;
}
}
//前ページへ戻る
Mnu_Back(){
if(PageCnt>Startpoint){
PlayWAVE("slam.wav");
PageCnt=PageCnt-1;
JmpPage();
Menuflg=0;
}
}
//メニューから抜ける
Mnu_ExitMenu(){
int i;
PlayWAVE("slam.wav");
MoveWord_pic();
//テキストの影
if (Shadow[PageCnt]==1){
TextColor(R[PageCnt]/2,G[PageCnt]/2,B[PageCnt]/2);
for(i=1;i<=16;i=i+1){
TextWrite(Text[i],word_pic,13,10+(i-1)*24);
}
}
//テキスト
TextColor(R[PageCnt],G[PageCnt],B[PageCnt]);
for(i=1;i<=16;i=i+1){
TextWrite(Text[i],word_pic,11,8+(i-1)*24);
}
//選択肢の影
TextColor(SelectR[PageCnt]/2,SelectG[PageCnt]/2,SelectB[PageCnt]/2);
for(i=1;i<=9;i=i+1){
if(jumptag[i]>0){
TextWrite(Text[jumptag[i]],word_pic,13,10+(jumptag[i]-1)*24);
}else{
break;
}
}
//選択肢
TextColor(SelectR[PageCnt],SelectG[PageCnt],SelectB[PageCnt]);
for(i=1;i<=9;i=i+1){
if(jumptag[i]>0){
TextWrite(Text[jumptag[i]],word_pic,11,8+(jumptag[i]-1)*24);
}else{
break;
}
}
MoveCast(wordcast,word_pic,0,0,0,640,400,0,0,Transcol);
Menuflg=0;
}
//作品を終了
Exit_Nov_View(){
PlayWAVE("slam.wav");
DelCast(piccast);
DelCast(wordcast);
DelPic(base_pic);
DelPic(word_pic);
DelPic(white);
DelPic(yellow);
DelPic(blue);
DelPic(pic);
ExitTitle();
}
//絵の指定がない場合にデフォルトの画像をロード
DefPicLoad(int page){
if(R[page]>200 && G[page]>200 && B[page]>200){ //白い字の場合
if(SelectR[page]==0 && SelectG[page]==0 && SelectB[page]>190){ //青
pic=LoadPic("yellow.bmp");
Transcol=0x00FFFF;
}else{
pic=LoadPic("blue.bmp");
Transcol=0xFF0000;
}
}else{
if(SelectR[page]>200 && SelectG[page]>200 && SelectB[page]>200){ //白
if(R[page]==0 && G[page]==0 && B[page]>190){ //青
pic=LoadPic("yellow.bmp");
Transcol=0x00FFFF;
}else{
pic=LoadPic("blue.bmp");
Transcol=0xFF0000;
}
}else{
pic=LoadPic("white.bmp");
Transcol=0xFFFFFF;
}
}
}
//word_picへ背景色画像コピー
MoveWord_pic(){
if(R[PageCnt]>160 && G[PageCnt]>160 && B[PageCnt]>160){ //白い字の場合
if(SelectR[PageCnt]==0 && SelectG[PageCnt]==0 && SelectB[PageCnt]>190){ //青
MovePic(yellow,0,0,640,400,word_pic);
Transcol=0x00FFFF;
}else{
MovePic(blue,0,0,640,400,word_pic);
Transcol=0xFF0000;
}
}else{
if(SelectR[PageCnt]>160 && SelectG[PageCnt]>160 && SelectB[PageCnt]>160){ //白
if(R[PageCnt]==0 && G[PageCnt]==0 && B[PageCnt]>190){ //青
MovePic(yellow,0,0,640,400,word_pic);
Transcol=0x00FFFF;
}else{
MovePic(blue,0,0,640,400,word_pic);
Transcol=0xFF0000;
}
}else{
MovePic(white,0,0,640,400,word_pic);
Transcol=0xFFFFFF;
}
}
}