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

📄 gameiconman.cc

📁 五行MMORPG引擎系统V1.0
💻 CC
字号:
//gameIconMan.cc
/*/////////////////////////////////////////////////////////////////

   李亦
	2006-7-7
/*/////////////////////////////////////////////////////////////////

#include "rpg/ui/gameIconMan.h"
#include "math/mRect.h"
#include "rpg/gobjects/GPlayer.h"



namespace RPG
{


#define GICON_FILENAME	"ui/img/cellIcons.dml"


//全局GameIcon实例
//static	GameIconMan	gs_gameIconMan;
GameIconMan				*g_pGameIconMan = NULL;

static GameIconDictionary::Entry	gs_gameIcons[]=
{
	//空白格子单元
	{GICON_BLANK,					GICON_BLANK,				"",					"",				""},
	{GICON_BLANKSHOULDER,		GICON_BLANKSHOULDER,	"blankShoulder",	"肩甲槽",			""},
	{GICON_BLANKHELMET,			GICON_BLANKHELMET,		"blankHelmet",	"头盔槽",			""},
	{GICON_BLANKNECKLACE,		GICON_BLANKNECKLACE,	"blankNecklace",	"项链槽",			""},
	{GICON_BLANKARMS,				GICON_BLANKARMS,		"blankArms",		"武器槽",			""},
	{GICON_BLANKARMOR,			GICON_BLANKARMOR,		"blankArmor",		"盔甲槽",			""},
	{GICON_BLANKSHIELD,			GICON_BLANKSHIELD,		"blankShield",	"盾牌槽",			""},
	{GICON_BLANKPANTS,			GICON_BLANKPANTS,		"blankPants",		"裤子槽",			""},
	{GICON_BLANKBOOT,				GICON_BLANKBOOT,		"blankBoot",		"靴子槽",			""},
	{GICON_BLANKGLOVE,			GICON_BLANKGLOVE,		"blankGlove",		"手套槽",			""},

	{GICON_BLANKMANTLE,			GICON_BLANKMANTLE,	"blankMantle",		"披风槽",			""},
	{GICON_BLANKLACE,				GICON_BLANKLACE,		"blankLace",		"左饰带槽",			""},
	{GICON_BLANKLACE2,			GICON_BLANKLACE,		"blankLace2",		"右饰带槽",			""},
	{GICON_BLANKRING,				GICON_BLANKRING,		"blankRing",		"左戒指槽",			""},
	{GICON_BLANKRING2,			GICON_BLANKRING,		"blankRing2",		"右戒指槽",			""},
	{GICON_BLANKHEADGEAR,		GICON_BLANKHELMET,	"blankHeadgear",	"头饰槽",			""},


	//////////////////////////////////////////////////////////////////////////
	/// 人物基本动作
	{GICON_ACTIONTAKEOBJECT,	GICON_ACTIONTAKEOBJECT	,	PRE_ACTION"takeobject",	"拾取物品",		""},
	{GICON_ACTIONSIT,				GICON_ACTIONSIT,				PRE_ACTION"sit",			"打坐休息",		""},
	{GICON_ACTIONSHAKEHAND,		GICON_ACTIONSHAKEHAND,		PRE_ACTION"shakehand",	"握手",			""},
	{GICON_ACTIONRUN,				GICON_ACTIONRUN,				PRE_ACTION"run",			"跑动",			""},
	{GICON_ACTIONRECORD,			GICON_ACTIONRECORD,			PRE_ACTION"record",		"录制",			""},
	{GICON_ACTIONOPENBOX,		GICON_ACTIONOPENBOX,			PRE_ACTION"openbox",		"打开箱子",		""},
	{GICON_ACTIONGOOD,			GICON_ACTIONGOOD,				PRE_ACTION"good",			"称赞",			""},
	{GICON_ACTIONCLOSEBOX,		GICON_ACTIONCLOSEBOX,		PRE_ACTION"closebox",		"关闭箱子",		""},
	{GICON_ACTIONATTACK2,		GICON_ACTIONATTACK2,			PRE_ACTION"attack2",		"攻击",			""},
	{GICON_ACTIONATTACK,			GICON_ACTIONATTACK,			PRE_ACTION"attack",		"攻击",			""},
	{GICON_ACTIONAIM,				GICON_ACTIONAIM,				PRE_ACTION"aim",			"瞄准目标",		""},
	{GICON_ACTIONREPAIR,			GICON_ACTIONREPAIR,			PRE_ACTION"repair",		"修理",			""},

	
	//////////////////////////////////////////////////////////////////////////
	/// 人物组队动作
	{GICON_TEAMMASTER,		GICON_TEAMMASTER,		PRE_TEAM"master",	"指定队长",			""},
	{GICON_TEAMVIEW,			GICON_TEAMVIEW,		PRE_TEAM"view",		"查看队员",			""},
	{GICON_TEAMCHAT,			GICON_TEAMCHAT,		PRE_TEAM"chat",		"队伍聊天",			""},
	{GICON_TEAMKICK,			GICON_TEAMKICK,		PRE_TEAM"kick",		"踢人出队",			""},
	{GICON_TEAMFOLLOW,		GICON_TEAMFOLLOW,		PRE_TEAM"follow",	"跟随队友",			""},
	{GICON_TEAMINVITE,		GICON_TEAMINVITE,		PRE_TEAM"invite",	"邀请入队",			""},
	//////////////////////////////////////////////////////////////////////////
	/// 人物组队动作
	{GICON_MOTIONSWIM,		GICON_MOTIONSWIM,			PRE_MOTION"swim",		"游水",			""},
	{GICON_MOTIONDISAGREE,	GICON_MOTIONDISAGREE,	PRE_MOTION"disagree",	"反对",			""},
	{GICON_MOTIONAGREE,		GICON_MOTIONAGREE,		PRE_MOTION"agree",		"同意",			""},
	{GICON_MOTIONCREADY,		GICON_MOTIONCREADY,		PRE_MOTION"cready",	"预备",			""},
	{GICON_MOTIONPOINT,		GICON_MOTIONPOINT,		PRE_MOTION"point",		"指向",			""},
	{GICON_MOTIONBOW,			GICON_MOTIONBOW,			PRE_MOTION"bow",		"鞠躬",			""},
	{GICON_MOTIONPAIN1,		GICON_MOTIONPAIN1,		PRE_MOTION"pain1",		"痛苦",			""},
	{GICON_MOTIONDANCE,		GICON_MOTIONDANCE,		PRE_MOTION"dance",		"跳舞",			""},
	{GICON_MOTIONPAIN2,		GICON_MOTIONPAIN2,		PRE_MOTION"pain2",		"痛苦",			""},
	{GICON_MOTIONCREADY2,	GICON_MOTIONCREADY2,		PRE_MOTION"cready2",	"预备",			""},
	{GICON_MOTIONWAVE,		GICON_MOTIONWAVE,			PRE_MOTION"wave",		"挥手",			""},
	{GICON_MOTIONKICK1,		GICON_MOTIONCREADY,		PRE_MOTION"kick1",		"踢腿",			""},
	{GICON_MOTIONKICK2,		GICON_MOTIONCREADY2,		PRE_MOTION"kick2",		"踢腿",			""},


	//////////////////////////////////////////////////////////////////////////
	/// 功能图标
	{GICON_OPENBAG,				GICON_OPENBAG,			"openBag",			"人物背包",			"打开背包"},
	{GICON_CHARACTERINFO,		GICON_CHARACTERINFO,	"openCharInfo",	"人物信息",			"打开人物信息"},
	{GICON_MESSAGES,				GICON_MESSAGES,		"openMessage",		"信息交流",			"信息交流"},
	{GICON_MOTIONS,				GICON_MOTIONS,			"openMotions",		"动作面板",			"打开动作面板"},
	{GICON_SKILLS,					GICON_SKILLS,			"openSkills",		"技能面板",			"打开技能面板"},
	{GICON_OPENCHAT,				GICON_MESSAGES,		"openChat",			"聊天面板",			"打开聊天面板"},
	{GICON_QUIT,					GICON_QUIT,				"quit",				"退出系统",			"退出系统"},
	{GICON_PCSELECTOR,			GICON_QUIT,				"pcselector",		"退到人物选择",	"退到人物选择"},
	{GICON_HELP,					GICON_HELP,				"help",				"查看帮助",			"查看帮助"},
	{GICON_ABOUT,					GICON_CHARACTERINFO,	"about",				"关于信息",			""},
	{GICON_SCENEEDITOR,		GICON_SCENEEDITOR,		"sceneEditor",		"场景编辑器",		"场景编辑器"},
	{GICON_ENTERWORLD,			GICON_ENTERWORLD,		"enterWorld",		"进入游戏世界",	"进入游戏世界"},
	{GICON_UIEDITOR,			GICON_MESSAGES,			"UIEditor",			"界面编辑器",		"界面编辑器"},
	{GICON_SETTING,				GICON_SETTING,			"setting",			"系统配置",			"系统配置"},
	///..
	{GICON_SYSTEM,					GICON_SYSTEM,			"systemMenu",		"系统菜单",			"系统菜单"},
	{GICON_MAINMENU,				GICON_SYSTEM,			"mainMenu",			"主菜单",			"主菜单"},


	//////////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////////
	//装备
	{GICON_ARMOR01,			GICON_ARMOR01,				"armor01",		"上衣",			""},
	{GICON_ARMOR02,			GICON_ARMOR02,				"armor02",		"上衣",			""},

	{GICON_GLOVE01,			GICON_GLOVE01,				"glove01",		"手套",			""},
	{GICON_GLOVE02,			GICON_GLOVE02,				"glove02",		"手套",			""},

	{GICON_HELMET01,			GICON_HELMET01,			"helmet01",		"帽子",			""},
	{GICON_HELMET02,			GICON_HELMET02,			"helmet02",		"帽子",			""},

	{GICON_PANTS01,			GICON_PANTS01,				"pants01",		"裤子",			""},
	{GICON_PANTS02,			GICON_PANTS02,				"pants02",		"裤子",			""},

	{GICON_BOOT01,				GICON_BOOT01,				"boot01",		"靴子",			""},
	{GICON_BOOT02,				GICON_BOOT02,				"boot02",		"靴子",			""},

	{GICON_SHIELD01,			GICON_SHIELD01,			"shield01",		"盾牌",			""},
	{GICON_SHIELD02,			GICON_SHIELD02,			"shield02",		"盾牌",			""},

	//////////////////////////////////////////////
	//武器
	{GICON_SWORD01,			GICON_SWORD01,				"sword01",			"剑",			""},
	{GICON_SWORD02,			GICON_SWORD02,				"sword02",			"剑",			""},
	{GICON_SWORD03,			GICON_SWORD03,				"sword03",			"剑",			""},

	{GICON_AXE01,				GICON_AXE01,				"axe01",				"斧",			""},
	{GICON_AXE02,				GICON_AXE02,				"axe02",				"斧",			""},
	{GICON_AXE03,				GICON_AXE03,				"axe03",				"斧",			""},

	{GICON_HAMMER01,			GICON_HAMMER01,			"hammer01",			"锤",			""},
	{GICON_HAMMER02,			GICON_HAMMER02,			"hammer02",			"锤",			""},
	{GICON_HAMMER03,			GICON_HAMMER03,			"hammer03",			"锤",			""},

	{GICON_LONGW01,			GICON_LONGW01,				"longw01",			"长刀",		""},
	{GICON_LONGW02,			GICON_LONGW02,				"longw02",			"长刀",		""},
	{GICON_LONGW03,			GICON_LONGW03,				"longw03",			"长刀",		""},

	//////////////////////////////////////////////////////////////////////////
	//道具
	{GICON_TOOLMONEY,			GICON_TOOLMONEY,			"money",				"金钱",		""},

	//////////////////////////////////////////////////////////////////////////
	//药水图标
	{GICON_DRUGMP,				GICON_DRUGMP,				"drugmp",			"魔法药水",	""},
	{GICON_DRUGHP,				GICON_DRUGHP,				"drughp",			"生命药水",	""},

	//////////////////////////////////////////////////////////////////////////
	//信件图标
	{GICON_LETTERSCRIP,		GICON_LETTERSCRIP,		"letterScrip",		"纸条",	""},
	{GICON_LETTERMUSIC,		GICON_LETTERMUSIC,		"letterMusic",		"信件",	""},


};



//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

GameIconMan::GameIconMan()
{
	//g_pGameIconMan = this;
}

GameIconMan::~GameIconMan()
{
}


IMPLEMENT_CONOBJECT(GameIconMan);


void GameIconMan::Initialize(CSTR pObjName)
{
	AssertWarn(g_pGameIconMan == NULL,"只能建立一个实例 GameIconMan");
	g_pGameIconMan = new GameIconMan();
	g_pGameIconMan->registerObject(pObjName);
	g_pGameIconMan->InitGameIcons();
}


void GameIconMan::Destroy()
{
	if(g_pGameIconMan)
	{	
		g_pGameIconMan->DestroyTextures();
		g_pGameIconMan->deleteObject();
		g_pGameIconMan = NULL;
	}
}


BOOL GameIconMan::InitGameIcons()
{
	//建立图标映射表
	GameIconDictionary::Entry* pEntry,*pNew;
	StringTableEntry	pIDName;

	for(U32 n=0; n < sizeof(gs_gameIcons) / sizeof(GameIconDictionary::Entry); n++)
	{
		pEntry = &gs_gameIcons[n];
		pIDName	= StringTable->insert(pEntry->pIDName);
		//pEntry->pIDName	= StringTable->insert(pEntry->pIDName);
		//pEntry->pDesc		= StringTable->insert(pEntry->pDesc);


		pNew	= m_gIconDict.InsertGameIcon(pIDName);

		pNew->pName	= StringTable->insert(pEntry->pName);
		if(pEntry->pDesc[0] == 0)
			pNew->pDesc	= pEntry->pName;
		else
			pNew->pDesc	= StringTable->insert(pEntry->pDesc);
		pNew->uCmd	= pEntry->uCmd;
		pNew->uIcon	= pEntry->uIcon;

		//m_gIconDict.AddEntry(pEntry);
	}
	return TRUE;
}


BOOL GameIconMan::DestroyTextures()
{
	m_ltMaterials.unload();
	//for(S32 n=0; n < m_arTexureHandles.size(); n++)
	//{
	//	m_arTexureHandles[n] = NULL;
	//}
	//m_arTexureHandles.setSize(0);
	return TRUE;
}


BOOL GameIconMan::CreateTextures()
{
	//读取图标素材
	//S32	nNum			= Con::getIntVariable("$pref::GameIcon::PageNum",1);
	CSTR	pFileName	= Con::getVariable("$pref::GameIcon::FilePath");
	//if(nNum <= 0)
	//	nNum = 1;
	if(pFileName == 0 || pFileName[0] == 0)
		pFileName = StringTable->insert(GICON_FILENAME);

	//m_ltMaterials.load(pFileName);
	LoadMaretialList(pFileName);
	//TextureHandle	handle;
	////m_arTexureHandles.setSize(
	//for(S32 n=0; n < nNum; n++)
	//{
	//	handle = TextureHandle(avar("%s%d",pFileName,n), BitmapTexture,false);
	//	m_arTexureHandles.push_back(handle);
	//}
   
	return TRUE;
}


bool GameIconMan::LoadMaretialList(CSTR pFileName)
{
   char path[1024], *p;
   dStrcpy(path, pFileName);
   if ((p = dStrrchr(path, '/')) != NULL)
      *p = 0;

	Stream *stream = ResourceManager->openStream(pFileName);
   if (stream==NULL)
   {
#ifdef TORQUE_DEBUG
		Con::warnf("Sky material list is missing: %s", pFileName);
#endif
      return false;
   }


	m_ltMaterials.read(*stream);
	ResourceManager->closeStream(stream);

	if(!m_ltMaterials.load(BitmapTexture, path))
		return false;
	return true;
}

BOOL	GameIconMan::GetIconTexture(U32 uIcon, TextureHandle& handle, RectI& rect)
{
	U32 uPage = (uIcon >> GICON_NUM_INPAGESHIFT);
	if(uPage >= m_ltMaterials.size())
		return FALSE;

	if(m_ltMaterials[uPage] != handle)
		handle	= m_ltMaterials[uPage];

	U32 uCount		= (uIcon & GICON_NUM_INPAGEMASK);
	rect.point.x	= ((uCount & GICON_COLNUMMASK)   << GICON_CELLSIZESHIFT);		// uCount % Size * cx
	rect.point.y	= ((uCount >> GICON_COLNUMSHIFT) << GICON_CELLSIZESHIFT );		// uCount / Size * cx
	rect.extent.x	= GICON_CELLSIZE;
	rect.extent.y	= GICON_CELLSIZE;

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
//

ConsoleMethod(GameIconMan,CreateTextures,bool,2,2,"bool object.CreateTextures()")
{
	return object->CreateTextures();
}

ConsoleMethod(GameIconMan,DestroyTextures,bool,2,2,"void object.DestroyTextures()")
{
	return object->DestroyTextures();
}

ConsoleMethod(GameIconMan,ParseIconCallback,bool,3,3,"bool object.ParseIconCallback(sTag)")
{
	return false;
	//CSTR	sTag = argv[2];
	//char* pTag = dStrstr(sTag,PRE_MOTION"");

	////解析表情动作
	//if(pTag == sTag)
	//{
	//	GPlayer* pGPlayer;
	//	if(Sim::findObject(SCRIPT_GPlayer, pGPlayer))
	//	{
	//		StringTableEntry pIconTag = StringTable->insert(sTag + 3);
	//		pGPlayer->PlayMotion(pIconTag);
	//		return true;
	//	}
	//}
	//return false;
}




};//namespace RPG

⌨️ 快捷键说明

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