Commit 2d276f9b authored by edo9300's avatar edo9300

Updated player name handling

parent 98aa5fe5
......@@ -656,8 +656,8 @@ void ClientField::ReplaySwap() {
mainGame->dInfo.isFirst = !mainGame->dInfo.isFirst;
std::swap(mainGame->dInfo.lp[0], mainGame->dInfo.lp[1]);
std::swap(mainGame->dInfo.strLP[0], mainGame->dInfo.strLP[1]);
std::swap(mainGame->dInfo.hostname, mainGame->dInfo.clientname);
std::swap(mainGame->dInfo.hostname_tag, mainGame->dInfo.clientname_tag);
std::swap(mainGame->dInfo.hostname[0], mainGame->dInfo.clientname[0]);
std::swap(mainGame->dInfo.hostname[1], mainGame->dInfo.clientname[1]);
for(auto chit = chains.begin(); chit != chains.end(); ++chit) {
chit->controler = 1 - chit->controler;
GetChainLocation(chit->controler, chit->location, chit->sequence, &chit->chain_pos);
......
......@@ -512,25 +512,10 @@ void Game::DrawMisc() {
recti p1size = mainGame->Resize(335, 31, 629, 50);
recti p2size = mainGame->Resize(986, 31, 986, 50);
if (dInfo.isRelay)
textFont->draw(dInfo.hostname_relay[dInfo.relay_player[0]], p1size, 0xffffffff, false, false, 0);
else if(!dInfo.isTag || !dInfo.tag_player[0])
textFont->draw(dInfo.hostname, p1size, 0xffffffff, false, false, 0);
else
textFont->draw(dInfo.hostname_tag, p1size, 0xffffffff, false, false, 0);
if (dInfo.isRelay) {
auto cld = textFont->getDimension(dInfo.clientname_relay[dInfo.relay_player[1]]);
p2size.UpperLeftCorner.X -= cld.Width;
textFont->draw(dInfo.clientname_relay[dInfo.relay_player[1]], p2size, 0xffffffff, false, false, 0);
} else if(!dInfo.isTag || !dInfo.tag_player[1]) {
auto cld = textFont->getDimension(dInfo.clientname);
p2size.UpperLeftCorner.X -= cld.Width;
textFont->draw(dInfo.clientname, p2size, 0xffffffff, false, false, 0);
} else {
auto cld = textFont->getDimension(dInfo.clientname_tag);
p2size.UpperLeftCorner.X -= cld.Width;
textFont->draw(dInfo.clientname_tag, p2size, 0xffffffff, false, false, 0);
}
textFont->draw(dInfo.hostname[dInfo.current_player[0]], p1size, 0xffffffff, false, false, 0);
auto cld = textFont->getDimension(dInfo.clientname[dInfo.current_player[1]]);
p2size.UpperLeftCorner.X -= cld.Width;
textFont->draw(dInfo.clientname[dInfo.current_player[1]], p2size, 0xffffffff, false, false, 0);
driver->draw2DRectangle(mainGame->Resize(632, 10, 688, 30), 0x00000000, 0x00000000, 0xffffffff, 0xffffffff);
driver->draw2DRectangle(mainGame->Resize(632, 30, 688, 50), 0xffffffff, 0xffffffff, 0x00000000, 0x00000000);
lpcFont->draw(dataManager.GetNumString(dInfo.turn), mainGame->Resize(635, 5, 685, 40), 0x80000000, true, false, 0);
......
This diff is collapsed.
......@@ -1087,8 +1087,10 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
unsigned short msgbuf[256];
if(mainGame->dInfo.isStarted) {
if(mainGame->dInfo.player_type < 7) {
if(mainGame->dInfo.isTag && (mainGame->dInfo.player_type % 2))
mainGame->AddChatMsg((wchar_t*)input, 2);
if (mainGame->dInfo.isRelay)
mainGame->AddChatMsg((wchar_t*)input, (mainGame->dInfo.player_type % 3) * 2);
else if(mainGame->dInfo.isTag)
mainGame->AddChatMsg((wchar_t*)input, (mainGame->dInfo.player_type % 2) * 2);
else
mainGame->AddChatMsg((wchar_t*)input, 0);
} else
......@@ -1847,21 +1849,10 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if(mplayer != hovered_player) {
if(mplayer >= 0) {
const wchar_t* player_name;
if(mplayer == 0) {
if(mainGame->dInfo.isRelay)
player_name = mainGame->dInfo.hostname_relay[mainGame->dInfo.relay_player[0]];
else if(!mainGame->dInfo.isTag || !mainGame->dInfo.tag_player[0])
player_name = mainGame->dInfo.hostname;
else
player_name = mainGame->dInfo.hostname_tag;
} else {
if (mainGame->dInfo.isRelay)
player_name = mainGame->dInfo.clientname_relay[mainGame->dInfo.relay_player[1]];
else if(!mainGame->dInfo.isTag || !mainGame->dInfo.tag_player[1])
player_name = mainGame->dInfo.clientname;
else
player_name = mainGame->dInfo.clientname_tag;
}
if (mplayer == 0)
player_name = mainGame->dInfo.hostname[mainGame->dInfo.current_player[mplayer]];
else
player_name = mainGame->dInfo.clientname[mainGame->dInfo.current_player[mplayer]];
std::wstring str(player_name);
const auto& player_desc_hints = mainGame->dField.player_desc_hints[mplayer];
for(auto iter = player_desc_hints.begin(); iter != player_desc_hints.end(); ++iter) {
......
......@@ -1356,23 +1356,34 @@ void Game::AddChatMsg(wchar_t* msg, int player) {
chatTiming[0] = 1200;
chatType[0] = player;
switch(player) {
case 0: //from host
chatMsg[0].append((dInfo.isRelay) ? dInfo.hostname_relay[0] : dInfo.hostname);
case 0: //host 1
PlaySoundEffect("./sound/chatmessage.wav");
chatMsg[0].append(dInfo.hostname[0]);
chatMsg[0].append(L": ");
break;
case 1: //client 1
PlaySoundEffect("./sound/chatmessage.wav");
chatMsg[0].append(dInfo.clientname[0]);
chatMsg[0].append(L": ");
break;
case 2: //host 2
PlaySoundEffect("./sound/chatmessage.wav");
chatMsg[0].append(dInfo.hostname[1]);
chatMsg[0].append(L": ");
break;
case 1: //from client
case 3: //client 2
PlaySoundEffect("./sound/chatmessage.wav");
chatMsg[0].append((dInfo.isRelay) ? dInfo.clientname_relay[0] : dInfo.clientname);
chatMsg[0].append(dInfo.clientname[1]);
chatMsg[0].append(L": ");
break;
case 2: //host tag
case 4: //host 3
PlaySoundEffect("./sound/chatmessage.wav");
chatMsg[0].append((dInfo.isRelay) ? dInfo.hostname_relay[1] : dInfo.hostname_tag);
chatMsg[0].append(dInfo.hostname[2]);
chatMsg[0].append(L": ");
break;
case 3: //client tag
case 5: //client 3
PlaySoundEffect("./sound/chatmessage.wav");
chatMsg[0].append((dInfo.isRelay) ? dInfo.clientname_relay[1] : dInfo.clientname_tag);
chatMsg[0].append(dInfo.clientname[2]);
chatMsg[0].append(L": ");
break;
case 7: //local name
......@@ -1476,7 +1487,7 @@ int Game::LocalPlayer(int player) {
return dInfo.isFirst ? player : 1 - player;
}
const wchar_t* Game::LocalName(int local_player) {
return local_player == 0 ? dInfo.hostname : dInfo.clientname;
return local_player == 0 ? dInfo.hostname[0] : dInfo.clientname[0];
}
void Game::UpdateDuelParam() {
uint32 flag = 0, filter = 0x100;
......
......@@ -56,20 +56,15 @@ struct DuelInfo {
bool isSingleMode;
bool lua64;
bool is_shuffling;
bool tag_player[2];
int relay_player[2];
int current_player[2];
int lp[2];
int startlp;
int duel_field;
int extraval;
int turn;
short curMsg;
wchar_t hostname[20];
wchar_t clientname[20];
wchar_t hostname_tag[20];
wchar_t clientname_tag[20];
wchar_t clientname_relay[3][20];
wchar_t hostname_relay[3][20];
wchar_t clientname[3][20];
wchar_t hostname[3][20];
wchar_t strLP[2][16];
wchar_t* vic_string;
unsigned char player_type;
......
......@@ -20,8 +20,8 @@ namespace ygo {
mainGame->dInfo.isTag = !!(rh.flag & REPLAY_TAG);
mainGame->dInfo.isSingleMode = !!(rh.flag & REPLAY_SINGLE_MODE);
mainGame->dInfo.lua64 = true;
mainGame->dInfo.tag_player[0] = false;
mainGame->dInfo.tag_player[1] = false;
mainGame->dInfo.current_player[0] = 0;
mainGame->dInfo.current_player[1] = 0;
if (mainGame->dInfo.isSingleMode) {
set_script_reader((script_reader)SingleMode::ScriptReader);
set_card_reader((card_reader)DataManager::CardReader);
......@@ -106,14 +106,14 @@ namespace ygo {
int seed = rh.seed;
rnd.reset(seed);
if (mainGame->dInfo.isTag) {
cur_replay.ReadName(mainGame->dInfo.hostname);
cur_replay.ReadName(mainGame->dInfo.hostname_tag);
cur_replay.ReadName(mainGame->dInfo.clientname_tag);
cur_replay.ReadName(mainGame->dInfo.clientname);
cur_replay.ReadName(mainGame->dInfo.hostname[0]);
cur_replay.ReadName(mainGame->dInfo.hostname[1]);
cur_replay.ReadName(mainGame->dInfo.clientname[1]);
cur_replay.ReadName(mainGame->dInfo.clientname[0]);
}
else {
cur_replay.ReadName(mainGame->dInfo.hostname);
cur_replay.ReadName(mainGame->dInfo.clientname);
cur_replay.ReadName(mainGame->dInfo.hostname[0]);
cur_replay.ReadName(mainGame->dInfo.clientname[0]);
}
pduel = create_duel(rnd.rand());
int start_lp = cur_replay.ReadInt32();
......
......@@ -62,17 +62,17 @@ int ReplayMode::ReplayThread(void* param) {
mainGame->dInfo.isTag = !!(rh.flag & REPLAY_TAG);
mainGame->dInfo.isSingleMode = !!(rh.flag & REPLAY_SINGLE_MODE);
mainGame->dInfo.lua64 = !!(rh.flag & REPLAY_LUA64);
mainGame->dInfo.tag_player[0] = false;
mainGame->dInfo.tag_player[1] = false;
mainGame->dInfo.current_player[0] = 0;
mainGame->dInfo.current_player[1] = 0;
if (mainGame->dInfo.isTag) {
cur_replay.ReadName(mainGame->dInfo.hostname);
cur_replay.ReadName(mainGame->dInfo.hostname_tag);
cur_replay.ReadName(mainGame->dInfo.clientname_tag);
cur_replay.ReadName(mainGame->dInfo.clientname);
cur_replay.ReadName(mainGame->dInfo.hostname[0]);
cur_replay.ReadName(mainGame->dInfo.hostname[1]);
cur_replay.ReadName(mainGame->dInfo.clientname[1]);
cur_replay.ReadName(mainGame->dInfo.clientname[0]);
}
else {
cur_replay.ReadName(mainGame->dInfo.hostname);
cur_replay.ReadName(mainGame->dInfo.clientname);
cur_replay.ReadName(mainGame->dInfo.hostname[0]);
cur_replay.ReadName(mainGame->dInfo.clientname[0]);
}
int opt = cur_replay.ReadInt32();
mainGame->dInfo.duel_field = opt & 0xff;
......@@ -157,8 +157,8 @@ void ReplayMode::Restart(bool refresh) {
mainGame->dInfo.isStarted = false;
mainGame->dInfo.turn = 0;
mainGame->dField.Clear();
mainGame->dInfo.tag_player[0] = false;
mainGame->dInfo.tag_player[1] = false;
mainGame->dInfo.current_player[0] = 0;
mainGame->dInfo.current_player[1] = 0;
if (yrp && !StartDuel()) {
EndDuel();
}
......@@ -263,7 +263,7 @@ bool ReplayMode::ReplayAnalyze(ReplayPacket p) {
pbuf += len + 1;
memcpy(namebuf, begin, len + 1);
BufferIO::DecodeUTF8(namebuf, wname);
BufferIO::CopyWStr(wname, mainGame->dInfo.clientname, 20);
BufferIO::CopyWStr(wname, mainGame->dInfo.clientname[0], 20);
return true;
}
case OLD_REPLAY_MODE:
......
......@@ -53,8 +53,8 @@ int SingleMode::SinglePlayThread(void* param) {
mainGame->dInfo.startlp = start_lp;
myswprintf(mainGame->dInfo.strLP[0], L"%d", mainGame->dInfo.lp[0]);
myswprintf(mainGame->dInfo.strLP[1], L"%d", mainGame->dInfo.lp[1]);
BufferIO::CopyWStr(mainGame->ebNickName->getText(), mainGame->dInfo.hostname, 20);
mainGame->dInfo.clientname[0] = 0;
BufferIO::CopyWStr(mainGame->ebNickName->getText(), mainGame->dInfo.hostname[0], 20);
mainGame->dInfo.clientname[0][0] = 0;
mainGame->dInfo.turn = 0;
char filename[256];
size_t slen = 0;
......@@ -117,10 +117,10 @@ int SingleMode::SinglePlayThread(void* param) {
new_replay.WriteHeader(rh);
replay_stream.clear();
unsigned short buffer[20];
BufferIO::CopyWStr(mainGame->dInfo.hostname, buffer, 20);
BufferIO::CopyWStr(mainGame->dInfo.hostname[0], buffer, 20);
last_replay.WriteData(buffer, 40, false);
new_replay.WriteData(buffer, 40, false);
BufferIO::CopyWStr(mainGame->dInfo.clientname, buffer, 20);
BufferIO::CopyWStr(mainGame->dInfo.clientname[0], buffer, 20);
last_replay.WriteData(buffer, 40, false);
new_replay.WriteData(buffer, 40, false);
last_replay.WriteInt32(start_lp, false);
......@@ -849,7 +849,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
pbuf += len + 1;
memcpy(namebuf, begin, len + 1);
BufferIO::DecodeUTF8(namebuf, wname);
BufferIO::CopyWStr(wname, mainGame->dInfo.clientname, 20);
BufferIO::CopyWStr(wname, mainGame->dInfo.clientname[0], 20);
break;
}
case MSG_SHOW_HINT: {
......
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