Tweak BatteryInfo

This commit is contained in:
Wojtek Figat
2021-01-11 16:38:12 +01:00
parent 1d2e2e5575
commit 6252c111b4
3 changed files with 38 additions and 32 deletions

View File

@@ -199,7 +199,7 @@ public:
/// Gets the current state of the audio playback (playing/paused/stopped).
/// </summary>
/// <returns>The value.</returns>
API_PROPERTY() FORCE_INLINE States GetState() const
API_PROPERTY() FORCE_INLINE AudioSource::States GetState() const
{
return _state;
}

View File

@@ -5,43 +5,45 @@
#include "Engine/Core/Types/BaseTypes.h"
/// <summary>
/// Power supply status.
/// </summary>
API_ENUM() enum class ACLineStatus : byte
{
/// <summary>
/// Power supply is not connected.
/// </summary>
Offline = 0,
/// <summary>
/// Power supply is connected.
/// </summary>
Online = 1,
/// <summary>
/// Unknown status.
/// </summary>
Unknown = 255
};
/// <summary>
/// Contains information about power supply (Battery).
/// Contains information about power supply (battery).
/// </summary>
API_STRUCT() struct BatteryInfo
{
DECLARE_SCRIPTING_TYPE_MINIMAL(BatteryInfo);
/// <summary>
/// Power supply status.
/// </summary>
API_FIELD() ACLineStatus ACLineStatus;
/// <summary>
/// Power supply status.
/// </summary>
API_ENUM() enum class States
{
/// <summary>
/// Unknown status.
/// </summary>
Unknown,
/// <summary>
/// Power supply is connected and battery is charging.
/// </summary>
BatteryCharging,
/// <summary>
/// Device is running on a battery.
/// </summary>
BatteryDischarging,
/// <summary>
/// Device is connected to the stable power supply (AC).
/// </summary>
Connected,
};
/// <summary>
/// Battery percentage left.
/// Power supply state.
/// </summary>
API_FIELD() byte BatteryLifePercent;
API_FIELD() BatteryInfo::States State = BatteryInfo::States::Unknown;
/// <summary>
/// Remaining battery life time in second.
/// Battery percentage left (normalized to 0-1 range).
/// </summary>
API_FIELD() uint32 BatteryLifeTime;
API_FIELD() float BatteryLifePercent = 1.0f;
};

View File

@@ -315,9 +315,13 @@ BatteryInfo Win32Platform::GetBatteryInfo()
BatteryInfo info;
SYSTEM_POWER_STATUS status;
GetSystemPowerStatus(&status);
info.ACLineStatus = (ACLineStatus)status.ACLineStatus;
info.BatteryLifePercent = status.BatteryLifePercent;
info.BatteryLifeTime = status.BatteryLifeTime;
info.BatteryLifePercent = (float)status.BatteryLifePercent / 255.0f;
if (status.BatteryFlag & 8)
info.State = BatteryInfo::States::BatteryCharging;
else if (status.BatteryFlag & 1 || status.BatteryFlag & 2 || status.BatteryFlag & 4)
info.State = BatteryInfo::States::BatteryDischarging;
else if (status.ACLineStatus == 1 || status.BatteryFlag & 128)
info.State = BatteryInfo::States::Connected;
return info;
}