Files
Client/GameTools/NeoRylClient/HumanStreetStall.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

652 lines
21 KiB
C++
Raw Blame History

// HumanStreetStall.cpp: implementation of the CHumanStreetStall class.
//
//////////////////////////////////////////////////////////////////////
#include "ClientMain.h"
#include "WinInput.h"
#include "Item\ItemMgr.h"
#include "HumanStreetStall.h"
#include "GUIMessageBox.h"
#include "GUIMessageBoxManager.h"
#include "GUITextEdit.h"
#include "StringFilter.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHumanStreetStall::CHumanStreetStall()
{
m_dwNameResult = 0;
m_dwRegistItemResult = 0;
m_dwRegistItemValue = 0;
m_dwBuyResult = 0;
m_lpBuyItem = NULL;
m_dwItemNumber = 0;
strcpy(m_strMarketName, "");
strcpy(m_strOwner, "");
}
CHumanStreetStall::~CHumanStreetStall()
{
DeleteTradeItem();
}
BOOL CHumanStreetStall::Init(unsigned short x, unsigned short y)
{
CSprite *lpSprite;
lpSprite = new CSprite;
lpSprite->Create(x, y, 0, 0, 222, 256, g_ClientMain.m_lpInterface->m_lstTexture[48]);
m_lstSprite.push_back(lpSprite);
lpSprite = new CSprite;
lpSprite->Create(x, y + 256, 0, 0, 222, 224, g_ClientMain.m_lpInterface->m_lstTexture[49]);
m_lstSprite.push_back(lpSprite);
CGUIButton *lpButton;
lpButton = new CGUIButton;
lpButton->m_nMethod = BUTTON_SIMPLE;
lpButton->m_lpNormalButton = new CSprite;
lpButton->m_lpNormalButton->Create(190, 1, 0, 0, 28, 28, g_ClientMain.m_lpInterface->m_lpCommonWindow);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(190, 1, 28, 0, 56, 28, g_ClientMain.m_lpInterface->m_lpCommonWindow);
lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[251]);
lpButton->SetMove(x, y);
m_ButtonManager.AddButton(lpButton);
CGUIScroll *lpScroll;
lpScroll = new CGUIScroll;
lpScroll->m_lpBarButton = new CGUIButton;
lpScroll->m_lpBarButton->m_nMethod = BUTTON_SIMPLE;
lpScroll->m_lpBarButton->m_lpNormalButton = new CSprite;
lpScroll->m_lpBarButton->m_lpNormalButton->Create(206, 302, 228, 0, 239, 20, g_ClientMain.m_lpInterface->m_lstTexture[8]);
lpScroll->m_lpBarButton->m_lpClickMouseButton = new CSprite;
lpScroll->m_lpBarButton->m_lpClickMouseButton->Create(206, 302, 228, 0, 239, 20, g_ClientMain.m_lpInterface->m_lstTexture[8]);
lpScroll->m_lpUpArrowButton = new CGUIButton;
lpScroll->m_lpUpArrowButton->m_nMethod = BUTTON_SIMPLE;
lpScroll->m_lpUpArrowButton->m_lpNormalButton = new CSprite;
lpScroll->m_lpUpArrowButton->m_lpNormalButton->Create(206, 291, 243, 2, 254, 12, g_ClientMain.m_lpInterface->m_lstTexture[8]);
lpScroll->m_lpUpArrowButton->m_lpClickMouseButton = new CSprite;
lpScroll->m_lpUpArrowButton->m_lpClickMouseButton->Create(206, 291, 243, 14, 254, 24, g_ClientMain.m_lpInterface->m_lstTexture[8]);
lpScroll->m_lpDownArrowButton = new CGUIButton;
lpScroll->m_lpDownArrowButton->m_nMethod = BUTTON_SIMPLE;
lpScroll->m_lpDownArrowButton->m_lpNormalButton = new CSprite;
lpScroll->m_lpDownArrowButton->m_lpNormalButton->Create(206, 439, 243, 26, 254, 36, g_ClientMain.m_lpInterface->m_lstTexture[8]);
lpScroll->m_lpDownArrowButton->m_lpClickMouseButton = new CSprite;
lpScroll->m_lpDownArrowButton->m_lpClickMouseButton->Create(206, 439, 243, 40, 254, 50, g_ClientMain.m_lpInterface->m_lstTexture[8]);
lpScroll->m_lValue = (long *)&g_TextEdit.m_dwStartStall;
lpScroll->SetMove(x, y);
lpScroll->SetPosition(206, 302);
lpScroll->SetEdge(0, 0, 10, 116);
lpScroll->SetRange(0, 0);
m_lstScroll.push_back(lpScroll);
InitValue();
m_bShow = FALSE;
m_dwWindowKind = WINDOW_FIX;
m_rcWindowSize.left = x; m_rcWindowSize.top = y;
m_rcWindowSize.right = x + 222; m_rcWindowSize.bottom = y + 480;
m_rcMoveEdge.left = x; m_rcMoveEdge.top = y;
m_rcMoveEdge.right = x + 222; m_rcMoveEdge.bottom = y + 20;
return TRUE;
}
void CHumanStreetStall::InitValue(void)
{
m_dwNameResult = 0;
m_dwRegistItemResult = 0;
m_dwRegistItemValue = 0;
m_dwBuyResult = 0;
m_lpBuyItem = NULL;
m_dwItemNumber = 0;
strcpy(m_strMarketName, "");
strcpy(m_strOwner, "");
}
BOOL CHumanStreetStall::Update(BOOL &bClick, BOOL &bEdge)
{
if(g_DeviceInput.InRect(m_rcWindowSize.left, m_rcWindowSize.top, m_rcWindowSize.right, m_rcWindowSize.bottom))
{
bEdge = TRUE;
if(g_DeviceInput.GetIsLeftMouseDown() || g_DeviceInput.GetIsMiddleMouseDown() || g_DeviceInput.GetIsRightMouseDown() ||
g_DeviceInput.GetIsLeftMousePress() || g_DeviceInput.GetIsMiddleMousePress() || g_DeviceInput.GetIsRightMousePress() ||
g_DeviceInput.GetIsLeftMouseUp() || g_DeviceInput.GetIsMiddleMouseUp() || g_DeviceInput.GetIsRightMouseUp())
{
bClick = TRUE;
}
}
m_ButtonManager.Update();
m_TooltipManager.Update();
if(m_dwNameResult & MB_CONFIRM)
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD>
m_strMarketName[31] = 0;
g_ClientMain.m_Network.m_pSocket->CharStallOpen(g_ClientMain.m_dwMyChrID, m_strMarketName);
strcpy(m_strMarketName, "");
m_dwNameResult = 0;
return TRUE;
} else if(m_dwNameResult & MB_CANCEL || m_dwNameResult & MB_EXIT)
{
strcpy(m_strMarketName, "");
m_dwNameResult = 0;
ShowWindow(FALSE);
return TRUE;
}
if(m_dwRegistItemResult & MB_YES)
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>
TakeType pTakeType;
pTakeType.m_srcPos = g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos();
pTakeType.m_dstPos.m_cPos = ClientSocket::ItemPos_Stall;
pTakeType.m_dstPos.m_cIndex = m_wItemIndex;
if(g_ClientMain.m_lpPickItem->GetIsEnableStack())
{
pTakeType.m_cNum = g_ClientMain.m_lpPickItem->GetNowDurability();
} else
{
pTakeType.m_cNum = 1;
}
if(m_dwRegistItemValue < 1) m_dwRegistItemValue = 1;
g_ClientMain.m_Network.m_nsNetworkState = NS_STALLREGISTERITEM;
g_ClientMain.m_Network.m_pSocket->CharStallRegisterItem(g_ClientMain.m_dwMyChrID, pTakeType, m_dwRegistItemValue, ClientSocket::StallCmd_Register);
m_wItemIndex = 0;
m_dwRegistItemResult = 0;
m_dwRegistItemValue = 0;
return TRUE;
} else if(m_dwRegistItemResult & MB_NO || m_dwRegistItemResult & MB_EXIT)
{
m_wItemIndex = 0;
m_dwRegistItemResult = 0;
m_dwRegistItemValue = 0;
return TRUE;
}
if(m_dwBuyResult & MB_YES)
{
// <20><><EFBFBD><EFBFBD>. <20><>Ŷ <20><><EFBFBD><EFBFBD>
Item::ItemPos pItemIndex;
FieldInstance pTradeItem;
pTradeItem.m_dwInstanceID = 0;
pTradeItem.m_dwOID = 0;
pTradeItem.m_dwTypeID = m_lpBuyItem->GetProtoTypeID();
if(m_lpBuyItem->GetIsEnableStack())
{
if(m_dwItemNumber > m_lpBuyItem->GetNowDurability())
m_dwItemNumber = m_lpBuyItem->GetNowDurability();
pTradeItem.m_cNum = m_dwItemNumber;
}
else
pTradeItem.m_cNum = 1;
if(pTradeItem.m_cNum)
{
BOOL bPass = FALSE;
if(g_ClientMain.m_csStatus.m_Info.Gold < (pTradeItem.m_cNum * m_lpBuyItem->m_lpItemBase->GetBuyPrice())) bPass = TRUE;
if(bPass)
{
CGUIMessageBox *lpMessageBox;
lpMessageBox = new CGUIMessageBox;
lpMessageBox->Create(g_StringTable.m_strString[252]);
m_dwBuyResult = 0;
m_lpBuyItem = NULL;
return TRUE;
}
unsigned long dwNum = g_ClientMain.m_csStatus.GetAbleInven(&pTradeItem, pItemIndex, FALSE);
if(dwNum)
{
Item::ItemPos pPos = m_lpBuyItem->m_lpItemBase->GetPos();
g_ClientMain.m_Network.SendTradeItem(m_dwMarketOwnerID, m_lpBuyItem->GetProtoTypeID(),
dwNum, pPos, pItemIndex);
}
}
m_dwItemNumber = 0;
m_dwBuyResult = 0;
m_lpBuyItem = NULL;
return TRUE;
} else if(m_dwBuyResult & MB_NO || m_dwBuyResult & MB_EXIT)
{
m_dwItemNumber = 0;
m_dwBuyResult = 0;
m_lpBuyItem = NULL;
return TRUE;
}
POINT *ptMousePos = g_DeviceInput.GetMousePosition();
unsigned long dwInvenX = (ptMousePos->x - (m_rcWindowSize.left + 8)) / 26;
unsigned long dwInvenY = (ptMousePos->y - (m_rcWindowSize.top + 73)) / 26;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
if(m_dwMarketOwnerID == g_ClientMain.m_dwMyChrID)
{
if(SelectItem())
{
TakeType pTakeType;
pTakeType.m_srcPos.m_cPos = ClientSocket::ItemPos_Stall;
pTakeType.m_srcPos.m_cIndex = 0;
pTakeType.m_dstPos = g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos();
if(g_ClientMain.m_lpPickItem->GetIsEnableStack())
{
pTakeType.m_cNum = g_ClientMain.m_lpPickItem->GetNowDurability();
} else
{
pTakeType.m_cNum = 1;
}
g_ClientMain.m_Network.m_nsNetworkState = NS_STALLREGISTERITEM;
g_ClientMain.m_Network.m_pSocket->CharStallRegisterItem(g_ClientMain.m_dwMyChrID, pTakeType, 0, ClientSocket::StallCmd_Cancel);
return TRUE;
}
__int64 ddItem;
if(g_DeviceInput.GetIsLeftMouseDown() && g_ClientMain.m_lpPickItem && g_ClientMain.m_lpPickItem->GetItemPos() == ClientSocket::ItemPos_Inven)
{
if(g_DeviceInput.InRect(m_rcWindowSize.left + 8, m_rcWindowSize.top + 73, m_rcWindowSize.left + 215, m_rcWindowSize.top + 280)) // <20><>ȯâ
{
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 5, dwInvenX, dwInvenY, 0)) != ITEM_FAILED)
{
Item::ItemPos pItemIndex;
pItemIndex.SetPos(dwInvenX, dwInvenY, 0);
pItemIndex.m_cPos = ClientSocket::ItemPos_Stall;
if(ddItem == ITEM_EMPTY)
{
if(g_ClientMain.m_lpPickItem->GetIsEnableStack())
{
CItemInstance *lpExistItem = NULL;
switch(g_ClientMain.m_lpPickItem->GetItemPos())
{
case ClientSocket::ItemPos_Inven:
lpExistItem = g_ClientMain.m_csStatus.GetInventoryItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
break;
case ClientSocket::ItemPos_Upgrade:
lpExistItem = g_ClientMain.m_csStatus.m_lpUpgrade[g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos().m_cIndex];
break;
case ClientSocket::ItemPos_Exchange:
lpExistItem = g_ClientMain.m_csStatus.GetExchangeItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
break;
case ClientSocket::ItemPos_Deposit:
lpExistItem = g_ClientMain.m_csStatus.GetDepositItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
break;
}
if(lpExistItem && lpExistItem->GetProtoTypeID() == g_ClientMain.m_lpPickItem->GetProtoTypeID())
{
return TRUE;
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
// g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
CGUIMessageBox *lpMessageBox;
lpMessageBox = new CGUIMessageBox;
lpMessageBox->Create(g_StringTable.m_strString[590], MB_NUMBER | MB_YES | MB_NO | MB_EXIT);
lpMessageBox->SetResult(&m_dwRegistItemResult);
lpMessageBox->SetValue(&m_dwRegistItemValue);
lpMessageBox->SetEnableEnter(FALSE);
m_wItemIndex = pItemIndex.m_cIndex;
m_dwRegistItemResult = 0;
m_dwRegistItemValue = 0;
}
return TRUE;
}
}
}
} else
{
list<CItemInstance *>::iterator it;
for(it = g_ClientMain.m_csStatus.m_lstStreetTrade.begin(); it != g_ClientMain.m_csStatus.m_lstStreetTrade.end(); it++)
{
if(!g_ClientMain.m_lpPickItem && (g_DeviceInput.GetIsLeftMouseDown() || g_DeviceInput.GetIsRightMouseDown()) && (*it)->IsOverMouse())
{
BOOL bPass = FALSE;
if(g_ClientMain.m_csStatus.m_Info.Gold >= (*it)->m_lpItemBase->GetBuyPrice()) bPass = TRUE;
if(bPass)
{
unsigned long dwNum;
Item::ItemPos pItemIndex;
FieldInstance pTradeItem;
pTradeItem.m_dwInstanceID = 0;
pTradeItem.m_dwOID = 0;
pTradeItem.m_dwTypeID = (*it)->GetProtoTypeID();
pTradeItem.m_cNum = 1;
dwNum = g_ClientMain.m_csStatus.GetAbleInven(&pTradeItem, pItemIndex, FALSE);
if(dwNum)
{
if(g_DeviceInput.GetIsLeftMouseDown())
{
CGUIMessageBox *lpMessageBox;
char strMessage[MAX_PATH];
lpMessageBox = new CGUIMessageBox;
m_dwBuyResult = 0;
m_lpBuyItem = (*it);
m_dwItemNumber = 0;
if(m_lpBuyItem->GetIsEnableStack())
{
strcpy(strMessage, g_StringTable.m_strString[254]);
lpMessageBox->Create(strMessage, MB_NUMBER | MB_YES | MB_NO | MB_EXIT);
lpMessageBox->SetValue(&m_dwItemNumber);
} else
{
sprintf(strMessage, g_StringTable.m_strString[255], (*it)->m_lpItemBase->GetBuyPrice());
lpMessageBox->Create(strMessage, MB_YES | MB_NO | MB_EXIT);
}
lpMessageBox->SetResult(&m_dwBuyResult);
} else if(g_DeviceInput.GetIsRightMouseDown())
{
m_dwBuyResult = MB_YES;
m_lpBuyItem = (*it);
if(m_lpBuyItem->GetIsEnableStack())
{
m_dwItemNumber = m_lpBuyItem->GetNowDurability();
}
}
} else
{
CGUIMessageBox *lpMessageBox;
lpMessageBox = new CGUIMessageBox;
lpMessageBox->Create(g_StringTable.m_strString[256]);
}
} else
{
CGUIMessageBox *lpMessageBox;
lpMessageBox = new CGUIMessageBox;
lpMessageBox->Create(g_StringTable.m_strString[252]);
}
return TRUE;
}
}
}
/////////////// <20><>ũ<EFBFBD><C5A9> <20>κ<EFBFBD>
if(g_TextEdit.m_deqStallMessage.size() <= MAX_DRAWSTALLCHAT)
m_lstScroll[0]->SetRange(0, 0);
else
m_lstScroll[0]->SetRange(0, g_TextEdit.m_deqStallMessage.size() - MAX_DRAWSTALLCHAT);
m_lstScroll[0]->Update();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ä<><C3A4>
if(g_TextEdit.m_dwEditMode == EDITMODE_STALL && GetAsyncKeyState(VK_RETURN))
{
if(strcmp(g_TextEdit.GetMessage(), ""))
{
char strChat[MAX_PATH];
unsigned long dwTotalLength;
strcpy(strChat, g_TextEdit.GetMessage());
dwTotalLength = strlen(strChat);
if(g_ClientMain.m_dwInternationalCode || g_StringFilter.Filter(g_TextEdit.GetMessage()))
{
g_ClientMain.m_Network.SendChatMessage(NULL, g_TextEdit.GetMessage(), ClientSocket::ChatType_Stall);
} else
{
g_ClientMain.m_Network.SendClientLog(1, g_TextEdit.GetMessage(), g_StringFilter.m_lpSearched);
g_TextEdit.AddStallChatMessage(g_StringTable.m_strString[570], g_ClientMain.m_dwMyChrID, 129);
}
g_TextEdit.InitMessage();
}
}
if(!g_TextEdit.IsFocus())
{
g_TextEdit.SetFocus();
g_TextEdit.m_dwEditMode = EDITMODE_STALL;
g_TextEdit.InitMessage();
}
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_CLICK)
{
m_ButtonManager.m_lstButton[0]->m_nState = BUTTON_NONE;
ShowWindow(FALSE);
}
return TRUE;
}
void CHumanStreetStall::ShowWindow(BOOL bShow)
{
m_bShow = bShow;
if(m_bShow)
{
InitValue();
} else
{
if(m_dwMarketOwnerID == g_ClientMain.m_dwMyChrID)
{
if(strcmp(m_strOwner, ""))
{
g_ClientMain.m_Network.m_pSocket->CharStallOpen(g_ClientMain.m_dwMyChrID, "");
}
} else
{
if(strcmp(m_strOwner, ""))
{
g_ClientMain.m_Network.SendStallLeave();
}
}
strcpy(m_strMarketName, "");
strcpy(m_strOwner, "");
m_dwMarketOwnerID = 0;
DeleteTradeItem();
g_TextEdit.DeleteStallMessage();
g_TextEdit.InitMessage();
g_TextEdit.m_dwEditMode = EDITMODE_CHAT;
g_ClientMain.SetFocus();
}
}
void CHumanStreetStall::Render(LPDIRECT3DDEVICE8 lpD3DDevice)
{
m_lstSprite[0]->Render(lpD3DDevice, m_cAlpha);
m_lstSprite[1]->Render(lpD3DDevice, m_cAlpha);
list<CItemInstance *>::iterator it;
const Item::ItemInfo *lpItemInfo;
for(it = g_ClientMain.m_csStatus.m_lstStreetTrade.begin(); it != g_ClientMain.m_csStatus.m_lstStreetTrade.end(); it++)
{
lpItemInfo = &(*it)->GetItemInfo();
(*it)->m_wPutX = m_rcWindowSize.left + 8 + 26 * (*it)->m_lpItemBase->GetPos().GetXIndex() + (((lpItemInfo->m_DetailData.m_cXSize * 26 - 1) - (*it)->m_lpSprite->GetSizeX()) / 2);
(*it)->m_wPutY = m_rcWindowSize.top + 73 + 26 * (*it)->m_lpItemBase->GetPos().GetYIndex() + (((lpItemInfo->m_DetailData.m_cYSize * 26 - 1) - (*it)->m_lpSprite->GetSizeY()) / 2);
(*it)->Render(lpD3DDevice);
}
if(g_ClientMain.m_lpPickItem && g_MessageBoxManager.m_lstMessageBox.empty())
{
if(g_DeviceInput.InRect(m_rcWindowSize.left + 8, m_rcWindowSize.top + 73, m_rcWindowSize.left + 215, m_rcWindowSize.top + 280))
{
Item::ItemPos pItemIndex;
POINT *ptMousePos = g_DeviceInput.GetMousePosition();
pItemIndex.SetPos((ptMousePos->x - (m_rcWindowSize.left + 8)) / 26, (ptMousePos->y - (m_rcWindowSize.top + 73)) / 26, 0);
__int64 ddItem;
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 5, pItemIndex.GetXIndex(), pItemIndex.GetYIndex(), 0)) != ITEM_FAILED)
{
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice,
m_rcWindowSize.left + 8 + pItemIndex.GetXIndex() * 26,
m_rcWindowSize.top + 73 + pItemIndex.GetYIndex() * 26,
m_rcWindowSize.left + 8 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize * 26 + pItemIndex.GetXIndex() * 26,
m_rcWindowSize.top + 73 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize * 26 + pItemIndex.GetYIndex() * 26,
0xFF0000FF, 0x80);
} else
{
if(g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize + pItemIndex.GetXIndex() < 8 &&
g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize + pItemIndex.GetYIndex() < 8)
{
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice,
m_rcWindowSize.left + 8 + pItemIndex.GetXIndex() * 26,
m_rcWindowSize.top + 73 + pItemIndex.GetYIndex() * 26,
m_rcWindowSize.left + 8 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize * 26 + pItemIndex.GetXIndex() * 26,
m_rcWindowSize.top + 73 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize * 26 + pItemIndex.GetYIndex() * 26,
0xFFFF0000, 0x80);
}
}
}
}
m_lstScroll[0]->Render(lpD3DDevice, m_cAlpha);
RECT rcRect;
if(strcmp(m_strOwner, ""))
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
SetRect(&rcRect, m_rcWindowSize.left + 66, m_rcWindowSize.top + 51, m_rcWindowSize.left + 213, m_rcWindowSize.top + 63);
g_TextEdit.DrawText(m_strOwner, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255));
}
SetRect(&rcRect, m_rcWindowSize.left + 10, m_rcWindowSize.top + 295, m_rcWindowSize.left + 201, m_rcWindowSize.top + 295 + 15);
for(int i = 0; i < MAX_DRAWSTALLCHAT; i++)
{
if(g_TextEdit.m_deqStallMessage.size() < i + 1) break;
g_TextEdit.DrawText(g_TextEdit.m_deqStallMessage[i + g_TextEdit.m_dwStartStall]->strMessage, &rcRect, DT_LEFT | DT_VCENTER, g_TextEdit.m_deqStallMessage[i + g_TextEdit.m_dwStartStall]->dwColor);
rcRect.top += 15;
rcRect.bottom = rcRect.top + 15;
}
if(g_TextEdit.IsFocus() && g_TextEdit.m_dwEditMode == EDITMODE_STALL)
{
SetRect(&rcRect, m_rcWindowSize.left + 10, m_rcWindowSize.top + 456, m_rcWindowSize.left + 209, m_rcWindowSize.top + 468);
if(g_ClientMain.m_bCursorToggle)
{
char strChat[MAX_PATH];
sprintf(strChat, "%s_", g_TextEdit.GetMessage());
g_TextEdit.DrawText(strChat, &rcRect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255));
} else
{
g_TextEdit.DrawText(g_TextEdit.GetMessage(), &rcRect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255));
}
}
m_ButtonManager.Render(lpD3DDevice);
}
void CHumanStreetStall::DeleteTradeItem()
{
for(int j = 0; j < 8; j++)
{
for(int i = 0; i < 8; i++)
{
g_ClientMain.m_csStatus.m_aryStreetTrade[j][i] = ITEM_EMPTY;
}
}
list<CItemInstance *>::iterator it;
CItemInstance *lpDelete;
for(it = g_ClientMain.m_csStatus.m_lstStreetTrade.begin(); it != g_ClientMain.m_csStatus.m_lstStreetTrade.end();)
{
lpDelete = (*it);
it = g_ClientMain.m_csStatus.m_lstStreetTrade.erase(it);
delete lpDelete;
}
g_ClientMain.m_csStatus.m_lstStreetTrade.clear();
}
void CHumanStreetStall::InitStreetStall(unsigned long dwChrID, char *lpstrStreetName)
{
m_dwMarketOwnerID = dwChrID;
if(m_dwMarketOwnerID == g_ClientMain.m_dwMyChrID)
{
if(!lpstrStreetName)
{
CGUIMessageBox *lpMessageBox = new CGUIMessageBox;
lpMessageBox->Create(g_StringTable.m_strString[591], MB_STRING | MB_CONFIRM | MB_CANCEL | MB_EXIT);
lpMessageBox->SetResult(&m_dwNameResult);
lpMessageBox->SetValue((char *)&m_strMarketName);
lpMessageBox->SetEnableEnter(FALSE);
} else
{
strcpy(m_strOwner, lpstrStreetName);
g_TextEdit.AddStallChatMessage(g_StringTable.m_strString[592], g_ClientMain.m_dwMyChrID, 128);
g_TextEdit.AddStallChatMessage(g_StringTable.m_strString[593], g_ClientMain.m_dwMyChrID, 0);
}
} else
{
strcpy(m_strOwner, lpstrStreetName);
char strText[MAX_PATH];
sprintf(strText, g_StringTable.m_strString[594], m_strOwner);
g_TextEdit.AddStallChatMessage(strText, g_ClientMain.m_dwMyChrID, 128);
g_TextEdit.AddStallChatMessage(g_StringTable.m_strString[595], g_ClientMain.m_dwMyChrID, 0);
}
if(lpstrStreetName)
{
if(strcmp(lpstrStreetName, ""))
{
g_TextEdit.m_dwEditMode = EDITMODE_STALL;
g_TextEdit.InitMessage();
g_TextEdit.SetFocus();
}
}
}
BOOL CHumanStreetStall::SelectItem()
{
BOOL bPickItem = FALSE;
const Item::ItemInfo *lpItemInfo;
///// â<><C3A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><> <20><><EFBFBD><EFBFBD>
list<CItemInstance *>::iterator it;
for(it = g_ClientMain.m_csStatus.m_lstStreetTrade.begin(); it != g_ClientMain.m_csStatus.m_lstStreetTrade.end();)
{
lpItemInfo = &(*it)->GetItemInfo();
(*it)->m_wPutX = m_rcWindowSize.left + 8 + 26 * (*it)->m_lpItemBase->GetPos().GetXIndex() + (((lpItemInfo->m_DetailData.m_cXSize * 26 - 1) - (*it)->m_lpSprite->GetSizeX()) / 2);
(*it)->m_wPutY = m_rcWindowSize.top + 73 + 26 * (*it)->m_lpItemBase->GetPos().GetYIndex() + (((lpItemInfo->m_DetailData.m_cYSize * 26 - 1) - (*it)->m_lpSprite->GetSizeY()) / 2);
if(!g_ClientMain.m_lpPickItem && g_DeviceInput.GetIsLeftMouseDown() && (*it)->IsOverMouse())
{
g_ClientMain.SetPickItem((*it));
g_ClientMain.m_csStatus.CheckStreetTradeField(0, g_ClientMain.m_lpPickItem);
it = g_ClientMain.m_csStatus.m_lstStreetTrade.erase(it);
bPickItem = TRUE;
} else
{
it++;
}
}
if(bPickItem)
{
return TRUE;
}
return FALSE;
}