|
You last visited: Today at 15:26
Advertisement
[Release]Extended Petfilter
Discussion on [Release]Extended Petfilter within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.
09/15/2011, 20:46
|
#1
|
elite*gold: 0
Join Date: Aug 2011
Posts: 206
Received Thanks: 117
|
[Release]Extended Petfilter
Hallo, heute hatte ich mal langeweile, also dachte ich mir ich mach mal einen neuen Petfilter, hier ein Screen vom Endergebnis:
Was wir brauchen:
-VS2003
-Source + Hier releasten Petfilter
-Resdata : 
-Ein wenig Zeit
Als erstes gehen wir in die AiPet.cpp und suchen nach
Code:
if(!pOwner->bQuestItem && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GEM && pItemProp->dwItemKind3 == IK3_GEM)
b1 = TRUE;
else if(!pOwner->bWeapons && pItemProp->dwItemKind1 == IK1_WEAPON)
b1 = TRUE;
else if(!pOwner->bArmor && pItemProp->dwItemKind1 == IK1_ARMOR)
b1 = TRUE;
else if(!pOwner->bCards && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && pItemProp->dwItemKind3 != IK3_ULTIMATE && pItemProp->dwItemKind3 != IK3_ENCHANT && pItemProp->dwItemKind3 != IK3_PIERDICE)
b1 = TRUE;
else if(!pOwner->bFood && pItemProp->dwItemKind1 == IK1_GENERAL && (pItemProp->dwItemKind2 == IK2_FOOD || pItemProp->dwItemKind2 == IK2_REFRESHER || pItemProp->dwItemKind2 == IK2_POTION))
b1 = TRUE;
else if(!pOwner->bEggs && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GENERAL && pItemProp->dwItemKind3 == IK3_EGG)
b1 = TRUE;
else if(!pOwner->bStones && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && (pItemProp->dwItemKind3 == IK3_PIERDICE || pItemProp->dwItemKind3 == IK3_ENCHANT || pItemProp->dwItemKind3 == IK3_ULTIMATE || pItemProp->dwItemKind3 == IK3_SUPSTONE))
b1 = TRUE;
else if(!pOwner->bAccessory && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_JEWELRY)
b1 = TRUE;
else if( pItemProp->dwItemKind1 == IK1_GOLD && pItemProp->dwItemKind2 == IK2_GOLD && pItemProp->dwItemKind3 == IK3_GOLD )
b1 = TRUE;
Das ersetzt ihr hiermit :
Code:
if(!pOwner->bQuestItem && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GEM && pItemProp->dwItemKind3 == IK3_GEM)
b1 = TRUE;
else if(!pOwner->bWeapons && pItemProp->dwItemKind1 == IK1_WEAPON)
b1 = TRUE;
else if(!pOwner->bArmor && pItemProp->dwItemKind1 == IK1_ARMOR)
b1 = TRUE;
else if(!pOwner->bFood && pItemProp->dwItemKind1 == IK1_GENERAL && (pItemProp->dwItemKind2 == IK2_FOOD || pItemProp->dwItemKind2 == IK2_REFRESHER || pItemProp->dwItemKind2 == IK2_POTION))
b1 = TRUE;
else if(!pOwner->bEggs && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GENERAL && pItemProp->dwItemKind3 == IK3_EGG)
b1 = TRUE;
else if(!pOwner->bAccessory && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_JEWELRY)
b1 = TRUE;
else if( pItemProp->dwItemKind1 == IK1_GOLD && pItemProp->dwItemKind2 == IK2_GOLD && pItemProp->dwItemKind3 == IK3_GOLD )
b1 = TRUE;
else if( !pOwner->bBeads && pItemProp->dwItemKind3 == IK3_VIS )
b1 = TRUE;
else if( !pOwner->bCard7 && pItemProp->dwItemKind2 == IK2_CARD7 )
b1 = TRUE;
else if( !pOwner->bCard4 && pItemProp->dwItemKind2 == IK2_CARD4 )
b1 = TRUE;
else if( !pOwner->bCardA && pItemProp->dwItemKind2 == IK2_CARDA )
b1 = TRUE;
else if( !pOwner->bCardB && pItemProp->dwItemKind2 == IK2_CARDB )
b1 = TRUE;
else if( !pOwner->bOri && pItemProp->dwItemKind2 == IK2_ORI )
b1 = TRUE;
else if( !pOwner->bMoon && pItemProp->dwItemKind2 == IK2_MOON )
b1 = TRUE;
Mover.h, Ihr sucht nach
Code:
BOOL bQuestItem, bWeapons, bArmor, bCards, bFood, bEggs, bStones, bAccessory;
und ersetzt es durch
Code:
BOOL bQuestItem, bWeapons, bArmor, bFood, bEggs, bAccessory, bBeads, bCard7, bCard4, bCardA, bCardB, bOri, bMoon;
DPClient.h, sucht nach
Code:
BOOL bInitializedPetCollection, bQuestItem , bWeapons , bArmor , bCards , bFood, bEggs, bStones , bAccessory;
und ersetzt es durch
Code:
BOOL bInitializedPetCollection, bQuestItem, bWeapons, bArmor, bFood, bEggs, bAccessory, bBeads, bCard7, bCard4, bCardA, bCardB, bOri, bMoon;
DPClient.cpp, ändert
Code:
bQuestItem = bWeapons = bArmor = bCards = bFood = bEggs = bStones = bAccessory = TRUE;
zu
Code:
bQuestItem = bWeapons = bArmor = bFood = bEggs = bAccessory = bBeads = bCard7 = bCard4 = bCardA = bCardB = bOri = bMoon = TRUE;
Jetzt die WndPetSys.cpp: ersetzt
Code:
CWndButton* chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_1 );
chk->SetCheck(g_DPlay.bQuestItem);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_2 );
chk->SetCheck(g_DPlay.bWeapons);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_3 );
chk->SetCheck(g_DPlay.bArmor);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_4 );
chk->SetCheck(g_DPlay.bCards);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_5 );
chk->SetCheck(g_DPlay.bFood);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_6 );
chk->SetCheck(g_DPlay.bEggs);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_7 );
chk->SetCheck(g_DPlay.bStones);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_8 );
chk->SetCheck(g_DPlay.bAccessory);
durch
Code:
CWndButton* chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_1 );
chk->SetCheck(g_DPlay.bQuestItem);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_2 );
chk->SetCheck(g_DPlay.bWeapons);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_3 );
chk->SetCheck(g_DPlay.bArmor);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_4 );
chk->SetCheck(g_DPlay.bCard7);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_5 );
chk->SetCheck(g_DPlay.bFood);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_6 );
chk->SetCheck(g_DPlay.bEggs);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_7 );
chk->SetCheck(g_DPlay.bOri);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_8 );
chk->SetCheck(g_DPlay.bAccessory);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_9 );
chk->SetCheck(g_DPlay.bBeads);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_10);
chk->SetCheck(g_DPlay.bCard4);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_11);
chk->SetCheck(g_DPlay.bCardA);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_12);
chk->SetCheck(g_DPlay.bCardB);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_13);
chk->SetCheck(g_DPlay.bOri);
Jetzt ersetzt ihr
Code:
case WIDC_BUFFCKECK_1:
{
g_DPlay.bQuestItem = !g_DPlay.bQuestItem;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_2:
{
g_DPlay.bWeapons = !g_DPlay.bWeapons;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_3:
{
g_DPlay.bArmor = !g_DPlay.bArmor;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_4:
{
g_DPlay.bCards = !g_DPlay.bCards;
g_DPlay.SendBuffPetCollectUpdate();
break; }
case WIDC_BUFFCKECK_5:
{
g_DPlay.bFood = !g_DPlay.bFood;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_6:
{
g_DPlay.bEggs = !g_DPlay.bEggs;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_7:
{
g_DPlay.bStones = !g_DPlay.bStones;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_8:
{
g_DPlay.bAccessory = !g_DPlay.bAccessory;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
durch
Code:
case WIDC_BUFFCKECK_1:
{
g_DPlay.bQuestItem = !g_DPlay.bQuestItem;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_2:
{
g_DPlay.bWeapons = !g_DPlay.bWeapons;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_3:
{
g_DPlay.bArmor = !g_DPlay.bArmor;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_4:
{
g_DPlay.bCard7 = !g_DPlay.bCard7;
g_DPlay.SendBuffPetCollectUpdate();
break; }
case WIDC_BUFFCKECK_5:
{
g_DPlay.bFood = !g_DPlay.bFood;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_6:
{
g_DPlay.bEggs = !g_DPlay.bEggs;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_7:
{
g_DPlay.bOri = !g_DPlay.bOri;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_8:
{
g_DPlay.bAccessory = !g_DPlay.bAccessory;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCHECK_9:
{
g_DPlay.bBeads = !g_DPlay.bBeads;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCHECK_10:
{
g_DPlay.bCard4 = !g_DPlay.bCard4;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCHECK_11:
{
g_DPlay.bCardA = !g_DPlay.bCardA;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCHECK_12:
{
g_DPlay.bCardB = !g_DPlay.bCardB;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCHECK_13:
{
g_DPlay.bMoon = !g_DPlay.bMoon;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
DPClient.cpp, sucht nach
Code:
ar << (BYTE) bQuestItem << (BYTE) bWeapons << (BYTE) bArmor << (BYTE) bCards << (BYTE) bFood << (BYTE) bEggs << (BYTE) bStones << (BYTE) bAccessory;
und ersetzt es durch
Code:
ar << (BYTE) bQuestItem << (BYTE) bWeapons << (BYTE) bArmor << (BYTE) bCard7 << (BYTE) bFood << (BYTE) bEggs << (BYTE) bOri << (BYTE) bAccessory << (BYTE) bBeads << (BYTE) bCard4 << (BYTE) bCardA << (BYTE) bCardB << (BYTE) bMoon;
DPSrvr.cpp, sucht nach
Code:
BYTE cQuestItem , cWeapons , cArmor , cCards , cFood , cEggs , cStones , cAccessory;
ersetzt es durch
Code:
BYTE cQuestItem , cWeapons , cArmor , cCard7 , cFood , cEggs , cOri , cAccessory, cBeads, cCard4, cCardA, cCardB, cMoon;
Ersetzt
Code:
ar >> cQuestItem >> cWeapons >> cArmor >> cCards >> cFood >> cEggs >> cStones >> cAccessory;
mit
Code:
ar >> cQuestItem >> cWeapons >> cArmor >> cCard7 >> cFood >> cEggs >> cOri >> cAccessory >> cBeads >> cCard4 >> cCardA >> cCardB >> cMoon;
sucht nach
Code:
if(cQuestItem > 0) { pUser->bQuestItem = TRUE; } else { pUser->bQuestItem = FALSE; }
if(cWeapons > 0) { pUser->bWeapons = TRUE; } else { pUser->bWeapons = FALSE; }
if(cArmor > 0) { pUser->bArmor = TRUE; } else { pUser->bArmor = FALSE; }
if(cCards > 0) { pUser->bCards = TRUE; } else { pUser->bCards = FALSE; }
if(cFood > 0) { pUser->bFood = TRUE; } else { pUser->bFood = FALSE; }
if(cEggs > 0) { pUser->bEggs = TRUE; } else { pUser->bEggs = FALSE; }
if(cStones > 0) { pUser->bStones = TRUE; } else { pUser->bStones = FALSE; }
if(cAccessory > 0) { pUser->bAccessory = TRUE; } else { pUser->bAccessory = FALSE; }
und ersetzt es durch
Code:
if(cQuestItem > 0) { pUser->bQuestItem = TRUE; } else { pUser->bQuestItem = FALSE; }
if(cWeapons > 0) { pUser->bWeapons = TRUE; } else { pUser->bWeapons = FALSE; }
if(cArmor > 0) { pUser->bArmor = TRUE; } else { pUser->bArmor = FALSE; }
if(cCard7 > 0) { pUser->bCard7 = TRUE; } else { pUser->bCard7 = FALSE; }
if(cFood > 0) { pUser->bFood = TRUE; } else { pUser->bFood = FALSE; }
if(cEggs > 0) { pUser->bEggs = TRUE; } else { pUser->bEggs = FALSE; }
if(cOri > 0) { pUser->bOri = TRUE; } else { pUser->bOri = FALSE; }
if(cAccessory > 0) { pUser->bAccessory = TRUE; } else { pUser->bAccessory = FALSE; }
if(cBeads > 0){ pUser->bBeads = TRUE; } else { pUser->bBeads = FALSE; }
if(cCard4 > 0){ pUser->bCard4 = TRUE; } else { pUser->bCard4 = FALSE; }
if(cCardA > 0){ pUser->bCardA = TRUE; } else { pUser->bCardA = FALSE; }
if(cCardB > 0){ pUser->bCardB = TRUE; } else { pUser->bCardB = FALSE; }
if(cMoon > 0){ pUser->bMoon = TRUE; } else { pUser->bMoon = FALSE; }
So, da ich das alles mit ItemKind2 gemacht habe geht ihr jetzt in die defineItemKind.h im Resource Ordner. Dort addet ihr nach
Code:
#define IK2_GUILDHOUES_COMEBACK 41 //±æµåÇϿ콺 ±Íȯ ÁÖ¹®¼*
einfach
Code:
#define IK2_CARD4 201
#define IK2_CARD7 202
#define IK2_CARDB 203
#define IK2_CARDA 204
#define IK2_ORI 205
#define IK2_MOON 206
Jetzt noch die ResData.h in den Resource Ordner eurer Source und Rebuild(Neuz+Worldserver).
Jetzt müsst ihr den Typ in der propItem.txt anpassen:
Bei jeder 7% Card IK2_CARD7
4% Card IK2_CARD4
A Card IK2_CARDA
B Card IK2_CARDB
Bei Moonstone IK2_MOON und bei Oricalkum IK2_ORI.
jetzt fügt ihr noch die ResData.txt/.inc/.h in eure Serverfiles ein, Mergen und .res Dateien in den Client.
Fertig.
Ich hoffe ihr könnt das gebrauchen, falls ihr Fragen/Vorschläge habt sagt doch bitte bescheid.
So Far, Yakuzai.
|
|
|
09/15/2011, 20:47
|
#2
|
elite*gold: 153
Join Date: Jan 2009
Posts: 860
Received Thanks: 71
|
Der sieht ja mal Bombe aus  Find ihn echt gut
|
|
|
09/15/2011, 20:52
|
#3
|
elite*gold: 18
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
|
Finde den nicht so dolle, hättest bei der Auswahl gleich ein neues PF Fenster machen können und es statt auf BuffPets zu belassen, auf auf alle setzen.
|
|
|
09/15/2011, 20:57
|
#4
|
elite*gold: 1
Join Date: Dec 2009
Posts: 504
Received Thanks: 71
|
Gebe sedrika Recht Neues fenster wäre besser
|
|
|
09/15/2011, 21:17
|
#5
|
elite*gold: 0
Join Date: Aug 2011
Posts: 206
Received Thanks: 117
|
Quote:
Originally Posted by Sedrika
Finde den nicht so dolle, hättest bei der Auswahl gleich ein neues PF Fenster machen können und es statt auf BuffPets zu belassen, auf auf alle setzen.
|
Danke, werde das Morgen noch machen, für alle Pets gillt er aber schon, nur das Fenster ist halt bei den Buffpets ^^
|
|
|
09/15/2011, 21:40
|
#6
|
elite*gold: 0
Join Date: Jul 2011
Posts: 139
Received Thanks: 12
|
Dann binich mal gespannt ;p so find ichs noch nich den burner
|
|
|
09/15/2011, 22:01
|
#7
|
elite*gold: 0
Join Date: Jan 2008
Posts: 181
Received Thanks: 23
|
does this save the filter options?
|
|
|
09/16/2011, 00:19
|
#8
|
elite*gold: 380
Join Date: Oct 2008
Posts: 2,262
Received Thanks: 382
|
Muss man den Fillter mit Daisy bearbeiten?
Hab nämlich das problem das bei mir alles übereinander is ..  ..
Sieht grauenhaft aus..^^
pls Help xD
lg
|
|
|
09/16/2011, 06:49
|
#9
|
elite*gold: 0
Join Date: Dec 2010
Posts: 463
Received Thanks: 97
|
*** musst es mit Daisy bearbeiten
|
|
|
09/16/2011, 09:05
|
#10
|
elite*gold: 0
Join Date: Aug 2011
Posts: 206
Received Thanks: 117
|
Die Resdatas sind doch dabei, die musst du nur in deine Files packen und dann die .Res Dateien erstellen.
|
|
|
09/16/2011, 17:57
|
#11
|
elite*gold: 260
Join Date: Nov 2007
Posts: 12,855
Received Thanks: 4,319
|
#spam deleted
|
|
|
09/17/2011, 20:01
|
#12
|
elite*gold: 0
Join Date: Mar 2011
Posts: 276
Received Thanks: 16
|
Kan mir wer sagen warum ich folgende Errors bekomme?
oder besser gesagt was ich falsch gemacht hab?
Quote:
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2605): error C3861: 'WIDC_BUFFCHECK_9': identifier not found, even with argument-dependent lookup
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2605): error C2051: case expression not constant
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2611): error C2051: case expression not constant
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2617): error C2051: case expression not constant
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2623): error C2051: case expression not constant
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2629): error C2051: case expression not constant
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2260): error C2065: 'WIDC_BUFFCHECK_10' : undeclared identifier
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2263): error C2065: 'WIDC_BUFFCHECK_11' : undeclared identifier
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2266): error C2065: 'WIDC_BUFFCHECK_12' : undeclared identifier
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2269): error C2065: 'WIDC_BUFFCHECK_13' : undeclared identifier
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2257): error C2065: 'WIDC_BUFFCHECK_9' : undeclared identifier
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2611): error C3861: 'WIDC_BUFFCHECK_10': identifier not found, even with argument-dependent lookup
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2617): error C3861: 'WIDC_BUFFCHECK_11': identifier not found, even with argument-dependent lookup
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2623): error C3861: 'WIDC_BUFFCHECK_12': identifier not found, even with argument-dependent lookup
c:\Users\Black-Star\NewSever\BF Source\Source\_Interface\WndPetSys.cpp(2629): error C3861: 'WIDC_BUFFCHECK_13': identifier not found, even with argument-dependent lookup
|
Hier ma meine WndPetSys.cpp
Quote:
#include "stdafx.h"
#include "defineText.h"
#include "AppDefine.h"
#include "WndManager.h"
#include "WndPetSys.h"
#include "DPClient.h"
extern CDPClient g_DPlay;
#if __VER >= 15 // __PETVIS
#include "definesound.h"
#endif
#if __VER >= 12 // __PET_0519
CWndPetAwakCancel::CWndPetAwakCancel()
{
m_pItemElem = NULL;
m_pEItemProp = NULL;
m_pTexture = NULL;
}
CWndPetAwakCancel::~CWndPetAwakCancel()
{
}
void CWndPetAwakCancel::OnDraw( C2DRender* p2DRender )
{
ItemProp* pItemProp;
if(m_pItemElem != NULL)
{
pItemProp = m_pItemElem->GetProp();
LPWNDCTRL wndCtrl = GetWndCtrl( WIDC_STATIC1 );
if(m_pTexture != NULL)
m_pTexture->Render( p2DRender, CPoint( wndCtrl->rect.left, wndCtrl->rect.top ) );
}
}
void CWndPetAwakCancel::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
// ¿©±â¿¡ ÄÚµùÇϼ¼¿ä
CWndButton* pButton = (CWndButton*)GetDlgItem(WIDC_BUTTON1);
if(::GetLanguage() == LANG_FRE)
pButton->SetTexture(g_Neuz.m_pd3dDevice, MakePath( "Theme\\", ::GetLanguage(), _T( "ButOk2.bmp" ) ), TRUE);
pButton->EnableWindow(FALSE);
m_pText = (CWndText*)GetDlgItem( WIDC_TEXT1 );
SetDescription();
MoveParentCenter();
}
// óÀ½ ÀÌ ÇÔ¼ö¸¦ ºÎ¸£¸é À©µµ°¡ ¿*¸°´Ù.
BOOL CWndPetAwakCancel::Initialize( CWndBase* pWndParent, DWORD /*dwWndId*/ )
{
// Daisy¿¡¼* ¼³Á¤ÇÑ ¸®¼Ò½º·Î À©µµ¸¦ ¿¬´Ù.
return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_PET_AWAK_CANCEL, 0, CPoint( 0, 0 ), pWndParent );
}
void CWndPetAwakCancel::OnDestroy()
{
if(m_pItemElem != NULL)
{
if( !g_pPlayer->m_vtInfo.IsTrading( m_pItemElem ) )
m_pItemElem->SetExtra(0);
}
}
BOOL CWndPetAwakCancel::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase )
{
return CWndNeuz::OnCommand( nID, dwMessage, pWndBase );
}
void CWndPetAwakCancel::OnSize( UINT nType, int cx, int cy )
{
CWndNeuz::OnSize( nType, cx, cy );
}
void CWndPetAwakCancel::OnLButtonUp( UINT nFlags, CPoint point )
{
}
void CWndPetAwakCancel::OnLButtonDown( UINT nFlags, CPoint point )
{
}
BOOL CWndPetAwakCancel::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
if( nID == WIDC_BUTTON1 )
{
if(m_pItemElem != NULL)
{
CWndButton* pButton;
pButton = (CWndButton*)GetDlgItem( WIDC_BUTTON1 );
pButton->EnableWindow(FALSE);
g_DPlay.SendPickupPetAwakeningCancel( m_pItemElem->m_dwObjId );
Destroy();
}
}
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
void CWndPetAwakCancel::OnLButtonDblClk( UINT nFlags, CPoint point )
{
if(!m_pItemElem) return;
CRect rect;
LPWNDCTRL wndCtrl = GetWndCtrl( WIDC_STATIC1 );
rect = wndCtrl->rect;
if( rect.PtInRect( point ) )
{
m_pItemElem->SetExtra(0);
CWndButton* pButton = (CWndButton*)GetDlgItem(WIDC_BUTTON1);
pButton->EnableWindow(FALSE);
m_pItemElem = NULL;
m_pEItemProp = NULL;
m_pTexture = NULL;
}
}
BOOL CWndPetAwakCancel::OnDropIcon( LPSHORTCUT pShortcut, CPoint point )
{
CItemElem* pTempElem= NULL;
if(g_pPlayer != NULL) pTempElem = (CItemElem*)g_pPlayer->GetItemId( pShortcut->m_dwId );
if( pTempElem != NULL)
{
// ÇȾ÷Æê È®ÀÎ // °¢¼º ¿©ºÎ´Â ¼*¹ö °Ë»ç
if( !pTempElem->IsEatPet() )
return FALSE;
// È®ÀÎ ¹öư Ȱ¼º
if(m_pItemElem) m_pItemElem->SetExtra(0);
m_pItemElem = (CItemElem*)g_pPlayer->GetItemId( pShortcut->m_dwId );
m_pEItemProp = m_pItemElem->GetProp();
m_pItemElem->SetExtra(m_pItemElem->GetExtra()+1);
if(m_pEItemProp != NULL)
{
m_pTexture = m_pItemElem->m_pTexture;
//m_pTexture = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, MakePath( DIR_ITEM, m_pEItemProp->szIcon), 0xffff00ff );
}
CWndButton* pButton = (CWndButton*)GetDlgItem(WIDC_BUTTON1);
pButton->EnableWindow(TRUE);
}
return TRUE;
}
void CWndPetAwakCancel::SetDescription()
{
CScript scanner;
BOOL checkflag;
CHAR* szChar;
checkflag = scanner.Load( MakePath( DIR_CLIENT, _T( "PetAwakCancel.inc" ) ));
szChar = scanner.m_pProg;
if(m_pText != NULL && checkflag)
{
m_pText->m_string.AddParsingString( szChar );
m_pText->ResetString();
}
}
#endif
#if __VER >= 9 // __CSC_VER9_1
//////////////////////////////////////////////////////////////////////////
// CWndPetStatus
//////////////////////////////////////////////////////////////////////////
CWndPetStatus::CWndPetStatus()
{
m_nDisplay = 2;
m_nHPWidth = -1;
m_nEXPWidth = -1;
m_pVBHPGauge = NULL;
m_pVBEXPGauge = NULL;
m_bVBHPGauge = TRUE;
m_bVBEXPGauge = TRUE;
m_bHPVisible = TRUE;
m_bExpVisible = TRUE;
m_pPetElem = NULL;
m_bExtension = FALSE;
m_nLockLevel[0] = -1;
m_nLockLevel[1] = -1;
m_nBackUpLevel[0] = -1;
m_nBackUpLevel[1] = -1;
m_strPathLvImage[0] = MakePath( DIR_ICON, "Icon_PetLevel1_S.dds");
m_strPathLvImage[1] = MakePath( DIR_ICON, "Icon_PetLevel2_S.dds");
m_strPathLvImage[2] = MakePath( DIR_ICON, "Icon_PetLevel3_S.dds");
m_strPathLvImage[3] = MakePath( DIR_ICON, "Icon_PetLevel4_S.dds");
m_strPathLvImage[4] = MakePath( DIR_ICON, "Icon_PetLevel5_S.dds");
m_strPathLvImage[5] = MakePath( DIR_ICON, "Icon_PetLevel6_S.dds");
m_strPathLvImage[6] = MakePath( DIR_ICON, "Icon_PetLevel7_S.dds");
m_strPathLvImage[7] = MakePath( DIR_ICON, "Icon_PetLevel8_S.dds");
m_strPathLvImage[8] = MakePath( DIR_ICON, "Icon_PetLevel9_S.dds");
m_nChoiceLevel = -1;
m_pPetModel = NULL;
for(int i=0; i<6; i++)
m_pTexPetLv[i] = NULL;
m_pTexPetLvBg = NULL;
m_pTexPetStatusBg = NULL;
memset(m_aPetLv, 0, sizeof(int) * 6);
SetPetCamTable();
}
CWndPetStatus::~CWndPetStatus()
{
DeleteDeviceObjects();
}
void CWndPetStatus::SetPetCamTable()
{
//¹éÈ£
m_PetCameTable[0].CamPos.x = 1.2f;
m_PetCameTable[0].CamPos.y = 4.6f;
m_PetCameTable[0].CamPos.z = -7.0f;
m_PetCameTable[0].CamLook.x = -2.4f;
m_PetCameTable[0].CamLook.y = 3.0f;
m_PetCameTable[0].CamLook.z = 0.0f;
m_PetCameTable[0].Scale = 6.0f;
//¹Ù¹Ù¸® »çÀÚ
m_PetCameTable[1].CamPos.x = 0.7f;
m_PetCameTable[1].CamPos.y = 3.0f;
m_PetCameTable[1].CamPos.z = -5.2f;
m_PetCameTable[1].CamLook.x = -2.2f;
m_PetCameTable[1].CamLook.y = 2.5f;
m_PetCameTable[1].CamLook.z = 1.0f;
m_PetCameTable[1].Scale = 6.0f;
//Åä³¢
m_PetCameTable[2].CamPos.x = 2.0f;
m_PetCameTable[2].CamPos.y = 2.2f;
m_PetCameTable[2].CamPos.z = -4.0f;
m_PetCameTable[2].CamLook.x = -2.2f;
m_PetCameTable[2].CamLook.y = 1.0f;
m_PetCameTable[2].CamLook.z = 3.0f;
m_PetCameTable[2].Scale = 7.0f;
//±¸¹ÌÈ£
m_PetCameTable[3].CamPos.x = 1.4f;
m_PetCameTable[3].CamPos.y = 4.2f;
m_PetCameTable[3].CamPos.z = -8.0f;
m_PetCameTable[3].CamLook.x = -2.2f;
m_PetCameTable[3].CamLook.y = 2.0f;
m_PetCameTable[3].CamLook.z = 3.0f;
m_PetCameTable[3].Scale = 6.0f;
//»õ³¢ µå·¡°ï
m_PetCameTable[4].CamPos.x = 1.4f;
m_PetCameTable[4].CamPos.y = 6.8f;
m_PetCameTable[4].CamPos.z = -6.0f;
m_PetCameTable[4].CamLook.x = -2.0f;
m_PetCameTable[4].CamLook.y = 6.0f;
m_PetCameTable[4].CamLook.z = 3.0f;
m_PetCameTable[4].Scale = 5.5f;
//»õ³¢ ±×¸®ÇÉ
m_PetCameTable[5].CamPos.x = 3.0f;
m_PetCameTable[5].CamPos.y = 6.0f;
m_PetCameTable[5].CamPos.z = -12.0f;
m_PetCameTable[5].CamLook.x = -2.0f;
m_PetCameTable[5].CamLook.y = 3.0f;
m_PetCameTable[5].CamLook.z = 3.0f;
m_PetCameTable[5].Scale = 4.5f;
//À¯´ÏÄÜ
m_PetCameTable[6].CamPos.x = 4.0f;
m_PetCameTable[6].CamPos.y = 3.0f;
m_PetCameTable[6].CamPos.z = -10.0f;
m_PetCameTable[6].CamLook.x = -6.0f;
m_PetCameTable[6].CamLook.y = 6.0f;
m_PetCameTable[6].CamLook.z = 3.0f;
m_PetCameTable[6].Scale = 5.0f;
}
void CWndPetStatus::MakeGaugeVertex()
{
LPWNDCTRL lpHP = GetWndCtrl( WIDC_CUSTOM2 );
LPWNDCTRL lpExp = GetWndCtrl( WIDC_CUSTOM3 );
if( m_pPetElem != NULL && m_pPetElem->m_pPet != NULL )
{
CRect rect = GetClientRect();
CRect rectTemp;
int nWidthClient = lpHP->rect.Width();
int nWidth;
// HP
nWidth = nWidthClient * m_pPetElem->m_pPet->GetEnergy() / m_pPetElem->m_pPet->GetMaxEnergy();
if( m_nHPWidth != nWidth )
{
m_nHPWidth = nWidth;
rect = lpHP->rect;
rectTemp = rect;
rectTemp.right = rectTemp.left + nWidth;
ClientToScreen( rectTemp );
m_bVBHPGauge = m_pTheme->MakeGaugeVertex( m_pApp->m_pd3dDevice, &rectTemp, 0x64ff0000, m_pVBHPGauge, &m_texGauFillNormal );
}
// Exp
nWidth = (int)( ( (float) nWidthClient / m_pPetElem->m_pPet->GetMaxExp() ) * m_pPetElem->m_pPet->GetExp() );
if( m_nEXPWidth != nWidth )
{
m_nEXPWidth = nWidth;
rect = lpExp->rect;
rectTemp = rect;
rectTemp.right = rectTemp.left + nWidth;
ClientToScreen( rectTemp );
m_bVBEXPGauge = m_pTheme->MakeGaugeVertex( m_pApp->m_pd3dDevice, &rectTemp, 0x847070ff, m_pVBEXPGauge, &m_texGauFillNormal );
}
}
}
void CWndPetStatus::PaintFrame( C2DRender* p2DRender )
{
if(!IsValidObj(g_pPlayer))
return;
CRect rect = GetWindowRect();
if( g_pPlayer->HasActivatedSystemPet() )
{
m_pPetElem = g_pPlayer->GetPetItem();
if( m_pTexture && m_pPetElem != NULL && m_pPetElem->m_pPet != NULL)
{
RenderWnd();
// ¿©±â´Â ŸÀÌÆ² ¹ÙÀÇ ÅØ½ºÆ®¸¦ Ãâ·ÂÇÏ´Â °÷
if( IsWndStyle( WBS_CAPTION ) )
{
int y = 4;
CD3DFont* pOldFont = p2DRender->GetFont();
p2DRender->SetFont( CWndBase::m_Theme.m_pFontWndTitle );
p2DRender->TextOut( 10, y, m_strTitle, m_dwColor );
char szNameLevel[128] = {0,};
ItemProp* pProp = m_pPetElem->GetProp();
CString strName = pProp->szName;
if( m_pPetElem->m_pPet->GetLevel() > PL_EGG )
{
MoverProp* pMoverProp = prj.GetMoverProp( m_pPetElem->m_pPet->GetIndex() );
if( pMoverProp )
strName = pMoverProp->szName;
}
#ifdef __PET_1024
if( m_pPetElem->m_pPet->HasName() )
strName = m_pPetElem->m_pPet->GetName();
#endif // __PET_1024
sprintf( szNameLevel, "%s", strName );
SetTitle( szNameLevel );
p2DRender->SetFont( pOldFont );
}
}
else
{
m_pTheme->RenderWndBaseFrame( p2DRender, &rect );
if( IsWndStyle( WBS_CAPTION ) )
{
// ŸÀÌÆ² ¹Ù
rect.bottom = 21;
{
m_pTheme->RenderWndBaseTitleBar( p2DRender, &rect, m_strTitle, m_dwColor );
}
}
}
}
}
void CWndPetStatus: rawPetInformation(C2DRender* p2DRender)
{
// Draw Bg Text
p2DRender->TextOut( 74, 4, prj.GetText(TID_GAME_PET_STATUS_LEVEL), D3DCOLOR_ARGB(255, 74, 74, 173), D3DCOLOR_ARGB(255, 160, 160, 240));
p2DRender->TextOut( 74, 18, prj.GetText(TID_GAME_PET_STATUS_ABILITY), D3DCOLOR_ARGB(255, 74, 74, 173), D3DCOLOR_ARGB(255, 160, 160, 240));
p2DRender->TextOut( 74, 46, prj.GetText(TID_GAME_PET_STATUS_HP), D3DCOLOR_ARGB(255, 74, 74, 173), D3DCOLOR_ARGB(255, 160, 160, 240));
p2DRender->TextOut( 74, 61, prj.GetText(TID_GAME_PET_STATUS_EXP), D3DCOLOR_ARGB(255, 74, 74, 173), D3DCOLOR_ARGB(255, 160, 160, 240));
DWORD dwColor = D3DCOLOR_ARGB(255, 255, 28, 174);
if(m_pPetElem->m_pPet)
{
int nLevel = m_pPetElem->m_pPet->GetLevel();
CString strTemp;
DWORD dwLevelText;
switch(nLevel)
{
case PL_EGG:
dwLevelText = TID_GAME_PETGRADE_E;
break;
case PL_D:
dwLevelText = TID_GAME_PETGRADE_D;
break;
case PL_C:
dwLevelText = TID_GAME_PETGRADE_C;
break;
case PL_B:
dwLevelText = TID_GAME_PETGRADE_B;
break;
case PL_A:
dwLevelText = TID_GAME_PETGRADE_A;
break;
case PL_S:
dwLevelText = TID_GAME_PETGRADE_S;
break;
}
strTemp.Format( "%s", prj.GetText(dwLevelText) );
p2DRender->TextOut( 112, 4, strTemp, dwColor);
DWORD dwDstParam;
int nParam;
DWORD dwTooltip;
m_pPetElem->m_pPet->GetAvailDestParam(dwDstParam, nParam);
switch(dwDstParam)
{
case DST_STR:
dwTooltip = TID_TOOLTIP_STR;
break;
case DST_DEX:
dwTooltip = TID_TOOLTIP_DEX;
break;
case DST_INT:
dwTooltip = TID_TOOLTIP_INT;
break;
case DST_STA:
dwTooltip = TID_TOOLTIP_STA;
break;
case DST_ATKPOWER:
dwTooltip = TID_TOOLTIP_ATKPOWER_VALUE;
break;
case DST_ADJDEF:
dwTooltip = TID_TOOLTIP_DEFENCE;
break;
case DST_HP_MAX:
dwTooltip = TID_TOOLTIP_HP;
break;
}
CSize size = g_Neuz.m_2DRender.m_pFont->GetTextExtent( prj.GetText(TID_GAME_PET_STATUS_ABILITY) );
if(dwDstParam != 0 && nParam != 0)
strTemp.Format("%s +%d", prj.GetText(dwTooltip), nParam);
else
strTemp.Format("%s", prj.GetText(TID_GAME_PET_EGG_ABILITY));
p2DRender->TextOut( 76 + size.cx, 18, strTemp, dwColor); //'Ability'ÀÚ°£ÀÌ ³Ð¾î °ãÄ¡´Â ±¹°¡ ¹ß»ýÇÏ¿© À§Ä¡ Á¶Á¤
int nLife = m_pPetElem->m_pPet->GetLife();
strTemp.Format("%d", nLife);
p2DRender->TextOut( 100, 32, strTemp, dwColor);
if(m_bExtension)
{
//Draw Level Background Image
CPoint point;
point = CPoint( GetWndCtrl( WIDC_CUSTOM4 )->rect.left-2, GetWndCtrl( WIDC_CUSTOM4 )->rect.top-2 );
if(m_pTexPetLvBg != NULL)
m_pTexPetLvBg->Render( p2DRender, point );
//Draw Level Image
dwColor = D3DCOLOR_ARGB(255, 0, 0, 0);
for(int i=PL_D; i<=nLevel; i++)
{
BYTE bLevel = m_pPetElem->m_pPet->GetAvailLevel(i);
if(bLevel != 0)
{
if(m_aPetLv[i] != bLevel)
{
CString strPath;
if(m_nLockLevel[0] == i)
strPath = m_strPathLvImage[m_nBackUpLevel[0]-1];
else if(m_nLockLevel[1] == i)
strPath = m_strPathLvImage[m_nBackUpLevel[1]-1];
else
strPath = m_strPathLvImage[bLevel-1];
m_pTexPetLv[i] = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, strPath, 0xffff00ff );
m_aPetLv[i] = bLevel;
}
if(m_pTexPetLv[i] != NULL)
{
if(m_nChoiceLevel == i)
m_pTexPetLv[i]->Render( p2DRender, point );
else
m_pTexPetLv[i]->Render( p2DRender, point, 120 );
}
point.x += 35;
}
}
}
}
}
void CWndPetStatus::OnDraw(C2DRender* p2DRender)
{
if( g_pPlayer == NULL || m_pPetElem == NULL || m_pPetElem->m_pPet == NULL )
return;
//Draw Status Background Image
CPoint point;
point = CPoint( GetWndCtrl( WIDC_CUSTOM1 )->rect.left-12, GetWndCtrl( WIDC_CUSTOM1 )->rect.top-6 );
if(m_pTexPetStatusBg != NULL)
m_pTexPetStatusBg->Render( p2DRender, point );
CRect rect = GetClientRect();
int nWidthClient = GetClientRect().Width() - 110;
CRect rectTemp;
LPWNDCTRL lpFace = GetWndCtrl( WIDC_CUSTOM1 );
LPWNDCTRL lpHP = GetWndCtrl( WIDC_CUSTOM2 );
LPWNDCTRL lpExp = GetWndCtrl( WIDC_CUSTOM3 );
MakeGaugeVertex();
if( m_bVBHPGauge )
{
int nMax = m_pPetElem->m_pPet->GetMaxEnergy();
int nHitPercent = MulDiv( m_pPetElem->m_pPet->GetEnergy(), 100, nMax );
#if __VER < 9 // __S_9_ADD
if( nHitPercent < CRITICAL_BERSERK_HP )
m_bHPVisible = !m_bHPVisible;
else
#endif // __S_9_ADD
m_bHPVisible = TRUE;
if( m_bHPVisible )
m_pTheme->RenderGauge( p2DRender->m_pd3dDevice, m_pVBHPGauge, &m_texGauFillNormal );
}
if( m_bVBEXPGauge )
m_pTheme->RenderGauge( p2DRender->m_pd3dDevice, m_pVBEXPGauge, &m_texGauFillNormal );
//Pet Information
DrawPetInformation(p2DRender);
if( m_nDisplay != 0 )
{
DWORD dwColor = D3DCOLOR_ARGB(255, 255, 255, 255);
char cbufHp[16] = {0,};
char cbufExp[16] = {0,};
int nCharHP, nCharEXP;
if(m_nDisplay == 1)
{
int nMax = m_pPetElem->m_pPet->GetMaxEnergy();
int nHitPercent = MulDiv( m_pPetElem->m_pPet->GetEnergy(), 100, nMax );
wsprintf(cbufHp, "%d%%", nHitPercent);
p2DRender->TextOut( lpHP->rect.right - 70, lpHP->rect.top - 0, cbufHp, dwColor, 0xff000000 );
nCharHP = wsprintf(cbufHp, "%dp", m_pPetElem->m_pPet->GetEnergy());
int x = lpHP->rect.right-7;
p2DRender->TextOut( x - (int)(nCharHP*5.8f) , lpHP->rect.top - 0, cbufHp, dwColor, 0xff000000 );
}
else
{
nCharHP = wsprintf(cbufHp, "%d", m_pPetElem->m_pPet->GetEnergy());
int x = lpHP->rect.right - 76 + 15;
p2DRender->TextOut( x - (int)(nCharHP*2.6f), lpHP->rect.top - 0, cbufHp, dwColor, 0xff000000 );
nCharHP = wsprintf(cbufHp, "%d", m_pPetElem->m_pPet->GetMaxEnergy());
x = lpHP->rect.right - 38 + 15;
p2DRender->TextOut( x - nCharHP*2, lpHP->rect.top - 0, cbufHp, dwColor, 0xff000000 );
p2DRender->TextOut( lpHP->rect.right - 42, lpHP->rect.top - 0, "/", dwColor, 0xff000000 );
}
EXPINTEGER nExpResult = m_pPetElem->m_pPet->GetExp() * (EXPINTEGER)10000 / m_pPetElem->m_pPet->GetMaxExp();
float fExp = (float)nExpResult / 100.0f;
if( fExp >= 99.99f )
nCharEXP = sprintf( cbufExp, "99.99%%" ); // sprintfÇÔ¼ö ³»ºÎ¿¡¼* ¹Ý¿Ã¸²µÇ¾î 100.00À¸·Î Ç¥½ÃµÇ´Â °ÍÀ» ¸·±â À§Çؼ*
else
nCharEXP = sprintf( cbufExp, "%.2f%%", fExp );
int x = lpHP->rect.right-7; // -40
p2DRender->TextOut( x - (int)(nCharEXP*5.8f), lpExp->rect.top - 0, cbufExp, dwColor, 0xff000000 );
}
LPDIRECT3DDEVICE9 pd3dDevice = p2DRender->m_pd3dDevice;
pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0xffa08080, 1.0f, 0 ) ;
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
pd3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
// ºäÆ÷Æ® ¼¼ÆÃ
D3DVIEWPORT9 viewport;
viewport.X = p2DRender->m_ptOrigin.x + lpFace->rect.left;
viewport.Y = p2DRender->m_ptOrigin.y + lpFace->rect.top;
viewport.Width = lpFace->rect.Width();
viewport.Height = lpFace->rect.Height();
viewport.MinZ = 0.0f;
viewport.MaxZ = 1.0f;
pd3dDevice->SetViewport(&viewport);
// ÇÁ·ÎÁ§¼Ç
D3DXMATRIX matProj;
D3DXMatrixIdentity( &matProj );
FLOAT fAspect = ((FLOAT)viewport.Width) / (FLOAT)viewport.Height;
FLOAT fov = D3DX_PI/4.0f;//796.0f;
FLOAT h = cos(fov/2) / sin(fov/2);
FLOAT w = h * fAspect;
D3DXMatrixOrthoLH( &matProj, w, h, CWorld::m_fNearPlane - 0.01f, CWorld::m_fFarPlane );
pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
D3DXMATRIX matView;
// ¿ùµå
D3DXMATRIXA16 matWorld;
D3DXMATRIXA16 matScale;
D3DXMATRIXA16 matRot1, matRot2;
D3DXMATRIXA16 matTrans;
// ÃʱâÈ*
D3DXMatrixIdentity(&matScale);
D3DXMatrixIdentity(&matRot1);
D3DXMatrixIdentity(&matRot2);
D3DXMatrixIdentity(&matTrans);
D3DXMatrixIdentity(&matWorld);
//Æê Á¾·ù¿¡ µû¶ó ¼³Á¤.
D3DXVECTOR3 vecPos;
D3DXVECTOR3 vecLookAt;
float fScale = 1.0f;
if( m_pPetElem->m_pPet->GetLevel() == PL_EGG )
{
vecPos.x = 0.0f;
vecPos.y = 5.0f;
vecPos.z = -4.0f;
vecLookAt.x = 0.0f;
vecLookAt.y = 0.0f;
vecLookAt.z = 3.0f;
fScale = 5.0f;
}
else
{
int petkind = m_pPetElem->m_pPet->GetKind();
vecPos = m_PetCameTable[petkind].CamPos;
vecLookAt = m_PetCameTable[petkind].CamLook;
fScale = m_PetCameTable[petkind].Scale;
}
D3DXMatrixScaling(&matScale, fScale, fScale, fScale);
D3DXMatrixLookAtLH( &matView, &vecPos, &vecLookAt, &D3DXVECTOR3(0.0f,1.0f,0.0f) );
pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
D3DXMatrixMultiply(&matWorld,&matWorld,&matScale);
D3DXMatrixMultiply(&matWorld, &matWorld,&matRot1);
D3DXMatrixMultiply(&matWorld, &matWorld, &matTrans );
pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
// ·£´õ¸µ
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, CWorld::m_dwBgColor, 1.0f, 0 ) ;
//CModelObject* pPetModel = g_pPlayer->GetPetModel();
//if( pPetModel )
if(m_pPetModel != NULL)
{
// Pet LOD°¡ µé¾î°¬±â ¶§¹®¿¡ LodGroup setting.
if(g_pPlayer && g_pPlayer->m_pet.GetObj() )
{
float fDist = 50.0f;
switch( g_Option.m_nObjectDetail )
{
case 0 : fDist = 20.0f; break;
case 1 : fDist = 10.0f; break;
case 2 : fDist = 5.0f; break;
}
int nLevel = (int)( g_pPlayer->m_pet.GetObj()->m_fDistCamera / fDist );
if( nLevel >= 2 ) nLevel = 2;
if( nLevel < 0 )
{
//Error( "CMover::Render : %s, lod lv=%d %f", m_szName, nLevel, m_fDistCamera );
nLevel = 0;
}
m_pPetModel->SetGroup( nLevel );
}
::SetTransformView( matView );
::SetTransformProj( matProj );
int nMax = m_pPetElem->m_pPet->GetMaxEnergy();
int nHitPercent = MulDiv( m_pPetElem->m_pPet->GetEnergy(), 100, nMax );
#if __VER < 9 // __S_9_ADD
if( nHitPercent < CRITICAL_BERSERK_HP )
{
::SetLight( TRUE );
SetDiffuse( 1.0f, 0.3f, 0.3f );
D3DXVECTOR3 vDir( 0.0f, 1.0f, 0.0f );
SetAmbient( 0.55f, 0.55f, 0.55f );
SetLightVec( vDir );
}
else
#endif // __S_9_ADD
{
SetDiffuse( 0.0f, 0.0f, 0.0f );
SetAmbient( 1.0f, 1.0f, 1.0f );
}
m_pPetModel->SetTextureEx( m_pPetModel->m_pModelElem->m_nTextureEx );
m_pPetModel->Render(pd3dDevice, &matWorld);
SetDiffuse( 0.0f, 0.0f, 0.0f );
SetAmbient( 1.0f, 1.0f, 1.0f );
}
pd3dDevice->SetRenderState( D3DRS_ZENABLE, FALSE );
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
pd3dDevice->SetRenderState( D3DRS_FOGENABLE, FALSE );
}
HRESULT CWndPetStatus::RestoreDeviceObjects()
{
CWndBase::RestoreDeviceObjects();
if( m_pVBHPGauge == NULL )
{
m_pApp->m_pd3dDevice->CreateVertexBuffer( sizeof( TEXTUREVERTEX2 ) * 3 * 6, D3DUSAGE_WRITEONLY | D3DUSAGE_DYNAMIC, D3DFVF_TEXTUREVERTEX2, D3DPOOL_DEFAULT, &m_pVBHPGauge, NULL );
m_pApp->m_pd3dDevice->CreateVertexBuffer( sizeof( TEXTUREVERTEX2 ) * 3 * 6, D3DUSAGE_WRITEONLY | D3DUSAGE_DYNAMIC, D3DFVF_TEXTUREVERTEX2, D3DPOOL_DEFAULT, &m_pVBEXPGauge, NULL );
m_nHPWidth = -1;
m_nEXPWidth = -1;
}
return S_OK;
}
HRESULT CWndPetStatus::InvalidateDeviceObjects()
{
CWndBase::InvalidateDeviceObjects();
SAFE_RELEASE( m_pVBHPGauge );
SAFE_RELEASE( m_pVBEXPGauge );
SAFE_DELETE( m_pPetModel );
return S_OK;
}
HRESULT CWndPetStatus: eleteDeviceObjects()
{
CWndBase: eleteDeviceObjects();
return InvalidateDeviceObjects();
}
void CWndPetStatus::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
RestoreDeviceObjects();
m_texGauEmptyNormal.LoadTexture( m_pApp->m_pd3dDevice, MakePath( DIR_THEME, "GauEmptyNormal.bmp" ), 0xffff00ff, TRUE );
m_texGauFillNormal.LoadTexture( m_pApp->m_pd3dDevice, MakePath( DIR_THEME, "GauEmptyNormal.bmp" ), 0xffff00ff, TRUE );
m_pTexPetLvBg = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, MakePath( DIR_THEME, "PetLevelBg.tga"), 0xffff00ff );
m_pTexPetStatusBg = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, MakePath( DIR_THEME, "PetStatusBg.tga"), 0xffff00ff, TRUE );
// ÀåÂø, °ÔÀÌÁö¿¡ ³ª¿Ã ij¸¯ÅÍ ¿ÀºêÁ§Æ® ¼³Á¤
if( g_pPlayer->HasActivatedSystemPet() )
m_pPetElem = g_pPlayer->GetPetItem();
//Size Control
SetExtension(m_bExtension);
//Position Control
CWndStatus* pWndStatus = (CWndStatus*)GetWndBase( APP_STATUS1 );
if(pWndStatus != NULL)
{
CRect rectRoot = pWndStatus->GetWndRect();
CRect rect = GetWindowRect();
int x = rectRoot.right;
int y = rectRoot.top;
Move( CPoint(x, y));
}
else
{
CRect rectRoot = m_pWndRoot->GetLayoutRect();
CPoint point( rectRoot.left+192, rectRoot.top );
Move( point );
}
}
void CWndPetStatus::OnMouseWndSurface(CPoint point)
{
if(!m_bExtension || m_pPetElem->m_pPet == NULL)
return;
CRect baseRect = GetWndCtrl(WIDC_CUSTOM4)->rect;
CRect testRect;
BOOL bCheckChoice = FALSE;
testRect = baseRect;
testRect.right = testRect.left + 34;
int nLevel = m_pPetElem->m_pPet->GetLevel();
for(int i=PL_D; i<nLevel+1; i++)
{
if( testRect.PtInRect(point) )
{
CPoint point2 = point;
ClientToScreen( &point2 );
ClientToScreen( &testRect );
DWORD dwDstParam;
int nParam;
DWORD dwTooltip;
CString strTemp;
CEditString strEdit;
PPETAVAILPARAM pAvailParam = CPetProperty::GetInstance()->GetAvailParam( m_pPetElem->m_pPet->GetKind() );
dwDstParam = pAvailParam->dwDstParam;
nParam = pAvailParam->m_anParam[m_pPetElem->m_pPet->GetAvailLevel(i) - 1];
switch(dwDstParam)
{
case DST_STR:
dwTooltip = TID_TOOLTIP_STR;
break;
case DST_DEX:
dwTooltip = TID_TOOLTIP_DEX;
break;
case DST_INT:
dwTooltip = TID_TOOLTIP_INT;
break;
case DST_STA:
dwTooltip = TID_TOOLTIP_STA;
break;
case DST_ATKPOWER:
dwTooltip = TID_TOOLTIP_ATKPOWER_VALUE;
break;
case DST_ADJDEF:
dwTooltip = TID_TOOLTIP_DEFENCE;
break;
case DST_HP_MAX:
dwTooltip = TID_TOOLTIP_DST_HP_MAX;
break;
}
strTemp.Format( "%s +%d", prj.GetText(dwTooltip), nParam );
strEdit.AddString( strTemp, D3DCOLOR_XRGB(255, 0, 0) );
g_toolTip.PutToolTip(m_pPetElem->m_dwItemId, strEdit, &testRect, point2, 0 );
bCheckChoice = TRUE;
m_nChoiceLevel = i;
}
testRect.left = testRect.right;
testRect.right = testRect.left + 34;
}
if(!bCheckChoice)
m_nChoiceLevel = -1;
}
void CWndPetStatus::SetExtension(BOOL eflag)
{
CRect rect = GetWindowRect(TRUE);
if(eflag)
rect.bottom += 48;
else
rect.bottom -= 48;
SetWndRect(rect);
}
BOOL CWndPetStatus::Initialize(CWndBase* pWndParent,DWORD dwWndId)
{
return InitDialog( g_Neuz.GetSafeHwnd(), APP_PET_STATUS );
}
BOOL CWndPetStatus::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase )
{
return CWndNeuz::OnCommand( nID, dwMessage, pWndBase );
}
void CWndPetStatus::OnSize(UINT nType, int cx, int cy)
{
CWndNeuz::OnSize( nType, cx, cy );
}
void CWndPetStatus::SetWndRect( CRect rectWnd, BOOL bOnSize )
{
m_nHPWidth = -1;
m_nEXPWidth = -1;
CWndNeuz::SetWndRect( rectWnd, bOnSize );
}
void CWndPetStatus::OnLButtonUp(UINT nFlags, CPoint point)
{
}
void CWndPetStatus::OnLButtonDown(UINT nFlags, CPoint point)
{
if(++m_nDisplay > 2)
m_nDisplay = 0;
}
BOOL CWndPetStatus::OnEraseBkgnd(C2DRender* p2DRender)
{
return CWndBase::OnEraseBkgnd( p2DRender );
CRect rect = GetClientRect();
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
p2DRender->RenderFillRect( rect, D3DCOLOR_ARGB( 100, 0, 0, 0 ) );
return TRUE;
}
BOOL CWndPetStatus::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
if( nID == WIDC_BUTTON1 )
{
m_bExtension = !m_bExtension;
SetExtension(m_bExtension);
}
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
BOOL CWndPetStatus::Process()
{
if(!IsValidObj(g_pPlayer))
return FALSE;
// ÀåÂø, °ÔÀÌÁö¿¡ ³ª¿Ã ij¸¯ÅÍ ¿ÀºêÁ§Æ® ¼³Á¤
if( g_pPlayer->HasActivatedSystemPet() )
{
m_pPetElem = g_pPlayer->GetPetItem();
if( m_pPetElem != NULL )
{
if( g_pPlayer->GetPetModel() == NULL && m_pPetModel != NULL )
{
SAFE_DELETE(m_pPetModel);
}
else if( m_pPetElem->m_pPet != NULL && g_pPlayer->GetPetModel() != NULL && m_pPetModel == NULL )
{
m_pPetModel = new CModelObject;
m_pPetModel->InitDeviceObjects( g_Neuz.m_pd3dDevice );
CString textFile;
textFile.Format("Mvr_%s.chr", g_pPlayer->GetPetModel()->m_pModelElem->m_szName);
m_pPetModel->LoadBone( textFile );
textFile.Format("Mvr_%s.o3d", g_pPlayer->GetPetModel()->m_pModelElem->m_szName);
m_pPetModel->LoadElement( textFile, 0 );
m_pPetModel->m_pModelElem = g_pPlayer->GetPetModel()->m_pModelElem;
if( m_pPetElem->m_pPet->GetLevel() == PL_EGG )
textFile.Format("Mvr_%s_idle.ani", g_pPlayer->GetPetModel()->m_pModelElem->m_szName);
else
textFile.Format("Mvr_%s_stand.ani", g_pPlayer->GetPetModel()->m_pModelElem->m_szName);
m_pPetModel->LoadMotion( textFile );
}
}
}
if(m_pPetModel != NULL)
m_pPetModel->FrameMove();
return TRUE;
}
void CWndPetStatus::LockShowLevel(BOOL lFlag, int nLevel, int nPos)
{
if(lFlag)
{
m_nLockLevel[nPos] = nLevel;
if(m_pPetElem->m_pPet)
m_nBackUpLevel[nPos] = m_pPetElem->m_pPet->GetAvailLevel(nLevel);
}
else
{
m_nLockLevel[nPos] = -1;
m_nBackUpLevel[nPos] = -1;
CString strPath;
BYTE bLevel = m_pPetElem->m_pPet->GetAvailLevel(nLevel);
if(bLevel != 0)
{
strPath = m_strPathLvImage[bLevel-1];
m_pTexPetLv[nLevel] = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, strPath, 0xffff00ff );
}
}
}
//////////////////////////////////////////////////////////////////////////
// CWndFoodConfirm Class
//////////////////////////////////////////////////////////////////////////
CWndFoodConfirm::CWndFoodConfirm()
{
m_pItemElem = NULL;
m_pEdit = NULL;
m_nParent = 0;
}
CWndFoodConfirm::CWndFoodConfirm(int nParent)
{
m_pItemElem = NULL;
m_pEdit = NULL;
m_nParent = nParent;
}
CWndFoodConfirm::~CWndFoodConfirm()
{
}
void CWndFoodConfirm::SetItem(DWORD dwObjId)
{
m_pItemElem = (CItemElem*)g_pPlayer->GetItemId( dwObjId );
}
void CWndFoodConfirm::OnDraw( C2DRender* p2DRender )
{
LPCTSTR szNumber;
szNumber = m_pEdit->GetString();
int nNumber = atoi( szNumber );
if(m_pItemElem == NULL)
return;
if( m_pItemElem->m_nItemNum == 1 )
{
m_pEdit->SetString( "1" );
}
else
{
if( nNumber > 1000 ) // 0723
{
char szNumberbuf[16] = {0, };
nNumber = 1000;
_itoa( 1000, szNumberbuf, 10 );
m_pEdit->SetString( szNumberbuf );
}
else if( m_pItemElem->m_nItemNum < nNumber )
{
char szNumberbuf[16] = {0, };
nNumber = m_pItemElem->m_nItemNum;
_itoa( m_pItemElem->m_nItemNum, szNumberbuf, 10 );
m_pEdit->SetString( szNumberbuf );
}
for( int i = 0 ; i < 8 ; i++ )
{
char szNumberbuf[8] = {0, };
strncpy( szNumberbuf, szNumber, 8 );
// 0 : °ø¹é, 48 : ¼ýÀÚ 0, 57 : ¼ýÀÚ 9
if( 47 >= szNumberbuf[i] || szNumberbuf[i] >= 58 )
{
if( szNumberbuf[i] != 0 )
{
nNumber = m_pItemElem->m_nItemNum;
_itoa( m_pItemElem->m_nItemNum, szNumberbuf, 10 );
m_pEdit->SetString( szNumberbuf );
break;
}
}
}
}
}
void CWndFoodConfirm::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
// ¿©±â¿¡ ÄÚµùÇϼ¼¿ä
m_pEdit = (CWndEdit *)GetDlgItem( WIDC_EDIT1 );
CWndButton* pWndOk = (CWndButton *)GetDlgItem( WIDC_OK );
pWndOk->SetDefault( TRUE );
m_pEdit->SetFocus();
if(m_pItemElem == NULL)
{
Destroy();
return;
}
if( m_pItemElem->m_nItemNum == 1 )
{
m_pEdit->SetString( "1" );
}
else
{
TCHAR szNumber[ 64 ];
if( m_pItemElem->m_nItemNum > 1000 ) // 0723
_itot( 1000, szNumber, 10 );
else
_itot( m_pItemElem->m_nItemNum, szNumber, 10 );
m_pEdit->SetString( szNumber );
}
CWndStatic* pStatic = (CWndStatic*)GetDlgItem(WIDC_STATIC1);
if(m_nParent == 1)
pStatic->SetTitle(prj.GetText(TID_GAME_PETFOOD_COUNTCONFIR M));
else if(m_nParent == 2)
pStatic->SetTitle(prj.GetText(TID_GAME_ITEMCOUNT_QUESTION) );
// À©µµ¸¦ Áß¾ÓÀ¸·Î ¿Å±â´Â ºÎºÐ.
MoveParentCenter();
}
// óÀ½ ÀÌ ÇÔ¼ö¸¦ ºÎ¸£¸é À©µµ°¡ ¿*¸°´Ù.
BOOL CWndFoodConfirm::Initialize( CWndBase* pWndParent, DWORD /*dwWndId*/ )
{
// Daisy¿¡¼* ¼³Á¤ÇÑ ¸®¼Ò½º·Î À©µµ¸¦ ¿¬´Ù.
return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_PET_ITEM, 0, CPoint( 0, 0 ), pWndParent );
}
BOOL CWndFoodConfirm::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase )
{
return CWndNeuz::OnCommand( nID, dwMessage, pWndBase );
}
void CWndFoodConfirm::OnSize( UINT nType, int cx, int cy ) \
{
CWndNeuz::OnSize( nType, cx, cy );
}
void CWndFoodConfirm::OnLButtonUp( UINT nFlags, CPoint point )
{
}
void CWndFoodConfirm::OnLButtonDown( UINT nFlags, CPoint point )
{
}
BOOL CWndFoodConfirm::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
if( nID == WIDC_OK || message == EN_RETURN )
{
short DropNum = 0;
if(m_pItemElem != NULL)
{
if( m_pItemElem->m_nItemNum >= 1 )
{
DropNum = atoi( m_pEdit->GetString() );
}
if( DropNum != 0 && DropNum <= 1000 ) // 0723
{
if(m_nParent == 1) //Pet Food
{
//Send to Server...
#if __VER < 12 // __PET_0519
g_DPlay.SendUsePetFeed(m_pItemElem->m_dwObjId, DropNum);
#endif // __PET_0519
//PLAYSND( "Feed.wav" );
}
else if(m_nParent == 2) //Food Mill
{
CWndPetFoodMill* pWndPetFoodMill = (CWndPetFoodMill*)g_WndMng.GetWndBase(APP_PET_FOOD MILL);
if(pWndPetFoodMill != NULL)
pWndPetFoodMill->SetItemForFeed(m_pItemElem, DropNum);
}
}
}
Destroy();
}
else if( nID == WIDC_CANCEL )
{
Destroy();
}
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
void CWndFoodConfirm::PaintFrame( C2DRender* p2DRender )
{
CRect rect = GetWindowRect();
if( m_pTexture )
{
RenderWnd();
// ¿©±â´Â ŸÀÌÆ² ¹ÙÀÇ ÅØ½ºÆ®¸¦ Ãâ·ÂÇÏ´Â °÷
if( IsWndStyle( WBS_CAPTION ) )
{
int y = 4;
CD3DFont* pOldFont = p2DRender->GetFont();
p2DRender->SetFont( CWndBase::m_Theme.m_pFontWndTitle );
p2DRender->TextOut( 10, y, m_strTitle, m_dwColor );
char szNameLevel[128] = {0,};
if(m_nParent == 1)
sprintf( szNameLevel, "%s", prj.GetText(TID_GAME_PETFOOD_CONFIRM) );
else if(m_nParent == 2)
sprintf( szNameLevel, "%s", prj.GetText(TID_GAME_ITEMCOUNT_CONFIRM) );
SetTitle( szNameLevel );
p2DRender->SetFont( pOldFont );
}
}
else
{
m_pTheme->RenderWndBaseFrame( p2DRender, &rect );
if( IsWndStyle( WBS_CAPTION ) )
{
// ŸÀÌÆ² ¹Ù
rect.bottom = 21;
{
m_pTheme->RenderWndBaseTitleBar( p2DRender, &rect, m_strTitle, m_dwColor );
}
}
}
}
//////////////////////////////////////////////////////////////////////////
// CWndPetMiracle Class
//////////////////////////////////////////////////////////////////////////
CWndPetMiracle::CWndPetMiracle()
{
m_nCount[0] = 0;
m_nDelay[0] = 1;
m_nStatus[0] = -1;
m_nCount[1] = 0;
m_nDelay[1] = 1;
m_nStatus[1] = -1;
m_nPreLvCount = -1;
m_nCurLvCount = -1;
m_nResPreLevel = -1;
m_nResCurLevel = -1;
m_nPetLevel = -1;
m_dwObjId = -1;
m_bReciveResult[0] = FALSE;
m_bReciveResult[1] = FALSE;
m_bEnd = FALSE;
m_pText = NULL;
m_bLocked[0] = FALSE;
m_bLocked[1] = FALSE;
m_strPathLvImage[0] = MakePath( DIR_ICON, "Icon_PetLevel1_L.dds");
m_strPathLvImage[1] = MakePath( DIR_ICON, "Icon_PetLevel2_L.dds");
m_strPathLvImage[2] = MakePath( DIR_ICON, "Icon_PetLevel3_L.dds");
m_strPathLvImage[3] = MakePath( DIR_ICON, "Icon_PetLevel4_L.dds");
m_strPathLvImage[4] = MakePath( DIR_ICON, "Icon_PetLevel5_L.dds");
m_strPathLvImage[5] = MakePath( DIR_ICON, "Icon_PetLevel6_L.dds");
m_strPathLvImage[6] = MakePath( DIR_ICON, "Icon_PetLevel7_L.dds");
m_strPathLvImage[7] = MakePath( DIR_ICON, "Icon_PetLevel8_L.dds");
m_strPathLvImage[8] = MakePath( DIR_ICON, "Icon_PetLevel9_L.dds");
}
CWndPetMiracle::~CWndPetMiracle()
{
}
void CWndPetMiracle::OnDestroy()
{
CWndPetStatus* pWndStatus = (CWndPetStatus*)g_WndMng.GetWndBase( APP_PET_STATUS );
if(pWndStatus != NULL && m_bLocked[0])
{
pWndStatus->LockShowLevel(FALSE, m_nPetLevel-1, 0);
m_bLocked[0] = FALSE;
}
if(pWndStatus != NULL && m_bLocked[1])
{
pWndStatus->LockShowLevel(FALSE, m_nPetLevel, 1);
m_bLocked[1] = FALSE;
}
}
void CWndPetMiracle::OnDraw( C2DRender* p2DRender )
{
CTexture* pTexture;
CString strPath;
CEditString strEdit;
//·¹º§ ÅØ½ºÆ® ±×¸®±â.
strEdit.SetString(m_strPetLevel[0], D3DCOLOR_XRGB( 255, 255, 255 ), ESSTY_BOLD);
p2DRender->TextOut_EditString(GetWndCtrl( WIDC_STATIC1 )->rect.left + 8, GetWndCtrl( WIDC_STATIC1 )->rect.top + 3, strEdit);
strEdit.SetString(m_strPetLevel[1], D3DCOLOR_XRGB( 255, 255, 255 ), ESSTY_BOLD);
p2DRender->TextOut_EditString(GetWndCtrl( WIDC_STATIC2 )->rect.left + 8, GetWndCtrl( WIDC_STATIC2 )->rect.top + 3, strEdit);
//ÀÌÀü ·¹º§ÀÇ Æ¯¼ºÄ¡ ·¹º§ À̹ÌÁö ±×¸®±â.
if(m_bReciveResult[0])
strPath = m_strPathLvImage[m_nPreLvCount];
else
strPath = m_strPathLvImage[m_nMiracleLv[0] - 1];
if(strPath.GetLength() > 0)
{
pTexture = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, strPath, 0xffff00ff );
if(pTexture != NULL)
pTexture->Render( p2DRender, CPoint( GetWndCtrl( WIDC_STATIC3 )->rect.left, GetWndCtrl( WIDC_STATIC3 )->rect.top + 4 ) );
}
//ÇöÀç ·¹º§ÀÇ Æ¯¼ºÄ¡ ·¹º§ À̹ÌÁö ±×¸®±â.
if(m_bReciveResult[1])
strPath = m_strPathLvImage[m_nCurLvCount];
else
strPath = m_strPathLvImage[m_nMiracleLv[1] - 1];
if(strPath.GetLength() > 0)
{
pTexture = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, strPath, 0xffff00ff );
if(pTexture != NULL)
pTexture->Render( p2DRender, CPoint( GetWndCtrl( WIDC_STATIC4 )->rect.left, GetWndCtrl( WIDC_STATIC4 )->rect.top + 4 ) );
}
}
void CWndPetMiracle::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
// ¹Ì±¹ ¹öư À̹ÌÁö º¯°æ
CWndButton* pWndButton = (CWndButton*)GetDlgItem(WIDC_BUTTON2);
if(pWndButton)
{
if(::GetLanguage() == LANG_ENG || ::GetLanguage() == LANG_VTN)
pWndButton->SetTexture( m_pApp->m_pd3dDevice, MakePath( "Theme\\", ::GetLanguage(), "ButChance.bmp" ), 0xffff00ff );
}
//B/A/S ±Þ Æê¸¸ ÇØ´ç ±â´ÉÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
if( g_pPlayer->HasActivatedSystemPet() )
{
CItemElem* m_pPetElem = g_pPlayer->GetPetItem();
m_nPetLevel = m_pPetElem->m_pPet->GetLevel();
if(m_pPetElem->m_pPet != NULL && (m_nPetLevel == PL_B || m_nPetLevel == PL_A || m_nPetLevel == PL_S))
{
switch(m_nPetLevel)
{
case PL_B:
m_strPetLevel[0] = prj.GetText(TID_GAME_PET_GRADE_C); //"Lv. C"
m_strPetLevel[1] = prj.GetText(TID_GAME_PET_GRADE_B); //"Lv. B"
break;
case PL_A:
m_strPetLevel[0] = prj.GetText(TID_GAME_PET_GRADE_B); //"Lv. B"
m_strPetLevel[1] = prj.GetText(TID_GAME_PET_GRADE_A); //"Lv. A"
break;
case PL_S:
m_strPetLevel[0] = prj.GetText(TID_GAME_PET_GRADE_A); //"Lv. A"
m_strPetLevel[1] = prj.GetText(TID_GAME_PET_GRADE_S); //"Lv. S"
break;
}
m_nMiracleLv[0] = m_pPetElem->m_pPet->GetAvailLevel(m_nPetLevel-1);
m_nMiracleLv[1] = m_pPetElem->m_pPet->GetAvailLevel(m_nPetLevel);
m_nPreLvCount = m_nMiracleLv[0] - 1;
m_nCurLvCount = m_nMiracleLv[1] - 1;
m_pText = (CWndText *)GetDlgItem( WIDC_TEXT_DESC );
SetDescription(NULL);
CWndButton* pButton;
pButton = (CWndButton*)GetDlgItem( WIDC_OK );
pButton->EnableWindow(FALSE);
pButton->SetVisible(FALSE);
//¸¸¾à StatusâÀÌ È°¼ºÈ*µÈ »óŶó¸é ·¹º§°ªÀÌ º¯ÇÏÁö ¾Êµµ·Ï °íÁ¤À» ¿äûÇÏÀÚ.
CWndPetStatus* pWndStatus = (CWndPetStatus*)g_WndMng.GetWndBase( APP_PET_STATUS );
if(pWndStatus != NULL)
{
pWndStatus->LockShowLevel(TRUE, m_nPetLevel-1, 0);
pWndStatus->LockShowLevel(TRUE, m_nPetLevel, 1);
m_bLocked[0] = m_bLocked[1] = TRUE;
}
MoveParentCenter();
}
else
Destroy();
}
else
Destroy();
}
BOOL CWndPetMiracle::Initialize( CWndBase* pWndParent, DWORD /*dwWndId*/ )
{
// Daisy¿¡¼* ¼³Á¤ÇÑ ¸®¼Ò½º·Î À©µµ¸¦ ¿¬´Ù.
return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_PET_MIRACLE, 0, CPoint( 0, 0 ), pWndParent );
}
BOOL CWndPetMiracle::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
if(message == WNM_CLICKED)
{
if(nID == WIDC_BUTTON2)
{
CWndButton* pButton;
pButton = (CWndButton*)GetDlgItem( WIDC_BUTTON2 );
pButton->EnableWindow(FALSE);
//Send to Server
if(m_dwObjId != -1)
g_DPlay.SendPetTamerMiracle(m_dwObjId);
}
else if(nID == WIDC_OK || nID == WIDC_CLOSE)
Destroy();
}
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
void CWndPetMiracle::ReceiveResult(int nPreLevel, int nCurLevel)
{
m_nResPreLevel = nPreLevel;
m_nResCurLevel = nCurLevel;
m_nMiracleLv[0] = m_nResPreLevel;
m_nMiracleLv[1] = m_nResCurLevel;
m_nStatus[0] = 0;
m_nStatus[1] = 0;
m_bReciveResult[0] = TRUE;
m_bReciveResult[1] = TRUE;
}
void CWndPetMiracle::SetItem(DWORD dwObjId)
{
m_dwObjId = dwObjId;
}
BOOL CWndPetMiracle::Process()
{
//Start¹öư ´©¸¦ °æ¿ì ÄÄÇ»ÅÍÀÇ ¼±ÅÃÀÌ È¸ÀüÇϵµ·Ï ÇÔ.
PreLevelImgProcess();
CurLevelImgProcess();
return TRUE;
}
void CWndPetMiracle::PreLevelImgProcess()
{
if(m_nStatus[0] == 0)
{
if(m_nCount[0]%4 == 0)
{
if(m_nCount[0] > 60)
{
m_nCount[0] = 0;
m_nStatus[0] = 1;
}
else
{
PLAYSND( "InfOpen.wav" );
int randnum = rand() % 9;
if(randnum == m_nPreLvCount)
{
randnum++;
( randnum > 8 ) ? randnum = 0 : randnum;
}
m_nPreLvCount = randnum;
}
}
m_nCount[0]++;
}
else if(m_nStatus[0] == 1)
{
if(m_nCount[0] > m_nDelay[0])
{
if(m_nDelay[0] < 10)
{
PLAYSND( "InfOpen.wav" );
m_nDelay[0] += 1;
}
else
{
PLAYSND( "InfOpen.wav" );
//ÃʱâÈ* ¹× »óÅÂâÀÌ ¿*·ÁÀÖÀ» °æ¿ì »óÅÂâÀÇ Level LockÀ» Ǭ´Ù.
m_nPreLvCount = m_nResPreLevel;
m_nStatus[0] = -1;
m_nDelay[0] = 1;
m_nCount[0] = 0;
m_bReciveResult[0] = FALSE;
m_bEnd = TRUE;
CWndPetStatus* pWndStatus = (CWndPetStatus*)g_WndMng.GetWndBase( APP_PET_STATUS );
if(pWndStatus != NULL && m_bLocked[0])
{
pWndStatus->LockShowLevel(FALSE, m_nPetLevel-1, 0);
m_bLocked[0] = FALSE;
}
}
int randnum = rand() % 9;
if(randnum == m_nPreLvCount)
{
randnum++;
( randnum > 8 ) ? randnum = 0 : randnum;
}
m_nPreLvCount = randnum;
m_nCount[0] = 0;
}
m_nCount[0]++;
}
}
void CWndPetMiracle::CurLevelImgProcess()
{
if(m_nStatus[1] == 0)
{
if(m_nCount[1]%4 == 0)
{
if(m_nCount[1] > 80)
{
m_nCount[1] = 0;
m_nStatus[1] = 1;
}
else
{
PLAYSND( "InfOpen.wav" );
int randnum = rand() % 9;
if(randnum == m_nCurLvCount)
{
randnum++;
( randnum > 8 ) ? randnum = 0 : randnum;
}
m_nCurLvCount = randnum;
}
}
m_nCount[1]++;
}
else if(m_nStatus[1] == 1)
{
if(m_nCount[1] > m_nDelay[1])
{
if(m_nDelay[1] < 20)
{
PLAYSND( "InfOpen.wav" );
m_nDelay[1] += 1;
}
else
{
PLAYSND( "InfOpen.wav" );
//ÃʱâÈ* ¹× »óÅÂâÀÌ ¿*·ÁÀÖÀ» °æ¿ì »óÅÂâÀÇ Level LockÀ» Ǭ´Ù.
m_nCurLvCount = m_nResCurLevel;
m_nStatus[1] = -1;
m_nDelay[1] = 1;
m_nCount[1] = 0;
m_bReciveResult[1] = FALSE;
m_bEnd = TRUE;
CWndPetStatus* pWndStatus = (CWndPetStatus*)g_WndMng.GetWndBase( APP_PET_STATUS );
if(pWndStatus != NULL && m_bLocked[1])
{
pWndStatus->LockShowLevel(FALSE, m_nPetLevel, 1);
m_bLocked[1] = FALSE;
}
CWndButton* pButton;
pButton = (CWndButton*)GetDlgItem( WIDC_BUTTON2 );
pButton->SetVisible(FALSE);
pButton = (CWndButton*)GetDlgItem( WIDC_OK );
pButton->SetVisible(TRUE);
pButton->EnableWindow(TRUE);
}
int randnum = rand() % 9;
if(randnum == m_nCurLvCount)
{
randnum++;
( randnum > 8 ) ? randnum = 0 : randnum;
}
m_nCurLvCount = randnum;
m_nCount[1] = 0;
}
m_nCount[1]++;
}
}
void CWndPetMiracle::SetDescription( CHAR* szChar )
{
CScript scanner;
BOOL checkflag;
checkflag = scanner.Load( MakePath( DIR_CLIENT, _T( "PetMiracle.inc" ) ));
szChar = scanner.m_pProg;
if(m_pText != NULL && checkflag)
{
m_pText->m_string.AddParsingString( szChar );
m_pText->ResetString();
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CWndPetFoodMill Class
////////////////////////////////////////////////////////////////////////////////////////////////////////////
CWndPetFoodMill::CWndPetFoodMill()
{
m_dwObjId = NULL_ID;
m_pItemElem = NULL;
m_pWndFoodConfrim = NULL;
m_pTexture = NULL;
}
CWndPetFoodMill::~CWndPetFoodMill()
{
}
void CWndPetFoodMill::OnDestroy()
{
if(m_pItemElem != NULL)
{
if( !g_pPlayer->m_vtInfo.IsTrading( m_pItemElem ) )
m_pItemElem->SetExtra(0);
m_pItemElem = NULL;
}
if(m_pWndFoodConfrim != NULL)
m_pWndFoodConfrim->Destroy();
}
void CWndPetFoodMill::OnDraw(C2DRender* p2DRender)
{
//Draw Food
ItemProp* pItemProp;
if(m_pItemElem != NULL)
{
pItemProp = m_pItemElem->GetProp();
if(pItemProp != NULL)
{
CPoint point;
point.x = GetWndCtrl( WIDC_STATIC2 )->rect.left;
point.y = GetWndCtrl( WIDC_STATIC2 )->rect.top;
if(m_pTexture != NULL)
m_pTexture->Render( p2DRender, point );
TCHAR szTemp[ 32 ];
_stprintf( szTemp, prj.GetText(TID_GAME_KWAIBAWIBO_PRESENT_NUM), m_nItemCount );
CSize size = m_p2DRender->m_pFont->GetTextExtent( szTemp );
m_p2DRender->TextOut( point.x + 36 - size.cx, point.y + 48 - size.cy, szTemp, 0xff0000ff );
}
}
}
void CWndPetFoodMill::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
CWndStatic* pStatic = (CWndStatic*)GetDlgItem(WIDC_STATIC1);
pStatic->SetTitle(prj.GetText(TID_GAME_PETFOODMILL_DESC) );
#if __VER >= 15 // __IMPROVE_SYSTEM_VER15
CWndInventory* pWndInventory = (CWndInventory*)g_WndMng.CreateApplet(APP_INVENTOR Y);
#endif // __IMPROVE_SYSTEM_VER15
MoveParentCenter();
}
BOOL CWndPetFoodMill::Initialize(CWndBase* pWndParent,DWORD dwWndId)
{
return InitDialog( g_Neuz.GetSafeHwnd(), APP_PET_FOODMILL );
}
BOOL CWndPetFoodMill::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
if(nID == WIDC_OK)
{
if(m_pItemElem != NULL)
{
ItemProp* pItemProp = m_pItemElem->GetProp();
// if( ( pItemProp->dwParts != NULL_ID || pItemProp->dwItemKind3 == IK3_GEM ) && m_pItemElem->IsCharged() == FALSE && pItemProp->dwCost > 0 )
// if( pItemProp && (pItemProp->dwItemKind1 == IK1_WEAPON || pItemProp->dwReferStat1 == IK1_ARMOR ||
// pItemProp->dwItemKind3 == IK3_GEM) && pItemProp->dwCost > 0)
if( pItemProp->dwItemKind3 == IK3_GEM && m_pItemElem->IsCharged() == FALSE && pItemProp->dwCost > 0 )
{
//Send to Server...
g_DPlay.SendMakePetFeed(m_pItemElem->m_dwObjId, (short)m_nItemCount, m_dwObjId);
}
else
g_WndMng.PutString( prj.GetText(TID_GAME_NOTFOOD), NULL, prj.GetTextColor(TID_GAME_NOTFOOD) );
}
}
else if(nID == WIDC_CANCEL || nID == WTBID_CLOSE)
Destroy();
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
void CWndPetFoodMill::OnLButtonDblClk( UINT nFlags, CPoint point )
{
CRect rect;
LPWNDCTRL wndCtrl = GetWndCtrl( WIDC_STATIC2 );
rect = wndCtrl->rect;
if( m_pItemElem != NULL && rect.PtInRect( point ) )
{
m_pItemElem->SetExtra(0);
m_pItemElem = NULL;
}
}
BOOL CWndPetFoodMill::OnDropIcon( LPSHORTCUT pShortcut, CPoint point )
{
#if __VER >= 11
CWndBase* pWndFrame = pShortcut->m_pFromWnd->GetFrameWnd();
if( pWndFrame && pWndFrame->GetWndId() == APP_BAG_EX )
{
g_WndMng.OpenMessageBox( _T( prj.GetText(TID_GAME_ERROR_FOOD_MILL_POCKET) ) );
return FALSE;
}
#endif //__VER >= 11
CItemElem* pTempElem;
pTempElem = (CItemElem*)g_pPlayer->GetItemId( pShortcut->m_dwId );
LPWNDCTRL wndCtrl = GetWndCtrl( WIDC_STATIC2 );
if( wndCtrl->rect.PtInRect( point ) )
{
if(pTempElem != NULL)
{
if(m_pItemElem != NULL)
{
if( !g_pPlayer->m_vtInfo.IsTrading( m_pItemElem ) )
m_pItemElem->SetExtra(0);
m_pItemElem = NULL;
}
SAFE_DELETE( m_pWndFoodConfrim );
m_pWndFoodConfrim = new CWndFoodConfirm(2);
m_pWndFoodConfrim->m_pItemElem = pTempElem;
m_pWndFoodConfrim->Initialize(NULL);
}
}
return TRUE;
}
void CWndPetFoodMill::SetItem(DWORD dwObjId)
{
m_dwObjId = dwObjId;
}
void CWndPetFoodMill::SetItemForFeed(CItemElem* pItemElem, int nCount)
{
if(pItemElem != NULL)
{
m_pItemElem = pItemElem;
m_nItemCount = nCount;
m_pItemElem->SetExtra( nCount );
ItemProp* pItemProp = m_pItemElem->GetProp();
if(pItemProp != NULL)
m_pTexture = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, MakePath( DIR_ITEM, pItemProp->szIcon), 0xffff00ff );
}
}
void CWndPetFoodMill::ReceiveResult(int nResult, int nCount)
{
switch(nResult)
{
case 0:
g_WndMng.PutString( prj.GetText(TID_GAME_LACKSPACE), NULL, prj.GetTextColor(TID_GAME_LACKSPACE) );
break;
case 1:
CString strtmp;
strtmp.Format(prj.GetText(TID_GAME_PETFEED_MAKE), nCount);
g_WndMng.PutString( strtmp, NULL, prj.GetTextColor(TID_GAME_PETFEED_MAKE) );
if(m_pItemElem != NULL)
{
if( !g_pPlayer->m_vtInfo.IsTrading( m_pItemElem ) )
m_pItemElem->SetExtra(0);
m_pItemElem = NULL;
}
if(m_pTexture != NULL)
m_pTexture = NULL;
break;
}
}
//////////////////////////////////////////////////////////////////////////
// CWndPetLifeConfirm
//////////////////////////////////////////////////////////////////////////
CWndPetLifeConfirm::CWndPetLifeConfirm()
{
m_nId = -1;
}
CWndPetLifeConfirm::~CWndPetLifeConfirm()
{
}
void CWndPetLifeConfirm::OnDestroy()
{
}
void CWndPetLifeConfirm::SetItem(int nId)
{
m_nId = nId;
}
void CWndPetLifeConfirm::OnDraw( C2DRender* p2DRender )
{
}
void CWndPetLifeConfirm::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
// ¿©±â¿¡ ÄÚµùÇϼ¼¿ä
CRect rect = GetClientRect();
int x = m_rectClient.Width() / 2;
int y = m_rectClient.Height() - 30;
CSize size = CSize(60,25);
CRect rect2_1( x - size.cx - 10, y, ( x - size.cx - 10 ) + size.cx, y + size.cy );
CRect rect2_2( x + 10 , y, ( x + 10 ) + size.cx, y + size.cy );
rect.DeflateRect( 10, 10, 10, 35 );
m_wndText.AddWndStyle( WBS_VSCROLL );
m_wndText.Create( WBS_NODRAWFRAME, rect, this, 0 );
m_strText = prj.GetText( TID_GAME_PET_USELIFE );
m_wndText.SetString( m_strText, 0xff000000 );
m_wndText.ResetString();
m_wndButton1.Create("YES" , 0, rect2_1, this, IDYES);
m_wndButton2.Create("NO", 0, rect2_2, this, IDNO);
m_wndButton1.SetTexture( m_pApp->m_pd3dDevice, MakePath( DIR_THEME, "ButtYes.tga" ) );
m_wndButton2.SetTexture( m_pApp->m_pd3dDevice, MakePath( DIR_THEME, "ButtNo.tga" ) );
m_wndButton1.FitTextureSize();
m_wndButton2.FitTextureSize();
MoveParentCenter();
}
// óÀ½ ÀÌ ÇÔ¼ö¸¦ ºÎ¸£¸é À©µµ°¡ ¿*¸°´Ù.
BOOL CWndPetLifeConfirm::Initialize( CWndBase* pWndParent, DWORD dwWndId )
{
// Daisy¿¡¼* ¼³Á¤ÇÑ ¸®¼Ò½º·Î À©µµ¸¦ ¿¬´Ù.
return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_MESSAGEBOX, 0, CPoint( 0, 0 ), pWndParent );
}
BOOL CWndPetLifeConfirm::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase )
{
return CWndNeuz::OnCommand( nID, dwMessage, pWndBase );
}
void CWndPetLifeConfirm::OnSize( UINT nType, int cx, int cy ) \
{
CWndNeuz::OnSize( nType, cx, cy );
}
void CWndPetLifeConfirm::OnLButtonUp( UINT nFlags, CPoint point )
{
}
void CWndPetLifeConfirm::OnLButtonDown( UINT nFlags, CPoint point )
{
}
BOOL CWndPetLifeConfirm::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
if( nID == IDYES )
{
//Send to Server..
if( m_nId != -1 )
g_DPlay.SendDoUseItem( MAKELONG( 0, m_nId ), NULL_ID, -1, FALSE);
}
else if( nID == IDNO )
{
//±×³É Á¾·á
}
Destroy();
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
#if __VER >= 12 // __CSC_VER12_5
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CWndPetTransEggs Class
////////////////////////////////////////////////////////////////////////////////////////////////////////////
CWndPetTransEggs::CWndPetTransEggs()
{
ResetEgg();
}
CWndPetTransEggs::~CWndPetTransEggs()
{
}
void CWndPetTransEggs::OnDestroy()
{
for(int i=0; i<MAX_TRANS_EGG; i++)
{
if(m_pItemElem[i] != NULL)
m_pItemElem[i]->SetExtra(0);
}
}
void CWndPetTransEggs::OnDraw( C2DRender* p2DRender )
{
LPWNDCTRL wndCtrl;
for(int i=0; i<MAX_TRANS_EGG; i++)
{
if(m_pItemElem[i] != NULL)
{
wndCtrl = GetWndCtrl( m_nCtrlId[i] );
m_pEggTexture->Render( p2DRender, CPoint( wndCtrl->rect.left, wndCtrl->rect.top ) );
}
}
}
void CWndPetTransEggs::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
// ¿©±â¿¡ ÄÚµùÇϼ¼¿ä
CWndButton* pButton = (CWndButton*)GetDlgItem(WIDC_OK);
pButton->EnableWindow(FALSE);
m_pText = (CWndText*)GetDlgItem( WIDC_TEXT1 );
m_nCtrlId[0] = WIDC_STATIC1;
m_nCtrlId[1] = WIDC_STATIC2;
m_nCtrlId[2] = WIDC_STATIC3;
m_nCtrlId[3] = WIDC_STATIC4;
m_nCtrlId[4] = WIDC_STATIC5;
m_nCtrlId[5] = WIDC_STATIC6;
m_nCtrlId[6] = WIDC_STATIC7;
m_nCtrlId[7] = WIDC_STATIC8;
m_nCtrlId[8] = WIDC_STATIC9;
m_nCtrlId[9] = WIDC_STATIC10;
ItemProp* pItemProp = prj.GetItemProp( II_PET_EGG );
if(pItemProp)
m_pEggTexture = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, MakePath( DIR_ITEM, pItemProp->szIcon), 0xffff00ff );
SetDescription(NULL);
MoveParentCenter();
}
// óÀ½ ÀÌ ÇÔ¼ö¸¦ ºÎ¸£¸é À©µµ°¡ ¿*¸°´Ù.
BOOL CWndPetTransEggs::Initialize( CWndBase* pWndParent, DWORD /*dwWndId*/ )
{
// Daisy¿¡¼* ¼³Á¤ÇÑ ¸®¼Ò½º·Î À©µµ¸¦ ¿¬´Ù.
return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_PET_TRANS_EGGS, 0, CPoint( 0, 0 ), pWndParent );
}
void CWndPetTransEggs::OnLButtonDblClk( UINT nFlags, CPoint point )
{
CRect rect;
for(int i=0; i<MAX_TRANS_EGG; i++)
{
LPWNDCTRL wndCtrl = GetWndCtrl( m_nCtrlId[i] );
if(wndCtrl)
{
rect = wndCtrl->rect;
if(rect.PtInRect( point ))
{
if(m_pItemElem[i])
{
m_pItemElem[i]->SetExtra(0);
m_pItemElem[i] = NULL;
CWndButton* pButton = (CWndButton*)GetDlgItem(WIDC_OK);
pButton->EnableWindow(FALSE);
}
}
}
}
}
void CWndPetTransEggs::OnMouseWndSurface(CPoint point)
{
CRect rect;
LPWNDCTRL wndCtrl;
for(int i=0; i<MAX_TRANS_EGG; i++)
{
if(m_pItemElem[i] != NULL)
{
wndCtrl = GetWndCtrl( m_nCtrlId[i] );
rect = wndCtrl->rect;
if( rect.PtInRect( point ) )
{
ClientToScreen( &point );
ClientToScreen( &rect );
g_WndMng.PutToolTip_Item( (CItemBase*)m_pItemElem[i], point, &rect );
}
}
}
}
BOOL CWndPetTransEggs::OnDropIcon( LPSHORTCUT pShortcut, CPoint point )
{
CRect rect;
CItemElem* pItemElem;
pItemElem = (CItemElem*)g_pPlayer->GetItemId( pShortcut->m_dwId );
if(g_pPlayer->IsUsing(pItemElem))
{
g_WndMng.PutString( prj.GetText( TID_GAME_TRANS_EGGS_ERROR2 ), NULL, prj.GetTextColor( TID_GAME_TRANS_EGGS_ERROR2 ) );
}
else
{
if( (pItemElem->GetProp()->dwItemKind3 == IK3_EGG && pItemElem->m_pPet == NULL) ||
(pItemElem->GetProp()->dwItemKind3 == IK3_EGG && pItemElem->m_pPet && pItemElem->m_pPet->GetLevel() == PL_EGG) )
{
if( IsUsableItem( pItemElem ) )
{
for(int i=0; i<MAX_TRANS_EGG; i++)
{
LPWNDCTRL wndCtrl = GetWndCtrl( m_nCtrlId[i] );
if(wndCtrl)
{
rect = wndCtrl->rect;
if(rect.PtInRect( point ))
{
if(m_pItemElem[i] == NULL)
{
m_pItemElem[i] = pItemElem;
m_pItemElem[i]->SetExtra(m_pItemElem[i]->GetExtra()+1);
}
}
}
}
CheckFull();
}
}
else
g_WndMng.PutString( prj.GetText( TID_GAME_TRANS_EGGS_ERROR1 ), NULL, prj.GetTextColor( TID_GAME_TRANS_EGGS_ERROR1 ) );
}
return TRUE;
}
void CWndPetTransEggs::SetItem(CItemElem* pItemElem)
{
int nEmpty = -1;
for(int i=0; i<MAX_TRANS_EGG; i++)
{
if(m_pItemElem[i] == NULL)
{
nEmpty = i;
i = MAX_TRANS_EGG;
}
}
if(nEmpty != -1)
{
m_pItemElem[nEmpty] = pItemElem;
m_pItemElem[nEmpty]->SetExtra(m_pItemElem[nEmpty]->GetExtra()+1);
}
CheckFull();
}
BOOL CWndPetTransEggs::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
if( nID == WIDC_OK )
{
CTransformStuff stuff( 0 );
for(int i=0; i<MAX_TRANS_EGG; i++)
stuff.AddComponent( m_pItemElem[i]->m_dwObjId, 1 );
g_DPlay.SendTransformItem( stuff );
Destroy();
}
else if( nID == WIDC_CANCEL )
{
Destroy();
}
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
void CWndPetTransEggs::SetDescription( CHAR* szChar )
{
CScript scanner;
BOOL checkflag;
checkflag = scanner.Load( MakePath( DIR_CLIENT, _T( "PetTransEggs.inc" ) ));
szChar = scanner.m_pProg;
if(m_pText != NULL && checkflag)
{
m_pText->m_string.AddParsingString( szChar );
m_pText->ResetString();
}
}
void CWndPetTransEggs::ResetEgg()
{
for(int i=0; i<MAX_TRANS_EGG; i++)
m_pItemElem[i] = NULL;
}
void CWndPetTransEggs::CheckFull()
{
BOOL bFull = TRUE;
for(int i=0; i<MAX_TRANS_EGG; i++)
{
if(m_pItemElem[i] == NULL)
{
bFull = FALSE;
i = MAX_TRANS_EGG;
}
}
if(bFull)
{
CWndButton* pButton = (CWndButton*)GetDlgItem(WIDC_OK);
pButton->EnableWindow(TRUE);
}
}
#endif //__CSC_VER12_5
#endif //__CSC_VER9_1
#if __VER >= 15 // __PETVIS
////////////////////////////////////////////////////////////////////////////////////////////////////
// CWndBuffPetStatus
////////////////////////////////////////////////////////////////////////////////////////////////////
CWndBuffPetStatus::CWndBuffPetStatus( )
{
m_pPetModel = NULL;
m_pWndConfirmVis = NULL;
for( int i = 0; i < MAX_VIS; ++i )
m_pItemElem[ i ] = NULL;
m_pTexPetStatusBg = NULL;
m_fRadius = 0.0f;
}
CWndBuffPetStatus::~CWndBuffPetStatus( )
{
DeleteDeviceObjects();
}
HRESULT CWndBuffPetStatus::RestoreDeviceObjects()
{
CWndBase::RestoreDeviceObjects();
return S_OK;
}
HRESULT CWndBuffPetStatus::InvalidateDeviceObjects()
{
CWndBase::InvalidateDeviceObjects();
SAFE_DELETE( m_pWndConfirmVis );
for( int i = 0; i < MAX_VIS; ++i )
{
SAFE_DELETE( m_pItemElem[ i ] );
}
return S_OK;
}
HRESULT CWndBuffPetStatus: eleteDeviceObjects()
{
CWndBase: eleteDeviceObjects();
return InvalidateDeviceObjects();
}
void CWndBuffPetStatus::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
RestoreDeviceObjects();
// ÀåÂø, °ÔÀÌÁö¿¡ ³ª¿Ã ij¸¯ÅÍ ¿ÀºêÁ§Æ® ¼³Á¤
//Position Control
CWndStatus* pWndStatus = (CWndStatus*)GetWndBase( APP_STATUS1 );
if(pWndStatus != NULL)
{
CRect rectRoot = pWndStatus->GetWndRect();
CRect rect = GetWindowRect();
int x = rectRoot.right;
int y = rectRoot.top;
CRect kWRect;
CWndWorld* pWndWorld = (CWndWorld*)g_WndMng.GetWndBase( APP_WORLD );
if( pWndWorld )
{
kWRect = pWndWorld->GetClientRect( );
if( ( x + rect.Width() ) > kWRect.right )
x = rectRoot.left - rect.Width();
}
Move( CPoint(x, y));
}
else
{
CRect rectRoot = m_pWndRoot->GetLayoutRect();
CPoint point( rectRoot.left+192, rectRoot.top );
Move( point );
}
m_nCtrlId[0] = WIDC_BUFFPET_SLOT1;
m_nCtrlId[1] = WIDC_BUFFPET_SLOT2;
m_nCtrlId[2] = WIDC_BUFFPET_SLOT3;
m_nCtrlId[3] = WIDC_BUFFPET_SLOT4;
m_nCtrlId[4] = WIDC_BUFFPET_SLOT5;
m_nCtrlId[5] = WIDC_BUFFPET_SLOT6;
m_nCtrlId[6] = WIDC_BUFFPET_SLOT7;
m_nCtrlId[7] = WIDC_BUFFPET_SLOT8;
#ifdef _PETFILTER_HOL_B
CWndButton* chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_1 );
chk->SetCheck(g_DPlay.bQuestItem);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_2 );
chk->SetCheck(g_DPlay.bWeapons);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_3 );
chk->SetCheck(g_DPlay.bArmor);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_4 );
chk->SetCheck(g_DPlay.bCard7);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_5 );
chk->SetCheck(g_DPlay.bFood);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_6 );
chk->SetCheck(g_DPlay.bEggs);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_7 );
chk->SetCheck(g_DPlay.bOri);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_8 );
chk->SetCheck(g_DPlay.bAccessory);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_9 );
chk->SetCheck(g_DPlay.bBeads);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_10);
chk->SetCheck(g_DPlay.bCard4);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_11);
chk->SetCheck(g_DPlay.bCardA);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_12);
chk->SetCheck(g_DPlay.bCardB);
chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_13);
chk->SetCheck(g_DPlay.bOri);
#endif
m_nCtrlId[8] = WIDC_BUFFPET_SLOT9;
m_pTexPetStatusBg = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, MakePath( DIR_THEME, "BuffpetStatusBg .tga"), 0xffff00ff, TRUE );
}
BOOL CWndBuffPetStatus::Initialize(CWndBase* pWndParent,DWORD dwWndId)
{
return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_BUFFPET_STATUS, 0, CPoint( 0, 0 ), pWndParent );
}
/*void CWndBuffPetStatus::PaintFrame( C2DRender* p2DRender )
{
if(!IsValidObj(g_pPlayer))
return;
CRect rect = GetWindowRect();
if( g_pPlayer->HasActivatedVisPet() )
{
RenderWnd();
CD3DFont* pOldFont = p2DRender->GetFont();
p2DRender->SetFont( CWndBase::m_Theme.m_pFontWndTitle );
p2DRender->TextOut( 10, 4, m_strTitle, m_dwColor );
p2DRender->SetFont( pOldFont );
}
}*/
void CWndBuffPetStatus::OnDraw(C2DRender* p2DRender)
{
if( g_pPlayer == NULL )
return;
//Draw slots
DrawSlotItems( p2DRender );
if( !m_pPetModel )
return;
CRect rect = GetClientRect();
int nWidthClient = GetClientRect().Width() - 110;
CRect rectTemp;
LPWNDCTRL lpFace = GetWndCtrl( WIDC_CUSTOM1 );
CPoint point;
point = CPoint( lpFace->rect.left-12, lpFace->rect.top-22 );
if(m_pTexPetStatusBg != NULL)
m_pTexPetStatusBg->Render( p2DRender, point );
LPDIRECT3DDEVICE9 pd3dDevice = p2DRender->m_pd3dDevice;
pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0xffa08080, 1.0f, 0 ) ;
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
pd3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
// pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
// pd3dDevice->SetRenderState( D3DRS_AMBIENT, D3DCOLOR_ARGB( 255, 255,255,255) );
// ºäÆ÷Æ® ¼¼ÆÃ
D3DVIEWPORT9 viewport;
viewport.X = p2DRender->m_ptOrigin.x + lpFace->rect.left;
viewport.Y = p2DRender->m_ptOrigin.y + lpFace->rect.top;
viewport.Width = lpFace->rect.Width();
viewport.Height = lpFace->rect.Height();
viewport.MinZ = 0.0f;
viewport.MaxZ = 1.0f;
pd3dDevice->SetViewport(&viewport);
// ÇÁ·ÎÁ§¼Ç
D3DXMATRIX matProj;
D3DXMatrixIdentity( &matProj );
FLOAT fAspect = ((FLOAT)viewport.Width) / (FLOAT)viewport.Height;
FLOAT fov = D3DX_PI/4.0f;//796.0f;
FLOAT h = cos(fov/2) / sin(fov/2);
FLOAT w = h * fAspect;
D3DXMatrixOrthoLH( &matProj, w, h, CWorld::m_fNearPlane - 0.01f, CWorld::m_fFarPlane );
pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
D3DXMATRIX matView;
// ¿ùµå
D3DXMATRIXA16 matWorld;
D3DXMATRIXA16 matScale;
D3DXMATRIXA16 matRot1, matRot2;
D3DXMATRIXA16 matTrans;
// ÃʱâÈ*
D3DXMatrixIdentity(&matScale);
D3DXMatrixIdentity(&matRot1);
D3DXMatrixIdentity(&matRot2);
D3DXMatrixIdentity(&matTrans);
D3DXMatrixIdentity(&matWorld);
//Æê Á¾·ù¿¡ µû¶ó ¼³Á¤.
D3DXVECTOR3 vecPos;
D3DXVECTOR3 vecLookAt;
float fScale = 1.0f;
CMover* pMoverPet = prj.GetMover( g_pPlayer->GetEatPetId( ) );
if( !pMoverPet )
return;
CModelObject* pModel = (CModelObject *)pMoverPet->m_pModel;
CObject3D* pObj3D = pModel->GetObject3D( );
if( !pObj3D )
return;
//CModelObject¿¡´Â À̺¥Æ® ÁÂÇ¥°¡ ¾ø´Âµ¥ CObject3D´Â ÀÖ°í?
vecPos = pObj3D->m_vEvent[ 0 ];
// mdldyna.inc¿¡¼* ½ºÄÉÀÏÀ» Á¶Á¤ÇѰæ¿ì ±×¿¡ ¸Â°Ô º¸Á¤À» ÇØÁִµ¥, ¾î¶² ¿ø¸®ÀÎÁö ³»°¡ ÇßÁö¸¸ ÀÌ»óÇÔ. ³ªÁß¿¡ ´Ù½Ã Á¤È®È÷ Àâ¾Æº¼±î?
float fModelScale = pModel->m_pModelElem->m_fScale;
if( fModelScale < 1.0f && fModelScale > 0.001f )
vecPos *= ( fModelScale - fModelScale * (0.5f + ( 1.0f - fModelScale ) * 0.01f ) ); //½ºÄÉÀÏ º¯µ¿Ä¡°¡ Ŭ¼ö·Ï
else if ( fModelScale > 1.0f )
vecPos *= ( fModelScale - fModelScale * (0.9f + fModelScale * 0.01f) );
m_fRadius = pModel->GetRadius( );
vecPos.x += 0.5f;
vecPos.y += 1.8f;
vecPos.z -= ( 3.0f ); //* fRadius );
vecLookAt.x = -0.24f;
vecLookAt.y = 0.28f;
vecLookAt.z = 1.0f;
fScale = (1 / m_fRadius ) * 1.5f; // ( 2.0f * fRadius );
D3DXMatrixScaling(&matScale, fScale, fScale, fScale);
D3DXMatrixLookAtLH( &matView, &vecPos, &vecLookAt, &D3DXVECTOR3(0.0f,1.0f,0.0f) );
pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
D3DXMatrixMultiply(&matWorld,&matWorld,&matScale);
D3DXMatrixMultiply(&matWorld, &matWorld,&matRot1);
D3DXMatrixMultiply(&matWorld, &matWorld, &matTrans );
pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
// ·£´õ¸µ
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, CWorld::m_dwBgColor, 1.0f, 0 ) ;
::SetTransformView( matView );
::SetTransformProj( matProj );
//gmpbigsun : À©µµ ÆäÀ̽º °íÁ¤¶óÀÌÆ®
::SetLight( FALSE );
::SetFog( FALSE );
SetDiffuse( 1.0f, 1.0f, 1.0f );
SetAmbient( 1.0f, 1.0f, 1.0f );
m_pPetModel->SetTextureEx( m_pPetModel->m_pModelElem->m_nTextureEx );
m_pPetModel->Render(pd3dDevice, &matWorld);
// SetDiffuse( 0.0f, 0.0f, 0.0f );
// SetAmbient( 1.0f, 1.0f, 1.0f );
pd3dDevice->SetRenderState( D3DRS_ZENABLE, FALSE );
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
pd3dDevice->SetRenderState( D3DRS_FOGENABLE, FALSE );
}
BOOL CWndBuffPetStatus::Process()
{
if(!IsValidObj(g_pPlayer))
return FALSE;
// ÀåÂø, °ÔÀÌÁö¿¡ ³ª¿Ã ij¸¯ÅÍ ¿ÀºêÁ§Æ® ¼³Á¤
if( g_pPlayer->HasActivatedVisPet( ) )
{
CMover* pMyBuffPet = NULL;
if( !m_pPetModel )
{
pMyBuffPet = prj.GetMover( g_pPlayer->GetEatPetId( ) );
if( pMyBuffPet )
{
lstrcpy( pMyBuffPet->m_szCharacterKey, "MaFl_BuffPet" );
m_pPetModel = (CModelObject*)pMyBuffPet->GetModel( ); // ¹öÇÁÆêÀÌ »ý¼ºµÆ´Ù¸é ¸ðµ¨°øÀ¯
//¹öÇÁÆê ¸ðµ¨ÀÌ ÁغñµÇ¸é ŸÀÌÆ² (ÆêÀ̸§) ¼¼ÆÃ!
m_strTitle = pMyBuffPet->GetName( );
}
else
return TRUE;
}
}
return TRUE;
}
void CWndBuffPetStatus::UpdateVisState( )
{
if( g_pPlayer )
m_cVisStates = g_pPlayer->GetValidVisTable( g_pPlayer->GetVisPetItem( ) );
}
BOOL CWndBuffPetStatus::OnDropIcon( LPSHORTCUT pShortcut, CPoint point )
{
CWndBase* pWndFrame = pShortcut->m_pFromWnd->GetFrameWnd();
if( !pWndFrame )
{
assert( 0 );
return FALSE;
}
int selectedSlot = GetSlotIndexByPoint( point );
if( selectedSlot < 0 )
return FALSE;
if( !IsFreeSlot( selectedSlot ) )
return FALSE;
if( APP_INVENTORY == pWndFrame->GetWndId( ) ) // Àκ¥¿¡¼* ¿Â ¾ÆÀÌÅÛÀº Á¶°Ç°Ë»ç
{
CItemElem* pItem = g_pPlayer->m_Inventory.GetAtId( pShortcut->m_dwId );
if( !IsUsableItem( pItem ) )
return FALSE;
if( !pItem->GetProp( )->IsVis( ) )
return FALSE;
}
if( pWndFrame->GetWndId( ) != APP_INVENTORY )
{
if( APP_BUFFPET_STATUS == pWndFrame->GetWndId( ) ) //°°Àº â ³»¿¡¼* À̵¿ÀÏ °æ¿ì
{
int selectedSlot = GetSlotIndexByPoint( point );
if( selectedSlot < 0 )
return FALSE;
if( pShortcut->m_dwData == selectedSlot ) // ¾ÆÀÌÄÜÀ» °°ÀºÀÚ¸®¿¡ ³õ¾Ò´Ù.
return FALSE;
//½º¿Ò¿äû
g_DPlay.SendSwapVis( pShortcut->m_dwData, selectedSlot );
}
return TRUE;
}
//È®ÀÎâ ¶ç¿öÁÖ°í È®ÀÎâ¿¡¼* OK½Ã SendDoUseItem
if( APP_INVENTORY == pWndFrame->GetWndId( ) )
DoModal_ConfirmQuestion( pShortcut->m_dwId, g_pPlayer->GetId(), ((CItemElem*)pShortcut->m_dwData)->m_dwItemId );
else
DoModal_ConfirmQuestion( pShortcut->m_dwId, g_pPlayer->GetId(), pShortcut->m_dwIndex );
return TRUE;
}
BOOL CWndBuffPetStatus::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase )
{
return CWndNeuz::OnCommand( nID, dwMessage, pWndBase );
}
BOOL CWndBuffPetStatus::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
#ifdef _PETFILTER_HOL_B
switch ( nID )
{
case WIDC_BUFFCKECK_1:
{
g_DPlay.bQuestItem = !g_DPlay.bQuestItem;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_2:
{
g_DPlay.bWeapons = !g_DPlay.bWeapons;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_3:
{
g_DPlay.bArmor = !g_DPlay.bArmor;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_4:
{
g_DPlay.bCard7 = !g_DPlay.bCard7;
g_DPlay.SendBuffPetCollectUpdate();
break; }
case WIDC_BUFFCKECK_5:
{
g_DPlay.bFood = !g_DPlay.bFood;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_6:
{
g_DPlay.bEggs = !g_DPlay.bEggs;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_7:
{
g_DPlay.bOri = !g_DPlay.bOri;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCKECK_8:
{
g_DPlay.bAccessory = !g_DPlay.bAccessory;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCHECK_9:
{
g_DPlay.bBeads = !g_DPlay.bBeads;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCHECK_10:
{
g_DPlay.bCard4 = !g_DPlay.bCard4;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCHECK_11:
{
g_DPlay.bCardA = !g_DPlay.bCardA;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCHECK_12:
{
g_DPlay.bCardB = !g_DPlay.bCardB;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_BUFFCHECK_13:
{
g_DPlay.bMoon = !g_DPlay.bMoon;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
}
#endif
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
void CWndBuffPetStatus::OnDestroy()
{
for(int i=0; i<MAX_VIS; i++)
{
// if(m_pItemElem[i] != NULL)
// m_pItemElem[i]->SetExtra(0);
SAFE_DELETE( m_pItemElem[ i ] );
}
}
//ºñ½º´Â ÇÊ¿äºñ½ºÀÇ È°¼ºÈ* ¿©ºÎ¿¡ µû¶ó ÀÚ±âÀÇ È°¼ºÈ* ¿©ºÎ°¡ °áÁ¤µÇ¹Ç·Î
//Àç±Í°Ë»ç·Î Leaf±îÁö Ž»öÇÑ´Ù.
//ÁÖ¼®È* µÇÀÖ´Â ºÎºÐÀº ´Ü¼øÈ÷ ÇÊ¿äºñ½º°¡ ÀÖ´Ù¸é ¸ðµç ÇÊ¿äºñ½º¸¦ ã¾Æ¼* ÀåÂøµÇ¾îÀÖ´ÂÁö °Ë»çÇÑ´Ù.
//ÇöÀç´Â ¼*¹ö¿Í °°Àº ÇÔ¼ö¸¦ »ç¿ëÇÔ.
/*BOOL IsEquipedVis( DWORD visIndex )
{
CItemElem* pPetItem = g_pPlayer->GetVisPetItem( );
if( !pPetItem )
return FALSE;
// gmpbigsun: ºñ½º¸¦ Âø¿ëÇϰí Àִ°¡?
for( int i = 0; i < MAX_VIS; ++i )
{
DWORD dwIndex = pPetItem->GetPiercingItem( i );
if( dwIndex == visIndex )
return TRUE;
}
return FALSE;
}
BOOL IsValidIndex( DWORD dwIndex )
{
return ( 0 != dwIndex && NULL_ID != dwIndex );
}
BOOL GetRequireVis( vector< DWORD >& cNeedVises, DWORD visIndex )
{
if( !IsValidIndex( visIndex ) )
return FALSE;
ItemProp* pProp = prj.GetItemProp( visIndex );
if( !pProp )
return FALSE;
DWORD dwNeeds[2] = { pProp->dwReferTarget1, pProp->dwReferTarget2 };
BOOL bRequire1 = TRUE;
BOOL bRequire2 = TRUE;
cNeedVises.push_back( visIndex );
if( !IsValidIndex( dwNeeds[ 0 ] ) && !IsValidIndex( dwNeeds[ 1 ] ) ) // ÇÊ¿äºñ½º°¡ ¾ø´Ù¸é
return TRUE;
if( IsValidIndex( dwNeeds[ 0 ] ) ) //ÇÊ¿äºñ½º°¡ ÀÖ´Ù!
{
cNeedVises.push_back( dwNeeds[ 0 ] );
bRequire1 = GetRequireVis( cNeedVises, dwNeeds[ 0 ] ); //ÇÊ¿äºñ½º ÀúÀå
}
if( !bRequire1 )
return FALSE;
if( IsValidIndex( dwNeeds[ 1 ] ) )
{
cNeedVises.push_back( dwNeeds[ 1 ] );
bRequire2 = GetRequireVis( cNeedVises, dwNeeds[ 1 ] );
}
if( !bRequire2 )
return FALSE;
if( bRequire1 && bRequire2 )
return TRUE;
return TRUE;
}
BOOL IsEquipedRequireVis( CItemElem* pPetItem, DWORD visIndex, BOOL bSelfCheck )
{
//gmpbigsun: ÇØ´ç ºñ½ºÀÇ ÇÊ¿ä ºñ½º¸¦ ¸ðµÎ Âø¿ëÇϰí ÀÖ°í Ȱ¼ºÈ* µÇ¾î Àִ°¡?
//algorithm : ÇÊ¿ä ºñ½º¿¡ ´ëÇÑ Á¤º¸¸¦ ¸ðÀºÈÄ ¸ðµÎ ÀåÂøµÇ¾îÀÖ´ÂÁö °Ë»ç
if( !IsValidIndex( visIndex ) )
return FALSE;
ItemProp* pProp = prj.GetItemProp( visIndex );
if( !pProp )
return FALSE;
vector< DWORD > cNeedVis;
if( bSelfCheck )
cNeedVis.push_back( visIndex );
GetRequireVis( cNeedVis, pProp->dwReferTarget1 );
GetRequireVis( cNeedVis, pProp->dwReferTarget2 );
for( vector< DWORD >::iterator iter = cNeedVis.begin(); iter != cNeedVis.end(); ++iter )
{
if( !IsEquipedVis( *iter ) )
return FALSE;
}
return TRUE;
}*/
void CWndBuffPetStatus: rawSlotItems( C2DRender* p2DRender )
{
if( !g_pPlayer )
return;
CItemElem* pItem = g_pPlayer->GetVisPetItem();
if( !pItem )
return;
int nAvailableSlot = pItem->GetPiercingSize( );
if( nAvailableSlot > MAX_VIS )
return;
UpdateVisState( );
LPWNDCTRL wndCtrl = NULL;
for( int i=0; i<MAX_VIS; ++i )
{
if( i < nAvailableSlot )
{
DWORD dwItemIndex = pItem->GetPiercingItem( i );
ItemProp* pProp = prj.GetItemProp( dwItemIndex );
if( !pProp )
continue;
m_pTexture[ i ] = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, MakePath( DIR_ITEM, pProp->szIcon), 0xffff00ff );
if(m_pTexture[ i ] != NULL)
{
DWORD color = ( m_cVisStates[i] == SUCCSESS_NEEDVIS ? 0xffffffff : 0x4fffffff );
wndCtrl = GetWndCtrl( m_nCtrlId[i] );
if( wndCtrl )
{
CPoint pt2 = CPoint( wndCtrl->rect.left, wndCtrl->rect.top );
m_pTexture[ i ]->Render2( p2DRender, CPoint( wndCtrl->rect.left, wndCtrl->rect.top ), color );
}
}
}
else
{
//»ç¿ëºÒ°¡´É ½½·Ô
wndCtrl = GetWndCtrl( m_nCtrlId[i] );
CTexture* pTexClosed = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, MakePath( DIR_ICON, "Icon_Lock.dds" ), 0xffff00ff );
if( pTexClosed )
pTexClosed->Render( p2DRender, CPoint( wndCtrl->rect.left, wndCtrl->rect.top ) );
}
}
}
BOOL CWndBuffPetStatus: oModal_ConfirmQuestion( DWORD dwItemId, OBJID dwObjid, DWORD dwIndex, int nSlot, CWndConfirmVis::ConfirmVisSection eSection )
{
SAFE_DELETE( m_pWndConfirmVis );
m_pWndConfirmVis = new CWndConfirmVis;
m_pWndConfirmVis->m_dwItemId = dwItemId;
m_pWndConfirmVis->m_objid = dwObjid;
m_pWndConfirmVis->m_nSlot = nSlot;
m_pWndConfirmVis->m_eSection = eSection;
m_pWndConfirmVis->m_dwItemIndex = dwIndex;
m_pWndConfirmVis->Initialize( this, APP_CONFIRM_ENTER );
return TRUE;
}
int CWndBuffPetStatus::GetSlotIndexByPoint( const CPoint& point )
{
LPWNDCTRL wndCtrl = NULL;
CRect rect;
for( int i = 0; i < MAX_VIS; ++i )
{
wndCtrl = GetWndCtrl( m_nCtrlId[i] ); // ½½·ÔÀ¸·Î ¸¸µé¾îÁø À©µµ¿ì¿¡ ´ëÇÏ¿©
rect = wndCtrl->rect;
if( rect.PtInRect( point ) )
return i;
}
return -1;
}
void CWndBuffPetStatus::OnLButtonDown( UINT nFlags, CPoint point )
{
//ÇØ´ç ½½·ÔÀ» ÆÇº°Çؼ* Á¤º¸¸¦ shortcut¿¡ ³Ö¾îÁØ´Ù.
LPWNDCTRL wndCtrl = NULL;
CRect rect;
int selectedSlot = GetSlotIndexByPoint( point );
if( selectedSlot < 0 )
return;
CItemElem* pItem = g_pPlayer->GetVisPetItem();
if( !pItem )
return;
DWORD dwItemIndex = pItem->GetPiercingItem( selectedSlot ); // Ŭ¸¯À» ÇßÀ¸³ª ºñ½º°¡ ¾ø´Â ½½·ÔÀº ÆÐ½º
if( 0 == dwItemIndex )
return;
assert( selectedSlot >= 0 && selectedSlot < MAX_VIS );
assert( m_pTexture[ selectedSlot ] );
m_GlobalShortcut.m_pFromWnd = this;
m_GlobalShortcut.m_dwShortcut = SHORTCUT_ITEM;
m_GlobalShortcut.m_dwType = ITYPE_ITEM;
m_GlobalShortcut.m_dwId = 0;
m_GlobalShortcut.m_dwIndex = dwItemIndex;
m_GlobalShortcut.m_pTexture = m_pTexture[ selectedSlot ];
m_GlobalShortcut.m_dwData = selectedSlot;
}
void CWndBuffPetStatus::OnLButtonDblClk( UINT nFlags, CPoint point)
{
//ÆÄ±«
int selectedSlot = GetSlotIndexByPoint( point );
if( selectedSlot < 0 )
return;
CItemElem* pItem = g_pPlayer->GetVisPetItem();
if( !pItem )
return;
DWORD dwItemIndex = pItem->GetPiercingItem( selectedSlot ); // Ŭ¸¯À» ÇßÀ¸³ª ºñ½º°¡ ¾ø´Â ½½·ÔÀº ÆÐ½º
if( 0 == dwItemIndex )
return;
DoModal_ConfirmQuestion( 0, 0, dwItemIndex, selectedSlot, CWndConfirmVis::CVS_UNEQUIP_VIS );
}
BOOL CWndBuffPetStatus::IsVisItem( DWORD index )
{
ItemProp* pProp = prj.GetItemProp( index );
if( !pProp )
return FALSE;
return pProp->IsVis();
}
BOOL CWndBuffPetStatus::IsFreeSlot( const int index )
{
CItemElem* pItem = g_pPlayer->GetVisPetItem();
if( !pItem )
return FALSE;
int nAvailableSlot = pItem->GetPiercingSize( );
return ( index < nAvailableSlot );
}
void CWndBuffPetStatus::OnMouseWndSurface( CPoint point )
{
CRect rect;
LPWNDCTRL wndCtrl = NULL;
CItemElem* pItem = g_pPlayer->GetVisPetItem( );
assert( pItem );
if( pItem->GetPiercingSize( ) == 0 )
return;
for(int i=0; i<MAX_VIS; i++)
{
wndCtrl = GetWndCtrl( m_nCtrlId[i] );
rect = wndCtrl->rect;
if( rect.PtInRect( point ) )
{
ClientToScreen( &point );
ClientToScreen( &rect );
DWORD dwIndex = pItem->GetPiercingItem( i );
if( 0 != dwIndex )
{
if( NULL == m_pItemElem[ i ] )
m_pItemElem[ i ] = new CItemElem;
m_pItemElem[ i ]->m_dwItemId = dwIndex;
time_t endTime = pItem->GetVisKeepTime( i );
//DWORD remainTime = endTime - timeGetTime( );
m_pItemElem[ i ]->m_dwKeepTime = endTime;
}else
{
SAFE_DELETE( m_pItemElem[ i ] );
continue;
}
g_WndMng.PutToolTip_Item( (CItemBase*)m_pItemElem[i], point, &rect );
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//CWndConfirmVis : ºñ½º ²Å°í »¬¶§ È®ÀÎâ
//////////////////////////////////////////////////////////////////////////////////////////////////
CWndConfirmVis::CWndConfirmVis()
{
m_dwItemId = NULL_ID;
m_objid = NULL_ID;
m_nSlot = 0;
m_dwItemIndex = 0;
m_eSection = CVS_EQUIP_VIS;
}
CWndConfirmVis::~CWndConfirmVis()
{
}
void CWndConfirmVis::OnDraw( C2DRender* p2DRender )
{
}
void CWndConfirmVis::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
CWndButton* pOk = (CWndButton*)GetDlgItem( WIDC_BUTTON1 );
CWndButton* pCancel = (CWndButton*)GetDlgItem( WIDC_BUTTON2 );
CWndEdit* pEdit = (CWndEdit*)GetDlgItem( WIDC_EDIT1 );
AddWndStyle( WBS_MODAL );
pOk->SetDefault( TRUE );
ItemProp* pProp = prj.GetItemProp( m_dwItemIndex );
assert( pProp );
if( !pProp )
return;
CWndText* pText = ( CWndText* )GetDlgItem( WIDC_TEXT1 );
CString strTitle;
switch( m_eSection )
{
case CVS_EQUIP_VIS : strTitle.Format( GETTEXT( TID_GAME_BUFFPET_EQUIP ), pProp->szName ); break;
case CVS_UNEQUIP_VIS : strTitle.Format( GETTEXT( TID_GAME_BUFFPET_CANCEL ), pProp->szName ); break;
case CVS_EQUIP_VISKEY : // ºñ½º ½½·Ô È®Àå Ű ¾µ·Á°í ÇÒ¶§
{
MoverProp* pProp = NULL;
if( g_pPlayer )
{
CMover* pPet = prj.GetMover( g_pPlayer->GetEatPetId( ) );
if( pPet )
pProp = pPet->GetProp( );
}
if( pProp )
strTitle.Format( GETTEXT( TID_GAME_BUFFPET_KET01 ), pProp->szName );
}break;
case CVS_PICKUP_TO_BUFF:
strTitle = GETTEXT( TID_GAME_PET_TRAN ); // ¼ÒȯµÇ¾î ÀÖ´Â ÇȾ÷Æê ¹öÇÁÆêÀ¸·Î º¯È¯?
break;
#ifdef __PROTECT_AWAKE
case ETC_PROTECT_AWAKE:
strTitle = GETTEXT( TID_GAME_REGARDLESS_USE01 ); //"ÁøÂ¥·¯ °¢¼ºº¸È£ ¾µ·¡¿°? ÀÇ ¾ÆÀ̵ð ÇÊ¿ä";
break;
#endif //AWAKE_PROTECT
}
pText->SetString( strTitle );
//¿¡µðƮâÀ» ¾Èº¸À̴°÷À¸·Î º¸³»¹ö¸®°í ENTER¹ÞÀ»Áغñ
pEdit->Move( -100, -100 );
pEdit->SetFocus( );
}
BOOL CWndConfirmVis::Initialize( CWndBase* pWndParent, DWORD dwWndId )
{
InitDialog( g_Neuz.GetSafeHwnd(), APP_CONFIRM_ENTER, WBS_KEY, 0, pWndParent );
MoveParentCenter();
return TRUE;
}
BOOL CWndConfirmVis::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase )
{
return CWndNeuz::OnCommand( nID, dwMessage, pWndBase );
}
void CWndConfirmVis::OnLButtonUp( UINT nFlags, CPoint point )
{
}
void CWndConfirmVis::OnLButtonDown( UINT nFlags, CPoint point )
{
}
void CWndConfirmVis::SendEquipPacket( )
{
switch( m_eSection )
{
case CVS_EQUIP_VIS: g_DPlay.SendDoUseItem( MAKELONG( ITYPE_ITEM, m_dwItemId ), m_objid ); break;
case CVS_UNEQUIP_VIS : g_DPlay.SendRemoveVis( m_nSlot ); break;
case CVS_EQUIP_VISKEY : g_DPlay.SendDoUseItem( MAKELONG( ITYPE_ITEM, m_dwItemId ), m_objid ); break;
case CVS_PICKUP_TO_BUFF : g_DPlay.SendDoUseItem( MAKELONG( ITYPE_ITEM, m_dwItemId ), m_objid ); break;
#ifdef __PROTECT_AWAKE
case ETC_PROTECT_AWAKE: g_DPlay.SendDoUseItem( MAKELONG( ITYPE_ITEM, m_dwItemId ), m_objid ); break;
#endif //__PROTECT_AWAKE
default :
assert( 0 ); break;
}
}
BOOL CWndConfirmVis::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
// ¿£ÅÍ ÀԷ ó¸®
if( WIDC_EDIT1 == nID && EN_RETURN == message )
{
SendEquipPacket( );
Destroy();
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
if( message == WNM_CLICKED )
{
switch(nID)
{
case WIDC_BUTTON2:
Destroy();
break;
case WIDC_BUTTON1:
SendEquipPacket( );
Destroy();
break;
}
}
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
#endif //#ifdef __PETVIS
|
Hoffe ihr helft mir..
MFG Le´Professore
|
|
|
09/17/2011, 20:12
|
#13
|
elite*gold: 0
Join Date: Feb 2010
Posts: 294
Received Thanks: 85
|
Quote:
Originally Posted by Le´Professore
Kan mir wer sagen warum ich folgende Errors bekomme?
oder besser gesagt was ich falsch gemacht hab?
Hier ma meine WndPetSys.cpp
Hoffe ihr helft mir..
MFG Le´Professore
|
Errors lesen hilft somanchmal , hm ? Überall steht das er die Bezeichnung nicht findet , dass heißt es ist nicht definiert. Den Rest kannste dir wohl selber denken.
|
|
|
09/18/2011, 15:06
|
#14
|
elite*gold: 0
Join Date: Aug 2005
Posts: 231
Received Thanks: 67
|
hey very big thanks very perfect !!

((=
|
|
|
All times are GMT +1. The time now is 15:31.
|
|