博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CBiontCache
阅读量:6532 次
发布时间:2019-06-24

本文共 4254 字,大约阅读时间需要 14 分钟。

/************************************************************************//* 预先加载一些生物以备将来使用                                            *//* 专门用来缓存生物用的                                                    *//* 使用时通过生物ID或者名字来查找对象                                    *//************************************************************************/#ifndef __BIONTCACHE_H__#define __BIONTCACHE_H__#include "GameFrameHead.h"class CBiont;class GAMEFRAME_API CBiontCache{public:    ~CBiontCache();    static CBiontCache* getInstance();    static void destroy();    void init();    void addBiont(int nType, CBiont* pBiont);    vector
getBionts(int nType); CBiont* getBiontById(int nId); //获取一种生物 不够数拷贝 //vector
getBiontKind(int nType, int nAmount); unsigned int getBiontKindSize(); void releas(); void setParentLayer(CCNode* pLayer, int zOrder = 1);// //没有添加到引用计数里(需要手动释放),调用这些函数释放 void removeAll(); void removeVecBiont(int nType); void removeBiont(int nId);private: CBiontCache(); static CBiontCache* g_pBiontCache; map
> m_mapVecBion; //生物群字典(以类型为键) CCNode* m_pParentLayer; };#endif //__BIONTCACHE_H__
#include "BiontCache.h"#include "Biont.h"CBiontCache* CBiontCache::g_pBiontCache = NULL;CBiontCache::CBiontCache(){    m_mapVecBion.clear();    m_pParentLayer = NULL;}CBiontCache::~CBiontCache(){}CBiontCache* CBiontCache::getInstance(){    if (!g_pBiontCache)    {        g_pBiontCache = new CBiontCache();        ASSERT(g_pBiontCache);    }    return g_pBiontCache;}void CBiontCache::destroy(){    SAFE_DELETE(g_pBiontCache);}void CBiontCache::init(){}vector
CBiontCache::getBionts( int nType ){ return m_mapVecBion.find(nType)->second;}void CBiontCache::releas(){ this->removeAll();}void CBiontCache::addBiont( int nType, CBiont* pBiont ){ ASSERT(pBiont); //判断存在已有的键 for(map
>::iterator it = m_mapVecBion.begin(); it != m_mapVecBion.end(); it++) { if (it->first == pBiont->getType()) { ((*it).second).push_back(pBiont); return; //跳出 } } //没有就创建新键 vector
vecBiont; vecBiont.push_back(pBiont); m_mapVecBion[nType] = vecBiont; }void CBiontCache::removeAll(){ for (map
>::iterator it = m_mapVecBion.begin(); it != m_mapVecBion.end(); it++) { for (vector
::iterator biontIt = (it->second).begin(); biontIt != (it->second).end(); biontIt++) { (*biontIt)->removeAllChildrenWithCleanup(true); (*biontIt)->removeFromParentAndCleanup(true); SAFE_DELETE(*biontIt); } (it->second).clear(); }}void CBiontCache::removeVecBiont( int nType ) { for (map
>::iterator it = m_mapVecBion.begin(); it != m_mapVecBion.end(); it++) { if (it->first == nType) { for (vector
::iterator vceBiontIt = (it->second).begin(); vceBiontIt != (it->second).end(); vceBiontIt++) { SAFE_DELETE(*vceBiontIt); } (it->second).clear(); break; } }}void CBiontCache::removeBiont( int nId ){ for (map
>::iterator it = m_mapVecBion.begin(); it != m_mapVecBion.end(); it++) { for (vector
::iterator vecBiontIt = (it->second).begin(); vecBiontIt != (it->second).end(); vecBiontIt++) { if ((*vecBiontIt)->getId() == nId) { SAFE_DELETE(*vecBiontIt); break; } } }}unsigned int CBiontCache::getBiontKindSize(){ return m_mapVecBion.size();}void CBiontCache::setParentLayer( CCNode* pLayer, int zOrder /*= 1*/ ){ ASSERT(pLayer); for (map
>::iterator it = m_mapVecBion.begin(); it != m_mapVecBion.end(); it++) { for (vector
::iterator vecBiontIt = (it->second).begin(); vecBiontIt != (it->second).end(); vecBiontIt++) { if (*vecBiontIt) { if ((*vecBiontIt)->getParent()) { m_pParentLayer->removeChild(*vecBiontIt, false); } pLayer->addChild(*vecBiontIt, zOrder); } } } m_pParentLayer = pLayer;}CBiont* CBiontCache::getBiontById( int nId ){ for (map
>::iterator it = m_mapVecBion.begin(); it != m_mapVecBion.end(); it++) { for (vector
::iterator vecBiontIt = (it->second).begin(); vecBiontIt != (it->second).end(); vecBiontIt++) { if ((*vecBiontIt)->getId() == nId) { return *vecBiontIt; } } } CCLog("error: CBiontCache::getBiontById"); return NULL;}

 

转载地址:http://knqbo.baihongyu.com/

你可能感兴趣的文章
IT Operations(IT 运营),运维的更价值化认识
查看>>
C# 使用Trace记录程序日志
查看>>
python基础①
查看>>
vim1
查看>>
使用xbee连接地面站和飞控
查看>>
【物联网智能网关-12】以网关为核心,互联网为基础构建物联网平台
查看>>
18.Azure备份(MARS)代理(下)
查看>>
Puppet利用Nginx多端口实现负载均衡
查看>>
Skype for Business Server 2015-07-边缘服务器-1-安装-先决条件
查看>>
PowerPoint 2010去掉了宏录制器
查看>>
linux服务器集群运维经验
查看>>
【原创】PostgreSQL 实现阶乘方法列举
查看>>
PXE+Kickstart详细版 【第一次编辑】
查看>>
Windows Server 2016-Win Ser 2016新增功能
查看>>
Google Talk Testing(早期版本)
查看>>
关于 来源: volmgr Event ID: 46 故障转储初始化未成功 的问题
查看>>
德国精品软件 cFosSpeed 网络优化软件
查看>>
配置ssh的双机信任
查看>>
我的2017,我的认证之路
查看>>
ora-01207错误处理
查看>>