mirror of
https://github.com/zhenyan121/SporeBG-Conid.git
synced 2026-04-10 06:14:08 +08:00
perf(ui): optimize online UI display
This commit is contained in:
@@ -16,15 +16,20 @@ std::unique_ptr<GameUIManager> OnlineGameScene::createUIManager() {
|
|||||||
[this](NetType type) {
|
[this](NetType type) {
|
||||||
if (m_networkManager) {
|
if (m_networkManager) {
|
||||||
m_networkManager->init(type);
|
m_networkManager->init(type);
|
||||||
|
|
||||||
|
m_gameUIManager->setButton("OnlineHostButton", false);
|
||||||
|
m_gameUIManager->setButton("OnlineJoinButton", false);
|
||||||
if (type == NetType::CLIENT) {
|
if (type == NetType::CLIENT) {
|
||||||
m_isMyTurn = false;
|
m_isMyTurn = false;
|
||||||
|
|
||||||
m_myPlayerID = PlayerID::P2;
|
m_myPlayerID = PlayerID::P2;
|
||||||
|
m_gameUIManager->setLabel("OnlineJoinConnectLabel", true);
|
||||||
} else if (type == NetType::HOST) {
|
} else if (type == NetType::HOST) {
|
||||||
m_isMyTurn = true;
|
m_isMyTurn = true;
|
||||||
m_myPlayerID = PlayerID::P1;
|
m_myPlayerID = PlayerID::P1;
|
||||||
|
m_gameUIManager->setLabel("OnlineHostConnectLabel", true);
|
||||||
}
|
}
|
||||||
m_networkManager->setIsMyTurn(m_isMyTurn);
|
m_networkManager->setIsMyTurn(m_isMyTurn);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -42,15 +47,21 @@ void OnlineGameScene::onEnter(SDL_Renderer* renderer, int WIDTH, int HEIGHT, UIR
|
|||||||
);
|
);
|
||||||
m_networkManager->setStartGameCallback(
|
m_networkManager->setStartGameCallback(
|
||||||
[this]() {
|
[this]() {
|
||||||
auto onlineUIManager = dynamic_cast<OnlineGameUIManager*>(m_gameUIManager.get());
|
if (!m_gameUIManager) {
|
||||||
if (onlineUIManager) {
|
std::cerr << "gameUIManager is null!\n";
|
||||||
onlineUIManager->hideOnlineButtons();
|
|
||||||
}
|
}
|
||||||
|
m_gameUIManager->setLabel("OnlineHostConnectLabel", false);
|
||||||
|
m_gameUIManager->setLabel("OnlineJoinConnectLabel", false);
|
||||||
|
m_gameUIManager->setButton("ActionButton", true);
|
||||||
|
m_gameUIManager->setLabel("PlayerLabel", true);
|
||||||
m_currentGameState = GameState::GAME_RUNING;
|
m_currentGameState = GameState::GAME_RUNING;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
// 调用父类的onEnter(会调用我们重写的createUIManager)
|
// 调用父类的onEnter(会调用我们重写的createUIManager)
|
||||||
GameScene::onEnter(renderer, WIDTH, HEIGHT, uiRenderer);
|
GameScene::onEnter(renderer, WIDTH, HEIGHT, uiRenderer);
|
||||||
|
|
||||||
|
m_gameUIManager->setButton("ActionButton", false); // 初始禁用行动按钮,等待游戏开始
|
||||||
|
m_gameUIManager->setLabel("PlayerLabel", false); // 初始隐藏玩家回合标签
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OnlineGameScene::preHandleClick(int logicalX, int logicalY) {
|
bool OnlineGameScene::preHandleClick(int logicalX, int logicalY) {
|
||||||
|
|||||||
@@ -43,6 +43,24 @@ void OnlineGameUIManager::init() {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
m_buttons.emplace(onlineJoinButton->getNameHash(), std::move(onlineJoinButton));
|
m_buttons.emplace(onlineJoinButton->getNameHash(), std::move(onlineJoinButton));
|
||||||
|
|
||||||
|
auto onlineHostConnectLabel = UIWidgetFactory::createStandardLabel(
|
||||||
|
"OnlineHostConnectLabel",
|
||||||
|
"Waiting for player to connect...",
|
||||||
|
200,
|
||||||
|
200
|
||||||
|
);
|
||||||
|
onlineHostConnectLabel->setVisible(false);
|
||||||
|
m_labels.emplace(onlineHostConnectLabel->getNameHash(), std::move(onlineHostConnectLabel));
|
||||||
|
|
||||||
|
auto onlineJoinConnectLabel = UIWidgetFactory::createStandardLabel(
|
||||||
|
"OnlineJoinConnectLabel",
|
||||||
|
"Connecting to host...",
|
||||||
|
200,
|
||||||
|
200
|
||||||
|
);
|
||||||
|
onlineJoinConnectLabel->setVisible(false);
|
||||||
|
m_labels.emplace(onlineJoinConnectLabel->getNameHash(), std::move(onlineJoinConnectLabel));
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnlineGameUIManager::setOnlineTypeCallback(OnlineTypeEvent onlineTypeEvent) {
|
void OnlineGameUIManager::setOnlineTypeCallback(OnlineTypeEvent onlineTypeEvent) {
|
||||||
|
|||||||
Reference in New Issue
Block a user