⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dialog.cpp

📁 一个简单的rpg游戏
💻 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 + -