📄 mugongmanager.cpp
字号:
// MugongManager.cpp: implementation of the CMugongManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MugongManager.h"
#include "MapDBMsgParser.h"
#include "Player.h"
#include "UserTable.h"
#include "SkillManager_server.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMugongManager::CMugongManager()
{
}
CMugongManager::~CMugongManager()
{
}
void CMugongManager::NetworkMsgParse( BYTE Protocol, void* pMsg )
{
switch(Protocol)
{
case MP_MUGONG_MOVE_SYN:
{
MSG_MUGONG_MOVE_SYN * msg = (MSG_MUGONG_MOVE_SYN *)pMsg;
CPlayer * pPlayer = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
if(!pPlayer) return;
if(MoveMugong(pPlayer, msg->FromPos, msg->ToPos))
{
//努扼捞攫飘俊霸档 焊郴淋
MSG_MUGONG_MOVE_ACK msg2;
memcpy(&msg2, msg, sizeof(MSG_MUGONG_MOVE_SYN));
msg2.Protocol = MP_MUGONG_MOVE_ACK;
pPlayer->SendMsg(&msg2, sizeof(MSG_MUGONG_MOVE_ACK));
}
else
{
MSGBASE Msg;
Msg.Category = MP_MUGONG;
Msg.Protocol = MP_MUGONG_MOVE_NACK;
pPlayer->SendMsg(&Msg, sizeof(Msg));
}
}
break;
/*
case MP_MUGONG_ADD_SYN:
{
MSG_MUGONG_ADD * msg = (MSG_MUGONG_ADD *)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
if(pPlayer == NULL)
return;
MUGONGMGR_OBJ->AddMugong(pPlayer, msg);
}
break;*/
case MP_MUGONG_REM_SYN:
{
MSG_MUGONG_REM_SYN * msg = (MSG_MUGONG_REM_SYN *)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
if(pPlayer == NULL)
return;
if(RemMugong(pPlayer, msg->wMugongIdx, msg->TargetPos,eLog_MugongDiscard))
{
MSG_MUGONG_REM_ACK ToMsg;
ToMsg.Category = MP_MUGONG;
ToMsg.Protocol = MP_MUGONG_REM_ACK;
ToMsg.dwObjectID = msg->dwObjectID;
ToMsg.wMugongIdx = msg->wMugongIdx;
ToMsg.TargetPos = msg->TargetPos;
pPlayer->SendMsg(&ToMsg, sizeof(ToMsg));
}
else
{
MSGBASE Msg;
Msg.Category = MP_MUGONG;
Msg.Protocol = MP_MUGONG_REM_NACK;
pPlayer->SendMsg(&Msg, sizeof(Msg));
}
}
break;
default:
break;
}
}
BOOL CMugongManager::RemMugong(CPlayer * pPlayer, WORD wMugongIdx, POSTYPE TargetPos, BYTE bType)
{
MUGONGBASE * pMugong = pPlayer->GetMugongBase(TargetPos);
if(!pMugong || pMugong->wIconIdx != wMugongIdx)
return FALSE;
// db
MugongDeleteToDB(pMugong->dwDBIdx);
// Log 公傍 昏力
InsertLogMugong( bType, pPlayer->GetID(), pMugong->wIconIdx, pMugong->dwDBIdx, pMugong->Sung, pMugong->ExpPoint );
// 公傍沥焊 昏力
memset(pMugong, 0, sizeof(MUGONGBASE));
return TRUE;
}
BOOL CMugongManager::MoveMugong(CPlayer * pPlayer, POSTYPE FromPos, POSTYPE ToPos)
{
if(FromPos == ToPos)
return FALSE;
MUGONGBASE FromMugong = *pPlayer->GetMugongBase(FromPos);
MUGONGBASE ToMugong = *pPlayer->GetMugongBase(ToPos);
if( ToMugong.Position == 0 ) // 颗辨 磊府啊 厚绢 乐绰版快
{
FromMugong.Position = ToPos;
pPlayer->SetMugongBase(FromPos, &ToMugong); // 扁粮 磊府 厚快扁
pPlayer->SetMugongBase(FromMugong.Position, &FromMugong); // 货肺款 磊府俊 持扁
MugongUpdateToDB(&FromMugong,"MOVE_NULL");
}
else
{
if( FromMugong.dwDBIdx == 0 )
return FALSE;
SWAPVALUE(FromMugong.Position, ToMugong.Position)
ASSERT(FromMugong.Position);
pPlayer->SetMugongBase(FromMugong.Position, &FromMugong);
pPlayer->SetMugongBase(ToMugong.Position, &ToMugong);
MugongMoveUpdateToDB(FromMugong.dwDBIdx, FromMugong.Position, ToMugong.dwDBIdx, ToMugong.Position, "MOVE_FROM");
}
//CharacterMugongUpdate(FromMugong);
//CharacterMugongUpdate(ToMugong);
return TRUE;
}
void CMugongManager::AddMugongDBResult(CPlayer * pPlayer, MUGONGBASE * pMugongBase)
{
MSG_MUGONG_ADD_ACK msg;
msg.Category = MP_MUGONG;
msg.Protocol = MP_MUGONG_ADD_ACK;
msg.dwObjectID = pPlayer->GetID();
msg.MugongBase = *pMugongBase;
pPlayer->SetMugongBase(pMugongBase->Position, pMugongBase);
pPlayer->SendMsg(&msg, sizeof(MSG_MUGONG_ADD_ACK));
// Log 公傍 裙垫..
InsertLogMugong( eLog_MugongLearn, pPlayer->GetID(), pMugongBase->wIconIdx, pMugongBase->dwDBIdx, pMugongBase->Sung, pMugongBase->ExpPoint );
}
BOOL CMugongManager::AddMugong( CPlayer * pPlayer, WORD wMugongIdx, WORD ItemKind )
{
// 吝汗 眉农
if(pPlayer->GetMugongBaseByMugongIdx(wMugongIdx))
return FALSE;
// 飘府眉农
CSkillInfo* pInfo = SKILLMGR->GetSkillInfo(wMugongIdx);
if(pInfo->GetBeforeSkill())
{
if(pPlayer->GetMugongLevel(pInfo->GetBeforeSkill()) < 1)
return FALSE;
}
// 后傍埃
POSTYPE StartPos,EndPos;
if(ItemKind == eMUGONG_ITEM_JINBUB)
{
StartPos = TP_JINBUB_START;
EndPos = TP_JINBUB_END;
}
else
{
StartPos = TP_MUGONG_START;
EndPos = TP_MUGONG_END;
}
POSTYPE ToPos = EndPos;
MUGONGBASE* pMugong;
for( POSTYPE n = StartPos ; n < EndPos ; ++n )
{
pMugong = pPlayer->GetMugongBase(n);
if(pMugong->dwDBIdx == 0)
{
ToPos = n;
break;
}
}
if(ToPos == EndPos)
return FALSE;
BYTE weared = 0;
switch(ConvAbsPos2MugongPos(ToPos))
{
case TP_MUGONG_START:
case TP_JINBUB_START:
weared = 1;
break;
}
MUGONGBASE MugongBase;
MugongBase.Position = ToPos;
MugongBase.dwDBIdx = 9;
MugongBase.ExpPoint = 9;
MugongBase.QuickPosition = 9;
MugongBase.Sung = 9;
MugongBase.wIconIdx = wMugongIdx;
pPlayer->SetMugongBase(MugongBase.Position, &MugongBase);
ASSERTMSG(ToPos, "0锅 器瘤记俊 公傍阑 持栏妨 钦聪促.");
//db
MugongInsertToDB( pPlayer->GetID(), wMugongIdx, ToPos, weared );
//CharacterMugongAdd(pPlayer->GetID(), wMugongIdx/*函券瞪公傍*/, ToPos, weared, 0);
return TRUE;
/*
BYTE weared;
ITEMBASE* pItem;
ITEM_INFO* pInfo;
MSG_MUGONG_ADD_NACK Tomsg;
CIconTable * pInventory = pPlayer->GetIconTable(msg->FromTableIdx);
ITEMBASE item;
MUGONGBASE * ToMugong = pPlayer->GetMugongBase(msg->ToAbsPosition);
if(ToMugong->dwDBIdx != 0)
goto SEND_MUGONG_ADD_NACK;
// 捞固 公傍芒俊 粮犁窍绰 公傍牢啊?
{
pItem = pInventory->GetItemInfoAbs(msg->FromAbsPosition);
if(pItem == NULL)
goto SEND_MUGONG_ADD_NACK;
if(pItem->dwDBIdx == 0)
goto SEND_MUGONG_ADD_NACK;
pInfo = ICONMNGR->GetItemInfo(pItem->wIconIdx);
if(pPlayer->GetMugongBaseByMugongIdx(pInfo->MugongNum))
goto SEND_MUGONG_ADD_NACK;
}
// 公傍氓 昏力
if(pInventory->DeleteItemAbs(msg->FromAbsPosition, &item))
{
// DB俊辑 酒捞袍抛捞喉俊辑 昏力 窍绊, 公傍眠啊
weared = 0;
switch(ConvAbsPos2MugongPos(msg->ToAbsPosition))
{
case MUGONG_WEAREDPOSITION:
case JINBUB_WEAREDPOSITION:
case SIMBUB_WEAREDPOSITION:
weared = 1;
break;
}
ITEM_INFO * pMugongItem = ICONMNGR->GetItemInfo(item.wIconIdx);
ASSERT(pMugongItem);
CharacterMugongWear(msg->dwObjectID, item.dwDBIdx, pMugongItem->MugongNum, msg->ToAbsPosition, weared, item.Position);
return TRUE;
}
SEND_MUGONG_ADD_NACK:
Tomsg.Category = MP_MUGONG;
Tomsg.Protocol = MP_MUGONG_ADD_NACK;
Tomsg.dwObjectID = pPlayer->GetID();
pPlayer->SendMsg(&Tomsg,sizeof(MSG_MUGONG_ADD_NACK));
return FALSE;*/
}
/*
void CMugongManager::AddMugongACK(CPlayer * pPlayer, MSG_MUGONG_ADD_ACK * msg)
{
pPlayer->SetMugongBase(msg->mugong.Position, &msg->mugong);
pPlayer->SendMsg(msg,sizeof(MSG_MUGONG_ADD_ACK));
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -