现在很多手游都会有一个签到界面,每日签到给玩家奖励来保持玩家活跃度,具体是怎么实现呢?就经验来说,个人认为逻辑很简单,就是获取打开游戏的当前日期,然后判断当前时间是今天还是昨天或是明天,判断是否已经领取过奖励,领取过就把领取设为不可点击或者不可见,然后当下一次打开游戏,判断到不是领取过的日子再显示领取或设置领取为可点击,表达的可能不是很清晰,大概就是要获取当前的日期,明天日期,签到次数等。这些内容都是需要做数据存储的,保证每天获取的道具跟签到天数一一对应。看代码看代码——
1.先做数据存储的管理器;
2.在AppDelegate.cpp中获取当天日期;
3.在签到界面中根据签到日期给道具
// RUserData.h
#ifndef __RUserData__
#define __RUserData__
#include <stdio.h>
#include "cocos2d.h"
#define RSet RUserData::setData
#define RGet RUserData::getData
#define RFlush RUserData::flush(true)
#define MC_USER UserDefault::getInstance()
using namespace cocos2d;
class RUserData {
/** 用户数据保存处理 **/
public:
/** 储存数据 **/
static void setData(std::string key,const char* data);
static void setData(std::string key,int data);
static void setData(std::string key,float data);
static void setData(std::string key,bool data);
static std::string getData(std::string key,const char* data);
static int getData(std::string key,int data);
static float getData(std::string key,float data);
static bool getData(std::string key,bool data);
/** 确认储存 **/
static void flush(bool pBool = false);
};
#endif
// RUserData.cpp
#include "RUserData.h"
#include "Utils.h"
/** 写入 **/
void RUserData::setData(std::string key, const char* data)
{
CCLOG("SetString %s %s",key.c_str(), data);
MC_USER->setStringForKey(key.c_str(), data);
}
void RUserData::setData(std::string key, int data)
{
CCLOG("SetInt %s %i",key.c_str(), data);
MC_USER->setIntegerForKey(key.c_str(), data);
}
void RUserData::setData(std::string key, float data)
{
MC_USER->setFloatForKey(key.c_str(), data);
}
void RUserData::setData(std::string key, bool data)
{
MC_USER->setBoolForKey(key.c_str(), data);
}
/** 读取 **/
std::string RUserData::getData(std::string key, const char* data)
{
CCLOG("GetString %s %s",key.c_str(), data);
return MC_USER->getStringForKey(key.c_str(), data);
}
int RUserData::getData(std::string key, int data)
{
return MC_USER->getIntegerForKey(key.c_str(), data);
}
float RUserData::getData(std::string key, float data)
{
return MC_USER->getFloatForKey(key.c_str(), data);
}
bool RUserData::getData(std::string key, bool data)
{
return MC_USER->getBoolForKey(key.c_str(), data);
}
void RUserData::flush(bool pBool)
{
MC_USER->flush();
}
// GameData.h
#ifndef __GameData__
#define __GameData__
#include <stdio.h>
#include "cocos2d.h"
#include "RUserData.h"
USING_NS_CC;
struct Tomorrow{
int year;
int month;
int day;
};
class GameData {
public:
/** getFirstOpenGame
* 是否第一次打开游戏
* 无
*/
static bool getFirstOpenGame();
/** setFirstOpenGame
* 设置第一次打开游戏
* 本地储存名:_have
* true/false
*/
static void setFirstOpenGame(std::string _have, bool ishave);
/** getCurHaveGameDay
* 取得拥有游戏第几天,每七天一个循环【1-7】
*/
static int getCurHaveGameDay();
/** setCurHaveGameDay
* 设置拥有游戏第几天,每七天一个循环【1-7】
*/
static void setCurHaveGameDay(int m_haveGameDay);
/** getTomorrow
* 取得明天的日期年月日
*/
static Tomorrow getTomorrow();
/** setTomorrow
* 设置明天的日期年月日
*/
static void setTomorrow();
/** getCurDate
* 取得当前的日期年月日
*/
static Tomorrow getCurDate();
/** getIsTodayLogin
* 取得今天是否登陆游戏
*/
static bool getIsTodayLogin();
/** setIsTodayLogin
* 设置今天是否登陆游戏
*/
static void setIsTodayLogin(bool m_IsTodayLogin);
/** getIsTodayFirstLogin
* 取得今天是否第一次登陆游戏
*/
static bool getIsTodayFirstLogin();
/** setIsTodayFirstLogin
* 设置今天是否第一次登陆游戏
*/
static void setIsTodayFirstLogin(bool m_IsTodayFirstLogin);
/** getTodayPlayGameDate
* 取得今天第一次玩游戏的时间
*/
static Tomorrow getTodayPlayGameDate();
/** setTodayPlayGameDate
* 设置今天第一次玩游戏的时间
*/
static void setTodayPlayGameDate(Tomorrow m_TodayPlayGameDate);
/** getHaveReceivedNum
* 取得已领取了多少次签到礼物
*/
static int getHaveReceivedNum();
/** setHaveReceivedNum
* 设置已领取了多少次签到礼物
*/
static void setHaveReceivedNum(int m_HaveReceived);
};
#endif
// GameData.cpp
#include "GameData.h"
#include "Utils/PlatformHandler.h"
#include "RMusic.h"
static Tomorrow m_Tomorrow;
static Tomorrow m_curDate;
bool GameData::getFirstOpenGame(){//获取是否第一次运行游戏 直接给false
return RGet("_have",false);
}
//设置是否第一次运行游戏
void GameData::setFirstOpenGame(std::string _have, bool ishave){
RSet(_have.c_str(),ishave);
RFlush;
}
//取得拥有游戏第几天,每七天一个循环【1-7】
int GameData::getCurHaveGameDay(){
return RGet("_haveGameDay",0);
}
//设置拥有游戏第几天,每七天一个循环【1-7】
void GameData::setCurHaveGameDay(int m_haveGameDay){
RSet("_haveGameDay",m_haveGameDay);
RFlush;
}
//取得明天的日期年月日
Tomorrow GameData::getTomorrow(){
int year=RGet("year",0);
int month=RGet("month",0);
int day=RGet("day",0);
m_Tomorrow.year=year;
m_Tomorrow.month=month;
m_Tomorrow.day=day;
return m_Tomorrow;
}
//设置明天的日期年月日
void GameData::setTomorrow(){
struct timeval nowTimeval;
gettimeofday(&nowTimeval, NULL);
struct tm * tmm;
time_t time_sec ;
time_sec = nowTimeval.tv_sec;
tmm = localtime(&time_sec);
int year=1900,month=1,day=0;
if (tmm->tm_mon+1==12&&tmm->tm_mday==31) {
year=tmm->tm_year+1900+1;
month=1;
day=1;
}else{
year=tmm->tm_year+1900;
if (tmm->tm_mon+1==4||tmm->tm_mon+1==6||tmm->tm_mon+1==9||tmm->tm_mon+1==11) {
if (tmm->tm_mday==30) {
month=tmm->tm_mon+1+1;
day=1;
}else{
month=tmm->tm_mon+1;
day=tmm->tm_mday+1;
}
}
else if(tmm->tm_mon+1==2){
if ((tmm->tm_year+1900)%4==0&&(tmm->tm_year+1900)%400==0) {
if (tmm->tm_mday==29) {
month=tmm->tm_mon+1+1;
day=1;
}else{
month=tmm->tm_mon+1;
day=tmm->tm_mday;
}
}else{
if (tmm->tm_mday==28) {
month=tmm->tm_mon+1+1;
day=1;
}else{
month=tmm->tm_mon+1;
day=tmm->tm_mday;
}
}
}else{
if (tmm->tm_mday==31) {
month=tmm->tm_mon+1+1;
day=1;
}else{
month=tmm->tm_mon+1;
day=tmm->tm_mday+1;
}
}
}
log("明天是-------》%d年——————》%d月---------->%d日",year,month,day);
RSet("year",year);
RSet("month",month);
RSet("day",day);
RFlush;
}
//取得当前的日期年月日
Tomorrow GameData::getCurDate(){
struct timeval nowTimeval;
gettimeofday(&nowTimeval, NULL);
struct tm * tmm;
time_t time_sec ;
time_sec = nowTimeval.tv_sec;
tmm = localtime(&time_sec);
m_curDate.year=tmm->tm_year+1900;
m_curDate.month=tmm->tm_mon+1;
m_curDate.day=tmm->tm_mday;
return m_curDate;
}
//取得今天是否登陆游戏
bool GameData::getIsTodayLogin(){
return RGet("_IsTodayLogin",false);
}
//设置今天是否登陆游戏
void GameData::setIsTodayLogin(bool m_IsTodayLogin){
RSet("_IsTodayLogin",m_IsTodayLogin);
RFlush;
}
//取得今天是否第一次登陆游戏
bool GameData::getIsTodayFirstLogin(){
return RGet("_IsTodayFirstLogin",false);
}
//设置今天是否第一次登陆游戏
void GameData::setIsTodayFirstLogin(bool m_IsTodayFirstLogin){
RSet("_IsTodayFirstLogin",m_IsTodayFirstLogin);
RFlush;
}
//取得今天第一次玩游戏的时间
Tomorrow GameData::getTodayPlayGameDate(){
Tomorrow T;
T.year=RGet("_TodayYear",0);
T.month=RGet("_TodayMonth",0);
T.day=RGet("_TodayDay",0);
return T;
}
//设置今天第一次玩游戏的时间
void GameData::setTodayPlayGameDate(Tomorrow m_TodayPlayGameDate){
RSet("_TodayYear",m_TodayPlayGameDate.year);
RSet("_TodayMonth",m_TodayPlayGameDate.month);
RSet("_TodayDay",m_TodayPlayGameDate.day);
RFlush;
}
//设置已领取了多少次签到礼物
void GameData::setHaveReceivedNum(int m_HaveReceived){
RSet("_HaveReceived",m_HaveReceived);
RFlush;
}
//取得已领取了多少次签到礼物
int GameData::getHaveReceivedNum(){
return RGet("_HaveReceived",0);
}
//在AppDelegate中做日期判断
if (GameData::getFirstOpenGame()) {
//设置明天的时间
GameData::setTomorrow();
//设置今天的游戏日期
Tomorrow T;
T.year=GameData::getCurDate().year;
T.month=GameData::getCurDate().month;
T.day=GameData::getCurDate().day;
GameData::setTodayPlayGameDate(T);
GameData::setIsTodayLogin(false);
}
//判断游戏的日期是否和今天的日期吻合
if (GameData::getCurDate().year==GameData::getTodayPlayGameDate().year&&
GameData::getCurDate().month==GameData::getTodayPlayGameDate().month&&
GameData::getCurDate().day==GameData::getTodayPlayGameDate().day&&
GameData::getIsTodayLogin()) {
GameData::setIsTodayFirstLogin(false);
}else{
GameData::setIsTodayFirstLogin(true);
}
//判断今天是否第一次打开游戏
if (GameData::getIsTodayFirstLogin()) {
if ((GameData::getCurDate().year==GameData::getTomorrow().year&&
GameData::getCurDate().month==GameData::getTomorrow().month&&
GameData::getCurDate().day==GameData::getTomorrow().day)||!GameData::getIsTodayLogin()) {
GameData::setTomorrow();
GameData::setIsTodayLogin(true);
// log("我今天登陆了");
// if (GameData::getCurHaveGameDay()>=8) {
// GameData::setCurHaveGameDay(1);
// GameData::setHaveReceivedNum(0);
// }else{
// GameData::setCurHaveGameDay(GameData::getCurHaveGameDay()+1);
// }
log("连续签到第:------->%d",GameData::getCurHaveGameDay());
}else{
// GameData::setTomorrow();
// GameData::setIsTodayLogin(true);
// log("我昨天忘了登陆");
// log("把签到设为第一天");
// GameData::setCurHaveGameDay(1);
// GameData::setHaveReceivedNum(0);
}
GameData::setCurHaveGameDay(GameData::getCurHaveGameDay()+1);
Tomorrow T;
T.year=GameData::getCurDate().year;
T.month=GameData::getCurDate().month;
T.day=GameData::getCurDate().day;
GameData::setTodayPlayGameDate(T);
}
//DailyAttendanceLayer.cpp 中调用,声明方法,下面是回调,点击签到,对应天数给对应的道具
//先在DailyAttendanceLayer.h中声明sign(Ref* ref);方法 然后在签到按钮的点击事件中使用
void DailyAttendanceLayer::sign(Ref* ref)
{
this->runAction(Sequence::create(DelayTime::create(0.3), CallFunc::create([&](){
Utils::click();
GameData::setHaveReceivedNum(GameData::getCurHaveGameDay());
this->getChildByTag(1000)->getChildByTag(1000+GameData::getHaveReceivedNum())->getChildByTag(2000+GameData::getHaveReceivedNum())->setVisible(true);
sign_btn->setEnabled(false);
log("领取第:%d天",GameData::getCurHaveGameDay());
switch (GameData::getCurHaveGameDay()) {
case 1:
GameData::setExtraButtleNum(GameData::getExtraButtleNum()+10);
break;
case 2:
//GameData::setExtraButtleNum(GameData::getExtraButtleNum() + 12);
break;
case 3:
//GameData::setExtraButtleNum(GameData::getExtraButtleNum() + 12);
break;
case 4:
//GameData::setExtraButtleNum(GameData::getExtraButtleNum() + 12);
break;
case 5:
//GameData::setExtraButtleNum(GameData::getExtraButtleNum() + 12);
break;
case 6:
//GameData::setExtraButtleNum(GameData::getExtraButtleNum() + 12);
break;
case 7:
//GameData::setIsBuyJujiHero(true);
break;
default:
break;
}
//点击签到,延时一秒关闭签到界面
this->runAction(Sequence::create(DelayTime::create(1),CallFuncN::create([&](Ref*obj){
ModalLayer::outplay(this);
}), NULL));
}), NULL));
1.先做数据存储的管理器;
2.在AppDelegate.cpp中获取当天日期;
3.在签到界面中根据签到日期给道具
// RUserData.h
#ifndef __RUserData__
#define __RUserData__
#include <stdio.h>
#include "cocos2d.h"
#define RSet RUserData::setData
#define RGet RUserData::getData
#define RFlush RUserData::flush(true)
#define MC_USER UserDefault::getInstance()
using namespace cocos2d;
class RUserData {
/** 用户数据保存处理 **/
public:
/** 储存数据 **/
static void setData(std::string key,const char* data);
static void setData(std::string key,int data);
static void setData(std::string key,float data);
static void setData(std::string key,bool data);
static std::string getData(std::string key,const char* data);
static int getData(std::string key,int data);
static float getData(std::string key,float data);
static bool getData(std::string key,bool data);
/** 确认储存 **/
static void flush(bool pBool = false);
};
#endif
// RUserData.cpp
#include "RUserData.h"
#include "Utils.h"
/** 写入 **/
void RUserData::setData(std::string key, const char* data)
{
CCLOG("SetString %s %s",key.c_str(), data);
MC_USER->setStringForKey(key.c_str(), data);
}
void RUserData::setData(std::string key, int data)
{
CCLOG("SetInt %s %i",key.c_str(), data);
MC_USER->setIntegerForKey(key.c_str(), data);
}
void RUserData::setData(std::string key, float data)
{
MC_USER->setFloatForKey(key.c_str(), data);
}
void RUserData::setData(std::string key, bool data)
{
MC_USER->setBoolForKey(key.c_str(), data);
}
/** 读取 **/
std::string RUserData::getData(std::string key, const char* data)
{
CCLOG("GetString %s %s",key.c_str(), data);
return MC_USER->getStringForKey(key.c_str(), data);
}
int RUserData::getData(std::string key, int data)
{
return MC_USER->getIntegerForKey(key.c_str(), data);
}
float RUserData::getData(std::string key, float data)
{
return MC_USER->getFloatForKey(key.c_str(), data);
}
bool RUserData::getData(std::string key, bool data)
{
return MC_USER->getBoolForKey(key.c_str(), data);
}
void RUserData::flush(bool pBool)
{
MC_USER->flush();
}
// GameData.h
#ifndef __GameData__
#define __GameData__
#include <stdio.h>
#include "cocos2d.h"
#include "RUserData.h"
USING_NS_CC;
struct Tomorrow{
int year;
int month;
int day;
};
class GameData {
public:
/** getFirstOpenGame
* 是否第一次打开游戏
* 无
*/
static bool getFirstOpenGame();
/** setFirstOpenGame
* 设置第一次打开游戏
* 本地储存名:_have
* true/false
*/
static void setFirstOpenGame(std::string _have, bool ishave);
/** getCurHaveGameDay
* 取得拥有游戏第几天,每七天一个循环【1-7】
*/
static int getCurHaveGameDay();
/** setCurHaveGameDay
* 设置拥有游戏第几天,每七天一个循环【1-7】
*/
static void setCurHaveGameDay(int m_haveGameDay);
/** getTomorrow
* 取得明天的日期年月日
*/
static Tomorrow getTomorrow();
/** setTomorrow
* 设置明天的日期年月日
*/
static void setTomorrow();
/** getCurDate
* 取得当前的日期年月日
*/
static Tomorrow getCurDate();
/** getIsTodayLogin
* 取得今天是否登陆游戏
*/
static bool getIsTodayLogin();
/** setIsTodayLogin
* 设置今天是否登陆游戏
*/
static void setIsTodayLogin(bool m_IsTodayLogin);
/** getIsTodayFirstLogin
* 取得今天是否第一次登陆游戏
*/
static bool getIsTodayFirstLogin();
/** setIsTodayFirstLogin
* 设置今天是否第一次登陆游戏
*/
static void setIsTodayFirstLogin(bool m_IsTodayFirstLogin);
/** getTodayPlayGameDate
* 取得今天第一次玩游戏的时间
*/
static Tomorrow getTodayPlayGameDate();
/** setTodayPlayGameDate
* 设置今天第一次玩游戏的时间
*/
static void setTodayPlayGameDate(Tomorrow m_TodayPlayGameDate);
/** getHaveReceivedNum
* 取得已领取了多少次签到礼物
*/
static int getHaveReceivedNum();
/** setHaveReceivedNum
* 设置已领取了多少次签到礼物
*/
static void setHaveReceivedNum(int m_HaveReceived);
};
#endif
// GameData.cpp
#include "GameData.h"
#include "Utils/PlatformHandler.h"
#include "RMusic.h"
static Tomorrow m_Tomorrow;
static Tomorrow m_curDate;
bool GameData::getFirstOpenGame(){//获取是否第一次运行游戏 直接给false
return RGet("_have",false);
}
//设置是否第一次运行游戏
void GameData::setFirstOpenGame(std::string _have, bool ishave){
RSet(_have.c_str(),ishave);
RFlush;
}
//取得拥有游戏第几天,每七天一个循环【1-7】
int GameData::getCurHaveGameDay(){
return RGet("_haveGameDay",0);
}
//设置拥有游戏第几天,每七天一个循环【1-7】
void GameData::setCurHaveGameDay(int m_haveGameDay){
RSet("_haveGameDay",m_haveGameDay);
RFlush;
}
//取得明天的日期年月日
Tomorrow GameData::getTomorrow(){
int year=RGet("year",0);
int month=RGet("month",0);
int day=RGet("day",0);
m_Tomorrow.year=year;
m_Tomorrow.month=month;
m_Tomorrow.day=day;
return m_Tomorrow;
}
//设置明天的日期年月日
void GameData::setTomorrow(){
struct timeval nowTimeval;
gettimeofday(&nowTimeval, NULL);
struct tm * tmm;
time_t time_sec ;
time_sec = nowTimeval.tv_sec;
tmm = localtime(&time_sec);
int year=1900,month=1,day=0;
if (tmm->tm_mon+1==12&&tmm->tm_mday==31) {
year=tmm->tm_year+1900+1;
month=1;
day=1;
}else{
year=tmm->tm_year+1900;
if (tmm->tm_mon+1==4||tmm->tm_mon+1==6||tmm->tm_mon+1==9||tmm->tm_mon+1==11) {
if (tmm->tm_mday==30) {
month=tmm->tm_mon+1+1;
day=1;
}else{
month=tmm->tm_mon+1;
day=tmm->tm_mday+1;
}
}
else if(tmm->tm_mon+1==2){
if ((tmm->tm_year+1900)%4==0&&(tmm->tm_year+1900)%400==0) {
if (tmm->tm_mday==29) {
month=tmm->tm_mon+1+1;
day=1;
}else{
month=tmm->tm_mon+1;
day=tmm->tm_mday;
}
}else{
if (tmm->tm_mday==28) {
month=tmm->tm_mon+1+1;
day=1;
}else{
month=tmm->tm_mon+1;
day=tmm->tm_mday;
}
}
}else{
if (tmm->tm_mday==31) {
month=tmm->tm_mon+1+1;
day=1;
}else{
month=tmm->tm_mon+1;
day=tmm->tm_mday+1;
}
}
}
log("明天是-------》%d年——————》%d月---------->%d日",year,month,day);
RSet("year",year);
RSet("month",month);
RSet("day",day);
RFlush;
}
//取得当前的日期年月日
Tomorrow GameData::getCurDate(){
struct timeval nowTimeval;
gettimeofday(&nowTimeval, NULL);
struct tm * tmm;
time_t time_sec ;
time_sec = nowTimeval.tv_sec;
tmm = localtime(&time_sec);
m_curDate.year=tmm->tm_year+1900;
m_curDate.month=tmm->tm_mon+1;
m_curDate.day=tmm->tm_mday;
return m_curDate;
}
//取得今天是否登陆游戏
bool GameData::getIsTodayLogin(){
return RGet("_IsTodayLogin",false);
}
//设置今天是否登陆游戏
void GameData::setIsTodayLogin(bool m_IsTodayLogin){
RSet("_IsTodayLogin",m_IsTodayLogin);
RFlush;
}
//取得今天是否第一次登陆游戏
bool GameData::getIsTodayFirstLogin(){
return RGet("_IsTodayFirstLogin",false);
}
//设置今天是否第一次登陆游戏
void GameData::setIsTodayFirstLogin(bool m_IsTodayFirstLogin){
RSet("_IsTodayFirstLogin",m_IsTodayFirstLogin);
RFlush;
}
//取得今天第一次玩游戏的时间
Tomorrow GameData::getTodayPlayGameDate(){
Tomorrow T;
T.year=RGet("_TodayYear",0);
T.month=RGet("_TodayMonth",0);
T.day=RGet("_TodayDay",0);
return T;
}
//设置今天第一次玩游戏的时间
void GameData::setTodayPlayGameDate(Tomorrow m_TodayPlayGameDate){
RSet("_TodayYear",m_TodayPlayGameDate.year);
RSet("_TodayMonth",m_TodayPlayGameDate.month);
RSet("_TodayDay",m_TodayPlayGameDate.day);
RFlush;
}
//设置已领取了多少次签到礼物
void GameData::setHaveReceivedNum(int m_HaveReceived){
RSet("_HaveReceived",m_HaveReceived);
RFlush;
}
//取得已领取了多少次签到礼物
int GameData::getHaveReceivedNum(){
return RGet("_HaveReceived",0);
}
//在AppDelegate中做日期判断
if (GameData::getFirstOpenGame()) {
//设置明天的时间
GameData::setTomorrow();
//设置今天的游戏日期
Tomorrow T;
T.year=GameData::getCurDate().year;
T.month=GameData::getCurDate().month;
T.day=GameData::getCurDate().day;
GameData::setTodayPlayGameDate(T);
GameData::setIsTodayLogin(false);
}
//判断游戏的日期是否和今天的日期吻合
if (GameData::getCurDate().year==GameData::getTodayPlayGameDate().year&&
GameData::getCurDate().month==GameData::getTodayPlayGameDate().month&&
GameData::getCurDate().day==GameData::getTodayPlayGameDate().day&&
GameData::getIsTodayLogin()) {
GameData::setIsTodayFirstLogin(false);
}else{
GameData::setIsTodayFirstLogin(true);
}
//判断今天是否第一次打开游戏
if (GameData::getIsTodayFirstLogin()) {
if ((GameData::getCurDate().year==GameData::getTomorrow().year&&
GameData::getCurDate().month==GameData::getTomorrow().month&&
GameData::getCurDate().day==GameData::getTomorrow().day)||!GameData::getIsTodayLogin()) {
GameData::setTomorrow();
GameData::setIsTodayLogin(true);
// log("我今天登陆了");
// if (GameData::getCurHaveGameDay()>=8) {
// GameData::setCurHaveGameDay(1);
// GameData::setHaveReceivedNum(0);
// }else{
// GameData::setCurHaveGameDay(GameData::getCurHaveGameDay()+1);
// }
log("连续签到第:------->%d",GameData::getCurHaveGameDay());
}else{
// GameData::setTomorrow();
// GameData::setIsTodayLogin(true);
// log("我昨天忘了登陆");
// log("把签到设为第一天");
// GameData::setCurHaveGameDay(1);
// GameData::setHaveReceivedNum(0);
}
GameData::setCurHaveGameDay(GameData::getCurHaveGameDay()+1);
Tomorrow T;
T.year=GameData::getCurDate().year;
T.month=GameData::getCurDate().month;
T.day=GameData::getCurDate().day;
GameData::setTodayPlayGameDate(T);
}
//DailyAttendanceLayer.cpp 中调用,声明方法,下面是回调,点击签到,对应天数给对应的道具
//先在DailyAttendanceLayer.h中声明sign(Ref* ref);方法 然后在签到按钮的点击事件中使用
void DailyAttendanceLayer::sign(Ref* ref)
{
this->runAction(Sequence::create(DelayTime::create(0.3), CallFunc::create([&](){
Utils::click();
GameData::setHaveReceivedNum(GameData::getCurHaveGameDay());
this->getChildByTag(1000)->getChildByTag(1000+GameData::getHaveReceivedNum())->getChildByTag(2000+GameData::getHaveReceivedNum())->setVisible(true);
sign_btn->setEnabled(false);
log("领取第:%d天",GameData::getCurHaveGameDay());
switch (GameData::getCurHaveGameDay()) {
case 1:
GameData::setExtraButtleNum(GameData::getExtraButtleNum()+10);
break;
case 2:
//GameData::setExtraButtleNum(GameData::getExtraButtleNum() + 12);
break;
case 3:
//GameData::setExtraButtleNum(GameData::getExtraButtleNum() + 12);
break;
case 4:
//GameData::setExtraButtleNum(GameData::getExtraButtleNum() + 12);
break;
case 5:
//GameData::setExtraButtleNum(GameData::getExtraButtleNum() + 12);
break;
case 6:
//GameData::setExtraButtleNum(GameData::getExtraButtleNum() + 12);
break;
case 7:
//GameData::setIsBuyJujiHero(true);
break;
default:
break;
}
//点击签到,延时一秒关闭签到界面
this->runAction(Sequence::create(DelayTime::create(1),CallFuncN::create([&](Ref*obj){
ModalLayer::outplay(this);
}), NULL));
}), NULL));
}
总结一下,主要是要做当前日期年月日和明天日期年月日的判断处理,其他的都是在这个判断后做的操作。