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

📄 mousecursor.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include <ddraw.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <Io.h>
	
	
#include "Dragon.h"
#include "Char.h"
#include "Tool.h"
#include "GameProc.h"
#include "Map.h"
#include "Hangul.h"
#include "DirectSound.h"
#include "Hong_Sprite.h"
#include "Hong_Light.h"
#include "Hong_Sub.h"
#include "Convert565to555.h"
#include "Skill.h"
#include "Item.h"
	
#define __MOUSE_CURSOR_H__
#include "MouseCursor.h"
	
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
/////
/////	extern variables...
/////


extern SMENU SMenu[ MAX_MENU]; // menustart.cpp


extern Spr *SkillIcon;






/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
/////	
/////	user variables...
/////

//////////// 0527 lkh 眠啊 ////////////
t_queue		g_queue;

int CurMouseCursorNo = 1;
static int CurMouseCursorSpotX = 18, CurMouseCursorSpotY = 10;
static int 	CurMouseCursorStart, CurMouseCursorEnd, CurMouseCursorAni;


static int OldMouseCursorNo;
static int PushPopMoueCursor;


unsigned char *McBuf;
Spr mc[ MAX_MOUSE_CURSOR][20];

/* = { 
	{1,11},
	{1,5},
 {1,2},
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {1,1},
 {1,1},
 {1,1}, // 10
 {1,1}, 
 {1,1},
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {0,0}, // 20
 {0,0}, 
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {1,5},
 {1,4},
 {1,5}, // 30
 {1,5}, 
 {0,0},
 {1,4},
 {1,4},
 {1,3},
 {1,4},
 {1,3},
 {1,4},
 {1,4},
 {1,3}, // 40
 {1,2}, 
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {0,0},
 {0,0},  
{0,0}};  // 49*/



void CursorNo( int no );

	
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
/////
/////		user functions..
/////



void LoadCursorAni( void )
{
	FILE *fp;
	int i;
	char temp[ FILENAME_MAX];

	fp = Fopen( "./data/CursorAni.txt", "rt" );
	if( fp )
	{
		for( i = 0 ; i < MAX_MOUSE_CURSOR ; i ++)
		{
			fgets( temp, FILENAME_MAX, fp );
			sscanf( temp, "%d %d %d %d ",	&cursorani[i].start, 
											&cursorani[i].end,
											&cursorani[i].offx,
											&cursorani[i].offy
											);
		}
		fclose(fp);

		fp = Fopen( "./data/CursorAni.b", "wb" );
		if( fp )
		{
			fwrite( cursorani, sizeof(t_cursorani), MAX_MOUSE_CURSOR, fp );
			fclose(fp);
		}
	}
	else
	{
		fp = Fopen("./data/CursorAni.b", "rb" );
		if( fp )
		{
			fread( cursorani, sizeof(t_cursorani), MAX_MOUSE_CURSOR, fp );
			fclose(fp);
		}
	}
}


// 0810 KHS
void CurMouseCursorFrameCounter( void )
{
	static int del;
	del ++;

	if( tool_MouseCursorBlock ) 
	{
		if( ++del >= 2 ) {	CurMouseCursorAni ++; del = 0; }
				if( CurMouseCursorAni > CurMouseCursorEnd ) 
					CurMouseCursorAni = CurMouseCursorStart; 
		
		return;
	}

	switch( CurMouseCursorNo )
	{
		// 老馆目辑.
	case 1 : 	if( ++del >= 2 ) {	CurMouseCursorAni ++; del = 0; }
				if( CurMouseCursorAni > CurMouseCursorEnd ) 
					CurMouseCursorAni = CurMouseCursorStart; 
		break;

		// 老馆棱扁难辑.
	case 2 :	if( ++del >= 2 ) {	CurMouseCursorAni ++; del = 0; }
				if( CurMouseCursorAni > CurMouseCursorEnd ) CurMouseCursorAni = CurMouseCursorEnd;
		break;

		// 付快胶狼 捞悼器牢飘 
	case 3 :	if( ++del >= 2 ) {	CurMouseCursorAni ++; del = 0; }
				if( CurMouseCursorAni > CurMouseCursorEnd ) 
				{
					CursorNo( 1 );
				}	
		break;

	case 53 :	CurMouseCursorAni ++; 
				if( CurMouseCursorAni > CurMouseCursorEnd ) 
				{
					CursorNo( 1 );
				}	
		break;
		
	default :	CurMouseCursorAni = CurMouseCursorStart;
		break;
	}
}



