mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 06:18:52 +02:00
Add pop-up menu of "show me" values
This commit is contained in:
parent
6cd512762d
commit
798d6437b1
1 changed files with 83 additions and 0 deletions
|
@ -62,6 +62,9 @@ var usersWindow = (function () {
|
||||||
DISPLAY_PROMPT_WIDTH = 60,
|
DISPLAY_PROMPT_WIDTH = 60,
|
||||||
displayValues = ["everyone", "friends"],
|
displayValues = ["everyone", "friends"],
|
||||||
displayControl,
|
displayControl,
|
||||||
|
DISPLAY_OPTIONS_BACKGROUND_COLOR = { red: 40, green: 40, blue: 40 },
|
||||||
|
DISPLAY_OPTIONS_BACKGROUND_ALPHA = 0.95,
|
||||||
|
displayOptions = [],
|
||||||
isShowingDisplayOptions = false,
|
isShowingDisplayOptions = false,
|
||||||
|
|
||||||
VISIBILITY_SPACER = 6, // Space before visibility controls
|
VISIBILITY_SPACER = 6, // Space before visibility controls
|
||||||
|
@ -148,6 +151,56 @@ var usersWindow = (function () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function deleteDisplayOptions() {
|
||||||
|
var i;
|
||||||
|
|
||||||
|
for (i = 0; i < displayOptions.length; i += 1) {
|
||||||
|
Overlays.deleteOverlay(displayOptions[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
isShowingDisplayOptions = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function positionDisplayOptions() {
|
||||||
|
var y,
|
||||||
|
i;
|
||||||
|
|
||||||
|
y = viewportHeight
|
||||||
|
- windowTextHeight
|
||||||
|
- VISIBILITY_SPACER - 4 * windowLineHeight + windowLineSpacing - WINDOW_BASE_MARGIN
|
||||||
|
- (displayValues.length - 1) * windowLineHeight;
|
||||||
|
for (i = 0; i < displayValues.length; i += 1) {
|
||||||
|
Overlays.editOverlay(displayOptions[i], { y: y });
|
||||||
|
y += windowLineHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function showDisplayOptions() {
|
||||||
|
var i;
|
||||||
|
|
||||||
|
for (i = 0; i < displayValues.length; i += 1) {
|
||||||
|
displayOptions[i] = Overlays.addOverlay("text", {
|
||||||
|
x: WINDOW_MARGIN + DISPLAY_PROMPT_WIDTH,
|
||||||
|
y: viewportHeight,
|
||||||
|
width: WINDOW_WIDTH - 1.5 * WINDOW_MARGIN - DISPLAY_PROMPT_WIDTH,
|
||||||
|
height: windowTextHeight + OPTION_MARGIN, // Only need to add margin at top to balance descenders
|
||||||
|
topMargin: OPTION_MARGIN,
|
||||||
|
leftMargin: OPTION_MARGIN,
|
||||||
|
color: WINDOW_FOREGROUND_COLOR,
|
||||||
|
alpha: WINDOW_FOREGROUND_ALPHA,
|
||||||
|
backgroundColor: DISPLAY_OPTIONS_BACKGROUND_COLOR,
|
||||||
|
backgroundAlpha: DISPLAY_OPTIONS_BACKGROUND_ALPHA,
|
||||||
|
text: displayValues[i],
|
||||||
|
font: WINDOW_FONT,
|
||||||
|
visible: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
positionDisplayOptions();
|
||||||
|
|
||||||
|
isShowingDisplayOptions = true;
|
||||||
|
}
|
||||||
|
|
||||||
function updateOverlayPositions() {
|
function updateOverlayPositions() {
|
||||||
var i,
|
var i,
|
||||||
y;
|
y;
|
||||||
|
@ -186,6 +239,10 @@ var usersWindow = (function () {
|
||||||
Overlays.editOverlay(displayControl.valueOverlay, { y: y - OPTION_MARGIN });
|
Overlays.editOverlay(displayControl.valueOverlay, { y: y - OPTION_MARGIN });
|
||||||
Overlays.editOverlay(displayControl.buttonOverlay, { y: y - OPTION_MARGIN + 1 });
|
Overlays.editOverlay(displayControl.buttonOverlay, { y: y - OPTION_MARGIN + 1 });
|
||||||
|
|
||||||
|
if (isShowingDisplayOptions) {
|
||||||
|
positionDisplayOptions();
|
||||||
|
}
|
||||||
|
|
||||||
Overlays.editOverlay(visibilityHeading, {
|
Overlays.editOverlay(visibilityHeading, {
|
||||||
y: viewportHeight - 4 * windowLineHeight + windowLineSpacing - WINDOW_BASE_MARGIN
|
y: viewportHeight - 4 * windowLineHeight + windowLineSpacing - WINDOW_BASE_MARGIN
|
||||||
});
|
});
|
||||||
|
@ -412,6 +469,23 @@ var usersWindow = (function () {
|
||||||
|
|
||||||
clickedOverlay = Overlays.getOverlayAtPoint({ x: event.x, y: event.y });
|
clickedOverlay = Overlays.getOverlayAtPoint({ x: event.x, y: event.y });
|
||||||
|
|
||||||
|
if (isShowingDisplayOptions) {
|
||||||
|
userClicked = false;
|
||||||
|
for (i = 0; i < displayOptions.length; i += 1) {
|
||||||
|
if (clickedOverlay === displayOptions[i]) {
|
||||||
|
displayControl.value = displayValues[i];
|
||||||
|
Overlays.editOverlay(displayControl.valueOverlay, { text: displayValues[i] });
|
||||||
|
userClicked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteDisplayOptions();
|
||||||
|
|
||||||
|
if (userClicked) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (clickedOverlay === windowPane) {
|
if (clickedOverlay === windowPane) {
|
||||||
|
|
||||||
overlayX = event.x - WINDOW_MARGIN;
|
overlayX = event.x - WINDOW_MARGIN;
|
||||||
|
@ -437,6 +511,11 @@ var usersWindow = (function () {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (clickedOverlay === displayControl.valueOverlay || clickedOverlay === displayControl.buttonOverlay) {
|
||||||
|
showDisplayOptions();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < visibilityControls.length; i += 1) {
|
for (i = 0; i < visibilityControls.length; i += 1) {
|
||||||
// Don't need to test radioOverlay if it us under textOverlay.
|
// Don't need to test radioOverlay if it us under textOverlay.
|
||||||
if (clickedOverlay === visibilityControls[i].textOverlay && event.x <= visibilityControls[i].optionWidth) {
|
if (clickedOverlay === visibilityControls[i].textOverlay && event.x <= visibilityControls[i].optionWidth) {
|
||||||
|
@ -789,6 +868,10 @@ var usersWindow = (function () {
|
||||||
Overlays.deleteOverlay(displayControl.promptOverlay);
|
Overlays.deleteOverlay(displayControl.promptOverlay);
|
||||||
Overlays.deleteOverlay(displayControl.valueOverlay);
|
Overlays.deleteOverlay(displayControl.valueOverlay);
|
||||||
Overlays.deleteOverlay(displayControl.buttonOverlay);
|
Overlays.deleteOverlay(displayControl.buttonOverlay);
|
||||||
|
print("isShowingDisplayOptions = " + isShowingDisplayOptions);
|
||||||
|
if (isShowingDisplayOptions) {
|
||||||
|
deleteDisplayOptions();
|
||||||
|
}
|
||||||
Overlays.deleteOverlay(visibilityHeading);
|
Overlays.deleteOverlay(visibilityHeading);
|
||||||
for (i = 0; i <= visibilityControls.length; i += 1) {
|
for (i = 0; i <= visibilityControls.length; i += 1) {
|
||||||
Overlays.deleteOverlay(visibilityControls[i].textOverlay);
|
Overlays.deleteOverlay(visibilityControls[i].textOverlay);
|
||||||
|
|
Loading…
Reference in a new issue