Commit c7614ada authored by DailyShana's avatar DailyShana Committed by GitHub

add HINT_ZONE (#2263)

parent 293618b1
...@@ -18,6 +18,8 @@ ClientField::ClientField() { ...@@ -18,6 +18,8 @@ ClientField::ClientField() {
hovered_controler = 0; hovered_controler = 0;
hovered_location = 0; hovered_location = 0;
hovered_sequence = 0; hovered_sequence = 0;
selectable_field = 0;
selected_field = 0;
deck_act = false; deck_act = false;
grave_act = false; grave_act = false;
remove_act = false; remove_act = false;
......
...@@ -126,7 +126,7 @@ void Game::DrawBackGround() { ...@@ -126,7 +126,7 @@ void Game::DrawBackGround() {
driver->drawVertexPrimitiveList(matManager.vField, 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(matManager.vField, 4, matManager.iRectangle, 2);
driver->setMaterial(matManager.mBackLine); driver->setMaterial(matManager.mBackLine);
//select field //select field
if(dInfo.curMsg == MSG_SELECT_PLACE || dInfo.curMsg == MSG_SELECT_DISFIELD) { if(dInfo.curMsg == MSG_SELECT_PLACE || dInfo.curMsg == MSG_SELECT_DISFIELD || dInfo.curMsg == MSG_HINT) {
float cv[4] = {0.0f, 0.0f, 1.0f, 1.0f}; float cv[4] = {0.0f, 0.0f, 1.0f, 1.0f};
unsigned int filter = 0x1; unsigned int filter = 0x1;
for (int i = 0; i < 7; ++i, filter <<= 1) { for (int i = 0; i < 7; ++i, filter <<= 1) {
......
...@@ -982,7 +982,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -982,7 +982,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
} }
case MSG_HINT: { case MSG_HINT: {
int type = BufferIO::ReadInt8(pbuf); int type = BufferIO::ReadInt8(pbuf);
/*int player = */BufferIO::ReadInt8(pbuf); int player = BufferIO::ReadInt8(pbuf);
int data = BufferIO::ReadInt32(pbuf); int data = BufferIO::ReadInt32(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
return true; return true;
...@@ -1069,6 +1069,48 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1069,6 +1069,48 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->WaitFrameSignal(30); mainGame->WaitFrameSignal(30);
break; break;
} }
case HINT_ZONE: {
if(mainGame->LocalPlayer(player) == 1)
data = (data >> 16) | (data << 16);
for(unsigned filter = 0x1; filter != 0; filter <<= 1) {
std::wstring str;
if(unsigned s = filter & data) {
if(s & 0x60) {
str += dataManager.GetSysString(1081);
data &= ~0x600000;
} else if(s & 0xffff)
str += dataManager.GetSysString(102);
else if(s & 0xffff0000) {
str += dataManager.GetSysString(103);
s >>= 16;
}
if(s & 0x1f)
str += dataManager.GetSysString(1002);
else if(s & 0xff00) {
s >>= 8;
if(s & 0x1f)
str += dataManager.GetSysString(1003);
else if(s & 0x20)
str += dataManager.GetSysString(1008);
else if(s & 0xc0)
str += dataManager.GetSysString(1009);
}
int seq = 1;
for(int i = 0x1; i < 0x100; i <<= 1) {
if(s & i)
break;
++seq;
}
str += L"(" + std::to_wstring(seq) + L")";
myswprintf(textBuffer, dataManager.GetSysString(1510), str.c_str());
mainGame->AddLog(textBuffer);
}
}
mainGame->dField.selectable_field = data;
mainGame->WaitFrameSignal(40);
mainGame->dField.selectable_field = 0;
break;
}
} }
break; break;
} }
......
...@@ -589,7 +589,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -589,7 +589,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
case 6: case 6:
case 7: case 7:
case 8: case 8:
case 9: { case 9:
case 11: {
NetServer::SendBufferToPlayer(players[1 - player], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(players[1 - player], STOC_GAME_MSG, offset, pbuf - offset);
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit); NetServer::ReSendToPlayer(*oit);
......
...@@ -536,7 +536,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -536,7 +536,8 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
case 6: case 6:
case 7: case 7:
case 8: case 8:
case 9: { case 9:
case 11: {
for(int i = 0; i < 4; ++i) for(int i = 0; i < 4; ++i)
if(players[i] != cur_player[player]) if(players[i] != cur_player[player])
NetServer::SendBufferToPlayer(players[i], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(players[i], STOC_GAME_MSG, offset, pbuf - offset);
......
Subproject commit 511f2f9f74d31878cb5e6fce62f7f969f6b0cec2 Subproject commit 5dea59cb15665357949795bcc34a028e187c6024
...@@ -53,6 +53,8 @@ ...@@ -53,6 +53,8 @@
!system 98 是否要解放对方怪兽? !system 98 是否要解放对方怪兽?
!system 100 先攻 !system 100 先攻
!system 101 后攻 !system 101 后攻
!system 102 我方
!system 103 对方
!system 200 是否在[%ls]发动[%ls]的效果? !system 200 是否在[%ls]发动[%ls]的效果?
!system 201 此时没有可以发动的效果 !system 201 此时没有可以发动的效果
!system 202 是否要确认场上的情况? !system 202 是否要确认场上的情况?
...@@ -204,6 +206,7 @@ ...@@ -204,6 +206,7 @@
!system 1075 特殊召唤 !system 1075 特殊召唤
!system 1076 连接 !system 1076 连接
!system 1080 (N/A) !system 1080 (N/A)
!system 1081 额外怪兽区
#GUI #GUI
!system 1100 魔陷破坏 !system 1100 魔陷破坏
!system 1101 怪兽破坏 !system 1101 怪兽破坏
......
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