void GetImageBox( char *backbuf, char *ground, int sx, int sy, int ex, int ey )
{	
	int xl = (ex - sx + 1) * 2;
	int c=0;

	for( ; sy <= ey ; sy ++) 
	{
		memcpy( backbuf + c * xl, ground + sx * 2 + sy * dDxSize, xl );
		c++;
	}
}

void PutImageBox( char *backbuf, char *ground, int sx, int sy, int ex, int ey )
{						
	int xl = (ex - sx + 1) * 2;
	int c=0;

	for( ; sy <= ey ; sy ++) 
	{
		memcpy( ground + sx * 2 + sy * dDxSize, backbuf + c * xl, xl );
		c++;
	}
}

/*
// 1捞 狼固窍绰巴篮 乞惑矫甫 富茄促. 
// 1捞 甸绢搁 窃荐郴俊辑	傈捧惑怕, 
//							扁夯惑怕俊 蝶扼 付快胶甫 官差霖促. 

  1  11  25  36   // 1 : 老馆目辑 
  1  10  22  37   // 2 : 老馆棱扁目辑 
  1   3  22  37   // 3 : 捞悼 Point 瓤苞 
  0   0  -7   0   // 4 : 老馆 磐摹目辑 
  0   0   0   0   // 5 : 傈捧目辑 
  0   0   0   0   // 6 : 傈捧磐摹目辑1 
  1   1 -19  23   // 7 : 付过 目辑1 
  1   5 -24   2   // 8 : 拳搁 胶农费 目辑1 
  1   5   2   4   // 9 : 拳搁 胶农费 目辑2 
  1   5  20  15   // 10 : 拳搁 胶农费 目辑3 
  1   5  17  26   // 11 : 拳搁 胶农费 目辑4 
  1   8 -12  33   // 12 : 拳搁 胶农费 目辑5 
  1   5 -44  48   // 13 : 拳搁 胶农费 目辑6 
  1   5 -62   3   // 14 : 拳搁 胶农费 目辑7 
  1   5 -53  13   // 15 : 拳搁 胶农费 目辑8 
  1  10  22  20   // 16 : 胶懦老馆目辑1 
  1   6  89  17   // 17 : 胶懦磐摹目辑1 
  1   8 -17  21   // 18 : 胶懦 稠磐摹 目辑 
  1   8  10  25   // 19 : 胶懦detect目辑1 
  1   4  25  31   // 20 : 胶懦OBPoint目辑 
  1   6  25  31   // 21 : 胶懦OBPoint磐摹目辑 
  1  10  23  20   // 22 : 胶懦Identified目辑 
  1  10  23  20   // 23 : 胶懦Identified磐摹目辑 
  1  10  23  20   // 24 : 胶懦澜厩目辑 
  1  10  23  20   // 25 : 胶懦澜厩磐摹 
  0   0   0   0   // 26 : 胶懦Hide目辑 
  1   8 -17  20   // 27 : 胶懦Hide 磐摹目辑 
  1  10  18  12   // 28 : 胶懦 火目辑 
  1   8  25  20   // 29 : 胶懦 炒目辑 
  1   8   7  21   // 30 : 胶懦 邦豹捞目辑 
  1  18  89  17   // 31 : 胶懦 超矫措目辑 
  1   6 -12  14   // 32 : 胶懦 累篮漠目辑 
  1  11 -37  -9   // 33 : 胶懦 弊股目辑 
  1   8  61 -27   // 34 : 胶懦 档尝目辑 
  1   5  44  14   // 35 : 胶懦 砰目辑 
  1   7  53  -6   // 36 : 胶懦 档混漠目辑 
  1   7   0   0   // 37 : 胶懦 龋固目辑 
  1   5  78  37   // 38 : 胶懦 阜措扁目辑 
  1   9 -18   8   // 39 : 胶懦 快蜡烹目辑 
  1   5   0  11   // 40 : 胶懦 快蜡烹努腐目辑 
  1   4  -6  23   // 41 : 胶懦 啊困磐摹目辑 
  1  10  23  20   // 42 : 胶懦 鳃傅  
  1  10  23  20   // 43 : 胶懦 鳃傅 磐摹目辑 
  1  10  22  37   // 44 : 老馆目辑抛滴府弧埃祸 
  1  10  22  37   // 45 : 老馆棱扁目辑抛滴府弧埃祸 
  1   3  22  37   // 46 : 老馆 磐摹目辑抛滴府弧埃祸 
  1  10  22  37   // 47 : 老馆目辑檬废祸 
  1  10  22  37   // 48 : 老馆棱扁目辑檬废祸 
  1   3  22  37   // 49 : 老馆 磐摹目辑檬废祸 
  1   9  -1  18   // 50 : 何剿倒 
  1   8 -17  21   // 51 : 捞悼器牢飘 
  0   0   0   0   // 52 : 付过 某胶泼 瓤苞 
  0   0   0   0   // 53 :  
  0   0   0   0   // 54 :  
  0   0   0   0   // 55 :  
  0   0   0   0   // 56 :  
  0   0   0   0   // 57 :  
  0   0   0   0   // 58 :  
  0   0   0   0   // 59 :  
  0   0   0   0   // 60 :  
	
*/	
	
	
	
void CursorStatus( void )
{		

	return;



	static int cursor= -1, oldcursor;
		
	oldcursor = cursor;
	if( PushPopMoueCursor == 0 ) 
	if( SkillStatus == SKILL_OFF || CurMouseCursorNo == 1 ) // 惑炔捞 嘎眠绢 免仿窍扼..
	{	
		if( Hero->peacests == 0	)
		{		
			if( g_GameInfo.lpcharacter )
			{	
				switch( g_GameInfo.nSelectedSpriteType )
				{
				case SPRITETYPE_ON_THE_CEILING_CHAR	 :
				case SPRITETYPE_MONSTER		:
				case SPRITETYPE_NPC			:
				case SPRITETYPE_CHARACTER	:	cursor = 4; // 老馆 磐摹目辑 
				break;
				}
			}	
			else
			{	
				cursor = 1;
			}	
		}
		else	
		{
			if( g_GameInfo.lpcharacter )
			{	
				switch( g_GameInfo.nSelectedSpriteType )
				{
				case SPRITETYPE_ON_THE_CEILING_CHAR	 :
				case SPRITETYPE_MONSTER		:
				case SPRITETYPE_NPC			:
				case SPRITETYPE_CHARACTER	:	cursor = 6; // 傈捧磐摹目辑
				break;
				}
			}	
			else
			{	
				cursor = 5;
			}	
		}
		
		if( CursorCheckedItem )		cursor = 2; // 老馆棱扁目辑 
		
		// 付过捞 难廉乐栏搁
		if( Hero )
		if( Hero->ready_Magic == 2 || Hero->ready_Magic == 3 ) cursor = 7; //付过 目辑1 
		
		
		if( TileMap[Mox / TILE_SIZE][ Moy/TILE_SIZE].attr_dont )
		{
			cursor = 44; // 44 : 老馆目辑抛滴府弧埃祸 
		
		}

		//	BBD 031114	捞犯霸 登搁 g_MouseInMenu俊 皋春锅龋甫 持篮 狼固啊 绝绢咙
		//	拌牢 PM 丛捞 狼档茄 内靛甫 阜绰淀窍咯 烙矫肺 林籍贸府
/*
		if( g_MouseInMenu == true )	
		{
		}
		*/
	}	
		
	if( oldcursor != cursor ) // 付快胶目寂啊 官差菌栏搁....
	{	
		CursorNo( cursor );
	}	
}






// 0810 KHS
void CursorNo( int no )
{	
	int x = 0, y = 0;	
	
	if( no == 0 ) return;
	switch( no )
	{
		case 53 : 
			break;

		default :	if( no >=16 ) no /= 10;
			break;
	}
	
	CurMouseCursorNo = no;
	
	CurMouseCursorStart = cursorani[no-1].start;
	CurMouseCursorEnd   = cursorani[no-1].end;
	
	CurMouseCursorSpotX = cursorani[no-1].offx;
	CurMouseCursorSpotY = cursorani[no-1].offy;
	
	CurMouseCursorAni   = CurMouseCursorStart;
}	
	
	
	
	
void PushMouseCursor( void )
{	
	if( 8 <= CurMouseCursorNo && CurMouseCursorNo <= 15 )
	{
		return;
	}
	
	if( PushPopMoueCursor ) return;
	PushPopMoueCursor =1;
		 
	OldMouseCursorNo = CurMouseCursorNo;
}	
	
void PopMouseCursor( void )
{	
	if( SMenu[MN_MAININTERFACE].bActive == FALSE ) return;
	
	
	if( PushPopMoueCursor )
	{
		CursorNo( OldMouseCursorNo );
		PushPopMoueCursor = 0;
	}
}	
	
	
	
	
	
extern void		PutItemIcon(int x, int y, int item_number, int delay=0, int effect = 2, int is_not_equip = 0 );
extern	POINT	MouseItemInRect;
	
extern ItemAttr	InvItemAttr[3][3][8];
extern ItemAttr	EquipItemAttr[8];
extern ItemAttr	QuickItemAttr[7];
	
	
	
void withSkillItem( void )
{	
	int x, y;
	DWORD no;
	
	if( SkillStatus != SKILL_READY ) return;
		
	switch( SkillNo )
	{
		// Sow
	case 22  :	break;
	
	default : return;
	}
	
	x = g_pointMouseX + CurMouseCursorSpotX;
	y = g_pointMouseY + CurMouseCursorSpotY;
	
	PutItemIcon( x, y + 20, SkillItemNo );
	
	
	switch( SkillItemPOS.type )
	{
	case QUICK :	no = QuickItemAttr[ SkillItemPOS.p3].attr[ IATTR_MUCH];	break;
	case INV  :		no = InvItemAttr[ SkillItemPOS.p1][ SkillItemPOS.p2][ SkillItemPOS.p3].attr[ IATTR_MUCH];	break;
	case EQUIP :	no = EquipItemAttr[ SkillItemPOS.p3].attr[ IATTR_MUCH];	break;
	default : return;
	}
	
	HprintBold( x, y+30, 0xffff, 0, "%2d", no );
}	
	
void CursorDisplayBack( void )
{		
	if( MouseCursorOnOff == false ) return;// 扁贱矫傈吝.
	if( SMenu[MN_LOGO_START].bActive==true ) return;

	PmcSx = SCREEN_WIDTH;
	PmcSy = SCREEN_HEIGHT;
	PmcEx = PmcEy = 0;
	Spr *s = &mc[ CurMouseCursorNo-1][ CurMouseCursorAni];
/*	switch(CurMouseCursorNo)
	{
	case 1://sa
		{
	//		s = FieldTypeNomalPut(int mx, int my, int x,int y,int nImageNumber, int type);
		}break;
	default :
		{
			s = &mc[ CurMouseCursorNo-1][ CurMouseCursorAni];
		}break;
	}*/
	int sx = g_pointMouseX + CurMouseCursorSpotX - s->ox;

⌨️ 快捷键说明

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