4jcraft/Minecraft.Client/Platform/Common/XUI/XUI_Chat.cpp
2026-03-22 12:40:22 -05:00

65 lines
2.1 KiB
C++

#include "../../Minecraft.World/Platform/stdafx.h"
#include "XUI_Chat.h"
#include "../../Minecraft.Client/Minecraft.h"
#include "../../Minecraft.Client/UI/Gui.h"
HRESULT CScene_Chat::OnInit(XUIMessageInit* pInitData, BOOL& bHandled) {
m_iPad = *(int*)pInitData->pvInitData;
MapChildControls();
this->SetTimer(0, 100);
XuiElementGetPosition(m_hObj, &m_OriginalPosition);
return S_OK;
}
HRESULT CScene_Chat::OnTimer(XUIMessageTimer* pXUIMessageTimer,
BOOL& bHandled) {
Minecraft* pMinecraft = Minecraft::GetInstance();
Gui* pGui = pMinecraft->gui;
// DWORD messagesToDisplay = std::min( CHAT_LINES_COUNT,
// pGui->getMessagesCount(m_iPad) );
for (unsigned int i = 0; i < CHAT_LINES_COUNT; ++i) {
float opacity = pGui->getOpacity(m_iPad, i);
if (opacity > 0) {
m_Backgrounds[i].SetOpacity(opacity);
m_Labels[i].SetOpacity(opacity);
m_Labels[i].SetText(pGui->getMessage(m_iPad, i).c_str());
} else {
m_Backgrounds[i].SetOpacity(0);
m_Labels[i].SetOpacity(0);
}
}
if (pMinecraft->localplayers[m_iPad] != NULL) {
m_Jukebox.SetText(pGui->getJukeboxMessage(m_iPad).c_str());
m_Jukebox.SetOpacity(pGui->getJukeboxOpacity(m_iPad));
}
return S_OK;
}
HRESULT CScene_Chat::OnCustomMessage_Splitscreenplayer(bool bJoining,
BOOL& bHandled) {
bHandled = true;
app.ReloadChatScene(m_iPad, bJoining);
return S_OK;
}
HRESULT CScene_Chat::OffsetTextPosition(float xOffset,
float yOffset /*= 0.0f*/) {
D3DXVECTOR3 vPos;
float fWidth, fHeight;
XuiElementGetBounds(m_Backgrounds[0], &fWidth, &fHeight);
for (unsigned int i = 0; i < CHAT_LINES_COUNT; ++i) {
XuiElementGetPosition(m_Labels[i], &vPos);
vPos.x = xOffset;
vPos.y += yOffset;
XuiElementSetPosition(m_Labels[i], &vPos);
XuiElementSetBounds(m_Labels[i], fWidth - xOffset, fHeight);
}
return S_OK;
}