#ifndef _Utility2_H_ #define _Utility2_H_ #include "cocos2d.h" #include #include #include "types.h" USING_NS_CC; namespace utility { #define a_u8c(str) utility::a_u8(str).c_str() int utf8_len(std::string utf8); //gbk转utf8 std::string a_u8(std::string gbk); //utf8转gbk std::string u8_a(std::string utf8); //gbk转为UTF16 std::string a2l(const char *inbuf); //utf16转为UTF8 std::string l2u(const char *inbuf); void mlog(const char * format, ...); float fAbs(const float& fValue); template inline T Abs(const T& iValue) { return iValue > 0 ? iValue : -iValue; } Texture2D* getCircleHead(const std::string& strPath); float getRotation(cocos2d::Vec2 kSrcPos, cocos2d::Vec2 kDestPoint); void setImagic(cocos2d::Node* pNode, std::string kImagic, bool bSame, bool bCircle = false); void setButtonImagic(cocos2d::Node* pNode, std::string kFile, int bAutoPress); void setButtonImagic(cocos2d::Node* pNode, std::string kName, std::string kFile, int bAutoPress); void setSpriteScaleBySize(cocos2d::Node* pSprite, cocos2d::Size kSize); void StringReplace(std::string &strBase, std::string strSrc, std::string strDes, bool bReplaceAll = false); template inline std::string toString(T p) { std::ostringstream stream; stream << p; return stream.str(); } template bool haveInVector(const std::vector& pVector, T pValue) { typename std::vector::const_iterator itor = pVector.begin(); for (; itor != pVector.end(); itor++) { if (*itor == pValue) { return true; } } return false; } template inline bool removeInVector(std::vector& a, const T& b) { typename std::vector::iterator itor = a.begin(); for (; itor != a.end(); itor++) { if ((*itor) == b) { a.erase(itor); return true; } } return false; } inline const std::string& toString(const std::string& _value) { return _value; } template inline std::string toString(T1 p1, T2 p2) { std::ostringstream stream; stream << p1 << p2; return stream.str(); } template inline std::string toString(T1 p1, T2 p2, T3 p3) { std::ostringstream stream; stream << p1 << p2 << p3; return stream.str(); } template inline std::string toString(T1 p1, T2 p2, T3 p3, T4 p4) { std::ostringstream stream; stream << p1 << p2 << p3 << p4; return stream.str(); } template inline std::string toString(T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) { std::ostringstream stream; stream << p1 << p2 << p3 << p4 << p5; return stream.str(); } template inline std::string toString(T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) { std::ostringstream stream; stream << p1 << p2 << p3 << p4 << p5 << p6; return stream.str(); } template inline std::string toString(T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7) { std::ostringstream stream; stream << p1 << p2 << p3 << p4 << p5 << p6 << p7; return stream.str(); } template inline std::string toString(T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8) { std::ostringstream stream; stream << p1 << p2 << p3 << p4 << p5 << p6 << p7 << p8; return stream.str(); } template inline std::string toString(T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9) { std::ostringstream stream; stream << p1 << p2 << p3 << p4 << p5 << p6 << p7 << p8 << p9; return stream.str(); } template<> inline std::string toString(bool _value) { return _value ? "true" : "false"; } inline std::string toString(cocos2d::Vec2 p) { return toString(p.x, " ", p.y); } inline std::string toString(cocos2d::Size p) { return toString(p.width, " ", p.height); } template inline void split(std::vector& _ret, const std::string& _source, const std::string& _delims) { if (_source == "") { return; } size_t start = 0; size_t end = _source.find(_delims); while (start != _source.npos) { if (end != _source.npos) _ret.push_back(_source.substr(start, end - start)); else { _ret.push_back(_source.substr(start)); break; } start = end; if (start != _source.npos) { start += _delims.size(); } end = _source.find(_delims, start); } } inline std::vector split(const std::string& _source, const std::string& _delims = "\t\n ") { std::vector result; utility::split(result, _source, _delims); return result; } //超长字符名号处理(参数:昵称、字体文件、字体大小、最大宽度) std::string getShortName(const std::string& strName, const std::string& strFont, float fFontSize, float fOverWidth); std::string getShortName(const std::string& strName, int nFontNum); // 分数转字符串 std::string ScoreToString(SCORE lScore); std::string GetUserLevel(SCORE lGrade); std::string getIdentifyingCode(uint32 dwGameID); } #endif // _Utility_H_