商店功能
一、进入商店:
当条件满足时,游戏状态改为E_GAMESTATE_SHOP,将玩家坐标还原(否则,玩家坐标与商店坐标重合,将一直重复进入商店)。处理逻辑写在地图的碰撞中,关键代码:
//玩家碰到NPC
vector<CNpc*>vecNpcs = npcMgr->getNpcs();
for (int i = 0; i < vecNpcs.size(); i++)
{
if (m_pPlayer->getRow() == vecNpcs[i]->getRow()
&& m_pPlayer->getCol() == vecNpcs[i]->getCol()
&& vecNpcs[i]->getMapID() == m_curMap->nID)
{
//玩家坐标还原
m_pPlayer->playerRestore();
g_GameMgr->setgameState(E_GAME_SHOP);
g_GameMgr->getShop()->setIteams(vecNpcs[i]->getID());
}
}
二、不同商店陈列不同物品:
物品配置表(ItemDt)里面配有NPCID这一属性,物品数据管理员(CItemDtMgr)的getByNPC()函数,返回一个容器,里面存储了符合该NPC下的所有物品信息,shop的初始化物品信息函数(setItems())从地图中获取npcid并传给数据管理员的getByNPCID()这个函数,并