Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
mercury233 committed Oct 15, 2016
2 parents 5946d6d + 7123d07 commit 552a788
Show file tree
Hide file tree
Showing 16 changed files with 60 additions and 43 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ A script engine for "yu-gi-oh!" and sample gui
* White = your card, Grey = your opponent's card

####Text:
Cards in extra deck or removed:
Cards in deck, extra deck and banished zone:
* Black = face-up, Blue = face-down

Xyz materials:
Expand Down
1 change: 0 additions & 1 deletion gframe/client_card.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ ClientCard::ClientCard() {
is_highlighting = false;
is_disabled = false;
is_reversed = false;
is_conti = false;
cmdFlag = 0;
code = 0;
chain_code = 0;
Expand Down
1 change: 0 additions & 1 deletion gframe/client_card.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ class ClientCard {
bool is_showtarget;
bool is_highlighting;
bool is_reversed;
bool is_conti;
u32 code;
u32 chain_code;
u32 alias;
Expand Down
16 changes: 11 additions & 5 deletions gframe/client_field.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ ClientField::ClientField() {
pzone_act[1] = false;
conti_act = false;
deck_reversed = false;
conti_selecting = false;
for(int p = 0; p < 2; ++p) {
for(int i = 0; i < 5; ++i)
mzone[p].push_back(0);
Expand Down Expand Up @@ -90,6 +91,7 @@ void ClientField::Initial(int player, int deckc, int extrac) {
pcard->controler = player;
pcard->location = 0x1;
pcard->sequence = i;
pcard->position = POS_FACEDOWN_DEFENSE;
GetCardLocation(pcard, &pcard->curPos, &pcard->curRot);
pcard->mTransform.setTranslation(pcard->curPos);
pcard->mTransform.setRotationRadians(pcard->curRot);
Expand Down Expand Up @@ -354,7 +356,6 @@ void ClientField::ClearChainSelect() {
(*cit)->chain_code = 0;
(*cit)->is_selectable = false;
(*cit)->is_selected = false;
(*cit)->is_conti = false;
}
conti_cards.clear();
grave_act = false;
Expand All @@ -375,18 +376,20 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
}
for(size_t i = 0; i < ct; ++i) {
mainGame->stCardPos[i]->enableOverrideColor(false);
// image
if(selectable_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code));
else if(chain)
else if(conti_selecting)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code));
else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(startpos + i * 125, 55, startpos + 120 + i * 125, 225));
mainGame->btnCardSelect[i]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true);
if(mainGame->dInfo.curMsg != MSG_SORT_CHAIN && mainGame->dInfo.curMsg != MSG_SORT_CARD) {
// text
wchar_t formatBuffer[2048];
if(chain && selectable_cards[i]->is_conti && !selectable_cards[i]->code)
if(conti_selecting)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(selectable_cards[i]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)",
Expand All @@ -396,13 +399,16 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence),
selectable_cards[i]->sequence + 1);
mainGame->stCardPos[i]->setText(formatBuffer);
if(selectable_cards[i]->location == LOCATION_OVERLAY) {
// color
if(conti_selecting)
mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
else if(selectable_cards[i]->location == LOCATION_OVERLAY) {
if(selectable_cards[i]->owner != selectable_cards[i]->overlayTarget->controler)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
if(selectable_cards[i]->overlayTarget->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
} else if(selectable_cards[i]->location == LOCATION_EXTRA || selectable_cards[i]->location == LOCATION_REMOVED) {
} else if(selectable_cards[i]->location == LOCATION_DECK || selectable_cards[i]->location == LOCATION_EXTRA || selectable_cards[i]->location == LOCATION_REMOVED) {
if(selectable_cards[i]->position & POS_FACEDOWN)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
if(selectable_cards[i]->controler)
Expand Down
1 change: 1 addition & 0 deletions gframe/client_field.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class ClientField: public irr::IEventReceiver {
ChainInfo current_chain;
bool last_chain;
bool deck_reversed;
bool conti_selecting;

ClientField();
void Clear();
Expand Down
1 change: 1 addition & 0 deletions gframe/drawing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -844,6 +844,7 @@ void Game::HideElement(irr::gui::IGUIElement * win, bool set_action) {
if(win == wCardSelect) {
for(int i = 0; i < 5; ++i)
btnCardSelect[i]->setDrawImage(false);
dField.conti_selecting = false;
}
if(win == wCardDisplay) {
for(int i = 0; i < 5; ++i)
Expand Down
8 changes: 3 additions & 5 deletions gframe/duelclient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1217,13 +1217,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->dField.activatable_descs.push_back(std::make_pair(desc, flag));
pcard->is_selected = false;
if(flag == EDESC_OPERATION) {
pcard->is_conti = true;
pcard->chain_code = code;
mainGame->dField.conti_cards.push_back(pcard);
mainGame->dField.conti_act = true;
conti_exist = true;
} else {
pcard->chain_code = code;
pcard->is_selectable = true;
if(flag == EDESC_RESET)
pcard->cmdFlag |= COMMAND_RESET;
Expand Down Expand Up @@ -1426,7 +1424,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case MSG_SELECT_COUNTER: {
/*int selecting_player = */BufferIO::ReadInt8(pbuf);
mainGame->dField.select_counter_type = BufferIO::ReadInt16(pbuf);
mainGame->dField.select_counter_count = BufferIO::ReadInt8(pbuf);
mainGame->dField.select_counter_count = BufferIO::ReadInt16(pbuf);
int count = BufferIO::ReadInt8(pbuf);
mainGame->dField.selectable_cards.clear();
int c, l, s, t/*, code*/;
Expand All @@ -1436,7 +1434,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
c = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
l = BufferIO::ReadInt8(pbuf);
s = BufferIO::ReadInt8(pbuf);
t = BufferIO::ReadInt8(pbuf);
t = BufferIO::ReadInt16(pbuf);
pcard = mainGame->dField.GetCard(c, l, s);
mainGame->dField.selectable_cards.push_back(pcard);
pcard->opParam = (t << 16) | t;
Expand Down Expand Up @@ -2222,7 +2220,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return true;
}
case MSG_FIELD_DISABLED: {
int disabled = BufferIO::ReadInt32(pbuf);
unsigned int disabled = BufferIO::ReadInt32(pbuf);
if (!mainGame->dInfo.isFirst)
disabled = (disabled >> 16) | (disabled << 16);
mainGame->dField.disabled_field = disabled;
Expand Down
20 changes: 13 additions & 7 deletions gframe/event_handler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
} else {
selectable_cards.clear();
bool conti_exist = false;
conti_selecting = false;
switch(command_location) {
case LOCATION_DECK: {
for(size_t i = 0; i < deck[command_controler].size(); ++i)
Expand Down Expand Up @@ -488,11 +488,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
case POSITION_HINT: {
selectable_cards.insert(selectable_cards.end(), conti_cards.begin(), conti_cards.end());
conti_exist = true;
conti_selecting = true;
break;
}
}
if(!conti_exist) {
if(!conti_selecting) {
mainGame->wCardSelect->setText(dataManager.GetSysString(566));
list_command = COMMAND_ACTIVATE;
} else {
Expand Down Expand Up @@ -910,19 +910,23 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
for(int i = 0; i < 5; ++i) {
// draw selectable_cards[i + pos] in btnCardSelect[i]
mainGame->stCardPos[i]->enableOverrideColor(false);
// image
if(selectable_cards[i + pos]->code)
mainGame->btnCardSelect[i]->setImage(imageManager.GetTexture(selectable_cards[i + pos]->code));
else if(conti_selecting)
mainGame->btnCardSelect[i]->setImage(imageManager.GetTexture(selectable_cards[i + pos]->chain_code));
else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(30 + i * 125, 55, 30 + 120 + i * 125, 225));
// text
wchar_t formatBuffer[2048];
if(sort_list.size()) {
if(sort_list[pos + i] > 0)
myswprintf(formatBuffer, L"%d", sort_list[pos + i]);
else
myswprintf(formatBuffer, L"");
} else {
if(selectable_cards[i + pos]->is_conti && !selectable_cards[i + pos]->code)
if(conti_selecting)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(selectable_cards[i + pos]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)",
Expand All @@ -933,17 +937,19 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
selectable_cards[i + pos]->sequence + 1);
}
mainGame->stCardPos[i]->setText(formatBuffer);
if(selectable_cards[i + pos]->location == LOCATION_OVERLAY) {
// color
if(conti_selecting)
mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
else if(selectable_cards[i + pos]->location == LOCATION_OVERLAY) {
if(selectable_cards[i + pos]->owner != selectable_cards[i + pos]->overlayTarget->controler)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
// BackgroundColor: controller of the xyz monster
if(selectable_cards[i + pos]->is_selected)
mainGame->stCardPos[i]->setBackgroundColor(0xffffff00);
else if(selectable_cards[i + pos]->overlayTarget->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else
mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
} else if(selectable_cards[i + pos]->location == LOCATION_EXTRA || selectable_cards[i + pos]->location == LOCATION_REMOVED) {
} else if(selectable_cards[i + pos]->location == LOCATION_DECK || selectable_cards[i + pos]->location == LOCATION_EXTRA || selectable_cards[i + pos]->location == LOCATION_REMOVED) {
if(selectable_cards[i + pos]->position & POS_FACEDOWN)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
if(selectable_cards[i + pos]->is_selected)
Expand Down
26 changes: 14 additions & 12 deletions gframe/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
#include <dirent.h>
#endif

const unsigned short PRO_VERSION = 0x133B;
const unsigned short PRO_VERSION = 0x133C;

namespace ygo {

Expand Down Expand Up @@ -46,6 +46,8 @@ bool Game::Initialize() {
is_building = false;
memset(&dInfo, 0, sizeof(DuelInfo));
memset(chatTiming, 0, sizeof(chatTiming));
for(int i = 0; i < 2048; ++i)
dataManager._sysStrings[i] = 0;
deckManager.LoadLFList();
driver = device->getVideoDriver();
driver->setTextureCreationFlag(irr::video::ETCF_CREATE_MIP_MAPS, false);
Expand All @@ -70,17 +72,17 @@ bool Game::Initialize() {
device->setResizable(false);
#ifdef _WIN32
HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL);
HICON hSmallIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(1), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
HICON hBigIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(1), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
HWND hWnd;
irr::video::SExposedVideoData exposedData = driver->getExposedVideoData();
if(gameConf.use_d3d)
hWnd = reinterpret_cast<HWND>(exposedData.D3D9.HWnd);
else
hWnd = reinterpret_cast<HWND>(exposedData.OpenGLWin32.HWnd);
SendMessage(hWnd, WM_SETICON, ICON_SMALL, (long)hSmallIcon);
SendMessage(hWnd, WM_SETICON, ICON_BIG, (long)hBigIcon);
#endif
HICON hSmallIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(1), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
HICON hBigIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(1), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
HWND hWnd;
irr::video::SExposedVideoData exposedData = driver->getExposedVideoData();
if(gameConf.use_d3d)
hWnd = reinterpret_cast<HWND>(exposedData.D3D9.HWnd);
else
hWnd = reinterpret_cast<HWND>(exposedData.OpenGLWin32.HWnd);
SendMessage(hWnd, WM_SETICON, ICON_SMALL, (long)hSmallIcon);
SendMessage(hWnd, WM_SETICON, ICON_BIG, (long)hBigIcon);
#endif
//main menu
wchar_t strbuf[256];
myswprintf(strbuf, L"YGOPro Version:%X.0%X.%X", PRO_VERSION >> 12, (PRO_VERSION >> 4) & 0xff, PRO_VERSION & 0xf);
Expand Down
4 changes: 2 additions & 2 deletions gframe/replay_mode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -412,9 +412,9 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
}
case MSG_SELECT_COUNTER: {
player = BufferIO::ReadInt8(pbuf);
pbuf += 3;
pbuf += 4;
count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8;
pbuf += count * 9;
return ReadReplayResponse();
}
case MSG_SELECT_SUM: {
Expand Down
4 changes: 2 additions & 2 deletions gframe/single_duel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -717,9 +717,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
}
case MSG_SELECT_COUNTER: {
player = BufferIO::ReadInt8(pbuf);
pbuf += 3;
pbuf += 4;
count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8;
pbuf += count * 9;
WaitforResponse(player);
NetServer::SendBufferToPlayer(players[player], STOC_GAME_MSG, offset, pbuf - offset);
return 1;
Expand Down
4 changes: 2 additions & 2 deletions gframe/single_mode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,9 +243,9 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
}
case MSG_SELECT_COUNTER: {
player = BufferIO::ReadInt8(pbuf);
pbuf += 3;
pbuf += 4;
count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8;
pbuf += count * 9;
if(!DuelClient::ClientAnalyze(offset, pbuf - offset)) {
mainGame->singleSignal.Reset();
mainGame->singleSignal.Wait();
Expand Down
4 changes: 2 additions & 2 deletions gframe/tag_duel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -650,9 +650,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
}
case MSG_SELECT_COUNTER: {
player = BufferIO::ReadInt8(pbuf);
pbuf += 3;
pbuf += 4;
count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8;
pbuf += count * 9;
WaitforResponse(player);
NetServer::SendBufferToPlayer(cur_player[player], STOC_GAME_MSG, offset, pbuf - offset);
return 1;
Expand Down
2 changes: 1 addition & 1 deletion ocgcore
Submodule ocgcore updated 10 files
+8 −1 card.cpp
+6 −0 card.h
+39 −33 field.cpp
+4 −3 field.h
+4 −4 libcard.cpp
+39 −26 libduel.cpp
+4 −4 libgroup.cpp
+156 −111 operations.cpp
+43 −22 playerop.cpp
+30 −28 processor.cpp
2 changes: 1 addition & 1 deletion script
Submodule script updated 160 files
7 changes: 6 additions & 1 deletion strings.conf
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@
!system 530 请选择对方的卡
!system 531 请选择上级召唤用需要解放的怪兽
!system 532 请选择要取除超量素材的怪兽
!system 549 请选择攻击的对象
!system 550 请选择要发动的效果
!system 551 请选择效果的对象
!system 552 请选择硬币的正反面
Expand Down Expand Up @@ -491,7 +492,7 @@
!setname 0xc008 命运英雄 D-HERO
!setname 0x9 新宇 ネオス
!setname 0xa 入魔 ヴェルズ
!setname 0x100a 侵入魔人 インヴェルズ
!setname 0x100a 侵入魔鬼 インヴェルズ
!setname 0xb 永火 インフェルニティ
!setname 0xc 外星 エーリアン
!setname 0xd 剑士 セイバー
Expand Down Expand Up @@ -711,6 +712,7 @@
!setname 0xb5 灵兽 霊獣
!setname 0x10b5 灵兽使 霊獣使い
!setname 0x20b5 精灵兽 精霊獣
#!setname 0x30b5 精灵兽使 精霊獣使い
!setname 0x40b5 圣灵兽骑 聖霊獣騎
!setname 0xb6 外神
!setname 0xb7 旧神
Expand Down Expand Up @@ -778,3 +780,6 @@
!setname 0xee 秘旋谍 SPYRAL
!setname 0x10ee 秘旋谍装备 SPYRAL GEAR
!setname 0xef 堕天使
!setname 0xf0 风魔女 WW(ウィンド・ウィッチ)
!setname 0xf1 十二兽 十二獣
!setname 0xf2 灵摆龙 ペンデュラム・ドラゴン

0 comments on commit 552a788

Please sign in to comment.