Fix clickable areas

This commit is contained in:
David Rowe 2015-03-13 12:04:43 -07:00
parent f8c549ab87
commit f49ed0951e

View file

@ -106,6 +106,7 @@ var usersWindow = (function () {
var displayText = "", var displayText = "",
myUsername, myUsername,
user, user,
userText,
i; i;
myUsername = GlobalServices.username; myUsername = GlobalServices.username;
@ -113,12 +114,13 @@ var usersWindow = (function () {
for (i = 0; i < usersOnline.length; i += 1) { for (i = 0; i < usersOnline.length; i += 1) {
user = usersOnline[i]; user = usersOnline[i];
if (user.username !== myUsername && user.online) { if (user.username !== myUsername && user.online) {
usersOnline[i].usernameWidth = Overlays.textSize(windowPane2D, user.username).width; userText = user.username;
linesOfUsers.push(i);
displayText += "\n" + user.username;
if (user.location.root) { if (user.location.root) {
displayText += " @ " + user.location.root.name; userText += " @ " + user.location.root.name;
} }
usersOnline[i].textWidth = Overlays.textSize(windowPane2D, userText).width;
linesOfUsers.push(i);
displayText += "\n" + userText;
} }
} }
@ -253,7 +255,7 @@ var usersWindow = (function () {
} }
if (0 <= lineClicked && lineClicked < linesOfUsers.length if (0 <= lineClicked && lineClicked < linesOfUsers.length
&& overlayX <= usersOnline[linesOfUsers[lineClicked]].usernameWidth) { && 0 <= overlayX && overlayX <= usersOnline[linesOfUsers[lineClicked]].textWidth) {
//print("Go to " + usersOnline[linesOfUsers[lineClicked]].username); //print("Go to " + usersOnline[linesOfUsers[lineClicked]].username);
location.goToUser(usersOnline[linesOfUsers[lineClicked]].username); location.goToUser(usersOnline[linesOfUsers[lineClicked]].username);
} }
@ -262,7 +264,7 @@ var usersWindow = (function () {
visibilityChanged = false; visibilityChanged = false;
for (i = 0; i < visibilityControls2D.length; i += 1) { for (i = 0; i < visibilityControls2D.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 === visibilityControls2D[i].textOverlay) { if (clickedOverlay === visibilityControls2D[i].textOverlay && event.x <= visibilityControls2D[i].optionWidth) {
GlobalServices.findableBy = VISIBILITY_VALUES[i]; GlobalServices.findableBy = VISIBILITY_VALUES[i];
visibilityChanged = true; visibilityChanged = true;
} }
@ -286,7 +288,8 @@ var usersWindow = (function () {
} }
function setUp() { function setUp() {
var textSizeOverlay; var textSizeOverlay,
optionText;
textSizeOverlay = Overlays.addOverlay("text", { font: WINDOW_FONT_2D, visible: false }); textSizeOverlay = Overlays.addOverlay("text", { font: WINDOW_FONT_2D, visible: false });
windowTextHeight = Math.floor(Overlays.textSize(textSizeOverlay, "1").height); windowTextHeight = Math.floor(Overlays.textSize(textSizeOverlay, "1").height);
@ -351,6 +354,7 @@ var usersWindow = (function () {
myVisibility = ""; myVisibility = "";
} }
optionText = "everyone";
visibilityControls2D = [{ visibilityControls2D = [{
radioOverlay: Overlays.addOverlay("image", { // Create first so that it is under textOverlay. radioOverlay: Overlays.addOverlay("image", { // Create first so that it is under textOverlay.
x: WINDOW_MARGIN_2D, x: WINDOW_MARGIN_2D,
@ -377,24 +381,34 @@ var usersWindow = (function () {
color: WINDOW_HEADING_COLOR_2D, color: WINDOW_HEADING_COLOR_2D,
alpha: WINDOW_FOREGROUND_ALPHA_2D, alpha: WINDOW_FOREGROUND_ALPHA_2D,
backgroundAlpha: 0.0, backgroundAlpha: 0.0,
text: "everyone", text: optionText,
font: WINDOW_FONT_2D, font: WINDOW_FONT_2D,
visible: isVisible visible: isVisible
}), }),
selected: myVisibility === VISIBILITY_VALUES[0] selected: myVisibility === VISIBILITY_VALUES[0]
} ]; }];
visibilityControls2D[0].optionWidth = WINDOW_MARGIN_2D + VISIBILITY_RADIO_SPACE
+ Overlays.textSize(visibilityControls2D[0].textOverlay, optionText).width;
optionText = "my friends";
visibilityControls2D[1] = { visibilityControls2D[1] = {
radioOverlay: Overlays.cloneOverlay(visibilityControls2D[0].radioOverlay), radioOverlay: Overlays.cloneOverlay(visibilityControls2D[0].radioOverlay),
textOverlay: Overlays.cloneOverlay(visibilityControls2D[0].textOverlay), textOverlay: Overlays.cloneOverlay(visibilityControls2D[0].textOverlay),
selected: myVisibility === VISIBILITY_VALUES[1] selected: myVisibility === VISIBILITY_VALUES[1]
}; };
Overlays.editOverlay(visibilityControls2D[1].textOverlay, { text: "my friends" }); Overlays.editOverlay(visibilityControls2D[1].textOverlay, { text: optionText });
visibilityControls2D[1].optionWidth = WINDOW_MARGIN_2D + VISIBILITY_RADIO_SPACE
+ Overlays.textSize(visibilityControls2D[1].textOverlay, optionText).width;
optionText = "no one";
visibilityControls2D[2] = { visibilityControls2D[2] = {
radioOverlay: Overlays.cloneOverlay(visibilityControls2D[0].radioOverlay), radioOverlay: Overlays.cloneOverlay(visibilityControls2D[0].radioOverlay),
textOverlay: Overlays.cloneOverlay(visibilityControls2D[0].textOverlay), textOverlay: Overlays.cloneOverlay(visibilityControls2D[0].textOverlay),
selected: myVisibility === VISIBILITY_VALUES[2] selected: myVisibility === VISIBILITY_VALUES[2]
}; };
Overlays.editOverlay(visibilityControls2D[2].textOverlay, { text: "no one" }); Overlays.editOverlay(visibilityControls2D[2].textOverlay, { text: optionText });
visibilityControls2D[2].optionWidth = WINDOW_MARGIN_2D + VISIBILITY_RADIO_SPACE
+ Overlays.textSize(visibilityControls2D[2].textOverlay, optionText).width;
updateVisibilityControls(); updateVisibilityControls();