?? exchangemgr.cpp
字號:
// ExchangeMgr.cpp: implementation of the CExchangeMgr class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Menu.h"
#include "dragon.h"
#include "gameproc.h"
#include "MenuSet.h"
#include "char.h"
#include "Map.h"
#include "Math.h"
#include "ExchangeMgr.h"
#include "CharDataTable.h"
#include "SmallMenuSet.h"
DefaultItem item_give[MAX_EXCHANGE_ITEM]={0,};
DefaultItem item_recv[MAX_EXCHANGE_ITEM]={0,};
CExchangeMgr ExchangeMgr;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CExchangeMgr::CExchangeMgr()
{
Clear();
ClearItemData();
}
CExchangeMgr::~CExchangeMgr()
{
Clear();
ClearItemData();
}
void CExchangeMgr::Clear()
{
m_iExchageType = 0;//芭貳 鷗澇
m_iExchageTargetId = 0;//芭貳吝牢 惑措狼 cn 藹
m_bOtherSideConformState = 0;//惑措規撈 芭貳 Ok 葷牢闌 焊陳綽啊.(芭貳牢磐其撈膠 摧灑芭唱 凱副錠 公煉扒 0 欄肺 父甸絹 拎扼.
m_bMySideConformState = 0;//030108 lsw
m_bIsIAmMerchant = false;
SetExchangeState(EXCHANGE_STATE_READY);
}
void CExchangeMgr::ClearItemData()
{
::memset( item_recv, 0, sizeof( DefaultItem )*MAX_EXCHANGE_ITEM );
::memset( item_give, 0, sizeof( DefaultItem )*MAX_EXCHANGE_ITEM );//葛滴 瘤快絆 焊磊
}
bool IsExchangeNow()//背券 何盒
{
return ( EXCHANGE_STATE_EXCHANGE_NOW == ExchangeMgr.GetExchangeState() )?true:false;
}
void CExchangeMgr::CallExchangeMenu(const bool bIsRecvSide, const int iExchageType)//郴何俊輯 努府絹 登聰鱉 煉繳竅絆
{
Clear();
ClearItemData();
SetExchangeType(iExchageType);
::CloseAllMenu();//皋春逢 葛滴 摧絆
fRMoveMenu = MM_ITEM_OPEN; // 困狼 if鞏闌 父練且 錠父
nItemOther = MN_EXCHANGE_ITEM;
y_MenuFocus = 0;
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//秦寸 努扼撈攫飄啊 焊郴綽 巴
void SendExchangeItemWithOtherCh( short int you_id ,const int iExchangeType)
{//背券 竅磊絆 茄促(芭貳)
t_packet p;
p.h.header.type = CMD_EXCHANGE_ITEM_READY;
p.u.kein.exchange_item_start.you_id = you_id;
p.u.kein.exchange_item_start.iExchangeType = iExchangeType;//021030 lsw
p.h.header.size = sizeof( k_exchange_item_start );
QueuePacket( &p, 1 );
}
void CExchangeMgr::SendExchangeResult()
{ //背券 搬苞甫 焊辰促
t_packet p;
switch(GetExchangeType())
{
case EXCHANGE_TYPE_NORMAL:
case EXCHANGE_TYPE_MERCHANT_DIRECT:
{
p.h.header.type = CMD_EXCHANGE_ITEM;
p.u.kein.client_other_ch_inv.other_ch = ExchangeMgr.GetExchangeTargetId();
p.h.header.size = sizeof( kein_client_other_ch_inv );
QueuePacket( &p, 1 );
}break;
default:
{
return;
}break;
}
}
void CExchangeMgr::SendExchangeStateSign(const bool bOkSign)
{
t_packet p;
LPCHARACTER pCh = ::FindCharacter( &g_CharacterList, GetExchangeTargetId() );
if( pCh //he is near me
&& !strcmp(pCh->name,GetExchangeTargetName()) )
{
if(bOkSign)
{
p.h.header.type = CMD_EXCHANGE_OK_SIGN;
}
else
{
p.h.header.type = CMD_EXCHANGE_CANCEL_SIGN;
}
p.u.kein.client_other_ch_inv.other_ch = GetExchangeTargetId();
p.h.header.size = sizeof( kein_client_other_ch_inv );
::QueuePacket( &p, 1 );
return;
}
else
{
::CallServer( CMD_EXCHANGE_CANCEL );
}
}
void SendExchangeItemEach( ItemAttr &item, POS &pos, short int you_id )
{
if( pos.type < HAND && pos.type > BOX ){return;}
t_packet p;
p.h.header.type = CMD_EXCHANGE_ITEM_EACH;
p.u.kein.exchange_item_start.item.item_attr = item;
p.u.kein.exchange_item_start.item.item_pos = pos;
p.u.kein.exchange_item_start.you_id = you_id;
p.h.header.size = sizeof( k_exchange_item_start );
QueuePacket( &p, 1 );
}
void SendExchangeItemDel( POS pos, short int you_id )
{
t_packet p;
p.h.header.type = CMD_EXCHANGE_ITEM_DEL;
p.u.kein.exchange_item_del.pos = pos;
p.u.kein.exchange_item_del.you_id = you_id;
p.h.header.size = sizeof( k_exchange_item_del );
QueuePacket( &p, 1 );
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//秦寸 努扼撈攫飄啊 罐綽 巴
void RecvExchangeItemOk( k_exchange_item_start *exchange_item )
{
const int iTargetId = exchange_item->you_id;
if( ::FindCharacter( &g_CharacterList, iTargetId ) )
{
ExchangeMgr.CallExchangeMenu(false,EXCHANGE_TYPE_NORMAL);//郴何俊輯 努府絹 登聰鱉 煉繳竅絆
if(EXCHANGE_TYPE_MERCHANT_DIRECT== exchange_item->iExchangeType)
{//郴何俊輯 努府絹 登絹輯 瀝焊 葷扼籠聰促. ExchangeMgr.CallExchangeMenu(false,EXCHANGE_TYPE_NORMAL); 竅竄俊 初欄絞矯夸
ExchangeMgr.m_bIsIAmMerchant = true;
}
::SetExchageItemData(0,exchange_item->item.item_attr,exchange_item->item.item_pos);
ExchangeMgr.SetExchangeTargetId(iTargetId);//021030 lsw
ExchangeMgr.SetExchangeState(EXCHANGE_STATE_EXCHANGE_NOW);//021030 lsw
ExchangeMgr.SetExchangeType(exchange_item->iExchangeType);//021030 lsw
}
}
void RecvExchangeItemReq( k_exchange_item_start *exchange_item )//背券 夸備
{
const int iTargetId = exchange_item->you_id;
if( ::FindCharacter( &g_CharacterList, iTargetId ) )
{
ExchangeMgr.CallExchangeMenu(true,EXCHANGE_TYPE_NORMAL);//郴何俊輯 努府絹 登聰鱉 煉繳竅絆
::RecvExchangeEach(&exchange_item->item);//酒撈袍 罐籃芭 悸潑 竅絆
ExchangeMgr.SetExchangeTargetId(iTargetId);//021030 lsw
ExchangeMgr.SetExchangeState(EXCHANGE_STATE_EXCHANGE_NOW);//021030 lsw
ExchangeMgr.SetExchangeType(exchange_item->iExchangeType);//021030 lsw
}
}
void RecvExchangeItemResult( int ret ) // 輯滾 傈價俊 蝶弗 俊礬 皋矯瘤 貿府
{
ExchangeMgr.ClearItemData();//021030 lsw
switch( ret )
{
case 0: Kein_PutMessage( KM_FAIL, lan->OutputMessage(5,31)); break;//010215 lsw
case 1: Kein_PutMessage( KM_FAIL, lan->OutputMessage(5,32)); break;//
case 2: Kein_PutMessage( KM_FAIL, lan->OutputMessage(5,33)); break;//
case 3: Kein_PutMessage( KM_FAIL, lan->OutputMessage(5,34)); break;//
case 4: Kein_PutMessage( KM_FAIL, lan->OutputMessage(5,35)); break;//
case 5: Kein_PutMessage( KM_FAIL, lan->OutputMessage(5,36)); break;//010215 lsw
}
// 肯傈灑 秒家 矯挪促.
::CloseAllMenu();
}
void RecvExchangeCancel()
{
ExchangeMgr.Clear();
ExchangeMgr.ClearItemData();
SMenu[MN_EXCHANGE_ITEM].nField[3].nSHideNomalCount=0;
SMenu[MN_EXCHANGE_ITEM].nField[4].nSHideNomalCount=0;
SMenu[MN_EXCHANGE_ITEM].work = 0;
MenuSoundClose( MN_EXCHANGE_ITEM );
CallOkCancelMessageBox( 0, 0, 0,lan->OutputMessage(5,37), 0 );//010215 lsw
if( EXCHANGE_STATE_EXCHANGE_NOW != ExchangeMgr.GetExchangeState() )
{//哪汽 惑怕啊 酒囪單 撈繁 皋技瘤啊 甸絹柯促??
COMMENT ::AddCurrentStatusMessage(FONT_COLOR_RED,"Critical Error");
}
}
// 020320 YGI
void RemoveExchangeItemStatus()
{
ExchangeMgr.Clear();
ExchangeMgr.ClearItemData();
SMenu[MN_EXCHANGE_ITEM].nField[3].nSHideNomalCount=0;
SMenu[MN_EXCHANGE_ITEM].nField[4].nSHideNomalCount=0;
SMenu[MN_EXCHANGE_ITEM].work = 0;
}
void RecvExchange() //背券 己傍
{ // 020320 YGI // 技陛棺 酒撈袍 格廢籃 撈鎊俊輯...
RemoveExchangeItemStatus();//努府絹甫 矯虐絆
MenuSoundClose( MN_EXCHANGE_ITEM );
CallOkCancelMessageBox( 0, 0, 0, lan->OutputMessage(5,38), 0 );//010215 lsw
}
void GetXANDYByExchangeItemIndex(const int iExchangeIndex, int &iX, int &iY)
{
iX= (iExchangeIndex%5)*32 +(iExchangeIndex%5)*3;
iY= (iExchangeIndex/5)*32 +(iExchangeIndex/5)*3;//初闌錠 瀝紡闌 困秦輯
}
void RecvExchangeEach( const K_ITEM *lpItem )
{
for( int iExchangeIndex=0; MAX_EXCHANGE_ITEM > iExchangeIndex; iExchangeIndex++)
{
DefaultItem *pTarget = &item_recv[iExchangeIndex];
if( !pTarget->item.item_attr.item_no )//后 傍埃撈備唱
{
pTarget->item = *lpItem;//酒撈袍 持絆
int iItemX = 0, iItemY = 0;
::GetXANDYByExchangeItemIndex(iExchangeIndex,iItemX,iItemY);//初闌錠 瀝紡闌 困秦輯
pTarget->x = iItemX;//諒釬 悸潑
pTarget->y = iItemY;
SetRect( &pTarget->rect,
pTarget->x-15, pTarget->y-15,
pTarget->x+15, pTarget->y+15 );
break;
}
}
}
void RecvExchangeItemDelWhereRecv( K_ITEM &Item ) // 歷率俊輯 酒撈袍闌 嘩擱 撈率俊輯檔 昏力茄促.
{//030108 lsw
for( int i=0; i<MAX_EXCHANGE_ITEM; i++)
{
if( item_recv[i].item.item_attr.item_no )
{
if( !memcmp(&item_recv[i].item,&Item,sizeof(K_ITEM)) )
{
::memset( &item_recv[i], 0, sizeof(DefaultItem ) );
}
}
}
}
//////////////////////////////////////////////////////////////////////////
// 1:1 搬捧 矯膠袍
void SendReqManToMan( char *name ) // 搬捧 腳沒
{//搬捧矯 酒撈袍 官操瘤 臼綽促
if( MapNumber == 30 )
{
AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,28));//010215 lsw
return;
}
if( SMenu[MN_MAN_TO_MAN].bActive )
{
MP3( SN_WARNING );
if( SMenu[MN_MAN_TO_MAN].work )
AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,29));//010215 lsw
else AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,30));//010215 lsw
return;
}
if( IsDead( Hero ) )
{
MP3( SN_WARNING );
AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,31));//010215 lsw
return;
}
if( Hero->fight_flag )
{
MP3( SN_WARNING );
AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,32));//010215 lsw
return;
}
if( !strcmp( SCharacterData.sCharacterName, name ) )
{
MP3( SN_WARNING );
AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,33));//010215 lsw
return;
}
LPCHARACTER target = ExistHe( name );
if( !target )
{
MP3( SN_WARNING );
AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,34));//010215 lsw
return;
}
if( IsDead( target ) )
{
MP3( SN_WARNING );
AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(3,35));//010215 lsw
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -