Commit d38e50bf authored by fallenstardust's avatar fallenstardust

DataManager::FormatLocation

fix ClientField::SetResponseSelectedCards
parent eed6d0d6
...@@ -181,24 +181,12 @@ bool DataManager::Error(spmemvfs_db_t* pDB, sqlite3_stmt* pStmt, int errNo) { ...@@ -181,24 +181,12 @@ 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(unsigned int code, CardData* pData) { bool DataManager::GetData(unsigned int code, CardData* pData) const {
code_pointer cdit = _datas.find(code); auto cdit = _datas.find(code);
if(cdit == _datas.end()) if(cdit == _datas.end())
return false; return false;
auto& data = cdit->second;
if (pData) { if (pData) {
pData->code = data.code; *pData = cdit->second;
pData->alias = data.alias;
memcpy(pData->setcode, data.setcode, SIZE_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;
} }
...@@ -208,7 +196,7 @@ code_pointer DataManager::GetCodePointer(unsigned int code) const { ...@@ -208,7 +196,7 @@ code_pointer DataManager::GetCodePointer(unsigned int code) const {
string_pointer DataManager::GetStringPointer(unsigned int code) const { string_pointer DataManager::GetStringPointer(unsigned int code) const {
return _strings.find(code); return _strings.find(code);
} }
bool DataManager::GetString(unsigned int code, CardString* pStr) { bool DataManager::GetString(unsigned int code, CardString* pStr) const {
auto csit = _strings.find(code); auto csit = _strings.find(code);
if(csit == _strings.end()) { if(csit == _strings.end()) {
pStr->name = unknown_string; pStr->name = unknown_string;
...@@ -218,7 +206,7 @@ bool DataManager::GetString(unsigned int code, CardString* pStr) { ...@@ -218,7 +206,7 @@ bool DataManager::GetString(unsigned int code, CardString* pStr) {
*pStr = csit->second; *pStr = csit->second;
return true; return true;
} }
const wchar_t* DataManager::GetName(unsigned int code) { const wchar_t* DataManager::GetName(unsigned int code) const {
auto csit = _strings.find(code); auto csit = _strings.find(code);
if(csit == _strings.end()) if(csit == _strings.end())
return unknown_string; return unknown_string;
...@@ -226,7 +214,7 @@ const wchar_t* DataManager::GetName(unsigned int code) { ...@@ -226,7 +214,7 @@ const wchar_t* DataManager::GetName(unsigned int code) {
return csit->second.name.c_str(); return csit->second.name.c_str();
return unknown_string; return unknown_string;
} }
const wchar_t* DataManager::GetText(unsigned int code) { const wchar_t* DataManager::GetText(unsigned int code) const {
auto csit = _strings.find(code); auto csit = _strings.find(code);
if(csit == _strings.end()) if(csit == _strings.end())
return unknown_string; return unknown_string;
...@@ -234,7 +222,7 @@ const wchar_t* DataManager::GetText(unsigned int code) { ...@@ -234,7 +222,7 @@ const wchar_t* DataManager::GetText(unsigned int code) {
return csit->second.text.c_str(); return csit->second.text.c_str();
return unknown_string; return unknown_string;
} }
const wchar_t* DataManager::GetDesc(unsigned int strCode) { const wchar_t* DataManager::GetDesc(unsigned int strCode) const {
if (strCode < (MIN_CARD_ID << 4)) if (strCode < (MIN_CARD_ID << 4))
return GetSysString(strCode); return GetSysString(strCode);
unsigned int code = (strCode >> 4) & 0x0fffffff; unsigned int code = (strCode >> 4) & 0x0fffffff;
...@@ -246,7 +234,7 @@ const wchar_t* DataManager::GetDesc(unsigned int strCode) { ...@@ -246,7 +234,7 @@ const wchar_t* DataManager::GetDesc(unsigned int strCode) {
return csit->second.desc[offset].c_str(); return csit->second.desc[offset].c_str();
return unknown_string; return unknown_string;
} }
const wchar_t* DataManager::GetSysString(int code) { const wchar_t* DataManager::GetSysString(int code) const {
if (code < 0 || code > MAX_STRING_ID) if (code < 0 || code > MAX_STRING_ID)
return unknown_string; return unknown_string;
auto csit = _sysStrings.find(code); auto csit = _sysStrings.find(code);
...@@ -254,25 +242,25 @@ const wchar_t* DataManager::GetSysString(int code) { ...@@ -254,25 +242,25 @@ const wchar_t* DataManager::GetSysString(int code) {
return unknown_string; return unknown_string;
return csit->second.c_str(); return csit->second.c_str();
} }
const wchar_t* DataManager::GetVictoryString(int code) { const wchar_t* DataManager::GetVictoryString(int code) const {
auto csit = _victoryStrings.find(code); auto csit = _victoryStrings.find(code);
if(csit == _victoryStrings.end()) if(csit == _victoryStrings.end())
return unknown_string; return unknown_string;
return csit->second.c_str(); return csit->second.c_str();
} }
const wchar_t* DataManager::GetCounterName(int code) { const wchar_t* DataManager::GetCounterName(int code) const {
auto csit = _counterStrings.find(code); auto csit = _counterStrings.find(code);
if(csit == _counterStrings.end()) if(csit == _counterStrings.end())
return unknown_string; return unknown_string;
return csit->second.c_str(); return csit->second.c_str();
} }
const wchar_t* DataManager::GetSetName(int code) { const wchar_t* DataManager::GetSetName(int code) const {
auto csit = _setnameStrings.find(code); auto csit = _setnameStrings.find(code);
if(csit == _setnameStrings.end()) if(csit == _setnameStrings.end())
return NULL; return nullptr;
return csit->second.c_str(); return csit->second.c_str();
} }
std::vector<unsigned int> DataManager::GetSetCodes(std::wstring setname) { std::vector<unsigned int> DataManager::GetSetCodes(std::wstring setname) const {
std::vector<unsigned int> matchingCodes; std::vector<unsigned int> matchingCodes;
for(auto csit = _setnameStrings.begin(); csit != _setnameStrings.end(); ++csit) { for(auto csit = _setnameStrings.begin(); csit != _setnameStrings.end(); ++csit) {
auto xpos = csit->second.find_first_of(L'|');//setname|another setname or extra info auto xpos = csit->second.find_first_of(L'|');//setname|another setname or extra info
...@@ -299,8 +287,8 @@ const wchar_t* DataManager::GetNumString(int num, bool bracket) { ...@@ -299,8 +287,8 @@ const wchar_t* DataManager::GetNumString(int num, bool bracket) {
*++p = 0; *++p = 0;
return numBuffer; return numBuffer;
} }
const wchar_t* DataManager::FormatLocation(int location, int sequence) { const wchar_t* DataManager::FormatLocation(int location, int sequence) const {
if(location == 0x8) { if(location == LOCATION_SZONE) {
if(sequence < 5) if(sequence < 5)
return GetSysString(1003); return GetSysString(1003);
else if(sequence == 5) else if(sequence == 5)
...@@ -308,12 +296,16 @@ const wchar_t* DataManager::FormatLocation(int location, int sequence) { ...@@ -308,12 +296,16 @@ const wchar_t* DataManager::FormatLocation(int location, int sequence) {
else else
return GetSysString(1009); return GetSysString(1009);
} }
unsigned filter = 1;
int i = 1000; int i = 1000;
for(; filter != 0x100 && filter != location; filter <<= 1) int string_id = 0;
++i; for (unsigned filter = LOCATION_DECK; filter <= LOCATION_PZONE; filter <<= 1, ++i) {
if(filter == location) if (filter == location) {
return GetSysString(i); string_id = i;
break;
}
}
if (string_id)
return GetSysString(string_id);
else else
return unknown_string; return unknown_string;
} }
......
...@@ -23,20 +23,20 @@ public: ...@@ -23,20 +23,20 @@ public:
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(unsigned int code, CardData* pData); bool GetData(unsigned int code, CardData* pData) const;
code_pointer GetCodePointer(unsigned int code) const; code_pointer GetCodePointer(unsigned int code) const;
string_pointer GetStringPointer(unsigned int code) const; string_pointer GetStringPointer(unsigned int code) const;
bool GetString(unsigned int code, CardString* pStr); bool GetString(unsigned int code, CardString* pStr) const;
const wchar_t* GetName(unsigned int code); const wchar_t* GetName(unsigned int code) const;
const wchar_t* GetText(unsigned int code); const wchar_t* GetText(unsigned int code) const;
const wchar_t* GetDesc(unsigned int strCode); const wchar_t* GetDesc(unsigned int strCode) const;
const wchar_t* GetSysString(int code); const wchar_t* GetSysString(int code) const;
const wchar_t* GetVictoryString(int code); const wchar_t* GetVictoryString(int code) const;
const wchar_t* GetCounterName(int code); const wchar_t* GetCounterName(int code) const;
const wchar_t* GetSetName(int code); const wchar_t* GetSetName(int code) const;
std::vector<unsigned int> GetSetCodes(std::wstring setname); std::vector<unsigned int> GetSetCodes(std::wstring setname) const;
const wchar_t* GetNumString(int num, bool bracket = false); const wchar_t* GetNumString(int num, bool bracket = false);
const wchar_t* FormatLocation(int location, int sequence); const wchar_t* FormatLocation(int location, int sequence) const;
const wchar_t* FormatAttribute(int attribute); const wchar_t* FormatAttribute(int attribute);
const wchar_t* FormatRace(int race); const wchar_t* FormatRace(int race);
const wchar_t* FormatType(int type); const wchar_t* FormatType(int type);
......
...@@ -2819,11 +2819,14 @@ void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* e ...@@ -2819,11 +2819,14 @@ void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* e
} }
} }
void ClientField::SetResponseSelectedCards() const { void ClientField::SetResponseSelectedCards() const {
unsigned char respbuf[SIZE_RETURN_VALUE]; unsigned char respbuf[SIZE_RETURN_VALUE]{};
respbuf[0] = selected_cards.size(); int len = (int)selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i) if (len > UINT8_MAX)
len = UINT8_MAX;
respbuf[0] = (unsigned char)len;
for (int i = 0; i < len; ++i)
respbuf[i + 1] = selected_cards[i]->select_seq; respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1); DuelClient::SetResponseB(respbuf, len + 1);
} }
void ClientField::SetResponseSelectedOption() const { void ClientField::SetResponseSelectedOption() const {
if(mainGame->dInfo.curMsg == MSG_SELECT_OPTION) { if(mainGame->dInfo.curMsg == MSG_SELECT_OPTION) {
......
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