Commit 3876300f authored by fallenstardust's avatar fallenstardust

update gframe

parent e51e41c9
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#define CLIENT_CARD_H #define CLIENT_CARD_H
#include "config.h" #include "config.h"
#include "../ocgcore/card_data.h"
#include <vector> #include <vector>
#include <set> #include <set>
#include <map> #include <map>
...@@ -9,20 +10,7 @@ ...@@ -9,20 +10,7 @@
namespace ygo { namespace ygo {
struct CardData { using CardData = card_data;
unsigned int code;
unsigned int alias;
unsigned long long setcode;
unsigned int type;
unsigned int level;
unsigned int attribute;
unsigned int race;
int attack;
int defense;
unsigned int lscale;
unsigned int rscale;
unsigned int link_marker;
};
struct CardDataC { struct CardDataC {
unsigned int code; unsigned int code;
unsigned int alias; unsigned int alias;
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
#include "config.h" #include "config.h"
#include "../ocgcore/mtrandom.h" #include "../ocgcore/mtrandom.h"
#include "../ocgcore/ocgapi.h"
#include <vector> #include <vector>
#include <set> #include <set>
#include <map> #include <map>
......
...@@ -150,12 +150,25 @@ bool DataManager::Error(spmemvfs_db_t* pDB, sqlite3_stmt* pStmt, int errNo) { ...@@ -150,12 +150,25 @@ bool DataManager::Error(spmemvfs_db_t* pDB, sqlite3_stmt* pStmt, int errNo) {
spmemvfs_env_fini(); spmemvfs_env_fini();
return false; return false;
} }
bool DataManager::GetData(int code, CardData* pData) { bool DataManager::GetData(unsigned int code, CardData* pData) {
auto cdit = _datas.find(code); auto cdit = _datas.find(code);
if(cdit == _datas.end()) if(cdit == _datas.end())
return false; return false;
if(pData) auto data = cdit->second;
*pData = *((CardData*)&cdit->second); if (pData) {
pData->code = data.code;
pData->alias = data.alias;
pData->setcode = data.setcode;
pData->type = data.type;
pData->level = data.level;
pData->attribute = data.attribute;
pData->race = data.race;
pData->attack = data.attack;
pData->defense = data.defense;
pData->lscale = data.lscale;
pData->rscale = data.rscale;
pData->link_marker = data.link_marker;
}
return true; return true;
} }
code_pointer DataManager::GetCodePointer(int code) { code_pointer DataManager::GetCodePointer(int code) {
...@@ -349,9 +362,9 @@ const wchar_t* DataManager::FormatLinkMarker(int link_marker) { ...@@ -349,9 +362,9 @@ const wchar_t* DataManager::FormatLinkMarker(int link_marker) {
BufferIO::CopyWStrRef(L"[\u2198]", p, 4); BufferIO::CopyWStrRef(L"[\u2198]", p, 4);
return lmBuffer; return lmBuffer;
} }
int DataManager::CardReader(int code, void* pData) { uint32 DataManager::CardReader(uint32 code, card_data* pData) {
if(!dataManager.GetData(code, (CardData*)pData)) if (!dataManager.GetData(code, pData))
memset(pData, 0, sizeof(CardData)); pData->clear();
return 0; return 0;
} }
byte* DataManager::ScriptReaderEx(const char* script_name, int* slen) { byte* DataManager::ScriptReaderEx(const char* script_name, int* slen) {
......
...@@ -15,13 +15,13 @@ namespace ygo { ...@@ -15,13 +15,13 @@ namespace ygo {
class DataManager { class DataManager {
public: public:
DataManager(): _datas(8192), _strings(8192) {} DataManager(): _datas(16384), _strings(16384) {}
bool LoadDB(const wchar_t* wfile); bool LoadDB(const wchar_t* wfile);
bool LoadStrings(const char* file); bool LoadStrings(const char* file);
bool LoadStrings(IReadFile* reader); bool LoadStrings(IReadFile* reader);
void ReadStringConfLine(const char* linebuf); void ReadStringConfLine(const char* linebuf);
bool Error(spmemvfs_db_t* pDB, sqlite3_stmt* pStmt = 0, int err = 0); bool Error(spmemvfs_db_t* pDB, sqlite3_stmt* pStmt = 0, int err = 0);
bool GetData(int code, CardData* pData); bool GetData(unsigned int code, CardData* pData);
code_pointer GetCodePointer(int code); code_pointer GetCodePointer(int code);
bool GetString(int code, CardString* pStr); bool GetString(int code, CardString* pStr);
const wchar_t* GetName(int code); const wchar_t* GetName(int code);
...@@ -57,7 +57,7 @@ public: ...@@ -57,7 +57,7 @@ public:
static byte scriptBuffer[0x20000]; static byte scriptBuffer[0x20000];
static const wchar_t* unknown_string; static const wchar_t* unknown_string;
static int CardReader(int, void*); static uint32 CardReader(uint32, card_data*);
static byte* ScriptReaderEx(const char* script_name, int* slen); static byte* ScriptReaderEx(const char* script_name, int* slen);
static byte* ScriptReader(const char* script_name, int* slen); static byte* ScriptReader(const char* script_name, int* slen);
static byte* ScriptReaderZip(const char* script_name, int* slen); static byte* ScriptReaderZip(const char* script_name, int* slen);
......
...@@ -235,8 +235,8 @@ int DuelClient::ClientThread() { ...@@ -235,8 +235,8 @@ int DuelClient::ClientThread() {
connect_state = 0; connect_state = 0;
return 0; return 0;
} }
void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { void DuelClient::HandleSTOCPacketLan(unsigned char* data, unsigned int len) {
char* pdata = data; unsigned char* pdata = data;
unsigned char pktType = BufferIO::ReadUInt8(pdata); unsigned char pktType = BufferIO::ReadUInt8(pdata);
switch(pktType) { switch(pktType) {
case STOC_GAME_MSG: { case STOC_GAME_MSG: {
...@@ -696,7 +696,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -696,7 +696,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
if(mainGame->dInfo.player_type < 7) if(mainGame->dInfo.player_type < 7)
mainGame->btnLeaveGame->setVisible(false); mainGame->btnLeaveGame->setVisible(false);
mainGame->CloseGameButtons(); mainGame->CloseGameButtons();
char* prep = pdata; auto prep = pdata;
Replay new_replay; Replay new_replay;
memcpy(&new_replay.pheader, prep, sizeof(ReplayHeader)); memcpy(&new_replay.pheader, prep, sizeof(ReplayHeader));
time_t starttime; time_t starttime;
...@@ -894,8 +894,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -894,8 +894,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
} }
} }
} }
int DuelClient::ClientAnalyze(char * msg, unsigned int len) { // Analyze STOC_GAME_MSG packet
char* pbuf = msg; int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
unsigned char* pbuf = msg;
wchar_t textBuffer[256]; wchar_t textBuffer[256];
mainGame->dInfo.curMsg = BufferIO::ReadUInt8(pbuf); mainGame->dInfo.curMsg = BufferIO::ReadUInt8(pbuf);
if(mainGame->dInfo.curMsg != MSG_RETRY) { if(mainGame->dInfo.curMsg != MSG_RETRY) {
...@@ -930,7 +931,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -930,7 +931,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
switch(mainGame->dInfo.curMsg) { switch(mainGame->dInfo.curMsg) {
case MSG_RETRY: { case MSG_RETRY: {
if(last_successful_msg_length) { if(last_successful_msg_length) {
char* p = last_successful_msg; auto p = last_successful_msg;
auto last_msg = BufferIO::ReadUInt8(p); auto last_msg = BufferIO::ReadUInt8(p);
int err_desc = 1421; int err_desc = 1421;
switch(last_msg) { switch(last_msg) {
......
...@@ -181,8 +181,9 @@ bool Game::Initialize(ANDROID_APP app, android::InitOptions *options) { ...@@ -181,8 +181,9 @@ bool Game::Initialize(ANDROID_APP app, android::InitOptions *options) {
is_building = false; is_building = false;
menuHandler.prev_operation = 0; menuHandler.prev_operation = 0;
menuHandler.prev_sel = -1; menuHandler.prev_sel = -1;
memset(&dInfo, 0, sizeof(DuelInfo)); for (auto i : chatTiming) {
memset(chatTiming, 0, sizeof(chatTiming)); i = 0;
}
deckManager.LoadLFList(options); deckManager.LoadLFList(options);
driver = device->getVideoDriver(); driver = device->getVideoDriver();
#ifdef _IRR_ANDROID_PLATFORM_ #ifdef _IRR_ANDROID_PLATFORM_
...@@ -1822,8 +1823,7 @@ void Game::SaveConfig() { ...@@ -1822,8 +1823,7 @@ void Game::SaveConfig() {
void Game::ShowCardInfo(int code) { void Game::ShowCardInfo(int code) {
CardData cd; CardData cd;
wchar_t formatBuffer[256]; wchar_t formatBuffer[256];
if(!dataManager.GetData(code, &cd)) dataManager.GetData(code, &cd);
memset(&cd, 0, sizeof(CardData));
imgCard->setImage(imageManager.GetTexture(code)); imgCard->setImage(imageManager.GetTexture(code));
imgCard->setScaleImage(true); imgCard->setScaleImage(true);
if(cd.alias != 0 && (cd.alias - code < CARD_ARTWORK_VERSIONS_OFFSET || code - cd.alias < CARD_ARTWORK_VERSIONS_OFFSET)) if(cd.alias != 0 && (cd.alias - code < CARD_ARTWORK_VERSIONS_OFFSET || code - cd.alias < CARD_ARTWORK_VERSIONS_OFFSET))
......
...@@ -73,39 +73,39 @@ struct Config { ...@@ -73,39 +73,39 @@ struct Config {
}; };
struct DuelInfo { struct DuelInfo {
bool isStarted; bool isStarted{ false };
bool isFinished; bool isFinished{ false };
bool isReplay; bool isReplay{ false };
bool isReplaySkiping; bool isReplaySkiping{ false };
bool isFirst; bool isFirst{ false };
bool isTag; bool isTag{ false };
bool isSingleMode; bool isSingleMode{ false };
bool is_shuffling; bool is_shuffling{ false };
bool tag_player[2]; bool tag_player[2]{ false };
int lp[2]; bool isReplaySwapped{ false };
int start_lp; int lp[2]{ 0 };
int start_lp{ 0 };
int duel_rule{ 0 };
int turn{ 0 };
short curMsg{ 0 };
wchar_t hostname[20]{ 0 };
wchar_t clientname[20]{ 0 };
wchar_t hostname_tag[20]{ 0 };
wchar_t clientname_tag[20]{ 0 };
wchar_t strLP[2][16]{ 0 };
wchar_t* vic_string{ 0 };
unsigned char player_type{ 0 };
unsigned char time_player{ 0 };
unsigned short time_limit{ 0 };
unsigned short time_left[2]{ 0 };
int card_count[2]; int card_count[2];
int total_attack[2]; int total_attack[2];
int duel_rule;
int turn;
short curMsg;
wchar_t hostname[20];
wchar_t clientname[20];
wchar_t hostname_tag[20];
wchar_t clientname_tag[20];
wchar_t strLP[2][16];
wchar_t* vic_string;
unsigned char player_type;
unsigned char time_player;
unsigned short time_limit;
unsigned short time_left[2];
wchar_t str_time_left[2][16]; wchar_t str_time_left[2][16];
video::SColor time_color[2]; video::SColor time_color[2];
wchar_t str_card_count[2][16]; wchar_t str_card_count[2][16];
wchar_t str_total_attack[2][16]; wchar_t str_total_attack[2][16];
video::SColor card_count_color[2]; video::SColor card_count_color[2];
video::SColor total_attack_color[2]; video::SColor total_attack_color[2];
bool isReplaySwapped;
}; };
struct BotInfo { struct BotInfo {
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
#define REPLAY_H #define REPLAY_H
#include "config.h" #include "config.h"
#include "../ocgcore/ocgapi.h"
#include <time.h>
namespace ygo { namespace ygo {
......
...@@ -62,9 +62,9 @@ int ReplayMode::ReplayThread() { ...@@ -62,9 +62,9 @@ int ReplayMode::ReplayThread() {
mainGame->dInfo.isSingleMode = !!(rh.flag & REPLAY_SINGLE_MODE); mainGame->dInfo.isSingleMode = !!(rh.flag & REPLAY_SINGLE_MODE);
mainGame->dInfo.tag_player[0] = false; mainGame->dInfo.tag_player[0] = false;
mainGame->dInfo.tag_player[1] = false; mainGame->dInfo.tag_player[1] = false;
set_script_reader((script_reader)DataManager::ScriptReaderEx); set_script_reader(DataManager::ScriptReaderEx);
set_card_reader((card_reader)DataManager::CardReader); set_card_reader(DataManager::CardReader);
set_message_handler((message_handler)MessageHandler); set_message_handler(ReplayMode::MessageHandler);
if(!StartDuel()) { if(!StartDuel()) {
EndDuel(); EndDuel();
return 0; return 0;
...@@ -929,7 +929,7 @@ void ReplayMode::ReplayReload() { ...@@ -929,7 +929,7 @@ void ReplayMode::ReplayReload() {
ReloadLocation(0, LOCATION_REMOVED, flag, queryBuffer); ReloadLocation(0, LOCATION_REMOVED, flag, queryBuffer);
ReloadLocation(1, LOCATION_REMOVED, flag, queryBuffer); ReloadLocation(1, LOCATION_REMOVED, flag, queryBuffer);
} }
int ReplayMode::MessageHandler(intptr_t fduel, int type) { uint32 ReplayMode::MessageHandler(intptr_t fduel, uint32 type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
char msgbuf[1024]; char msgbuf[1024];
......
...@@ -3,11 +3,7 @@ ...@@ -3,11 +3,7 @@
#include <stdint.h> #include <stdint.h>
#include <vector> #include <vector>
#include "config.h"
#include "data_manager.h"
#include "deck_manager.h"
#include "replay.h" #include "replay.h"
#include "../ocgcore/mtrandom.h"
namespace ygo { namespace ygo {
...@@ -51,7 +47,7 @@ public: ...@@ -51,7 +47,7 @@ public:
static void ReplayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff); static void ReplayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static void ReplayReload(); static void ReplayReload();
static int MessageHandler(intptr_t fduel, int type); static uint32 MessageHandler(intptr_t fduel, uint32 type);
}; };
} }
......
...@@ -428,9 +428,9 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -428,9 +428,9 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
} }
time_limit[0] = host_info.time_limit; time_limit[0] = host_info.time_limit;
time_limit[1] = host_info.time_limit; time_limit[1] = host_info.time_limit;
set_script_reader((script_reader)DataManager::ScriptReaderEx); set_script_reader(DataManager::ScriptReaderEx);
set_card_reader((card_reader)DataManager::CardReader); set_card_reader(DataManager::CardReader);
set_message_handler((message_handler)SingleDuel::MessageHandler); set_message_handler(SingleDuel::MessageHandler);
pduel = create_duel(duel_seed); pduel = create_duel(duel_seed);
set_player_info(pduel, 0, host_info.start_lp, host_info.start_hand, host_info.draw_count); set_player_info(pduel, 0, host_info.start_lp, host_info.start_hand, host_info.draw_count);
set_player_info(pduel, 1, host_info.start_lp, host_info.start_hand, host_info.draw_count); set_player_info(pduel, 1, host_info.start_lp, host_info.start_hand, host_info.draw_count);
...@@ -1577,7 +1577,7 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag) ...@@ -1577,7 +1577,7 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
NetServer::ReSendToPlayer(*pit); NetServer::ReSendToPlayer(*pit);
} }
} }
int SingleDuel::MessageHandler(intptr_t fduel, int type) { uint32 SingleDuel::MessageHandler(intptr_t fduel, uint32 type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
char msgbuf[1024]; char msgbuf[1024];
......
...@@ -38,7 +38,7 @@ public: ...@@ -38,7 +38,7 @@ public:
void RefreshExtra(int player, int flag = 0xe81fff, int use_cache = 1); void RefreshExtra(int player, int flag = 0xe81fff, int use_cache = 1);
void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff); void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static int MessageHandler(intptr_t fduel, int type); static uint32 MessageHandler(intptr_t fduel, uint32 type);
static void SingleTimer(evutil_socket_t fd, short events, void* arg); static void SingleTimer(evutil_socket_t fd, short events, void* arg);
private: private:
......
...@@ -36,9 +36,9 @@ int SingleMode::SinglePlayThread() { ...@@ -36,9 +36,9 @@ int SingleMode::SinglePlayThread() {
std::random_device rd; std::random_device rd;
unsigned int seed = rd(); unsigned int seed = rd();
mt19937 rnd((uint_fast32_t)seed); mt19937 rnd((uint_fast32_t)seed);
set_script_reader((script_reader)DataManager::ScriptReaderEx); set_script_reader(DataManager::ScriptReaderEx);
set_card_reader((card_reader)DataManager::CardReader); set_card_reader(DataManager::CardReader);
set_message_handler((message_handler)MessageHandler); set_message_handler(SingleMode::MessageHandler);
pduel = create_duel(rnd.rand()); pduel = create_duel(rnd.rand());
set_player_info(pduel, 0, start_lp, start_hand, draw_count); set_player_info(pduel, 0, start_lp, start_hand, draw_count);
set_player_info(pduel, 1, start_lp, start_hand, draw_count); set_player_info(pduel, 1, start_lp, start_hand, draw_count);
...@@ -820,7 +820,7 @@ void SingleMode::SinglePlayReload() { ...@@ -820,7 +820,7 @@ void SingleMode::SinglePlayReload() {
ReloadLocation(0, LOCATION_REMOVED, flag, queryBuffer); ReloadLocation(0, LOCATION_REMOVED, flag, queryBuffer);
ReloadLocation(1, LOCATION_REMOVED, flag, queryBuffer); ReloadLocation(1, LOCATION_REMOVED, flag, queryBuffer);
} }
int SingleMode::MessageHandler(intptr_t fduel, int type) { uint32 SingleMode::MessageHandler(intptr_t fduel, uint32 type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
char msgbuf[1024]; char msgbuf[1024];
......
...@@ -30,7 +30,7 @@ public: ...@@ -30,7 +30,7 @@ public:
static void SinglePlayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff); static void SinglePlayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static void SinglePlayReload(); static void SinglePlayReload();
static int MessageHandler(intptr_t fduel, int type); static uint32 MessageHandler(intptr_t fduel, uint32 type);
protected: protected:
static Replay last_replay; static Replay last_replay;
......
...@@ -397,9 +397,9 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -397,9 +397,9 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
} }
time_limit[0] = host_info.time_limit; time_limit[0] = host_info.time_limit;
time_limit[1] = host_info.time_limit; time_limit[1] = host_info.time_limit;
set_script_reader((script_reader)DataManager::ScriptReaderEx); set_script_reader(DataManager::ScriptReaderEx);
set_card_reader((card_reader)DataManager::CardReader); set_card_reader(DataManager::CardReader);
set_message_handler((message_handler)TagDuel::MessageHandler); set_message_handler(TagDuel::MessageHandler);
pduel = create_duel(duel_seed); pduel = create_duel(duel_seed);
set_player_info(pduel, 0, host_info.start_lp, host_info.start_hand, host_info.draw_count); set_player_info(pduel, 0, host_info.start_lp, host_info.start_hand, host_info.draw_count);
set_player_info(pduel, 1, host_info.start_lp, host_info.start_hand, host_info.draw_count); set_player_info(pduel, 1, host_info.start_lp, host_info.start_hand, host_info.draw_count);
...@@ -1690,7 +1690,7 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) { ...@@ -1690,7 +1690,7 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
} }
} }
} }
int TagDuel::MessageHandler(intptr_t fduel, int type) { uint32 TagDuel::MessageHandler(intptr_t fduel, uint32 type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
char msgbuf[1024]; char msgbuf[1024];
......
...@@ -38,7 +38,7 @@ public: ...@@ -38,7 +38,7 @@ public:
void RefreshExtra(int player, int flag = 0xe81fff, int use_cache = 1); void RefreshExtra(int player, int flag = 0xe81fff, int use_cache = 1);
void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff); void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static int MessageHandler(intptr_t fduel, int type); static uint32 MessageHandler(intptr_t fduel, uint32 type);
static void TagTimer(evutil_socket_t fd, short events, void* arg); static void TagTimer(evutil_socket_t fd, short events, void* arg);
private: private:
......
#ifndef CARD_DATA_H_
#define CARD_DATA_H_
struct card_data {
uint32 code{ 0 };
uint32 alias{ 0 };
uint64 setcode{ 0 };
uint32 type{ 0 };
uint32 level{ 0 };
uint32 attribute{ 0 };
uint32 race{ 0 };
int32 attack{ 0 };
int32 defense{ 0 };
uint32 lscale{ 0 };
uint32 rscale{ 0 };
uint32 link_marker{ 0 };
void clear() {
code = 0;
alias = 0;
setcode = 0;
type = 0;
level = 0;
attribute = 0;
race = 0;
attack = 0;
defense = 0;
lscale = 0;
rscale = 0;
link_marker = 0;
}
};
#endif /* CARD_DATA_H_ */
...@@ -17,7 +17,7 @@ YGOGameOptions::YGOGameOptions(void* data): m_pipAddr(NULL), m_puserName(NULL), ...@@ -17,7 +17,7 @@ YGOGameOptions::YGOGameOptions(void* data): m_pipAddr(NULL), m_puserName(NULL),
m_phostInfo(NULL){ m_phostInfo(NULL){
//read ip addr //read ip addr
char log[128]; char log[128];
char * rawdata = (char*)data; unsigned char * rawdata = (unsigned char*)data;
int tmplength = ::BufferIO::ReadInt32(rawdata); int tmplength = ::BufferIO::ReadInt32(rawdata);
if (tmplength != 0) { if (tmplength != 0) {
m_pipAddr = new char[tmplength + 1]; m_pipAddr = new char[tmplength + 1];
......
...@@ -6,37 +6,37 @@ ...@@ -6,37 +6,37 @@
class BufferIO { class BufferIO {
public: public:
inline static int ReadInt32(char*& p) { inline static int ReadInt32(unsigned char*& p) {
int ret; int ret;
memcpy(&ret, (void *)p, sizeof(int)); memcpy(&ret, (void *)p, sizeof(int));
p += 4; p += 4;
return ret; return ret;
} }
inline static short ReadInt16(char*& p) { inline static short ReadInt16(unsigned char*& p) {
short ret; short ret;
memcpy(&ret, (void *)p, sizeof(short)); memcpy(&ret, (void *)p, sizeof(short));
p += 2; p += 2;
return ret; return ret;
} }
inline static char ReadInt8(char*& p) { inline static char ReadInt8(unsigned char*& p) {
char* pRet = (char*)p; char* pRet = (char*)p;
p++; p++;
return *pRet; return *pRet;
} }
inline static unsigned char ReadUInt8(char*& p) { inline static unsigned char ReadUInt8(unsigned char*& p) {
unsigned char ret = *(unsigned char*)p; unsigned char ret = *(unsigned char*)p;
p++; p++;
return ret; return ret;
} }
inline static void WriteInt32(char*& p, int val) { inline static void WriteInt32(unsigned char*& p, int val) {
memcpy((void *)p, &val, sizeof(int)); memcpy((void *)p, &val, sizeof(int));
p += 4; p += 4;
} }
inline static void WriteInt16(char*& p, short val) { inline static void WriteInt16(unsigned char*& p, short val) {
memcpy((void *)p, &val, sizeof(short)); memcpy((void *)p, &val, sizeof(short));
p += 2; p += 2;
} }
inline static void WriteInt8(char*& p, char val) { inline static void WriteInt8(unsigned char*& p, char val) {
memcpy((void *)p, &val, sizeof(char)); memcpy((void *)p, &val, sizeof(char));
p++; p++;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment