1
0
forked from Clones/Controlify

Battery level warning + update SDL with macOS ARM support

This commit is contained in:
isXander
2023-05-11 16:43:13 +01:00
parent 0e8bf0cc9b
commit 71c7e26587
19 changed files with 283 additions and 69 deletions

View File

@ -0,0 +1,50 @@
package dev.isxander.controlify.wireless;
import dev.isxander.controlify.Controlify;
import dev.isxander.controlify.ControllerManager;
import dev.isxander.controlify.controller.BatteryLevel;
import dev.isxander.controlify.controller.Controller;
import dev.isxander.controlify.utils.ToastUtils;
import net.minecraft.network.chat.Component;
import java.util.HashMap;
import java.util.Map;
public class LowBatteryNotifier {
private static final Map<String, BatteryLevel> previousBatteryLevels = new HashMap<>();
private static int interval;
public static void tick() {
if (interval > 0) {
interval--;
return;
}
interval = 20 * 60; // 1 minute
if (!Controlify.instance().config().globalSettings().notifyLowBattery)
return;
for (Controller<?, ?> controller : ControllerManager.getConnectedControllers()) {
BatteryLevel batteryLevel = controller.batteryLevel();
if (batteryLevel == BatteryLevel.UNKNOWN) {
continue;
}
String uid = controller.uid();
if (previousBatteryLevels.containsKey(uid)) {
BatteryLevel previousBatteryLevel = previousBatteryLevels.get(uid);
if (batteryLevel.ordinal() < previousBatteryLevel.ordinal()) {
if (batteryLevel == BatteryLevel.LOW) {
ToastUtils.sendToast(
Component.translatable("controlify.toast.low_battery.title"),
Component.translatable("controlify.toast.low_battery.message", controller.name()),
true
);
}
}
}
previousBatteryLevels.put(uid, batteryLevel);
}
}
}