增加用户名登录

This commit is contained in:
2026-02-24 21:53:24 +08:00
parent f36d6cb9e9
commit 9ae4e8e614
23 changed files with 388 additions and 110 deletions

View File

@@ -30,18 +30,18 @@
#define VERSION_FRAME_SDK INTERFACE_VERSION(6,3) //框架版本;
#define LOGON_SERVER_ADDRESS "121.40.40.53" //登录服务器地址;
#define WEB_SERVER_ADDRESS "http://queyi.ppxq.net" //WEB服务器地址;
#define WEB_SERVER_ADDRESS "http://121.40.40.53:9002/" //WEB服务器地址;
//#define LOGON_SERVER_ADDRESS "47.100.47.128" //登录服务器地址;
//#define WEB_SERVER_ADDRESS "http://queyi.ppxq.net" //WEB服务器地址;
#define PAY_TO_PLAYER_HTTP_ADDRESS "http://queyi.ppxq.net/Lobby/PayToPlayer" //转账给玩家;
#define PAY_LOG_HTTP_ADDRESS "http://queyi.ppxq.net/Lobby/GetPayLog" //充值记录;
#define GET_NICKNAME_HTTP_ADDRESS "http://queyi.ppxq.net/Lobby/GetPlayerNickName" //获取昵称;
#define DUI_HUAN_HTTP_ADDRESS "http://queyi.ppxq.net/duihuan.html" //兑换地址;
#define GONG_HUI_HTTP_ADDRESS "http://queyi.ppxq.net/gonghui.html" //公会地址;
#define HEAD_HTTP_ADDRESS "http://queyi.ppxq.net/b.php?id=%d" //头像地址;
#define SHARE_HTTP_ADDRESS "http://queyi.ppxq.net/qy.html" //分享地址;
#define PAY_TO_PLAYER_HTTP_ADDRESS "http://121.40.40.53/Lobby/PayToPlayer" //转账给玩家;
#define PAY_LOG_HTTP_ADDRESS "http://121.40.40.53/Lobby/GetPayLog" //充值记录;
#define GET_NICKNAME_HTTP_ADDRESS "http://121.40.40.53/Lobby/GetPlayerNickName" //获取昵称;
#define DUI_HUAN_HTTP_ADDRESS "http://121.40.40.53/duihuan.html" //兑换地址;
#define GONG_HUI_HTTP_ADDRESS "http://121.40.40.53/gonghui.html" //公会地址;
#define HEAD_HTTP_ADDRESS "http://121.40.40.53/b.php?id=%d" //头像地址;
#define SHARE_HTTP_ADDRESS "http://121.40.40.53/qy.html" //分享地址;
#define LOGON_SERVER_PORT 10086 //登录服务器端口;
//#define LOGON_SERVER_PORT 10090 //登录服务器端口;

View File

@@ -17,20 +17,20 @@ LoginMission::LoginMission()
}
// 设置回调接口
// 占쏙옙占시쀼듸옙占쌈울옙
void LoginMission::setMissionSink(ILoginMissionSink* pILoginMissionSink)
{
mILoginMissionSink = pILoginMissionSink;
}
// 账号登陆
// 占싯뵀듸옙쩍
void LoginMission::loginAccount(const CMD_GP_LogonAccounts& LoginAccount)
{
memcpy(&mLoginAccount, &LoginAccount, sizeof(mLoginAccount));
mMissionType = MISSION_LOGIN_ACCOUNT;
start();
}
// 游客登录
// 占싸와듸옙쩌
void LoginMission::loginVisitor(const CMD_GP_VisitorLogon& VisitorAccount)
{
memcpy(&mVisitorAccount, &VisitorAccount, sizeof(VisitorAccount));
@@ -39,7 +39,7 @@ void LoginMission::loginVisitor(const CMD_GP_VisitorLogon& VisitorAccount)
start();
}
// I D登陆
// I D占쏙옙쩍
void LoginMission::loginGameID(const CMD_GP_LogonByUserID& LoginGameID)
{
memcpy(&mLoginGameID, &LoginGameID, sizeof(mLoginGameID));
@@ -60,7 +60,7 @@ void LoginMission::updateOnlineInfo()
start();
}
//更新类型
//占쏙옙占쏙옙占쏙옙占쏙옙
bool LoginMission::updateServerInfo(uint16 kind)
{
KIND_ITER it = std::find(mKindList.begin(), mKindList.end(), kind);
@@ -84,38 +84,38 @@ bool LoginMission::updateServerInfo(uint16 kind)
return true;
}
// 登陆
// 占쏙옙쩍
bool LoginMission::sendLoginVisitor(const CMD_GP_VisitorLogon& VisitorAccount)
{
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
strncpy(pGlobalUserData->szPassword,mVisitorAccount.szPassWord,countarray(pGlobalUserData->szPassword));
//发送数据
//占쏙옙占쏙옙占쏙옙占쏙옙
send(MDM_GP_LOGON, SUB_GP_LOGON_VISITOR, (void*)&mVisitorAccount, sizeof(mVisitorAccount));
return true;
}
//发送登陆信息
//占쏙옙占싶듸옙쩍占쏙옙口
bool LoginMission::sendLoginAccount(const CMD_GP_LogonAccounts& LoginAccount)
{
cocos2d::log(("LoginMission::sendLoginAccount\n"));
//保存密码
//占쏙옙占쏙옙占쏙옙占쏙옙
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
strncpy(pGlobalUserData->szPassword,LoginAccount.szPassword, countarray(pGlobalUserData->szPassword));
//发送数据
//占쏙옙占쏙옙占쏙옙占쏙옙
send(MDM_GP_LOGON, SUB_GP_LOGON_ACCOUNTS, (void*)&LoginAccount, sizeof(LoginAccount));
return true;
}
//发送登陆信息
//占쏙옙占싶듸옙쩍占쏙옙口
bool LoginMission::sendLoginGameID(const CMD_GP_LogonByUserID& LoginGameID)
{
return true;
}
//发送注册信息
//占쏙옙占쏙옙鬧占쏙옙占쏙옙口
bool LoginMission::sendRegisterPacket(const CMD_GP_RegisterAccounts& RegisterAccount)
{
cocos2d::log(("LoginMission::sendRegisterPacket\n"));
@@ -124,20 +124,20 @@ bool LoginMission::sendRegisterPacket(const CMD_GP_RegisterAccounts& RegisterAcc
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
strncpy(pGlobalUserData->szPassword,RegisterAccount.szLogonPass, countarray(pGlobalUserData->szPassword));
//发送数据
//占쏙옙占쏙옙占쏙옙占쏙옙
send(MDM_GP_LOGON, SUB_GP_REGISTER_ACCOUNTS, (void*)&RegisterAccount, sizeof(RegisterAccount));
return true;
}
// 更新人数
// 占쏙옙占쏙옙占쏙옙占쏙옙
bool LoginMission::sendUpdateOnlineInfoPacket()
{
return true;
}
// 更新类型房间列表
// 占쏙옙占쏙옙占쏙옙占싶뤄옙占쏙옙占싻깍옙
void LoginMission::sendUpdateServerInfo()
{
}
@@ -148,26 +148,26 @@ void LoginMission::onEventTCPSocketLink()
switch (mMissionType)
{
// 登陆
// 占쏙옙쩍
case MISSION_LOGIN_ACCOUNT:
sendLoginAccount(mLoginAccount);
break;
case MISSION_LOGIN_VISITOR:
sendLoginVisitor(mVisitorAccount);
break;
// 登陆
// 占쏙옙쩍
case MISSION_LOGIN_GAMEID:
sendLoginGameID(mLoginGameID);
break;
// 注册
// 鬧占쏙옙
case MISSION_REGISTER:
sendRegisterPacket(mRegisterAccount);
break;
// 更新人数
// 占쏙옙占쏙옙占쏙옙占쏙옙
case MISSION_UPDATE_INFO:
sendUpdateOnlineInfoPacket();
break;
// 更新类型房间列表
// 占쏙옙占쏙옙占쏙옙占싶뤄옙占쏙옙占싻깍옙
case MISSION_SERVER_INFO:
sendUpdateServerInfo();
break;
@@ -202,20 +202,20 @@ bool LoginMission::onEventTCPSocketRead(int main, int sub, void* data, int size)
}
//////////////////////////////////////////////////////////////////////////
// 登陆信息
// 占쏙옙쩍占쏙옙口
bool LoginMission::onSocketMainLogon(int sub, void* data, int size)
{
switch (sub)
{
//登录成功
//占쏙옙쩌占심뱄옙
case SUB_GP_LOGON_SUCCESS: return onSocketSubLogonSuccess(data, size);
//登录失败
//占쏙옙쩌呵占쏙옙
case SUB_GP_LOGON_FAILURE: return onSocketSubLogonFailure(data, size);
//登录失败
//占쏙옙쩌呵占쏙옙
case SUB_GP_VALIDATE_MBCARD: return onSocketSubLogonValidateMBCard(data, size);
//升级提示
//占쏙옙占쏙옙占쏙옙刻
case SUB_GP_UPDATE_NOTIFY: return onSocketSubUpdateNotify(data, size);
//登录完成
//占쏙옙쩌占쏙옙占?
case SUB_GP_LOGON_FINISH: return onSocketSubLogonFinish(data, size);
case SUB_GP_GROWLEVEL_CONFIG: return true;
case SUB_GP_MATCH_SIGNUPINFO: return onSocketSubMacthSignupInfo(data, size);
@@ -225,14 +225,14 @@ bool LoginMission::onSocketMainLogon(int sub, void* data, int size)
return false;
}
//登录成功
//占쏙옙쩌占심뱄옙
bool LoginMission::onSocketSubLogonSuccess(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketSubLogonSuccess\n"));
//登陆成功
//占쏙옙쩍占심뱄옙
CMD_GP_LogonSuccess* pData = (CMD_GP_LogonSuccess*)data;
//变量定义
//占쏙옙占쏙옙占쏙옙占쏙옙
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
@@ -240,7 +240,7 @@ bool LoginMission::onSocketSubLogonSuccess(void* data, int size)
pGlobalUserData->lUserInsure = pData->lUserInsure;
pGlobalUserData->lGrade = pData->lGrade;
//保存信息
//占쏙옙占쏙옙占쏙옙口
pGlobalUserData->wFaceID = pData->wFaceID;
pGlobalUserData->cbGender = pData->cbGender;
pGlobalUserData->dwUserID =pData->dwUserID;
@@ -249,13 +249,13 @@ bool LoginMission::onSocketSubLogonSuccess(void* data, int size)
pGlobalUserData->dwExperience =pData->dwExperience;
pGlobalUserData->cbInsureEnabled = pData->cbInsureEnabled;
pGlobalUserData->cbWXShareTimes = pData->cbWXShareTimes;
//strncpy(pGlobalUserData->szNickName, (char*)pData->szNickName, countarray(pGlobalUserData->szNickName)-1);
strncpy(pGlobalUserData->szNickName, (char*)pData->szNickName, countarray(pGlobalUserData->szNickName)-1);
strncpy(pGlobalUserData->szAccounts, ((char*)pData->szAccounts), countarray(pGlobalUserData->szAccounts)-1);
// 抽奖信息;
// 占썽쉽占쏙옙口;
pGlobalUserData->isLottery = pData->isLottery;
//金币信息
//占쏙옙占쏙옙占싹?
pGlobalUserInfo->upPlayerInfo();
if (mILoginMissionSink)
@@ -264,36 +264,36 @@ bool LoginMission::onSocketSubLogonSuccess(void* data, int size)
return true;
}
//登录失败
//占쏙옙쩌呵占쏙옙
bool LoginMission::onSocketSubLogonFailure(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketSubLogonFailure\n"));
DBR_GP_LogonError* pNetInfo =(DBR_GP_LogonError*)data;
//显示消息
//占쏙옙刻占쏙옙口
if (mILoginMissionSink)
mILoginMissionSink->onGPLoginFailure(pNetInfo->lErrorCode,utility::a_u8(pNetInfo->szErrorDescribe).c_str());
return true;
}
//升级提示
//占쏙옙占쏙옙占쏙옙刻
bool LoginMission::onSocketSubUpdateNotify(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketSubUpdateNotify\n"));
//效验参数
//槻占쏙옙占쏙옙占?
return true;
}
//登录失败(密保卡)
//占쏙옙쩌呵占쏙옙(占쌤깍옙占쏙옙)
bool LoginMission::onSocketSubLogonValidateMBCard(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketSubLogonValidateMBCard\n"));
return true;
}
//登录完成
//占쏙옙쩌占쏙옙占?
bool LoginMission::onSocketSubLogonFinish(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketSubLogonFinish\n"));
@@ -311,21 +311,21 @@ bool LoginMission::onSocketSubLogonFinish(void* data, int size)
}
bool LoginMission::onSocketSubMacthSignupInfo(void* data, int size)
{
//校验数据
//叫占쏙옙占쏙옙占쏙옙
if(size%sizeof(uint16)!=0) return false;
//提取数据
//占쏙옙혤占쏙옙占쏙옙
tagSignupMatchInfo * pSignupMatchInfo = (tagSignupMatchInfo *)data;
uint16 wSignupCount = size/sizeof(pSignupMatchInfo);
//获取对象
//占쏙옙혤占쏙옙占쏙옙
ASSERT(CServerListData::shared()!=NULL);
CServerListData * pServerListData=CServerListData::shared();
//查找房间
//占쏙옙占쌀뤄옙占쏙옙
CGameServerItem * pGameServerItem = NULL;
//设置报名
//占쏙옙占시깍옙占쏙옙
for(uint16 i=0;i<wSignupCount;i++)
{
pGameServerItem = pServerListData->SearchGameServer(pSignupMatchInfo[i].wServerID);
@@ -339,7 +339,7 @@ bool LoginMission::onSocketSubMacthSignupInfo(void* data, int size)
}
//////////////////////////////////////////////////////////////////////////
// 列表信息
// 占싻깍옙占쏙옙口
bool LoginMission::onSocketMainServerList(int sub, void* data, int size)
{
switch (sub)
@@ -357,7 +357,7 @@ bool LoginMission::onSocketMainServerList(int sub, void* data, int size)
return false;
}
//种类信息
//占쏙옙占쏙옙占쏙옙口
bool LoginMission::onSocketListType(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketListType\n"));
@@ -365,11 +365,11 @@ bool LoginMission::onSocketListType(void* data, int size)
return true;
}
//类型信息
//占쏙옙占쏙옙占쏙옙口
bool LoginMission::onSocketListKind(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketListKind\n"));
////更新数据
////占쏙옙占쏙옙占쏙옙占쏙옙
int itemSize = sizeof(tagGameKind);
ASSERT(size%itemSize==0);
@@ -386,11 +386,11 @@ bool LoginMission::onSocketListKind(void* data, int size)
return true;
}
// 房间列表
// 占쏙옙占쏙옙占싻깍옙
bool LoginMission::onSocketListServer(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketListServer\n"));
////更新数据
////占쏙옙占쏙옙占쏙옙占쏙옙
int itemSize = sizeof(tagGameServer);
ASSERT(size%itemSize==0);
@@ -406,7 +406,7 @@ bool LoginMission::onSocketListServer(void* data, int size)
}
return true;
}
//比赛列表
//占쏙옙占쏙옙占싻깍옙
bool LoginMission::onSocketListMatch(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketListMatch\n"));
@@ -415,15 +415,15 @@ bool LoginMission::onSocketListMatch(void* data, int size)
ASSERT(size%itemSize==0);
if (size%itemSize!=0) return false;
//变量定义
//占쏙옙占쏙옙占쏙옙占쏙옙
uint16 wItemCount=size/sizeof(tagGameMatch);
tagGameMatch * pGameMatch=(tagGameMatch *)(data);
//获取对象
//占쏙옙혤占쏙옙占쏙옙
CGameServerItem * pGameServerItem=NULL;
CServerListData * pServerListData=CServerListData::shared();
//更新数据
//占쏙옙占쏙옙占쏙옙占쏙옙
for (uint16 i=0;i<wItemCount;i++)
{
pGameServerItem = pServerListData->SearchGameServer(pGameMatch->wServerID);
@@ -437,7 +437,7 @@ bool LoginMission::onSocketListMatch(void* data, int size)
}
// 列表完成
// 占싻깍옙占쏙옙占?
bool LoginMission::onSocketListFinish(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketListFinish\n"));
@@ -449,7 +449,7 @@ bool LoginMission::onSocketListFinish(void* data, int size)
}
return true;
}
//列表配置
//占싻깍옙占쏙옙占쏙옙
bool LoginMission::onSocketListConfig(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketListConfig\n"));
@@ -460,31 +460,31 @@ bool LoginMission::onSocketListConfig(void* data, int size)
//////////////////////////////////////////////////////////////////////////
// 在线更新
// 占쏙옙占쌩몌옙占쏙옙
//////////////////////////////////////////////////////////////////////////
//类型在线
//占쏙옙占쏙옙占쏙옙占쏙옙
bool LoginMission::onSocketKindOnline(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketKindOnline\n"));
//变量定义
//占쏙옙占쏙옙占쏙옙占쏙옙
return true;
}
//房间在线
//占쏙옙占쏙옙占쏙옙占쏙옙
bool LoginMission::onSocketServerOnline(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketServerOnline\n"));
//变量定义
//占쏙옙占쏙옙占쏙옙占쏙옙
return true;
}
// 在线更新完成
// 占쏙옙占쌩몌옙占쏙옙占쏙옙占?
bool LoginMission::onSocketOnlineFinish(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketOnlineFinish\n"));
@@ -494,7 +494,7 @@ bool LoginMission::onSocketOnlineFinish(void* data, int size)
//////////////////////////////////////////////////////////////////////////
//视频配置
//占쏙옙틉占쏙옙占쏙옙
bool LoginMission::onSocketVideoOption(void* data, int size)
{
cocos2d::log(("LoginMission::onSocketVideoOption\n"));

View File

@@ -7,8 +7,14 @@
#include "GlobalJosn.h"
#include "YvVoiceManager.hpp"
#include "13S_GameLogic.h"
#include "MD5.h"
LogonScene::LogonScene()
: m_pPanelAccount(nullptr)
, m_pTxtUsername(nullptr)
, m_pTxtPassword(nullptr)
, m_pBtnLogin(nullptr)
, m_pBtnClose(nullptr)
{
m_kLoginMission.setUrl(GlobalJosn::getInstance()->m_strLogonIp.c_str(), GlobalJosn::getInstance()->m_iPort);
@@ -42,6 +48,30 @@ bool LogonScene::init()
CC_ASSERT(btnWeiXinLogon != nullptr);
btnWeiXinLogon->addClickEventListener(CC_CALLBACK_1(LogonScene::onWeiXinLogon, this));
// Account login entry button
auto btnAccountLogin = (Button*)rootPanel->getChildByName("btnAccountLogin");
if (btnAccountLogin)
{
btnAccountLogin->addClickEventListener(CC_CALLBACK_1(LogonScene::onShowAccountPanel, this));
}
// Account login panel
m_pPanelAccount = rootPanel->getChildByName("panelAccount");
if (m_pPanelAccount)
{
m_pPanelAccount->setVisible(false);
auto imgBg = m_pPanelAccount->getChildByName("imgBg");
if (imgBg)
{
m_pTxtUsername = (TextField*)imgBg->getChildByName("txtUsername");
m_pTxtPassword = (TextField*)imgBg->getChildByName("txtPassword");
m_pBtnLogin = (Button*)imgBg->getChildByName("btnLogin");
m_pBtnClose = (Button*)imgBg->getChildByName("btnClose");
if (m_pBtnLogin) m_pBtnLogin->addClickEventListener(CC_CALLBACK_1(LogonScene::onUsernameLogon, this));
if (m_pBtnClose) m_pBtnClose->addClickEventListener(CC_CALLBACK_1(LogonScene::onHideAccountPanel, this));
}
}
//对手机返回键的监听
auto keyListener = EventListenerKeyboard::create();
@@ -139,13 +169,22 @@ void LogonScene::onGPLoginSuccess()
UserDefault::getInstance()->setStringForKey("Password", m_kPssword);
// 更新微信最新信息;
pGlobalUserData->cbGender = m_kWeiXinUserInfo.sex;
strncpy(pGlobalUserData->szNickName, m_kWeiXinUserInfo.nickname.c_str(), LEN_NICKNAME - 1);
strncpy(pGlobalUserData->szHeadHttp, m_kWeiXinUserInfo.headimgurl.c_str(), LEN_HEAD_HTTP - 1);
// Only update WeChat info for WeChat login (not username login)
if (!m_kWeiXinUserInfo.openid.empty())
{
pGlobalUserData->cbGender = m_kWeiXinUserInfo.sex;
strncpy(pGlobalUserData->szNickName, m_kWeiXinUserInfo.nickname.c_str(), LEN_NICKNAME - 1);
strncpy(pGlobalUserData->szHeadHttp, m_kWeiXinUserInfo.headimgurl.c_str(), LEN_HEAD_HTTP - 1);
#if CC_TARGET_PLATFORM != CC_PLATFORM_WIN32
UserInfo::Instance().modifyWeiXinInfo(m_kWeiXinUserInfo.sex, m_kWeiXinUserInfo.nickname, m_kWeiXinUserInfo.headimgurl);
UserInfo::Instance().modifyWeiXinInfo(m_kWeiXinUserInfo.sex, m_kWeiXinUserInfo.nickname, m_kWeiXinUserInfo.headimgurl);
#endif
}
else
{
// Username login: clear head URL to use default avatar
pGlobalUserData->szHeadHttp[0] = '\0';
}
}
}
@@ -159,7 +198,8 @@ void LogonScene::onGPLoginComplete()
void LogonScene::onGPLoginFailure(unsigned int iErrorCode,const char* szDescription)
{
if (iErrorCode == 3 || iErrorCode == 1)
// Only auto-register for WeChat login, show error for username login
if ((iErrorCode == 3 || iErrorCode == 1) && !m_kWeiXinUserInfo.openid.empty())
{
RegisterAccount();
}
@@ -339,4 +379,81 @@ void LogonScene::ResponseResult(rapidjson::Document* pDoc)
}
#endif
}
//==================================================
// Username/Password Login
//==================================================
void LogonScene::onShowAccountPanel(Ref*)
{
YSAudioEngine::Instance().playBtnClickEffect();
if (m_pPanelAccount)
{
m_pPanelAccount->setVisible(true);
if (m_pTxtUsername) m_pTxtUsername->setString("");
if (m_pTxtPassword) m_pTxtPassword->setString("");
}
}
void LogonScene::onHideAccountPanel(Ref*)
{
YSAudioEngine::Instance().playBtnClickEffect();
if (m_pPanelAccount)
{
m_pPanelAccount->setVisible(false);
}
}
void LogonScene::onUsernameLogon(Ref*)
{
YSAudioEngine::Instance().playBtnClickEffect();
std::string strUsername = "";
std::string strPassword = "";
if (m_pTxtUsername) strUsername = m_pTxtUsername->getString();
if (m_pTxtPassword) strPassword = m_pTxtPassword->getString();
// Input validation
if (strUsername.empty())
{
PopScene::Instance().show(utility::a_u8("请输入用户名"));
return;
}
if (strPassword.empty())
{
PopScene::Instance().show(utility::a_u8("请输入密码"));
return;
}
if (strUsername.length() < 4)
{
PopScene::Instance().show(utility::a_u8("用户名至少4个字符"));
return;
}
if (strPassword.length() < 6)
{
PopScene::Instance().show(utility::a_u8("密码至少6个字符"));
return;
}
if (m_pPanelAccount) m_pPanelAccount->setVisible(false);
LoadingScene::Instance().show(this);
// MD5 encrypt password
m_kPssword = md5(strPassword);
// Clear WeChat info (mark as username login)
m_kWeiXinUserInfo = WxUserInfo();
// Build login packet
CMD_GP_LogonAccounts loginAccount;
zeromemory(&loginAccount, sizeof(loginAccount));
loginAccount.dwPlazaVersion = Helps::Instance()->GetPlazaVersion();
loginAccount.cbValidateFlags = MB_VALIDATE_FLAGS | LOW_VER_VALIDATE_FLAGS;
strcpy(loginAccount.szAccounts, strUsername.c_str());
strcpy(loginAccount.szPassword, m_kPssword.c_str());
loginAccount.szOpenId[0] = '\0';
loginAccount.szUnionid[0] = '\0';
cocos2d::log("Username Login: account=%s", loginAccount.szAccounts);
m_kLoginMission.loginAccount(loginAccount);
}

View File

@@ -1,6 +1,8 @@
#pragma once
#include "cocos2d.h"
#include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h"
#include "MD5.h"
#include "MissionWeiXin.h"
#include "LoginMission.h"
@@ -51,10 +53,21 @@ public:
//请求版本信息结果
void ResponseResult(rapidjson::Document* pDoc);
// Username login
void onShowAccountPanel(Ref*);
void onHideAccountPanel(Ref*);
void onUsernameLogon(Ref*);
private:
LoginMission m_kLoginMission;
std::string m_kPssword;
WxUserInfo m_kWeiXinUserInfo;
// Account login UI
Node* m_pPanelAccount;
cocos2d::ui::TextField* m_pTxtUsername;
cocos2d::ui::TextField* m_pTxtPassword;
cocos2d::ui::Button* m_pBtnLogin;
cocos2d::ui::Button* m_pBtnClose;
};