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

📄 events.cpp

📁 凌星科技_2004-5-17_《圣剑英雄传II》的源代码scr2
💻 CPP
字号:
//********************************************
//	事件 相关函数
//  创建于2000年8月03日
//********************************************
#include <windows.h>
#include <stdio.h>
#include "gamelib\goldpoint.h"
#include "interface\interface.h"
#include "main.h"
#include "events.h"

//文字序幕
void CEvents::TextTitle(char *filename, char *index)
{
	bool bRun=true, bShow=true;
	int sx, sy, i=0, alpha=31;
	
	CIniSet Ini(filename);
	char *String=Ini.ReadText(index, "String");		//文字索引
	char *MusicFile=Ini.ReadText(index, "Music");	//音乐文件
	char *PicFile=Ini.ReadText(index, "Pic");		//背景文件
	int Lines=Ini.ReadInt(index, "Lines");			//行数
	int DelayTime=Ini.ReadInt(index, "Delay");		//每次停留的时间
	
	char *Text=NULL;	//每行显示的文字
	Text=Ini.ReadText(String, 0);
	sx=(ScreenWidth-strlen(Text)*font.font_Size/2)/2;
	sy=(ScreenHeight-font.font_Size)/2;

	//播放音乐
	if( strcmp(MusicFile, "") != 0 )
	{
		if( Music.IsPlay() ) Music.Stop();
		WCHAR* str = WChar(MusicFile);
		Music.LoadMusic(str);
		_DELETE( str );
		Music.Play();
	}
	
	//生成背景并淡出
	if( strcmp( PicFile, "" ) != 0 )
	{
		DDReLoadBitmap(lpDDSBackGround, PicFile);
		ColorOut(lpDDSBackGround, 100);
	}
	else
	{
		Clrscr(lpDDSBackGround, Ini.ReadInt(index, "BackColor"));
		ColorOut(lpDDSBackGround, 100);
	}

	MSG msg;
	while( bRun )
	{
		if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
		{
            if (!GetMessage(&msg, NULL, 0, 0)) return;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
		}
		else if(bActive)
		{
			//延时控速
			NowTick=timeGetTime();
			if( NowTick < OldTick+DelayTick ) continue;
			OldTick=NowTick;

			//获取输入信息
			GetInputData();

			if( bShow )	//淡出--------------------------------
			{
				alpha--;
				Blt(lpDDSBack, 0,0, lpDDSBackGround, RectScreen, false);
				font.PrintAlphaText(lpDDSBack, sx, sy, alpha, Text);

				if( alpha <= 0 )
				{
					Delay(DelayTime);
					alpha=0;
					bShow=false;
					continue;
				}
			}
			else	//淡入------------------------------------
			{
				alpha++;
				Blt(lpDDSBack, 0,0, lpDDSBackGround, RectScreen, false);
				font.PrintAlphaText(lpDDSBack, sx, sy, alpha, Text);

				if( alpha >= 31 )
				{
					alpha=31;
					bShow=true;

					i++;
					
					//结束
					if( i>=Lines )
					{
						bRun=false;
						break;
					}
					
					//读入下一句
					_FREE(Text);
					Text=Ini.ReadText(String, i);
					sx=(ScreenWidth-strlen(Text)*font.font_Size/2)/2;
					sy=(ScreenHeight-font.font_Size)/2;
					
					continue;
				}
			}

			_UpdateScreen();

			if( B_UP )
			{
				bRun=false;
			}
		}
		else WaitMessage();	//等待消息
	}

	Music.Stop();

	_FREE(String);
	_FREE(MusicFile);
	_FREE(PicFile);
	_FREE(Text);
}

//金点LOGO
void CEvents::GoldPointLogo(char *PicFile, DWORD BkColor, int x, int y, int Width, int Height, int Num)
{
	LPDIRECTDRAWSURFACE LogoPic;
	CreateBitmap(LogoPic, 0,0, PicFile);

	FillSurface(lpDDSBackGround, BkColor);
	Blt(lpDDSBack, 0,0, lpDDSBackGround, RectScreen, false);
	ColorOut(lpDDSBack, 50);

	//播放音乐
	if( Music.IsPlay() ) 
		Music.Stop();
	WCHAR* str = WChar("music\\logo.mid");
	Music.LoadMusic(str);
	_DELETE( str );
	Music.Play();

	SetCursor(NULL);

	//动画出现
	RECT rect={0, 0, Width, Height};
	for(int i=0; i<Num; i++)
	{
		Delay(350);
		Blt(lpDDSBack, 0,0, lpDDSBackGround, RectScreen, false);

		rect.top=Height*i;
		rect.bottom=Height*(i+1);
		Blt(lpDDSBack, x, y, LogoPic, rect, false);
		_UpdateScreen();
	}
	Delay(2500);
	Music.Stop();
	
	ColorIn(50, RGB16(0,0,0));
	Delay(1000);

	_RELEASE( LogoPic );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -