Device charging indicator
@@ -302,6 +302,12 @@ namespace VRCX
|
|||||||
{
|
{
|
||||||
batteryPercentage = 1f;
|
batteryPercentage = 1f;
|
||||||
}
|
}
|
||||||
|
err = ETrackedPropertyError.TrackedProp_Success;
|
||||||
|
var isCharging = system.GetBoolTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_DeviceIsCharging_Bool, ref err);
|
||||||
|
if (err != ETrackedPropertyError.TrackedProp_Success)
|
||||||
|
{
|
||||||
|
isCharging = false;
|
||||||
|
}
|
||||||
sb.Clear();
|
sb.Clear();
|
||||||
system.GetStringTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_TrackingSystemName_String, sb, (uint)sb.Capacity, ref err);
|
system.GetStringTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_TrackingSystemName_String, sb, (uint)sb.Capacity, ref err);
|
||||||
var isOculus = sb.ToString().IndexOf("oculus", StringComparison.OrdinalIgnoreCase) >= 0;
|
var isOculus = sb.ToString().IndexOf("oculus", StringComparison.OrdinalIgnoreCase) >= 0;
|
||||||
@@ -364,7 +370,10 @@ namespace VRCX
|
|||||||
system.IsTrackedDeviceConnected(i)
|
system.IsTrackedDeviceConnected(i)
|
||||||
? "connected"
|
? "connected"
|
||||||
: "disconnected",
|
: "disconnected",
|
||||||
(batteryPercentage * 100).ToString()
|
isCharging
|
||||||
|
? "charging"
|
||||||
|
: "discharging",
|
||||||
|
(batteryPercentage * 100).ToString(),
|
||||||
};
|
};
|
||||||
_deviceListLock.EnterWriteLock();
|
_deviceListLock.EnterWriteLock();
|
||||||
try
|
try
|
||||||
|
|||||||
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
@@ -5051,7 +5051,7 @@ speechSynthesis.getVoices();
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
wristFeed.splice(15);
|
wristFeed.splice(16);
|
||||||
AppApi.ExecuteVrFeedFunction(
|
AppApi.ExecuteVrFeedFunction(
|
||||||
'wristFeedUpdate',
|
'wristFeedUpdate',
|
||||||
JSON.stringify(wristFeed)
|
JSON.stringify(wristFeed)
|
||||||
|
|||||||
@@ -1369,11 +1369,7 @@
|
|||||||
"timer": "Timer:",
|
"timer": "Timer:",
|
||||||
"players": "Players:",
|
"players": "Players:",
|
||||||
"cpu": "CPU:",
|
"cpu": "CPU:",
|
||||||
"online": "Online:",
|
"online": "Online:"
|
||||||
"devices": {
|
|
||||||
"left": "L:",
|
|
||||||
"right": "R:"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1369,11 +1369,7 @@
|
|||||||
"timer": "시간:",
|
"timer": "시간:",
|
||||||
"players": "인원수:",
|
"players": "인원수:",
|
||||||
"cpu": "CPU:",
|
"cpu": "CPU:",
|
||||||
"online": "온라인:",
|
"online": "온라인:"
|
||||||
"devices": {
|
|
||||||
"left": "왼쪽:",
|
|
||||||
"right": "오른쪽:"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1366,11 +1366,7 @@
|
|||||||
"timer": "時長:",
|
"timer": "時長:",
|
||||||
"players": "玩家人數:",
|
"players": "玩家人數:",
|
||||||
"cpu": "CPU:",
|
"cpu": "CPU:",
|
||||||
"online": "線上:",
|
"online": "線上:"
|
||||||
"devices": {
|
|
||||||
"left": "左:",
|
|
||||||
"right": "右:"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -324,6 +324,7 @@ Vue.component('marquee-text', MarqueeText);
|
|||||||
this.hudTimeout = [];
|
this.hudTimeout = [];
|
||||||
this.setDatetimeFormat();
|
this.setDatetimeFormat();
|
||||||
this.setAppLanguage(this.config.appLanguage);
|
this.setAppLanguage(this.config.appLanguage);
|
||||||
|
this.updateFeedLength();
|
||||||
};
|
};
|
||||||
|
|
||||||
$app.methods.updateOnlineFriendCount = function (count) {
|
$app.methods.updateOnlineFriendCount = function (count) {
|
||||||
@@ -347,6 +348,7 @@ Vue.component('marquee-text', MarqueeText);
|
|||||||
circle.style.opacity = 0;
|
circle.style.opacity = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this.updateFeedLength();
|
||||||
};
|
};
|
||||||
|
|
||||||
$app.methods.lastLocationUpdate = function (json) {
|
$app.methods.lastLocationUpdate = function (json) {
|
||||||
@@ -355,6 +357,27 @@ Vue.component('marquee-text', MarqueeText);
|
|||||||
|
|
||||||
$app.methods.wristFeedUpdate = function (json) {
|
$app.methods.wristFeedUpdate = function (json) {
|
||||||
this.wristFeed = JSON.parse(json);
|
this.wristFeed = JSON.parse(json);
|
||||||
|
this.updateFeedLength();
|
||||||
|
};
|
||||||
|
|
||||||
|
$app.methods.updateFeedLength = function () {
|
||||||
|
if (this.appType === '2' || this.wristFeed.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var length = 16;
|
||||||
|
if (!this.config.hideDevicesFromFeed) {
|
||||||
|
length -= 2;
|
||||||
|
if (this.devices.length > 7) {
|
||||||
|
length -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.nowPlaying.playing) {
|
||||||
|
length -= 1;
|
||||||
|
}
|
||||||
|
if (!this.config.hideFriendsFromFeed && this.nowPlaying.playing) {
|
||||||
|
length -= 1;
|
||||||
|
}
|
||||||
|
this.wristFeed.length = length;
|
||||||
};
|
};
|
||||||
|
|
||||||
$app.methods.updateStatsLoop = async function () {
|
$app.methods.updateStatsLoop = async function () {
|
||||||
@@ -396,7 +419,7 @@ Vue.component('marquee-text', MarqueeText);
|
|||||||
var deviceList = [];
|
var deviceList = [];
|
||||||
var baseStations = 0;
|
var baseStations = 0;
|
||||||
devices.forEach((device) => {
|
devices.forEach((device) => {
|
||||||
device[2] = parseInt(device[2], 10);
|
device[3] = parseInt(device[3], 10);
|
||||||
if (device[0] === 'base' && device[1] === 'connected') {
|
if (device[0] === 'base' && device[1] === 'connected') {
|
||||||
baseStations++;
|
baseStations++;
|
||||||
} else {
|
} else {
|
||||||
@@ -428,7 +451,12 @@ Vue.component('marquee-text', MarqueeText);
|
|||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
if (baseStations > 0) {
|
if (baseStations > 0) {
|
||||||
deviceList.push(['base', 'connected', baseStations]);
|
deviceList.push([
|
||||||
|
'base',
|
||||||
|
'connected',
|
||||||
|
'',
|
||||||
|
baseStations
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
this.devices = deviceList;
|
this.devices = deviceList;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -415,34 +415,39 @@ html
|
|||||||
div(style="display:flex;flex-direction:row;flex-wrap:wrap")
|
div(style="display:flex;flex-direction:row;flex-wrap:wrap")
|
||||||
div(v-for="device in devices" class="tracker-container")
|
div(v-for="device in devices" class="tracker-container")
|
||||||
template(v-if="device[0] === 'leftController'")
|
template(v-if="device[0] === 'leftController'")
|
||||||
img(v-if="device[1] !== 'connected'" src="images/controller_status_off.png" class="tracker-device")
|
img(v-if="device[1] !== 'connected'" src="images/left_controller_status_off.png" class="tracker-device")
|
||||||
img(v-else-if="device[2] < 20" src="images/controller_status_ready_low.png" class="tracker-device")
|
img(v-else-if="device[2] === 'charging'" src="images/left_controller_status_ready_charging.png" class="tracker-device")
|
||||||
img(v-else src="images/controller_status_ready.png" class="tracker-device")
|
img(v-else-if="device[3] < 20" src="images/left_controller_status_ready_low.png" class="tracker-device")
|
||||||
span {{ $t('vr.status.devices.left') }}{{ device[2] }}%
|
img(v-else src="images/left_controller_status_ready.png" class="tracker-device")
|
||||||
|
span {{ device[3] }}%
|
||||||
template(v-else-if="device[0] === 'rightController'")
|
template(v-else-if="device[0] === 'rightController'")
|
||||||
img(v-if="device[1] !== 'connected'" src="images/controller_status_off.png" class="tracker-device")
|
img(v-if="device[1] !== 'connected'" src="images/right_controller_status_off.png" class="tracker-device")
|
||||||
img(v-else-if="device[2] < 20" src="images/controller_status_ready_low.png" class="tracker-device")
|
img(v-else-if="device[2] === 'charging'" src="images/right_controller_status_ready_charging.png" class="tracker-device")
|
||||||
img(v-else src="images/controller_status_ready.png" class="tracker-device")
|
img(v-else-if="device[3] < 20" src="images/right_controller_status_ready_low.png" class="tracker-device")
|
||||||
span {{ $t('vr.status.devices.right') }}{{ device[2] }}%
|
img(v-else src="images/right_controller_status_ready.png" class="tracker-device")
|
||||||
|
span {{ device[3] }}%
|
||||||
template(v-else-if="device[0] === 'controller'")
|
template(v-else-if="device[0] === 'controller'")
|
||||||
img(v-if="device[1] !== 'connected'" src="images/controller_status_off.png" class="tracker-device")
|
img(v-if="device[1] !== 'connected'" src="images/controller_status_off.png" class="tracker-device")
|
||||||
img(v-else-if="device[2] < 20" src="images/controller_status_ready_low.png" class="tracker-device")
|
img(v-else-if="device[2] === 'charging'" src="images/controller_status_ready_charging.png" class="tracker-device")
|
||||||
|
img(v-else-if="device[3] < 20" src="images/controller_status_ready_low.png" class="tracker-device")
|
||||||
img(v-else src="images/controller_status_ready.png" class="tracker-device")
|
img(v-else src="images/controller_status_ready.png" class="tracker-device")
|
||||||
span {{ device[2] }}%
|
span {{ device[3] }}%
|
||||||
template(v-else-if="device[0] === 'tracker'")
|
template(v-else-if="device[0] === 'tracker'")
|
||||||
img(v-if="device[1] !== 'connected'" src="images/tracker_status_off.png" class="tracker-device")
|
img(v-if="device[1] !== 'connected'" src="images/tracker_status_off.png" class="tracker-device")
|
||||||
img(v-else-if="device[2] < 20" src="images/tracker_status_ready_low.png" class="tracker-device")
|
img(v-else-if="device[2] === 'charging'" src="images/tracker_status_ready_charging.png" class="tracker-device")
|
||||||
|
img(v-else-if="device[3] < 20" src="images/tracker_status_ready_low.png" class="tracker-device")
|
||||||
img(v-else src="images/tracker_status_ready.png" class="tracker-device")
|
img(v-else src="images/tracker_status_ready.png" class="tracker-device")
|
||||||
span {{ device[2] }}%
|
span {{ device[3] }}%
|
||||||
template(v-else-if="device[0] === 'base'")
|
template(v-else-if="device[0] === 'base'")
|
||||||
img(v-if="device[1] !== 'connected'" src="images/base_status_off.png" class="tracker-device")
|
img(v-if="device[1] !== 'connected'" src="images/base_status_off.png" class="tracker-device")
|
||||||
img(v-else src="images/base_status_ready.png" class="tracker-device")
|
img(v-else src="images/base_status_ready.png" class="tracker-device")
|
||||||
span(v-if="device[2] !== 100") {{ device[2] }}x
|
span(v-if="device[3] !== 100") {{ device[3] }}x
|
||||||
template(v-else)
|
template(v-else)
|
||||||
img(v-if="device[1] !== 'connected'" src="images/other_status_off.png" class="tracker-device")
|
img(v-if="device[1] !== 'connected'" src="images/other_status_off.png" class="tracker-device")
|
||||||
img(v-else-if="device[2] < 20" src="images/other_status_ready_low.png" class="tracker-device")
|
img(v-else-if="device[2] === 'charging'" src="images/other_status_ready_charging.png" class="tracker-device")
|
||||||
|
img(v-else-if="device[3] < 20" src="images/other_status_ready_low.png" class="tracker-device")
|
||||||
img(v-else src="images/other_status_ready.png" class="tracker-device")
|
img(v-else src="images/other_status_ready.png" class="tracker-device")
|
||||||
span {{ device[2] }}%
|
span {{ device[3] }}%
|
||||||
.x-containerbottom
|
.x-containerbottom
|
||||||
template(v-if="nowPlaying.playing")
|
template(v-if="nowPlaying.playing")
|
||||||
span(style="float:right;padding-left:10px") {{ nowPlaying.remainingText }}
|
span(style="float:right;padding-left:10px") {{ nowPlaying.remainingText }}
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ button {
|
|||||||
.x-container {
|
.x-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
flex: none;
|
flex: none;
|
||||||
padding: 10px;
|
padding: 2px 10px 0 10px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,7 +400,8 @@ i.x-user-status.busy {
|
|||||||
.tracker-container {
|
.tracker-container {
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 16px;
|
line-height: 18px;
|
||||||
|
width: 55px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tracker-device img {
|
.tracker-device img {
|
||||||
|
|||||||