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

📄 symbolmgr_client.cpp

📁 国内著名网络游戏dragon的客户端登陆用完整源码 配套一起上传的服务端部分可开服 无说明文档
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// SymbolMgr_Client.cpp: implementation of the CSymbolMgr_Client class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SymbolMgr_Client.h"
#include "Convert565to555.h"
#include "Hong_Sprite.h"
#include "Hong_Sub.h"
#include "MenuDef.h"
#include "TextOutMgr.h"
#include "Hangul.h"
#include "ItemTable.h"
#include "skill_lsw.h"
#include "CurrentMsgMgr.h"
#include "Menu.h"


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
extern CSymbolMgr_Client	g_SymBolMgr;

CSymbolMgr_Client::CSymbolMgr_Client()
{
	memset(m_ItemSpr,0,sizeof(Spr) * SYMBOL_ITEM_MAX);
	m_nGrade	= 0;
	m_vtSymbolList.reserve(SYMBOL_ITEM_MAX);

	m_bTextItemMode = false;//soto-031031
	m_bTextAbilliyMode = false;//soto-031031
	m_bBeta = false;

	m_nPutX	= 634;
	m_nPutY = 160;
}

CSymbolMgr_Client::~CSymbolMgr_Client()
{
	DestroyAllObject();
}

void CSymbolMgr_Client::LoadItemImage()
{
	FILE	*fp;
	char filename[MAX_FILENAME];
	for(int num = 0; num < 23; num++ )
	{
		sprintf(filename, "./itemdata/110%02d00.csp", num+1 );
		if( fp = Fopen(filename, "rb" ) )
		{
			fread( &m_ItemSpr[num].xl, sizeof( short ), 1, fp);
			fread( &m_ItemSpr[num].yl, sizeof( short ), 1, fp);
			fread( &m_ItemSpr[num].ox, sizeof( short ), 1, fp);
			fread( &m_ItemSpr[num].oy, sizeof( short ), 1, fp);
			fread( &m_ItemSpr[num].size, sizeof( unsigned int ), 1, fp);
			
			
			MemFree( m_ItemSpr[num].img );		
			MemAlloc( m_ItemSpr[num].img, m_ItemSpr[num].size );
			fread(m_ItemSpr[num].img, m_ItemSpr[num].size, 1, fp);
			convert565to555( &m_ItemSpr[num] );
			fclose(fp);
		}
		
	}
}

void CSymbolMgr_Client::DestroyAllObject()
{
	for(int i = 0; i < SYMBOL_ITEM_MAX;i++)
	{
		if(m_ItemSpr[i].img)MemFree( m_ItemSpr[i].img );
	}
}

void CSymbolMgr_Client::PutSymbolItem()
{
	if(QuickItemAttr[5].item_no)//酒捞袍捞 粮犁且锭 嘛绰促.
	{
		m_nPutX	= 634 + 10;
		m_nPutY = 160 + 2;
		PutCompressedImage( m_nPutX, m_nPutY, &m_ItemSpr[QuickItemAttr[5].item_no-1] );
	}
}

void CSymbolMgr_Client::SetDualItem(int nItemNumber, int nLevel )
{
	//老窜狞俊 历厘等促.
	QuickItemAttr[5].item_no = nItemNumber;
	QuickItemAttr[5].attr[0] = nLevel;

	m_nGrade = nLevel;
}


