📄 dialog.cpp
字号:
#include "Headers.h"
#include "resource.h"
#include "DriverDialog.h"
#include "MAIN.h"
void MAIN::OutDialog(char tx[3][60],OBJECT *to)
{
OBJECT *obj;
long speaker=to->dlgres.speaker;
long stop=to->dlgres.stop;
static int i;
if(sub[0]->res.number==speaker)
{
speaker-=20000;
obj=sub[0];
}
else if(boss[0]->res.number==speaker)
{
speaker-=40000;
obj=boss[speaker];
}
else
{
for(i=0;i<MAX_NPC;i++)
{
if(npc[i]->res.number==speaker)
{
speaker=i;
if(npc[speaker]->sfc==0)
return;
switch(sub[0]->direction)
{
case 4:
npc[speaker]->direction=6;break;
case 6:
npc[speaker]->direction=4;break;
case 8:
npc[speaker]->direction=2;break;
case 2:
npc[speaker]->direction=8;break;
}
obj=npc[i];
break;
}
}
}
static int put=0;
LPDIRECTDRAWSURFACE dlgsfc=0;
RECT rect;
//dlgsfc
SetRect(&rect,0,0,480,48);
dlgsfc=DDGetSurface(lpdd,rect.right,rect.bottom);
if(dlgsfc==0)
return;
DDSetColorKey( dlgsfc,RGB(0,0,0) );
ClearSurface( dlgsfc,0);
if( dlgsfc->GetDC(&hdc)==DD_OK )
{
SetBkColor( hdc,RGB(0,0,0) );
SetTextColor( hdc,RGB(255,255,255) );
TextOut(hdc,0,0,tx[0],60);
TextOut(hdc,0,16,tx[1],60);
TextOut(hdc,0,32,tx[2],60);
dlgsfc->ReleaseDC(hdc);
}
while( GetAsyncKeyState(VK_CONTROL)!=0 )
{}
while( GetAsyncKeyState(VK_CONTROL)==0 )
{
Draw();
//obj
obj->Put();
//dialog
dialog->Put();
//dlgsfc
backsurf->BltFast(128,400,
dlgsfc,&rect,
DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);
//to
backsurf->BltFast(32,416,
obj->sfc,&obj->res.apprect,
DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);
//wait
if(stop!=1)
{
if(put==0)
{
wait->Put();
put=2;
}
else
{
put--;
}
}
primsurf->Flip( 0, DDFLIP_WAIT );
}
while( GetAsyncKeyState(VK_CONTROL)!=0 )
{}
dkey.GetInput();
dlgsfc->Release();
}
void MAIN::Dialog(OBJECT *to)
{
if(to->sfc==0)
return;
char tx[3][60];
long i,n0,n1,len;
while( GetAsyncKeyState(VK_ESCAPE)==0 )
{
SearchDlgRes(game.dlgmem,game.dlglength,to);
game.process[to->dlgres.fillprocess]=1;
memset(tx,' ',3*60);
to->res2.dlgptr+=sizeof(DIALOG_RES_ASCII);
n0=to->res2.dlgptr;
n1=n0;
for(i=0;i<3;i++)
{
while( game.dlgmem[n1]!='~' )
{
n1++;
if(n1>=game.dlglength)
return;
}
len=n1-n0;
if(len>60)
len=60;
memcpy(tx[i],&game.dlgmem[n0],len);
if( game.dlgmem[n1+1]=='~' )
{
goto over;
}
n0=n1+3;
n1=n0;
}
over:
OutDialog(tx,to);
if( to->dlgres.stop==1 )
{
WriteDlgAscii(game.dlgmem,game.dlglength,to->res.number,to->dlgres.gotonumber);
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -