매일 데이터 로직 업데이트

1900 단어

논리 코드

  • 패브릭 정보 CPbDailyUpdate Data
  • struct stDailyUpdateData
    {
      stDailyUpdateData() { clear(); }
      
      void clear(void);
      int32_t encode(char** pOut);
      int32_t decode(char** pIn);
      
      void refresh(void);
      
      int32_t m_iUpdateTime;
      
      int32_t m_iOnLineAwardTime;      //     
      int32_t m_iLoginDays;                   //    
      ...
      
    }
    
  • 커넥터
  •   //    
      void on_crossed_one_day();
      void on_crossed_one_week();
      void on_crossed_one_month();
    
      //           
      int32_t refresh_daily_data();
      int32_t update_daily_data();
    
      //notify message (from db server)
      int32_t process_notify_update_daily_data(CMessageHead& rstMsgHead, char* pszMsgBody, int32_t iBodyLength);
      int32_t send_daily_data_to_client();
    

    3.on_crossed_one_day 판단 하루
      if (!is_today(iUpdateTime))
      {
        this->on_crossed_one_day();
      }
    

    유저 데이터 동기화 여부 확인
    4.refresh_daily_data
    send_affix_mail_to_player refresh()
    5.update_daily_데이터 인터페이스 구현
       int32_t CPlayer::update_daily_data()
       {
         if (!this->is_player_loaded())  /*            */
         {
             return fail;
         }
         this->m_stDailyUpdateData.m_iOnlineAwardTime += (time(NULL) - this->m_iLastUpdateOnlineTime);
         this->m_iLastUpdateOnlineTime = time(NULL);
         
         send_daily_date_to_client();
         
         CRequestUpdateDailyDate stReqBody;
         stReqBody.m_stDailyUpdateData = m_stDailyUpdateData;
         send_request_to_gamedb(&stReqBody, SS_MSG_UPDATE_DAILY_DATA, -1);
         
         return success;
       }
    

    6. 함수 호출 프로세스
    SS_MSG_UPDATE_DAILY_DATA
    ExecuteSqlUpdateDailyData
    SS_MSG_GET_ROLE_INFO
    SendPlayerDataToLogicServer
    SendNotifyDailyData
    SS_MSG_NOTIFY_UPDATE_DAILY_DATA
    process_notify_update_daily_data
    send_daily_data_to_client
    MSG_LOGIC_NOTIFY_UPDATE_DAILY_DATA
    

    좋은 웹페이지 즐겨찾기