bool CSymbolMgr_Client::LoadTables()
{
	FILE*	fp = NULL;
	char	buf[1024] = {NULL,};
	char*	tok = NULL;
	const	char*	token = "\t\n";

	char	strPathSymbolTxt[MAX_PATH] = "./Itemtable/Item_Symbol.txt";
	char	strPathSymbolBin[MAX_PATH] = "./Itemtable/Item_Symbol.Bin";
	
	if(checkbeta == '1')
	{	//< CSD-031030
		m_bBeta = true;
	}	//> CSD-031030
	else
	{
		m_bBeta = false;
	}

	fp = Fopen(strPathSymbolTxt,"rt");
	if(fp)
	{
		m_bTextItemMode = true;
	}
	else
	{
		fp = Fopen(strPathSymbolBin,"rb");
		
		if(fp)
		{
			m_bTextItemMode = false;
		}
		else
		{
			JustMsg(" 沥焊俊 鞘夸茄 拳老捞 绝嚼聪促 \"./Itemtable/Item_Symbol.Bin\" ");
			return false;
		}
	}
		
	if(fp)
	{
		if(m_bTextItemMode)
		{
			int i = 0;
			while(!feof(fp))
			{
				fgets(buf,1023,fp);
				if(i > SYMBOL_ITEM_MAX - 1)break;
				SYMBOL_ITEM	Item; memset(&Item,0,sizeof(Item));
				
				tok = strtok(buf,token); if(!tok)return false;
				Item.nItemNumber = atoi(tok);	tok = strtok(NULL,token); if(!tok)return false;
				tok = strtok(NULL,token); if(!tok)return false;
				strcpy(Item.strName,tok);tok = strtok(NULL,token); if(!tok)return false;
				strcpy(Item.strHanName,tok); tok = strtok(NULL,token); if(!tok)return false;
				Item.n1StClass = atoi(tok); tok = strtok(NULL,token); if(!tok)return false;
				Item.n2ndClass = atoi(tok);	tok = strtok(NULL,token); if(!tok)return false;
				tok = strtok(NULL,token); if(!tok)return false;
				tok = strtok(NULL,token); if(!tok)return false;
				Item.nRare[0] = atoi(tok);tok = strtok(NULL,token); if(!tok)return false;
				Item.nRare[1] = atoi(tok);tok = strtok(NULL,token); if(!tok)return false;
				Item.nRare[2] = atoi(tok);tok = strtok(NULL,token); if(!tok)return false;
				Item.nRare[3] = atoi(tok);tok = strtok(NULL,token); if(!tok)return false;
				Item.nRare[4] = atoi(tok);

				m_vtSymbolList.push_back(Item);
				i++;
			}
		}
		else //binary Mode
		{
			for(int i = 0;i < SYMBOL_ITEM_MAX;i++)
			{
				int nItemNumber = 0;char strName[65] = {NULL,};char strHanName[65] = {NULL,};
				int n1StClass = 0,n2ndClass = 0;int nRare[5] = {0,};
				SYMBOL_ITEM	Item; memset(&Item,0,sizeof(Item));
				int size = fread(&nItemNumber,sizeof(int),1,fp); Item.nItemNumber = nItemNumber;
				size = fread(strName,sizeof(char),65,fp);strcpy(Item.strName,strName);
				size = fread(strHanName,sizeof(char),65,fp);strcpy(Item.strHanName,strHanName);
				size = fread(&n1StClass,sizeof(int),1,fp);Item.n1StClass = n1StClass;
				size = fread(&n2ndClass,sizeof(int),1,fp);Item.n2ndClass = n2ndClass;
				size = fread(nRare,sizeof(int),5,fp);memcpy(Item.nRare,nRare,sizeof(int)*5);

				m_vtSymbolList.push_back(Item);
			}
		}
		
		fclose(fp);
	}
	else // 拳老捞 绝促.
	{
		
	}

	//i = 0;
	fp = NULL;
	for(int i = 0;i < SYMBOL_ATTR_COUNT - 1;i++)
	{
		VT_SYMBOL_RARE			vtSymbolRare;
		char szFileNameBeta[MAX_PATH] = {NULL,};
		char szFileNameBetaTxt[MAX_PATH] = {NULL,};
		char szFileName[MAX_PATH] = {NULL,};
		char szFileNameTxt[MAX_PATH] = {NULL,};
		//< CSD-031030
		sprintf(szFileName,"./Itemtable/Item_Symbol_Ability%d.bin",i+1);
		sprintf(szFileNameTxt,"./Itemtable/Item_Symbol_Ability%d.txt",i+1);

		
		fp = Fopen(szFileNameTxt,"rt");
		if(fp)
		{
			m_bTextAbilliyMode = true;
		}
		else
		{
			fp = Fopen(szFileName,"rb");
			if(fp)
			{
				m_bTextAbilliyMode = false;
			}
		}			
				
		if(0 == i && NULL == fp)return false; //窍唱档 绝栏搁..俊矾.

		SYMBOL_RARE	SymbolRare;memset(&SymbolRare,0,sizeof(SYMBOL_RARE));
		
		if(fp)
		{
			if(m_bTextAbilliyMode)//咆胶飘葛靛.
			{
				while(!feof(fp))
				{
					if(!fgets(buf,1023,fp))break;

					tok = strtok(buf,token);				
					for(int j = 0;j < SYMBOL_ITEM_MAX;j++)
					{					
						if(tok == NULL)
						{
							fclose(fp);return false;
						}
						SymbolRare.anRare[j] = atoi(tok);
						
						tok = strtok(NULL,token);
					}

					vtSymbolRare.push_back(SymbolRare);
				}
			}
			else//官捞呈府 葛靛.
			{
				while(!feof(fp))
				{
					for(int j = 0;j < SYMBOL_ITEM_MAX;j++)
					{
						int num = 0;
						
						fread(&num,sizeof(int),1,fp);
						
						SymbolRare.anRare[j] = num;
					}
					vtSymbolRare.push_back(SymbolRare);
				}							
			}
			fclose(fp);
		}
		else
		{
			break;
		}

		m_vtRareValueList.push_back(vtSymbolRare);
	}

	SaveBinaryFiles();

	return true;
}

void CSymbolMgr_Client::Explain(int nX, int nY)
{
	
	const int nLineGab = DEFAULT_LINE_GAB;
	int nGab = 0;

	const int nWidth = TXT_BG_NORMAL_WIDTH;
	
	if(QuickItemAttr[5].item_no && m_nGrade) //酒捞袍 逞滚啊 乐绢具 家瘤窍绊 乐绰巴捞促.
	{
		switch(m_nGrade) //弊饭捞靛俊 蝶扼 祸阑 官曹荐 乐促.
		{
		case 1:
			TxtOut.Init(COLOR_BLUE,nWidth,5);
			break;
		case 2:
			TxtOut.Init(COLOR_RED,nWidth,5);
			break;
		case 3:
			TxtOut.Init(COLOR_GREEN,nWidth,5);
			break;
		case 4:
			TxtOut.Init(COLOR_BROWN,nWidth,5);
			break;
		case 5:
			TxtOut.Init(COLOR_BLACK,nWidth,5);
			break;
		}

		TxtOut.PutTextHeaderBGImg(nX,nY,nWidth);

⌨️ 快捷键说明

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