Commit 80f742f1 authored by fallenstardust's avatar fallenstardust

update gframe

parent de23152b
......@@ -256,14 +256,18 @@ public:
str[N - 1] = 0;
}
static int GetVal(const wchar_t* pstr) {
unsigned int ret = 0;
while(*pstr >= L'0' && *pstr <= L'9') {
ret = ret * 10 + (*pstr - L'0');
pstr++;
if (*pstr >= L'0' && *pstr <= L'9') {
int ret{};
wchar_t* str_end{};
ret = std::wcstol(pstr, &str_end, 10);
if (*str_end == 0)
return ret;
else
return 0;
}
if (*pstr == 0)
return (int)ret;
else
return 0;
}
};
......
......@@ -87,12 +87,15 @@ inline int swprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) {
#endif // UNICODE
#endif
inline FILE* myfopen(const char* filename, const char* mode) {
inline FILE* myfopen(const wchar_t* filename, const char* mode) {
FILE* fp{};
fp = fopen(filename, mode);
char fname[1024]{};
BufferIO::EncodeUTF8(filename, fname);
fp = fopen(fname, mode);
return fp;
}
#include <irrlicht.h>
using namespace irr;
using namespace core;
......
......@@ -6,7 +6,7 @@
namespace ygo {
const wchar_t* DataManager::unknown_string = L"???";
byte DataManager::scriptBuffer[0x20000];
unsigned char DataManager::scriptBuffer[0x20000];
IFileSystem* DataManager::FileSystem;
DataManager dataManager;
......@@ -387,7 +387,7 @@ uint32 DataManager::CardReader(uint32 code, card_data* pData) {
pData->clear();
return 0;
}
byte* DataManager::ScriptReaderEx(const char* script_name, int* slen) {
unsigned char* DataManager::ScriptReaderEx(const char* script_name, int* slen) {
// default script name: ./script/c%d.lua
char first[256]{};
char second[256]{};
......@@ -409,7 +409,7 @@ byte* DataManager::ScriptReaderEx(const char* script_name, int* slen) {
else
return ScriptReaderZip(second, slen);
}
byte* DataManager::ScriptReader(const char* script_name, int* slen) {
unsigned char* DataManager::ScriptReader(const char* script_name, int* slen) {
FILE *fp = fopen(script_name, "rb");
if(!fp)
return 0;
......@@ -420,7 +420,7 @@ byte* DataManager::ScriptReader(const char* script_name, int* slen) {
*slen = len;
return scriptBuffer;
}
byte* DataManager::ScriptReaderZip(const char* script_name, int* slen) {
unsigned char* DataManager::ScriptReaderZip(const char* script_name, int* slen) {
IReadFile* reader = FileSystem->createAndOpenFile(script_name);
if (!reader)
return nullptr;
......
......@@ -50,12 +50,12 @@ public:
std::unordered_map<unsigned int, std::wstring> _sysStrings;
char errmsg[512]{};
static byte scriptBuffer[0x20000];
static unsigned char scriptBuffer[0x20000];
static const wchar_t* unknown_string;
static uint32 CardReader(uint32, card_data*);
static byte* ScriptReaderEx(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 unsigned char* ScriptReaderEx(const char* script_name, int* slen);
static unsigned char* ScriptReader(const char* script_name, int* slen);
static unsigned char* ScriptReaderZip(const char* script_name, int* slen);
static IFileSystem* FileSystem;
private:
......
......@@ -276,9 +276,7 @@ void DeckManager::GetDeckFile(wchar_t* ret, irr::gui::IGUIComboBox* cbCategory,
}
}
FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) {
char fullname[256]{};
BufferIO::EncodeUTF8(file, fullname);
FILE* fp = myfopen(fullname, mode);
FILE* fp = myfopen(file, mode);
return fp;
}
IReadFile* DeckManager::OpenDeckReader(const wchar_t* file) {
......@@ -342,7 +340,7 @@ bool DeckManager::SaveDeck(Deck& deck, const wchar_t* file) {
return true;
}
bool DeckManager::DeleteDeck(const wchar_t* file) {
#ifdef WIN32
#ifdef _WIN32
BOOL result = DeleteFileW(file);
return !!result;
#else
......
......@@ -22,7 +22,7 @@ void UpdateDeck() {
BufferIO::EncodeUTF8(mainGame->gameConf.lastdeck, linebuf);
android::setLastDeck(mainGame->appMain, linebuf);
unsigned char deckbuf[1024];
unsigned char deckbuf[1024]{};
auto pdeck = deckbuf;
BufferIO::WriteInt32(pdeck, deckManager.current_deck.main.size() + deckManager.current_deck.extra.size());
BufferIO::WriteInt32(pdeck, deckManager.current_deck.side.size());
......@@ -323,9 +323,12 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break;
}
case BUTTON_LOAD_REPLAY: {
if(mainGame->lstReplayList->getSelected() == -1)
auto selected = mainGame->lstReplayList->getSelected();
if(selected == -1)
break;
if(!ReplayMode::cur_replay.OpenReplay(mainGame->lstReplayList->getListItem(mainGame->lstReplayList->getSelected())))
wchar_t replay_path[256]{};
myswprintf(replay_path, L"./replay/%ls", mainGame->lstReplayList->getListItem(selected));
if (!ReplayMode::cur_replay.OpenReplay(replay_path))
break;
mainGame->ClearCardInfo();
mainGame->imgCard->setScaleImage(true);
......@@ -399,14 +402,17 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break;
}
case BUTTON_EXPORT_DECK: {
if(mainGame->lstReplayList->getSelected() == -1)
auto selected = mainGame->lstReplayList->getSelected();
if(selected == -1)
break;
Replay replay;
wchar_t ex_filename[256]{};
wchar_t namebuf[4][20]{};
wchar_t filename[256]{};
myswprintf(ex_filename, L"%ls", mainGame->lstReplayList->getListItem(mainGame->lstReplayList->getSelected()));
if(!replay.OpenReplay(ex_filename))
wchar_t replay_path[256]{};
BufferIO::CopyWideString(mainGame->lstReplayList->getListItem(selected), ex_filename);
myswprintf(replay_path, L"./replay/%ls", ex_filename);
if (!replay.OpenReplay(replay_path))
break;
const ReplayHeader& rh = replay.pheader;
if(rh.flag & REPLAY_SINGLE_MODE)
......@@ -629,9 +635,13 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
int sel = mainGame->lstReplayList->getSelected();
if(sel == -1)
break;
if(!ReplayMode::cur_replay.OpenReplay(mainGame->lstReplayList->getListItem(sel)))
wchar_t replay_path[256]{};
myswprintf(replay_path, L"./replay/%ls", mainGame->lstReplayList->getListItem(sel));
if (!ReplayMode::cur_replay.OpenReplay(replay_path)) {
mainGame->stReplayInfo->setText(L"");
break;
wchar_t infobuf[256];
}
wchar_t infobuf[256]{};
std::wstring repinfo;
time_t curtime;
if(ReplayMode::cur_replay.pheader.flag & REPLAY_UNIFORM)
......@@ -664,9 +674,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
const wchar_t* name = mainGame->lstSinglePlayList->getListItem(sel);
wchar_t fname[256];
myswprintf(fname, L"./single/%ls", name);
char fullname[256]{};
BufferIO::EncodeUTF8(fname, fullname);
FILE* fp = myfopen(fullname, "rb");
FILE* fp = myfopen(fname, "rb");
if(!fp) {
mainGame->stSinglePlayInfo->setText(L"");
break;
......
......@@ -102,9 +102,7 @@ void Replay::SaveReplay(const wchar_t* name) {
return;
wchar_t fname[256];
myswprintf(fname, L"./replay/%ls.yrp", name);
char fullname[256]{};
BufferIO::EncodeUTF8(fname, fullname);
FILE* rfp = myfopen(fullname, "wb");
FILE* rfp = myfopen(fname, "wb");
if(!rfp)
return;
fwrite(&pheader, sizeof pheader, 1, rfp);
......@@ -112,14 +110,11 @@ void Replay::SaveReplay(const wchar_t* name) {
fclose(rfp);
}
bool Replay::OpenReplay(const wchar_t* name) {
char fullname[256]{};
BufferIO::EncodeUTF8(name, fullname);
FILE* rfp = myfopen(fullname, "rb");
FILE* rfp = myfopen(name, "rb");
if(!rfp) {
wchar_t fname[256];
myswprintf(fname, L"./replay/%ls", name);
BufferIO::EncodeUTF8(fname, fullname);
rfp = myfopen(fullname, "rb");
rfp = myfopen(fname, "rb");
}
if(!rfp)
return false;
......@@ -136,7 +131,7 @@ bool Replay::OpenReplay(const wchar_t* name) {
if(pheader.flag & REPLAY_COMPRESSED) {
comp_size = fread(comp_data, 1, MAX_COMP_SIZE, rfp);
fclose(rfp);
if ((int)pheader.datasize < 0 && (int)pheader.datasize > MAX_REPLAY_SIZE)
if (pheader.datasize > MAX_REPLAY_SIZE)
return false;
replay_size = pheader.datasize;
if (LzmaUncompress(replay_data, &replay_size, comp_data, &comp_size, pheader.props, 5) != SZ_OK)
......@@ -156,9 +151,7 @@ bool Replay::OpenReplay(const wchar_t* name) {
bool Replay::CheckReplay(const wchar_t* name) {
wchar_t fname[256];
myswprintf(fname, L"./replay/%ls", name);
char fullname[256]{};
BufferIO::EncodeUTF8(fname, fullname);
FILE* rfp = myfopen(fullname, "rb");
FILE* rfp = myfopen(fname, "rb");
if(!rfp)
return false;
ReplayHeader rheader;
......@@ -184,7 +177,7 @@ bool Replay::RenameReplay(const wchar_t* oldname, const wchar_t* newname) {
wchar_t newfname[256];
myswprintf(oldfname, L"./replay/%ls", oldname);
myswprintf(newfname, L"./replay/%ls", newname);
#ifdef WIN32
#ifdef _WIN32
BOOL result = MoveFileW(oldfname, newfname);
return !!result;
#else
......@@ -208,13 +201,13 @@ bool Replay::ReadNextResponse(unsigned char resp[]) {
return false;
return true;
}
void Replay::ReadName(wchar_t* data) {
bool Replay::ReadName(wchar_t* data) {
uint16_t buffer[20]{};
if (!ReadData(buffer, sizeof buffer)) {
data[0] = 0;
return;
return false;
}
BufferIO::CopyWStr(buffer, data, 20);
return true;
}
bool Replay::ReadData(void* data, int length) {
if(!is_replaying)
......
......@@ -48,7 +48,7 @@ public:
static bool DeleteReplay(const wchar_t* name);
static bool RenameReplay(const wchar_t* oldname, const wchar_t* newname);
bool ReadNextResponse(unsigned char resp[]);
void ReadName(wchar_t* data);
bool ReadName(wchar_t* data);
//void ReadHeader(ReplayHeader& header);
bool ReadData(void* data, int length);
template<typename T>
......
......@@ -886,7 +886,7 @@ inline void ReplayMode::ReloadLocation(int player, int location, int flag, std::
mainGame->dField.UpdateFieldCard(mainGame->LocalPlayer(player), location, queryBuffer.data());
}
void ReplayMode::ReplayRefresh(int flag) {
std::vector<byte> queryBuffer;
std::vector<unsigned char> queryBuffer;
queryBuffer.resize(SIZE_QUERY_BUFFER);
ReloadLocation(0, LOCATION_MZONE, flag, queryBuffer);
ReloadLocation(1, LOCATION_MZONE, flag, queryBuffer);
......
......@@ -1418,7 +1418,7 @@ int SingleDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
return 0;
}
void SingleDuel::GetResponse(DuelPlayer* dp, unsigned char* pdata, unsigned int len) {
byte resb[SIZE_RETURN_VALUE]{};
unsigned char resb[SIZE_RETURN_VALUE]{};
if (len > SIZE_RETURN_VALUE)
len = SIZE_RETURN_VALUE;
std::memcpy(resb, pdata, len);
......
......@@ -55,10 +55,10 @@ int SingleMode::SinglePlayThread() {
mainGame->dInfo.turn = 0;
if(mainGame->chkSinglePlayReturnDeckTop->isChecked())
opt |= DUEL_RETURN_DECK_TOP;
char filename[256];
char filename[256]{};
int slen = 0;
const wchar_t* name = mainGame->lstSinglePlayList->getListItem(mainGame->lstSinglePlayList->getSelected());
wchar_t fname[256];
wchar_t fname[256]{};
myswprintf(fname, L"./single/%ls", name);
slen = BufferIO::EncodeUTF8(fname, filename);
if(!preload_script(pduel, filename))
......@@ -98,11 +98,12 @@ int SingleMode::SinglePlayThread() {
is_continuing = SinglePlayAnalyze(engineBuffer.data(), len);
last_replay.BeginRecord();
last_replay.WriteHeader(rh);
uint16_t buffer[20];
BufferIO::CopyCharArray(mainGame->dInfo.hostname, buffer);
last_replay.WriteData(buffer, 40, false);
BufferIO::CopyCharArray(mainGame->dInfo.clientname, buffer);
last_replay.WriteData(buffer, 40, false);
uint16_t host_name[20]{};
BufferIO::CopyCharArray(mainGame->dInfo.hostname, host_name);
last_replay.WriteData(host_name, sizeof host_name, false);
uint16_t client_name[20]{};
BufferIO::CopyCharArray(mainGame->dInfo.clientname, client_name);
last_replay.WriteData(client_name, sizeof client_name, false);
last_replay.WriteInt32(start_lp, false);
last_replay.WriteInt32(start_hand, false);
last_replay.WriteInt32(draw_count, false);
......@@ -804,7 +805,7 @@ void SingleMode::SinglePlayRefreshSingle(int player, int location, int sequence,
mainGame->dField.UpdateCard(mainGame->LocalPlayer(player), location, sequence, queryBuffer);
}
void SingleMode::SinglePlayReload() {
std::vector<byte> queryBuffer;
std::vector<unsigned char> queryBuffer;
queryBuffer.resize(SIZE_QUERY_BUFFER);
unsigned int flag = 0xffdfff;
ReloadLocation(0, LOCATION_MZONE, flag, queryBuffer);
......
......@@ -1533,7 +1533,7 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
return 0;
}
void TagDuel::GetResponse(DuelPlayer* dp, unsigned char* pdata, unsigned int len) {
byte resb[SIZE_RETURN_VALUE]{};
unsigned char resb[SIZE_RETURN_VALUE]{};
if (len > SIZE_RETURN_VALUE)
len = SIZE_RETURN_VALUE;
std::memcpy(resb, pdata, len);
......
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