mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-31 22:05:10 +02:00
Fix hot seat timer visualization
This commit is contained in:
parent
e4e9bcfb9b
commit
614a285fb8
@ -41,7 +41,7 @@ void TurnTimerWidget::DrawRect::showAll(Canvas & to)
|
|||||||
|
|
||||||
TurnTimerWidget::TurnTimerWidget():
|
TurnTimerWidget::TurnTimerWidget():
|
||||||
InterfaceObjectConfigurable(TIME),
|
InterfaceObjectConfigurable(TIME),
|
||||||
turnTime(0), lastTurnTime(0), cachedTurnTime(0)
|
turnTime(0), lastTurnTime(0), cachedTurnTime(0), lastPlayer(PlayerColor::CANNOT_DETERMINE)
|
||||||
{
|
{
|
||||||
REGISTER_BUILDER("drawRect", &TurnTimerWidget::buildDrawRect);
|
REGISTER_BUILDER("drawRect", &TurnTimerWidget::buildDrawRect);
|
||||||
|
|
||||||
@ -73,8 +73,8 @@ void TurnTimerWidget::show(Canvas & to)
|
|||||||
void TurnTimerWidget::setTime(PlayerColor player, int time)
|
void TurnTimerWidget::setTime(PlayerColor player, int time)
|
||||||
{
|
{
|
||||||
int newTime = time / 1000;
|
int newTime = time / 1000;
|
||||||
if(player == LOCPLINT->playerID)
|
if(player == LOCPLINT->playerID
|
||||||
&& (newTime != turnTime)
|
&& newTime != turnTime
|
||||||
&& notifications.count(newTime))
|
&& notifications.count(newTime))
|
||||||
{
|
{
|
||||||
CCS->soundh->playSound(variables["notificationSound"].String());
|
CCS->soundh->playSound(variables["notificationSound"].String());
|
||||||
@ -117,6 +117,12 @@ void TurnTimerWidget::tick(uint32_t msPassed)
|
|||||||
cachedTurnTime -= msPassed;
|
cachedTurnTime -= msPassed;
|
||||||
if(cachedTurnTime < 0) cachedTurnTime = 0; //do not go below zero
|
if(cachedTurnTime < 0) cachedTurnTime = 0; //do not go below zero
|
||||||
|
|
||||||
|
if(lastPlayer != player)
|
||||||
|
{
|
||||||
|
lastPlayer = player;
|
||||||
|
lastTurnTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
auto timeCheckAndUpdate = [&](int time)
|
auto timeCheckAndUpdate = [&](int time)
|
||||||
{
|
{
|
||||||
if(time / 1000 != lastTurnTime / 1000)
|
if(time / 1000 != lastTurnTime / 1000)
|
||||||
@ -130,7 +136,7 @@ void TurnTimerWidget::tick(uint32_t msPassed)
|
|||||||
};
|
};
|
||||||
|
|
||||||
auto * playerInfo = LOCPLINT->cb->getPlayer(player);
|
auto * playerInfo = LOCPLINT->cb->getPlayer(player);
|
||||||
if(playerInfo && playerInfo->isHuman())
|
if(player.isValidPlayer() || (playerInfo && playerInfo->isHuman()))
|
||||||
{
|
{
|
||||||
if(LOCPLINT->battleInt)
|
if(LOCPLINT->battleInt)
|
||||||
{
|
{
|
||||||
|
@ -18,6 +18,12 @@
|
|||||||
class CAnimImage;
|
class CAnimImage;
|
||||||
class CLabel;
|
class CLabel;
|
||||||
|
|
||||||
|
VCMI_LIB_NAMESPACE_BEGIN
|
||||||
|
|
||||||
|
class PlayerColor;
|
||||||
|
|
||||||
|
VCMI_LIB_NAMESPACE_END
|
||||||
|
|
||||||
class TurnTimerWidget : public InterfaceObjectConfigurable
|
class TurnTimerWidget : public InterfaceObjectConfigurable
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@ -35,6 +41,7 @@ private:
|
|||||||
int turnTime;
|
int turnTime;
|
||||||
int lastTurnTime;
|
int lastTurnTime;
|
||||||
int cachedTurnTime;
|
int cachedTurnTime;
|
||||||
|
PlayerColor lastPlayer;
|
||||||
|
|
||||||
std::set<int> notifications;
|
std::set<int> notifications;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user