227 lines
5.5 KiB
C++
227 lines
5.5 KiB
C++
#include "GlobalUserInfo.h"
|
|
|
|
#include "external/json/document.h"
|
|
#include "JniFun.h"
|
|
#include "Utility.h"
|
|
|
|
CGlobalUserInfo __gGlobalUserInfo; //用户信息
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//静态变量
|
|
CGlobalUserInfo * CGlobalUserInfo::m_pGlobalUserInfo=0; //用户信息
|
|
GlobalUserInfoSink * CGlobalUserInfo::m_pUserInfoSink=0; //用户信息
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//构造函数
|
|
CGlobalUserInfo::CGlobalUserInfo()
|
|
{
|
|
//设置对象
|
|
ASSERT(m_pGlobalUserInfo==0);
|
|
if (m_pGlobalUserInfo==0) m_pGlobalUserInfo=this;
|
|
|
|
//设置变量
|
|
zeromemory(&m_GlobalUserData,sizeof(m_GlobalUserData));
|
|
zeromemory(&m_IndividualUserData,sizeof(m_IndividualUserData));
|
|
|
|
m_IsShowLottery = true;
|
|
|
|
return;
|
|
}
|
|
|
|
//析构函数
|
|
CGlobalUserInfo::~CGlobalUserInfo()
|
|
{
|
|
//释放对象
|
|
ASSERT(m_pGlobalUserInfo==this);
|
|
if (m_pGlobalUserInfo==this) m_pGlobalUserInfo=0;
|
|
|
|
return;
|
|
}
|
|
|
|
//重置资料
|
|
void CGlobalUserInfo::ResetUserInfoData()
|
|
{
|
|
//设置变量
|
|
zeromemory(&m_GlobalUserData,sizeof(m_GlobalUserData));
|
|
zeromemory(&m_IndividualUserData,sizeof(m_IndividualUserData));
|
|
|
|
return;
|
|
}
|
|
void CGlobalUserInfo::setUserScore(SCORE lScore)
|
|
{
|
|
m_pGlobalUserInfo->GetGlobalUserData()->lUserScore = lScore;
|
|
upPlayerInfo();
|
|
}
|
|
void CGlobalUserInfo::setNickName(std::string kName)
|
|
{
|
|
strncpy(m_pGlobalUserInfo->GetGlobalUserData()->szNickName,
|
|
(kName.c_str()), countarray(m_pGlobalUserInfo->GetGlobalUserData()->szNickName));
|
|
upPlayerInfo();
|
|
}
|
|
void CGlobalUserInfo::setAccounts(std::string kAccounts)
|
|
{
|
|
strncpy(m_pGlobalUserInfo->GetGlobalUserData()->szAccounts,
|
|
(kAccounts.c_str()), countarray(m_pGlobalUserInfo->GetGlobalUserData()->szAccounts));
|
|
upPlayerInfo();
|
|
}
|
|
void CGlobalUserInfo::setUserInsure(SCORE lScore)
|
|
{
|
|
m_pGlobalUserInfo->GetGlobalUserData()->lUserInsure = lScore;
|
|
upPlayerInfo();
|
|
}
|
|
uint32 CGlobalUserInfo::getUserID()
|
|
{
|
|
return m_pGlobalUserInfo->GetGlobalUserData()->dwUserID;
|
|
}
|
|
uint32 CGlobalUserInfo::getGameID()
|
|
{
|
|
return m_pGlobalUserInfo->GetGlobalUserData()->dwGameID;
|
|
}
|
|
char* CGlobalUserInfo::getPassword()
|
|
{
|
|
return m_pGlobalUserInfo->GetGlobalUserData()->szPassword;
|
|
}
|
|
uint8 CGlobalUserInfo::getGender()
|
|
{
|
|
return m_pGlobalUserInfo->GetGlobalUserData()->cbGender;
|
|
}
|
|
std::string CGlobalUserInfo::getNickName()
|
|
{
|
|
return m_pGlobalUserInfo->GetGlobalUserData()->szNickName;
|
|
}
|
|
std::string CGlobalUserInfo::getHeadHttp()
|
|
{
|
|
return m_pGlobalUserInfo->GetGlobalUserData()->szHeadHttp;
|
|
}
|
|
std::string CGlobalUserInfo::getUserChannel()
|
|
{
|
|
return m_pGlobalUserInfo->GetGlobalUserData()->szUserChannel;
|
|
}
|
|
std::string CGlobalUserInfo::getAccounts()
|
|
{
|
|
return m_pGlobalUserInfo->GetGlobalUserData()->szAccounts;
|
|
}
|
|
SCORE CGlobalUserInfo::getUserScore()
|
|
{
|
|
return m_pGlobalUserInfo->GetGlobalUserData()->lUserScore;
|
|
}
|
|
SCORE CGlobalUserInfo::getUserInsure()
|
|
{
|
|
return m_pGlobalUserInfo->GetGlobalUserData()->lUserInsure;
|
|
}
|
|
|
|
void CGlobalUserInfo::setSink(GlobalUserInfoSink* pSink)
|
|
{
|
|
m_pUserInfoSink = pSink;
|
|
}
|
|
void CGlobalUserInfo::upPlayerInfo()
|
|
{
|
|
if (m_pUserInfoSink)
|
|
{
|
|
m_pUserInfoSink->upPlayerInfo();
|
|
}
|
|
}
|
|
void CGlobalUserInfo::LoginSucess()
|
|
{
|
|
if (m_pUserInfoSink)
|
|
{
|
|
m_pUserInfoSink->LoginSucess();
|
|
}
|
|
}
|
|
|
|
std::string CGlobalUserInfo::getPhoneNumber()
|
|
{
|
|
return m_IndividualUserData.szMobilePhone;
|
|
}
|
|
|
|
void CGlobalUserInfo::onLocationChanaged(std::string strJson)
|
|
{
|
|
rapidjson::Document doc;
|
|
doc.Parse<0>(strJson.c_str());
|
|
if (doc.GetParseError())
|
|
{
|
|
cocos2d::log("%s", strJson.c_str());
|
|
cocos2d::log("------------------------------");
|
|
return ;
|
|
}
|
|
|
|
if (doc.HasMember("ret") && doc["ret"].IsBool())
|
|
{
|
|
bool bRet = doc["ret"].GetBool();
|
|
if ( bRet )
|
|
{
|
|
m_UserAddr.isInit = true;
|
|
if (doc.HasMember("latitude") && doc["latitude"].IsDouble())
|
|
{
|
|
m_UserAddr.latitude = doc["latitude"].GetDouble();
|
|
}
|
|
if (doc.HasMember("longitude") && doc["longitude"].IsDouble())
|
|
{
|
|
m_UserAddr.longitude = doc["longitude"].GetDouble();
|
|
}
|
|
if (doc.HasMember("accuracy") && doc["accuracy"].IsDouble())
|
|
{
|
|
m_UserAddr.accuracy = doc["accuracy"].GetDouble();
|
|
}
|
|
|
|
if (doc.HasMember("provider") && doc["provider"].IsString())
|
|
{
|
|
m_UserAddr.strProvider = doc["provider"].GetString();
|
|
}
|
|
|
|
if (doc.HasMember("address") && doc["address"].IsString())
|
|
{
|
|
m_UserAddr.strAddress = doc["address"].GetString();
|
|
}
|
|
|
|
std::string strInfo = cocos2d::StringUtils::format("%f, %f, %f, %s, %s", m_UserAddr.latitude, m_UserAddr.longitude,
|
|
m_UserAddr.accuracy, m_UserAddr.strAddress.c_str(), m_UserAddr.strProvider.c_str());
|
|
cocos2d::log("%s", strInfo.c_str());
|
|
|
|
//JniFun::stopLocation();
|
|
}
|
|
}
|
|
}
|
|
|
|
// 获取玩家位置;
|
|
tagUserAddr* CGlobalUserInfo::GetUserAddr()
|
|
{
|
|
|
|
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32
|
|
|
|
m_UserAddr.isInit = true;
|
|
|
|
m_UserAddr.accuracy = 150.0f;
|
|
m_UserAddr.latitude = 39.915129f;
|
|
m_UserAddr.longitude = 116.4039945f;
|
|
m_UserAddr.strAddress = utility::a_u8("北京天安门");
|
|
#endif
|
|
|
|
return &m_UserAddr;
|
|
}
|
|
|
|
// 计算其他玩家与自己的距离;
|
|
double CGlobalUserInfo::GetDistance(double latitude, double longitude)
|
|
{
|
|
double radLat1 = radian(m_UserAddr.latitude);
|
|
double radLat2 = radian(latitude);
|
|
|
|
double a = radLat1 - radLat2;
|
|
double b = radian(m_UserAddr.longitude) - radian(longitude);
|
|
|
|
double dst = 2 * asin((sqrt(pow(sin(a / 2), 2) + cos(radLat1) * cos(radLat2) * pow(sin(b / 2), 2))));
|
|
dst = dst * EARTH_RADIUS;
|
|
dst = round(dst * 10000) / 10000;
|
|
|
|
return dst;
|
|
}
|
|
|
|
// 求弧度;
|
|
double CGlobalUserInfo::radian(double d)
|
|
{
|
|
return d * PI / 180.0f; //角度1? = π / 180
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////////////
|