tsskinman.cc

来自「五行MMORPG引擎系统V1.0」· CC 代码 · 共 120 行

CC
120
字号
//tsSkinMan.cc
/*/////////////////////////////////////////////////////////////////

李亦
liease@163.com 4040719
2006-7-26
/*/////////////////////////////////////////////////////////////////

#include "platform/platform.h"
#include "ts/tsSkinMan.h"
#include "ts/tsShapeInstance.h"




/////////////////////////////////////////////////////////////////
// class TSSkinMan 构造函数 /析构函数
TSSkinMan::TSSkinMan(TSShapeInstance* pShape)
{
	mShapeInstance		= pShape;
	mSkinModMaskBits	= 0;

	for(U32 n=0; n < MaxSkinModifiers; n++)
		mSkinModifiers[n].skinName = StringTable->getBlank();
}
TSSkinMan::~TSSkinMan()
{
}



//--------------------------------------------------------------------------
// Skin modifier

void TSSkinMan::onSkinModifierChanged(U32 slot)
{
	if(!mShapeInstance)
		return;

	if(mSkinModifiers[slot].skinName && mSkinModifiers[slot].skinName[0])
	{	
		mShapeInstance->addSkinModifier(slot,mSkinModifiers[slot].skinName, mSkinModifiers[slot].printName);
	}
	else
		mShapeInstance->removeSkinModifier(slot);
}


bool TSSkinMan::addSkinModifier(U32 slot, StringTableEntry skinName, StringTableEntry printName)
{
	if (slot >= MaxSkinModifiers || !mShapeInstance)
		return false;

	//if ((skinName != mSkinModifiers[slot].skinName) ||	(printName != mSkinModifiers[slot].printName))
	{
		mSkinModifiers[slot].skinName	= skinName;
		mSkinModifiers[slot].printName= printName;

		mSkinModMaskBits |= (1<<slot);

		onSkinModifierChanged(slot);
		//mShapeInstance->updateModifier(slot);
		return true;
	}

	return false;
}


bool TSSkinMan::setSkinModifier(U32 slot, StringTableEntry skinName, StringTableEntry printName)
{
	if (slot >= MaxSkinModifiers || !mShapeInstance)
		return false;


	//if ((skinName != mSkinModifiers[slot].skinName) ||	(printName != mSkinModifiers[slot].printName))
	{
		mSkinModifiers[slot].skinName	= skinName;
		mSkinModifiers[slot].printName= printName;

		mSkinModMaskBits |= (1<<slot);
		onSkinModifierChanged(slot);
		return true;
	}

	return false;
	//mShapeInstance->modifySkins();
}


void TSSkinMan::removeSkinModifier(U32 slot)
{
	if (slot >= MaxSkinModifiers || !mShapeInstance)
		return;

	if(	mSkinModifiers[slot].skinName &&  mSkinModifiers[slot].skinName[0]
		&& mSkinModifiers[slot].printName &&  mSkinModifiers[slot].printName[0])
	{
		mSkinModifiers[slot].skinName	= StringTable->getBlank();
		mSkinModifiers[slot].printName= StringTable->getBlank();

		// set flags
		//setMaskBits(SkinModMask);
		mSkinModMaskBits|=( 1<<slot );
	}

	onSkinModifierChanged(slot);
	//mShapeInstance->updateModifier(slot);

}

void TSSkinMan::clearSkinModifiers()
{
	for (U32 ss=0; ss<MaxSkinModifiers; ss++)
		removeSkinModifier(ss);
}



⌨️ 快捷键说明

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