@hytopia.com/examples 1.0.17 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/frontiers-rpg-game/assets/icons/buttons/e-mobile.png +0 -0
- package/frontiers-rpg-game/assets/icons/buttons/jump.png +0 -0
- package/frontiers-rpg-game/assets/ui/hud.html +336 -137
- package/frontiers-rpg-game/assets/ui/index.html +1089 -491
- package/frontiers-rpg-game/assets/ui/menus/backpack.html +121 -52
- package/frontiers-rpg-game/assets/ui/menus/crafting.html +63 -41
- package/frontiers-rpg-game/assets/ui/menus/dialogue.html +53 -75
- package/frontiers-rpg-game/assets/ui/menus/merchant.html +117 -123
- package/frontiers-rpg-game/assets/ui/menus/quests.html +151 -28
- package/frontiers-rpg-game/assets/ui/menus/skills.html +123 -30
- package/frontiers-rpg-game/assets/ui/shared/item-tooltips.html +125 -5
- package/frontiers-rpg-game/src/GameManager.ts +1 -1
- package/frontiers-rpg-game/src/GamePlayer.ts +6 -4
- package/frontiers-rpg-game/src/GameRegion.ts +4 -10
- package/frontiers-rpg-game/src/entities/BaseCombatEntity.ts +1 -1
- package/package.json +1 -1
- package/frontiers-rpg-game/dev/persistence/player-player-1.json +0 -103
|
@@ -372,12 +372,75 @@ window.ItemTooltips = (function() {
|
|
|
372
372
|
if (existingTooltip) existingTooltip.remove();
|
|
373
373
|
}
|
|
374
374
|
|
|
375
|
+
// Mobile tooltip handling
|
|
376
|
+
let mobileTooltipActive = false;
|
|
377
|
+
|
|
378
|
+
function initializeMobileTooltips() {
|
|
379
|
+
// Check if we're on mobile
|
|
380
|
+
const isMobile = document.body.classList.contains('mobile');
|
|
381
|
+
if (!isMobile) return;
|
|
382
|
+
|
|
383
|
+
// Add click handler to document for event delegation
|
|
384
|
+
document.addEventListener('click', handleMobileTooltipClick, true);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
function handleMobileTooltipClick(e) {
|
|
388
|
+
// List of tooltip container selectors - include quest reward enabled class
|
|
389
|
+
const tooltipContainers = [
|
|
390
|
+
'.backpack-slot', '.backpack-hotbar-slot', '.backpack-wearable-slot',
|
|
391
|
+
'.hud-hotbar-slot', '.merchant-slot', '.merchant-hotbar-slot',
|
|
392
|
+
'.crafting-slot', '.crafting-requirement-item',
|
|
393
|
+
'.quests-reward-item', '.quests-reward-item-tooltip-enabled'
|
|
394
|
+
];
|
|
395
|
+
|
|
396
|
+
// Check if click is on a tooltip container
|
|
397
|
+
const container = e.target.closest(tooltipContainers.join(', '));
|
|
398
|
+
|
|
399
|
+
if (container) {
|
|
400
|
+
// Find tooltip in this container
|
|
401
|
+
const tooltip = container.querySelector([
|
|
402
|
+
'.item-tooltip', '.backpack-item-tooltip', '.merchant-item-tooltip',
|
|
403
|
+
'.crafting-item-tooltip', '.crafting-requirement-tooltip', '.quests-reward-item-tooltip'
|
|
404
|
+
].join(', '));
|
|
405
|
+
|
|
406
|
+
if (tooltip) {
|
|
407
|
+
// Close any other open tooltips
|
|
408
|
+
closeAllMobileTooltips();
|
|
409
|
+
|
|
410
|
+
// Show this tooltip
|
|
411
|
+
tooltip.classList.add('mobile-tooltip-visible');
|
|
412
|
+
mobileTooltipActive = true;
|
|
413
|
+
}
|
|
414
|
+
} else {
|
|
415
|
+
// Click outside any container - close all tooltips
|
|
416
|
+
closeAllMobileTooltips();
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
function closeAllMobileTooltips() {
|
|
421
|
+
const visibleTooltips = document.querySelectorAll('.mobile-tooltip-visible');
|
|
422
|
+
if (visibleTooltips.length > 0) {
|
|
423
|
+
visibleTooltips.forEach(tooltip => {
|
|
424
|
+
tooltip.classList.remove('mobile-tooltip-visible');
|
|
425
|
+
});
|
|
426
|
+
mobileTooltipActive = false;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// Initialize mobile tooltips when DOM is ready
|
|
431
|
+
if (document.readyState === 'loading') {
|
|
432
|
+
document.addEventListener('DOMContentLoaded', initializeMobileTooltips);
|
|
433
|
+
} else {
|
|
434
|
+
initializeMobileTooltips();
|
|
435
|
+
}
|
|
436
|
+
|
|
375
437
|
// Public API
|
|
376
438
|
return {
|
|
377
439
|
parseText: parseText,
|
|
378
440
|
hasTooltipData: hasTooltipData,
|
|
379
441
|
createTooltip: createTooltip,
|
|
380
|
-
removeTooltip: removeTooltip
|
|
442
|
+
removeTooltip: removeTooltip,
|
|
443
|
+
closeAllMobileTooltips: closeAllMobileTooltips
|
|
381
444
|
};
|
|
382
445
|
})();
|
|
383
446
|
</script>
|
|
@@ -405,8 +468,7 @@ window.ItemTooltips = (function() {
|
|
|
405
468
|
.merchant-hotbar-slot:hover .item-tooltip,
|
|
406
469
|
.crafting-slot:hover .item-tooltip,
|
|
407
470
|
.crafting-requirement-item:hover .item-tooltip,
|
|
408
|
-
|
|
409
|
-
/* Tooltip visibility on hover - Specific classes */
|
|
471
|
+
|
|
410
472
|
.backpack-slot:hover .backpack-item-tooltip,
|
|
411
473
|
.backpack-hotbar-slot:hover .backpack-item-tooltip,
|
|
412
474
|
.backpack-wearable-slot:hover .backpack-item-tooltip,
|
|
@@ -530,14 +592,72 @@ window.ItemTooltips = (function() {
|
|
|
530
592
|
font-size: 11px;
|
|
531
593
|
}
|
|
532
594
|
|
|
533
|
-
/* Mobile -
|
|
595
|
+
/* Mobile - Control tooltip visibility on mobile devices */
|
|
534
596
|
body.mobile .item-tooltip,
|
|
535
597
|
body.mobile .backpack-item-tooltip,
|
|
536
598
|
body.mobile .merchant-item-tooltip,
|
|
537
599
|
body.mobile .crafting-item-tooltip,
|
|
538
600
|
body.mobile .crafting-requirement-tooltip,
|
|
539
601
|
body.mobile .quests-reward-item-tooltip {
|
|
540
|
-
|
|
602
|
+
opacity: 0;
|
|
603
|
+
visibility: hidden;
|
|
604
|
+
transform: translateY(-4px);
|
|
605
|
+
transition: all 0.2s ease;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/* Mobile tooltip visibility when tapped */
|
|
609
|
+
body.mobile .mobile-tooltip-visible {
|
|
610
|
+
opacity: 1 !important;
|
|
611
|
+
visibility: visible !important;
|
|
612
|
+
transform: translateY(-8px) !important;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
/* Improve mobile tooltip positioning and touch targets */
|
|
616
|
+
body.mobile .backpack-slot,
|
|
617
|
+
body.mobile .backpack-hotbar-slot,
|
|
618
|
+
body.mobile .backpack-wearable-slot,
|
|
619
|
+
body.mobile .hud-hotbar-slot,
|
|
620
|
+
body.mobile .merchant-slot,
|
|
621
|
+
body.mobile .merchant-hotbar-slot,
|
|
622
|
+
body.mobile .crafting-slot,
|
|
623
|
+
body.mobile .crafting-requirement-item,
|
|
624
|
+
body.mobile .quests-reward-item,
|
|
625
|
+
body.mobile .quests-reward-item-tooltip-enabled {
|
|
626
|
+
cursor: pointer;
|
|
627
|
+
-webkit-tap-highlight-color: rgba(255, 255, 255, 0.1);
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/* Center carets on mobile tooltips */
|
|
631
|
+
body.mobile .item-tooltip-content::after,
|
|
632
|
+
body.mobile .backpack-item-tooltip-content::after,
|
|
633
|
+
body.mobile .merchant-item-tooltip-content::after,
|
|
634
|
+
body.mobile .crafting-item-tooltip-content::after,
|
|
635
|
+
body.mobile .crafting-requirement-tooltip-content::after,
|
|
636
|
+
body.mobile .quests-reward-item-tooltip-content::after {
|
|
637
|
+
left: 50% !important;
|
|
638
|
+
transform: translateX(-50%) !important;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
body.mobile .item-tooltip-content::before,
|
|
642
|
+
body.mobile .backpack-item-tooltip-content::before,
|
|
643
|
+
body.mobile .merchant-item-tooltip-content::before,
|
|
644
|
+
body.mobile .crafting-item-tooltip-content::before,
|
|
645
|
+
body.mobile .crafting-requirement-tooltip-content::before,
|
|
646
|
+
body.mobile .quests-reward-item-tooltip-content::before {
|
|
647
|
+
left: 50% !important;
|
|
648
|
+
transform: translateX(-50%) !important;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
/* Mobile tooltip content sizing */
|
|
652
|
+
body.mobile .item-tooltip-content,
|
|
653
|
+
body.mobile .backpack-item-tooltip-content,
|
|
654
|
+
body.mobile .merchant-item-tooltip-content,
|
|
655
|
+
body.mobile .crafting-item-tooltip-content,
|
|
656
|
+
body.mobile .crafting-requirement-tooltip-content,
|
|
657
|
+
body.mobile .quests-reward-item-tooltip-content {
|
|
658
|
+
max-width: 220px;
|
|
659
|
+
font-size: 11px;
|
|
660
|
+
padding: 8px 10px;
|
|
541
661
|
}
|
|
542
662
|
|
|
543
663
|
/* Mouse Follower Tooltip (for backpack drag system) */
|
|
@@ -631,6 +751,9 @@ window.ItemTooltips = (function() {
|
|
|
631
751
|
accessory: 5
|
|
632
752
|
};
|
|
633
753
|
|
|
754
|
+
const mouseFollower = createMouseFollower();
|
|
755
|
+
let heldItem = null;
|
|
756
|
+
|
|
634
757
|
// Setup hytopia data handlers
|
|
635
758
|
hytopia.onData(data => {
|
|
636
759
|
if (data.type === 'toggleBackpack') {
|
|
@@ -683,15 +806,8 @@ window.ItemTooltips = (function() {
|
|
|
683
806
|
}
|
|
684
807
|
}
|
|
685
808
|
|
|
686
|
-
function
|
|
687
|
-
|
|
688
|
-
closeButton.addEventListener('click', closeBackpack);
|
|
689
|
-
|
|
690
|
-
let heldItem = null;
|
|
691
|
-
const mouseFollower = createMouseFollower();
|
|
692
|
-
|
|
693
|
-
// Helper function to get slot info
|
|
694
|
-
function getSlotInfo(slot) {
|
|
809
|
+
// Helper function to get slot info
|
|
810
|
+
function getSlotInfo(slot) {
|
|
695
811
|
if (slot.dataset.slotIndex) {
|
|
696
812
|
return { type: 'backpack', index: slot.dataset.slotIndex };
|
|
697
813
|
} else if (slot.dataset.slot) {
|
|
@@ -765,8 +881,14 @@ window.ItemTooltips = (function() {
|
|
|
765
881
|
// Copy content to mouse follower
|
|
766
882
|
mouseFollower.innerHTML = contentHTML;
|
|
767
883
|
|
|
768
|
-
// Copy tooltip if it exists
|
|
884
|
+
// Copy tooltip if it exists and store reference for later restoration
|
|
769
885
|
if (tooltip) {
|
|
886
|
+
// Store tooltip data for restoration
|
|
887
|
+
heldItem.tooltipData = {
|
|
888
|
+
element: tooltip.cloneNode(true),
|
|
889
|
+
parentSlot: slot
|
|
890
|
+
};
|
|
891
|
+
|
|
770
892
|
const tooltipClone = tooltip.cloneNode(true);
|
|
771
893
|
tooltipClone.style.opacity = '1';
|
|
772
894
|
tooltipClone.style.visibility = 'visible';
|
|
@@ -774,15 +896,26 @@ window.ItemTooltips = (function() {
|
|
|
774
896
|
tooltipClone.style.position = 'absolute';
|
|
775
897
|
tooltipClone.style.bottom = 'auto';
|
|
776
898
|
tooltipClone.style.top = '-8px';
|
|
899
|
+
|
|
900
|
+
// Remove mobile tooltip classes that might interfere
|
|
901
|
+
tooltipClone.classList.remove('mobile-tooltip-visible');
|
|
902
|
+
|
|
777
903
|
mouseFollower.appendChild(tooltipClone);
|
|
904
|
+
|
|
905
|
+
// Completely remove original tooltip to prevent ghosting
|
|
906
|
+
tooltip.remove();
|
|
778
907
|
}
|
|
908
|
+
|
|
909
|
+
// Position mouse follower at center of slot
|
|
910
|
+
const slotRect = slot.getBoundingClientRect();
|
|
911
|
+
const centerX = slotRect.left + slotRect.width / 2;
|
|
912
|
+
const centerY = slotRect.top + slotRect.height / 2;
|
|
779
913
|
|
|
780
|
-
mouseFollower.style.left =
|
|
781
|
-
mouseFollower.style.top =
|
|
914
|
+
mouseFollower.style.left = centerX + 15 + 'px';
|
|
915
|
+
mouseFollower.style.top = centerY - 15 + 'px';
|
|
782
916
|
mouseFollower.classList.add('active');
|
|
783
917
|
slot.classList.add('backpack-slot-empty');
|
|
784
918
|
|
|
785
|
-
console.log(`Picked up from ${slotInfo.type}: ${slotInfo.index}`);
|
|
786
919
|
return true;
|
|
787
920
|
}
|
|
788
921
|
|
|
@@ -801,8 +934,15 @@ window.ItemTooltips = (function() {
|
|
|
801
934
|
// Reset held item state
|
|
802
935
|
function resetHeldItem() {
|
|
803
936
|
if (!heldItem) return;
|
|
804
|
-
|
|
937
|
+
|
|
805
938
|
heldItem.sourceSlot.classList.remove('backpack-slot-empty');
|
|
939
|
+
|
|
940
|
+
// Restore original tooltip by recreating it
|
|
941
|
+
if (heldItem.tooltipData) {
|
|
942
|
+
const restoredTooltip = heldItem.tooltipData.element.cloneNode(true);
|
|
943
|
+
heldItem.tooltipData.parentSlot.appendChild(restoredTooltip);
|
|
944
|
+
}
|
|
945
|
+
|
|
806
946
|
mouseFollower.classList.remove('active');
|
|
807
947
|
mouseFollower.innerHTML = '';
|
|
808
948
|
heldItem = null;
|
|
@@ -812,10 +952,13 @@ window.ItemTooltips = (function() {
|
|
|
812
952
|
function cancelHeldItem() {
|
|
813
953
|
if (!heldItem) return;
|
|
814
954
|
|
|
815
|
-
console.log(`Cancelled pickup from ${heldItem.sourceType}: ${heldItem.sourceIndex}`);
|
|
816
955
|
resetHeldItem();
|
|
817
956
|
}
|
|
818
957
|
|
|
958
|
+
function setupEventListeners() {
|
|
959
|
+
const closeButton = document.querySelector('.backpack-close');
|
|
960
|
+
closeButton.addEventListener('click', closeBackpack);
|
|
961
|
+
|
|
819
962
|
// Setup slot click handlers
|
|
820
963
|
document.querySelectorAll('.backpack-slot, .backpack-wearable-slot, .backpack-hotbar-slot')
|
|
821
964
|
.forEach(slot => {
|
|
@@ -870,6 +1013,16 @@ window.ItemTooltips = (function() {
|
|
|
870
1013
|
function closeBackpack() {
|
|
871
1014
|
document.querySelector('.backpack-overlay').style.display = 'none';
|
|
872
1015
|
hytopia.lockPointer(true);
|
|
1016
|
+
|
|
1017
|
+
// Close any open mobile tooltips
|
|
1018
|
+
if (window.ItemTooltips) {
|
|
1019
|
+
window.ItemTooltips.closeAllMobileTooltips();
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
// Cancel any picked up item
|
|
1023
|
+
if (heldItem) {
|
|
1024
|
+
cancelHeldItem();
|
|
1025
|
+
}
|
|
873
1026
|
}
|
|
874
1027
|
|
|
875
1028
|
function openBackpack() {
|
|
@@ -1334,66 +1487,80 @@ window.ItemTooltips = (function() {
|
|
|
1334
1487
|
|
|
1335
1488
|
/* Mobile Styles */
|
|
1336
1489
|
body.mobile {
|
|
1337
|
-
--backpack-slot-size:
|
|
1338
|
-
--backpack-hotbar-size:
|
|
1339
|
-
--backpack-icon-size:
|
|
1340
|
-
--backpack-gap:
|
|
1341
|
-
--backpack-padding:
|
|
1490
|
+
--backpack-slot-size: 44px;
|
|
1491
|
+
--backpack-hotbar-size: 44px;
|
|
1492
|
+
--backpack-icon-size: 32px;
|
|
1493
|
+
--backpack-gap: 4px;
|
|
1494
|
+
--backpack-padding: 8px;
|
|
1342
1495
|
}
|
|
1343
1496
|
|
|
1344
1497
|
body.mobile .backpack-overlay {
|
|
1345
|
-
gap:
|
|
1346
|
-
padding:
|
|
1498
|
+
gap: 12px;
|
|
1499
|
+
padding: 8px;
|
|
1347
1500
|
}
|
|
1348
1501
|
|
|
1349
1502
|
body.mobile .backpack-container,
|
|
1350
1503
|
body.mobile .backpack-hotbar-container {
|
|
1351
1504
|
width: auto;
|
|
1352
|
-
max-width:
|
|
1353
|
-
min-width:
|
|
1505
|
+
max-width: 520px;
|
|
1506
|
+
min-width: 340px;
|
|
1507
|
+
border-radius: 8px;
|
|
1354
1508
|
}
|
|
1355
1509
|
|
|
1356
1510
|
body.mobile .backpack-header,
|
|
1357
1511
|
body.mobile .backpack-hotbar-header {
|
|
1358
|
-
padding:
|
|
1512
|
+
padding: 8px 12px;
|
|
1513
|
+
border-radius: 8px 8px 0 0;
|
|
1359
1514
|
}
|
|
1360
1515
|
|
|
1361
1516
|
body.mobile .backpack-title,
|
|
1362
1517
|
body.mobile .backpack-hotbar-title {
|
|
1363
|
-
font-size:
|
|
1518
|
+
font-size: 14px;
|
|
1364
1519
|
}
|
|
1365
1520
|
|
|
1366
1521
|
body.mobile .backpack-close {
|
|
1367
|
-
width:
|
|
1368
|
-
height:
|
|
1369
|
-
font-size:
|
|
1522
|
+
width: 24px;
|
|
1523
|
+
height: 24px;
|
|
1524
|
+
font-size: 16px;
|
|
1525
|
+
border-radius: 6px;
|
|
1370
1526
|
}
|
|
1371
1527
|
|
|
1372
1528
|
body.mobile .backpack-content {
|
|
1373
|
-
padding:
|
|
1374
|
-
gap:
|
|
1529
|
+
padding: 12px;
|
|
1530
|
+
gap: 12px;
|
|
1375
1531
|
}
|
|
1376
1532
|
|
|
1377
1533
|
body.mobile .backpack-wearables-panel {
|
|
1378
|
-
flex-direction:
|
|
1534
|
+
flex-direction: column;
|
|
1379
1535
|
min-width: auto;
|
|
1536
|
+
gap: 12px;
|
|
1380
1537
|
}
|
|
1381
1538
|
|
|
1382
1539
|
body.mobile .backpack-wearables-slots {
|
|
1383
1540
|
justify-items: center;
|
|
1541
|
+
padding: 8px;
|
|
1542
|
+
border-radius: 6px;
|
|
1384
1543
|
}
|
|
1385
1544
|
|
|
1386
|
-
body.mobile .backpack-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
box-sizing: border-box;
|
|
1545
|
+
body.mobile .backpack-grid {
|
|
1546
|
+
padding: 8px;
|
|
1547
|
+
border-radius: 6px;
|
|
1390
1548
|
}
|
|
1391
1549
|
|
|
1392
|
-
body.mobile .backpack-grid,
|
|
1393
1550
|
body.mobile .backpack-hotbar-grid {
|
|
1394
1551
|
justify-items: center;
|
|
1395
1552
|
width: fit-content;
|
|
1396
1553
|
margin: 0 auto;
|
|
1554
|
+
padding: 12px;
|
|
1555
|
+
border-radius: 0 0 6px 6px;
|
|
1556
|
+
}
|
|
1557
|
+
|
|
1558
|
+
body.mobile .backpack-wearable-slot,
|
|
1559
|
+
body.mobile .backpack-slot,
|
|
1560
|
+
body.mobile .backpack-hotbar-slot {
|
|
1561
|
+
box-sizing: border-box;
|
|
1562
|
+
border-radius: 6px;
|
|
1563
|
+
border-width: 2px;
|
|
1397
1564
|
}
|
|
1398
1565
|
|
|
1399
1566
|
body.mobile .backpack-slot-content,
|
|
@@ -1402,36 +1569,58 @@ window.ItemTooltips = (function() {
|
|
|
1402
1569
|
}
|
|
1403
1570
|
|
|
1404
1571
|
body.mobile .backpack-item-icon {
|
|
1405
|
-
width:
|
|
1406
|
-
height:
|
|
1572
|
+
width: 36px;
|
|
1573
|
+
height: 36px;
|
|
1407
1574
|
}
|
|
1408
1575
|
|
|
1409
1576
|
body.mobile .backpack-hotbar-slot-icon {
|
|
1410
|
-
width:
|
|
1411
|
-
height:
|
|
1577
|
+
width: 36px;
|
|
1578
|
+
height: 36px;
|
|
1412
1579
|
}
|
|
1413
1580
|
|
|
1414
1581
|
body.mobile .backpack-slot-quantity {
|
|
1415
|
-
font-size:
|
|
1416
|
-
padding: 1px
|
|
1417
|
-
bottom:
|
|
1418
|
-
right:
|
|
1419
|
-
min-width:
|
|
1582
|
+
font-size: 8px;
|
|
1583
|
+
padding: 1px 3px;
|
|
1584
|
+
bottom: 2px;
|
|
1585
|
+
right: 2px;
|
|
1586
|
+
min-width: 10px;
|
|
1587
|
+
border-radius: 3px;
|
|
1420
1588
|
}
|
|
1421
1589
|
|
|
1422
1590
|
body.mobile .backpack-hotbar-slot-quantity {
|
|
1423
1591
|
font-size: 8px;
|
|
1424
1592
|
padding: 1px 3px;
|
|
1425
|
-
bottom:
|
|
1426
|
-
right:
|
|
1593
|
+
bottom: 2px;
|
|
1594
|
+
right: 2px;
|
|
1595
|
+
min-width: 12px;
|
|
1596
|
+
border-radius: 3px;
|
|
1427
1597
|
}
|
|
1428
1598
|
|
|
1429
|
-
|
|
1430
|
-
display: none;
|
|
1431
|
-
}
|
|
1599
|
+
|
|
1432
1600
|
|
|
1433
1601
|
body.mobile .backpack-wearable-slot-label {
|
|
1434
|
-
font-size:
|
|
1602
|
+
font-size: 7px;
|
|
1603
|
+
font-weight: 500;
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1606
|
+
body.mobile .backpack-mouse-follower {
|
|
1607
|
+
width: 44px;
|
|
1608
|
+
height: 44px;
|
|
1609
|
+
border-radius: 6px;
|
|
1610
|
+
}
|
|
1611
|
+
|
|
1612
|
+
body.mobile .backpack-mouse-follower img {
|
|
1613
|
+
width: 36px;
|
|
1614
|
+
height: 36px;
|
|
1615
|
+
}
|
|
1616
|
+
|
|
1617
|
+
body.mobile .backpack-mouse-follower .backpack-hotbar-slot-quantity {
|
|
1618
|
+
font-size: 8px;
|
|
1619
|
+
padding: 1px 3px;
|
|
1620
|
+
bottom: 2px;
|
|
1621
|
+
right: 2px;
|
|
1622
|
+
min-width: 10px;
|
|
1623
|
+
border-radius: 3px;
|
|
1435
1624
|
}
|
|
1436
1625
|
|
|
1437
1626
|
.backpack-mouse-follower {
|
|
@@ -1609,6 +1798,9 @@ window.ItemTooltips = (function() {
|
|
|
1609
1798
|
function closeSkills() {
|
|
1610
1799
|
document.querySelector('.skills-overlay').style.display = 'none';
|
|
1611
1800
|
hytopia.lockPointer(true);
|
|
1801
|
+
|
|
1802
|
+
// Close any open mobile tooltips
|
|
1803
|
+
closeAllMobileTooltips();
|
|
1612
1804
|
}
|
|
1613
1805
|
|
|
1614
1806
|
// Update Functions
|
|
@@ -1639,6 +1831,9 @@ window.ItemTooltips = (function() {
|
|
|
1639
1831
|
const skillItem = createSkillItem(skill);
|
|
1640
1832
|
skillsGrid.appendChild(skillItem);
|
|
1641
1833
|
});
|
|
1834
|
+
|
|
1835
|
+
// Close any open mobile tooltips after updating skills
|
|
1836
|
+
closeAllMobileTooltips();
|
|
1642
1837
|
}
|
|
1643
1838
|
|
|
1644
1839
|
function updateSkillsExp(data) {
|
|
@@ -1706,6 +1901,54 @@ window.ItemTooltips = (function() {
|
|
|
1706
1901
|
// Event Listeners
|
|
1707
1902
|
function setupEventListeners() {
|
|
1708
1903
|
document.querySelector('.skills-close').addEventListener('click', closeSkills);
|
|
1904
|
+
|
|
1905
|
+
// Setup mobile tooltip handling
|
|
1906
|
+
setupMobileTooltips();
|
|
1907
|
+
}
|
|
1908
|
+
|
|
1909
|
+
// Mobile tooltip handling
|
|
1910
|
+
function setupMobileTooltips() {
|
|
1911
|
+
// Check if we're on mobile
|
|
1912
|
+
const isMobile = document.body.classList.contains('mobile');
|
|
1913
|
+
if (!isMobile) return;
|
|
1914
|
+
|
|
1915
|
+
// Add click handler to skills container for event delegation
|
|
1916
|
+
document.querySelector('.skills-skills-grid').addEventListener('click', handleMobileTooltipClick);
|
|
1917
|
+
|
|
1918
|
+
// Add click handler to document to close tooltips when clicking outside
|
|
1919
|
+
document.addEventListener('click', handleDocumentClick);
|
|
1920
|
+
}
|
|
1921
|
+
|
|
1922
|
+
function handleMobileTooltipClick(e) {
|
|
1923
|
+
const skillItem = e.target.closest('.skills-skill-item');
|
|
1924
|
+
if (!skillItem) return;
|
|
1925
|
+
|
|
1926
|
+
e.stopPropagation();
|
|
1927
|
+
|
|
1928
|
+
const tooltip = skillItem.querySelector('.skills-skill-tooltip');
|
|
1929
|
+
if (!tooltip) return;
|
|
1930
|
+
|
|
1931
|
+
// Close any other open tooltips
|
|
1932
|
+
closeAllMobileTooltips();
|
|
1933
|
+
|
|
1934
|
+
// Toggle this tooltip
|
|
1935
|
+
tooltip.classList.add('skills-mobile-tooltip-visible');
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1938
|
+
function handleDocumentClick(e) {
|
|
1939
|
+
// Close tooltips when clicking outside
|
|
1940
|
+
if (!e.target.closest('.skills-skill-item')) {
|
|
1941
|
+
closeAllMobileTooltips();
|
|
1942
|
+
}
|
|
1943
|
+
}
|
|
1944
|
+
|
|
1945
|
+
function closeAllMobileTooltips() {
|
|
1946
|
+
const visibleTooltips = document.querySelectorAll('.skills-mobile-tooltip-visible');
|
|
1947
|
+
if (visibleTooltips.length > 0) {
|
|
1948
|
+
visibleTooltips.forEach(tooltip => {
|
|
1949
|
+
tooltip.classList.remove('skills-mobile-tooltip-visible');
|
|
1950
|
+
});
|
|
1951
|
+
}
|
|
1709
1952
|
}
|
|
1710
1953
|
|
|
1711
1954
|
// Initialize
|
|
@@ -2022,97 +2265,136 @@ window.ItemTooltips = (function() {
|
|
|
2022
2265
|
/* Mobile Styles */
|
|
2023
2266
|
body.mobile .skills-container {
|
|
2024
2267
|
width: auto;
|
|
2025
|
-
max-width:
|
|
2026
|
-
min-width:
|
|
2268
|
+
max-width: 680px;
|
|
2269
|
+
min-width: 475px;
|
|
2270
|
+
border-radius: 8px;
|
|
2027
2271
|
}
|
|
2028
2272
|
|
|
2029
2273
|
body.mobile .skills-header {
|
|
2030
|
-
padding:
|
|
2274
|
+
padding: 8px 12px;
|
|
2275
|
+
border-radius: 8px 8px 0 0;
|
|
2031
2276
|
}
|
|
2032
2277
|
|
|
2033
2278
|
body.mobile .skills-title {
|
|
2034
|
-
font-size:
|
|
2279
|
+
font-size: 14px;
|
|
2035
2280
|
}
|
|
2036
2281
|
|
|
2037
2282
|
body.mobile .skills-close {
|
|
2038
|
-
width:
|
|
2039
|
-
height:
|
|
2040
|
-
font-size:
|
|
2283
|
+
width: 24px;
|
|
2284
|
+
height: 24px;
|
|
2285
|
+
font-size: 16px;
|
|
2286
|
+
border-radius: 6px;
|
|
2041
2287
|
}
|
|
2042
2288
|
|
|
2043
2289
|
body.mobile .skills-content {
|
|
2044
|
-
padding:
|
|
2290
|
+
padding: 12px;
|
|
2045
2291
|
}
|
|
2046
2292
|
|
|
2047
2293
|
body.mobile .skills-player-section,
|
|
2048
2294
|
body.mobile .skills-skills-section {
|
|
2049
|
-
|
|
2050
|
-
|
|
2295
|
+
padding: 10px;
|
|
2296
|
+
border-radius: 6px;
|
|
2051
2297
|
}
|
|
2052
2298
|
|
|
2053
2299
|
body.mobile .skills-section-title {
|
|
2054
|
-
font-size:
|
|
2055
|
-
margin-bottom:
|
|
2300
|
+
font-size: 12px;
|
|
2301
|
+
margin-bottom: 8px;
|
|
2056
2302
|
}
|
|
2057
2303
|
|
|
2058
2304
|
body.mobile .skills-level-display {
|
|
2059
|
-
margin-bottom:
|
|
2305
|
+
margin-bottom: 8px;
|
|
2060
2306
|
}
|
|
2061
2307
|
|
|
2062
2308
|
body.mobile .skills-level-number {
|
|
2063
|
-
font-size:
|
|
2309
|
+
font-size: 16px;
|
|
2064
2310
|
}
|
|
2065
2311
|
|
|
2066
2312
|
body.mobile .skills-exp-bar {
|
|
2067
|
-
height:
|
|
2313
|
+
height: 16px;
|
|
2314
|
+
border-radius: 6px;
|
|
2068
2315
|
}
|
|
2069
2316
|
|
|
2070
2317
|
body.mobile .skills-exp-text {
|
|
2071
|
-
font-size:
|
|
2318
|
+
font-size: 10px;
|
|
2072
2319
|
}
|
|
2073
2320
|
|
|
2074
2321
|
body.mobile .skills-skills-grid {
|
|
2075
|
-
grid-template-columns: 1fr 1fr;
|
|
2076
|
-
gap:
|
|
2322
|
+
grid-template-columns: 1fr 1fr 1fr;
|
|
2323
|
+
gap: 6px;
|
|
2077
2324
|
}
|
|
2078
2325
|
|
|
2079
2326
|
body.mobile .skills-skill-item {
|
|
2080
|
-
gap:
|
|
2081
|
-
padding:
|
|
2327
|
+
gap: 6px;
|
|
2328
|
+
padding: 4px 8px;
|
|
2329
|
+
border-radius: 6px;
|
|
2330
|
+
min-height: 40px;
|
|
2331
|
+
cursor: pointer;
|
|
2332
|
+
-webkit-tap-highlight-color: rgba(255, 255, 255, 0.1);
|
|
2082
2333
|
}
|
|
2083
2334
|
|
|
2084
2335
|
body.mobile .skills-skill-icon {
|
|
2085
2336
|
width: 28px;
|
|
2086
2337
|
height: 28px;
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
body.mobile .skills-skill-icon-img {
|
|
2090
|
-
width: 100%;
|
|
2091
|
-
height: 100%;
|
|
2338
|
+
border-radius: 6px;
|
|
2092
2339
|
}
|
|
2093
2340
|
|
|
2094
2341
|
body.mobile .skills-skill-header {
|
|
2095
|
-
margin-bottom:
|
|
2342
|
+
margin-bottom: 4px;
|
|
2096
2343
|
}
|
|
2097
2344
|
|
|
2098
2345
|
body.mobile .skills-skill-name {
|
|
2099
|
-
font-size:
|
|
2346
|
+
font-size: 10px;
|
|
2347
|
+
overflow: hidden;
|
|
2348
|
+
text-overflow: ellipsis;
|
|
2349
|
+
white-space: nowrap;
|
|
2100
2350
|
}
|
|
2101
2351
|
|
|
2102
2352
|
body.mobile .skills-skill-level {
|
|
2103
|
-
font-size:
|
|
2353
|
+
font-size: 9px;
|
|
2354
|
+
flex-shrink: 0;
|
|
2104
2355
|
}
|
|
2105
2356
|
|
|
2106
2357
|
body.mobile .skills-skill-exp-bar {
|
|
2107
2358
|
height: 10px;
|
|
2359
|
+
border-radius: 6px;
|
|
2108
2360
|
}
|
|
2109
2361
|
|
|
2110
2362
|
body.mobile .skills-skill-exp-text {
|
|
2111
|
-
font-size:
|
|
2363
|
+
font-size: 7px;
|
|
2112
2364
|
}
|
|
2113
2365
|
|
|
2114
2366
|
body.mobile .skills-skill-tooltip {
|
|
2115
|
-
|
|
2367
|
+
opacity: 0;
|
|
2368
|
+
visibility: hidden;
|
|
2369
|
+
transform: translateY(-4px);
|
|
2370
|
+
transition: all 0.2s ease;
|
|
2371
|
+
}
|
|
2372
|
+
|
|
2373
|
+
body.mobile .skills-mobile-tooltip-visible {
|
|
2374
|
+
opacity: 1 !important;
|
|
2375
|
+
visibility: visible !important;
|
|
2376
|
+
transform: translateY(-8px) !important;
|
|
2377
|
+
}
|
|
2378
|
+
|
|
2379
|
+
body.mobile .skills-skill-tooltip-content {
|
|
2380
|
+
max-width: 180px;
|
|
2381
|
+
font-size: 10px;
|
|
2382
|
+
}
|
|
2383
|
+
|
|
2384
|
+
/* Center the caret on mobile */
|
|
2385
|
+
body.mobile .skills-skill-tooltip-content::after {
|
|
2386
|
+
left: 50% !important;
|
|
2387
|
+
transform: translateX(-50%) !important;
|
|
2388
|
+
}
|
|
2389
|
+
|
|
2390
|
+
body.mobile .skills-skill-tooltip-content::before {
|
|
2391
|
+
left: 50% !important;
|
|
2392
|
+
transform: translateX(-50%) !important;
|
|
2393
|
+
}
|
|
2394
|
+
|
|
2395
|
+
/* Enable scrolling if needed */
|
|
2396
|
+
body.mobile .skills-content * {
|
|
2397
|
+
touch-action: pan-y !important;
|
|
2116
2398
|
}
|
|
2117
2399
|
</style>
|
|
2118
2400
|
|
|
@@ -2495,94 +2777,72 @@ window.ItemTooltips = (function() {
|
|
|
2495
2777
|
flex: 1;
|
|
2496
2778
|
}
|
|
2497
2779
|
|
|
2498
|
-
/* Mobile
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2780
|
+
/* Mobile Responsive */
|
|
2781
|
+
body.mobile .dialogue-panel {
|
|
2782
|
+
bottom: 20px;
|
|
2783
|
+
right: 20px;
|
|
2784
|
+
width: auto;
|
|
2785
|
+
max-width: 340px;
|
|
2786
|
+
min-width: 280px;
|
|
2787
|
+
max-height: calc(100vh - 40px);
|
|
2788
|
+
}
|
|
2507
2789
|
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2790
|
+
body.mobile .dialogue-header {
|
|
2791
|
+
padding: 8px 12px;
|
|
2792
|
+
border-radius: 8px 8px 0 0;
|
|
2793
|
+
}
|
|
2511
2794
|
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
}
|
|
2795
|
+
body.mobile .dialogue-container {
|
|
2796
|
+
border-radius: 8px;
|
|
2797
|
+
}
|
|
2516
2798
|
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2799
|
+
body.mobile .dialogue-npc-avatar {
|
|
2800
|
+
width: 32px;
|
|
2801
|
+
height: 32px;
|
|
2802
|
+
border-radius: 4px;
|
|
2803
|
+
}
|
|
2520
2804
|
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
.dialogue-close {
|
|
2526
|
-
width: 18px;
|
|
2527
|
-
height: 18px;
|
|
2528
|
-
font-size: 10px;
|
|
2529
|
-
}
|
|
2530
|
-
|
|
2531
|
-
.dialogue-content {
|
|
2532
|
-
padding: 10px;
|
|
2533
|
-
max-height: calc(min(60vh, calc(100vh - 80px)) - 50px);
|
|
2534
|
-
}
|
|
2535
|
-
|
|
2536
|
-
.dialogue-message {
|
|
2537
|
-
padding: 8px;
|
|
2538
|
-
font-size: 11px;
|
|
2539
|
-
margin-bottom: 8px;
|
|
2540
|
-
}
|
|
2541
|
-
|
|
2542
|
-
.dialogue-option {
|
|
2543
|
-
padding: 6px 8px;
|
|
2544
|
-
font-size: 10px;
|
|
2545
|
-
}
|
|
2805
|
+
body.mobile .dialogue-npc-name {
|
|
2806
|
+
font-size: 12px;
|
|
2807
|
+
}
|
|
2546
2808
|
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
height: 14px;
|
|
2550
|
-
}
|
|
2809
|
+
body.mobile .dialogue-npc-title {
|
|
2810
|
+
font-size: 10px;
|
|
2551
2811
|
}
|
|
2552
2812
|
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2813
|
+
body.mobile .dialogue-close {
|
|
2814
|
+
width: 20px;
|
|
2815
|
+
height: 20px;
|
|
2816
|
+
font-size: 12px;
|
|
2817
|
+
border-radius: 4px;
|
|
2818
|
+
}
|
|
2559
2819
|
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2820
|
+
body.mobile .dialogue-content {
|
|
2821
|
+
padding: 12px;
|
|
2822
|
+
max-height: calc(100vh - 140px);
|
|
2823
|
+
}
|
|
2564
2824
|
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2825
|
+
body.mobile .dialogue-content * {
|
|
2826
|
+
overflow-y: scroll;
|
|
2827
|
+
touch-action: pan-y !important;
|
|
2828
|
+
}
|
|
2569
2829
|
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2830
|
+
body.mobile .dialogue-message {
|
|
2831
|
+
padding: 8px;
|
|
2832
|
+
font-size: 11px;
|
|
2833
|
+
margin-bottom: 8px;
|
|
2834
|
+
border-radius: 4px;
|
|
2835
|
+
}
|
|
2574
2836
|
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2837
|
+
body.mobile .dialogue-option {
|
|
2838
|
+
padding: 8px 10px;
|
|
2839
|
+
font-size: 11px;
|
|
2840
|
+
border-radius: 4px;
|
|
2579
2841
|
}
|
|
2580
2842
|
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
right: max(20px, calc((100vw - 1200px) / 4));
|
|
2585
|
-
}
|
|
2843
|
+
body.mobile .dialogue-quest-icon {
|
|
2844
|
+
width: 14px;
|
|
2845
|
+
height: 14px;
|
|
2586
2846
|
}
|
|
2587
2847
|
</style>
|
|
2588
2848
|
|
|
@@ -3464,13 +3724,15 @@ window.ItemTooltips = (function() {
|
|
|
3464
3724
|
/* Mobile Styles */
|
|
3465
3725
|
body.mobile .quests-container {
|
|
3466
3726
|
width: auto;
|
|
3467
|
-
max-width:
|
|
3468
|
-
min-width:
|
|
3469
|
-
height:
|
|
3727
|
+
max-width: 600px;
|
|
3728
|
+
min-width: 340px;
|
|
3729
|
+
height: 85vh;
|
|
3730
|
+
border-radius: 8px;
|
|
3470
3731
|
}
|
|
3471
3732
|
|
|
3472
3733
|
body.mobile .quests-header {
|
|
3473
3734
|
padding: 8px 12px;
|
|
3735
|
+
border-radius: 8px 8px 0 0;
|
|
3474
3736
|
}
|
|
3475
3737
|
|
|
3476
3738
|
body.mobile .quests-title {
|
|
@@ -3478,72 +3740,193 @@ window.ItemTooltips = (function() {
|
|
|
3478
3740
|
}
|
|
3479
3741
|
|
|
3480
3742
|
body.mobile .quests-close {
|
|
3481
|
-
width:
|
|
3482
|
-
height:
|
|
3483
|
-
font-size:
|
|
3484
|
-
|
|
3485
|
-
|
|
3486
|
-
body.mobile .quests-content {
|
|
3487
|
-
flex-direction: column;
|
|
3743
|
+
width: 24px;
|
|
3744
|
+
height: 24px;
|
|
3745
|
+
font-size: 16px;
|
|
3746
|
+
border-radius: 6px;
|
|
3488
3747
|
}
|
|
3489
3748
|
|
|
3490
3749
|
body.mobile .quests-sidebar {
|
|
3491
|
-
width:
|
|
3492
|
-
|
|
3493
|
-
border-right: none;
|
|
3494
|
-
border-bottom: 1px solid #444;
|
|
3495
|
-
}
|
|
3496
|
-
|
|
3497
|
-
body.mobile .quests-section {
|
|
3498
|
-
flex: none;
|
|
3750
|
+
width: 175px;
|
|
3751
|
+
min-width: 175px;
|
|
3499
3752
|
}
|
|
3500
3753
|
|
|
3501
3754
|
body.mobile .quests-section-title {
|
|
3502
|
-
padding: 8px
|
|
3503
|
-
font-size:
|
|
3755
|
+
padding: 8px 10px 6px;
|
|
3756
|
+
font-size: 11px;
|
|
3504
3757
|
}
|
|
3505
3758
|
|
|
3506
3759
|
body.mobile .quests-list {
|
|
3507
3760
|
padding: 6px;
|
|
3508
|
-
|
|
3761
|
+
}
|
|
3762
|
+
|
|
3763
|
+
body.mobile .quests-list * {
|
|
3764
|
+
touch-action: pan-y !important;
|
|
3765
|
+
overflow-y: scroll;
|
|
3509
3766
|
}
|
|
3510
3767
|
|
|
3511
3768
|
body.mobile .quests-item {
|
|
3512
|
-
padding: 8px;
|
|
3513
|
-
margin-bottom:
|
|
3769
|
+
padding: 3px 8px;
|
|
3770
|
+
margin-bottom: 3px;
|
|
3771
|
+
border-radius: 6px;
|
|
3772
|
+
min-height: 28px;
|
|
3514
3773
|
}
|
|
3515
3774
|
|
|
3516
3775
|
body.mobile .quests-item-name {
|
|
3517
3776
|
font-size: 11px;
|
|
3777
|
+
font-weight: 500;
|
|
3778
|
+
overflow: hidden;
|
|
3779
|
+
text-overflow: ellipsis;
|
|
3780
|
+
white-space: nowrap;
|
|
3518
3781
|
}
|
|
3519
3782
|
|
|
3520
3783
|
body.mobile .quests-item-progress {
|
|
3521
|
-
font-size:
|
|
3784
|
+
font-size: 9px;
|
|
3785
|
+
font-weight: 600;
|
|
3522
3786
|
}
|
|
3523
3787
|
|
|
3524
3788
|
body.mobile .quests-details-content {
|
|
3525
3789
|
padding: 12px;
|
|
3526
3790
|
}
|
|
3527
3791
|
|
|
3792
|
+
body.mobile .quests-details-content * {
|
|
3793
|
+
touch-action: pan-y !important;
|
|
3794
|
+
overflow-y: scroll;
|
|
3795
|
+
}
|
|
3796
|
+
|
|
3797
|
+
/* Exception for reward items and tooltips - override the blanket overflow rule */
|
|
3798
|
+
body.mobile .quests-reward-item,
|
|
3799
|
+
body.mobile .quests-reward-item *,
|
|
3800
|
+
body.mobile .quests-reward-item-tooltip,
|
|
3801
|
+
body.mobile .quests-reward-item-tooltip * {
|
|
3802
|
+
overflow: visible !important;
|
|
3803
|
+
}
|
|
3804
|
+
|
|
3805
|
+
/* Ensure all parent containers allow tooltips to escape */
|
|
3806
|
+
body.mobile .quests-rewards-list,
|
|
3807
|
+
body.mobile .quests-detail-rewards,
|
|
3808
|
+
body.mobile .quests-details-panel {
|
|
3809
|
+
overflow: visible !important;
|
|
3810
|
+
}
|
|
3811
|
+
|
|
3812
|
+
body.mobile .quests-rewards-list * {
|
|
3813
|
+
overflow-y: scroll !important;
|
|
3814
|
+
touch-action: pan-y !important;
|
|
3815
|
+
}
|
|
3816
|
+
|
|
3817
|
+
body.mobile .quests-detail-header {
|
|
3818
|
+
margin-bottom: 12px;
|
|
3819
|
+
padding-bottom: 8px;
|
|
3820
|
+
}
|
|
3821
|
+
|
|
3528
3822
|
body.mobile .quests-detail-name {
|
|
3529
|
-
font-size:
|
|
3823
|
+
font-size: 14px;
|
|
3824
|
+
margin-bottom: 6px;
|
|
3825
|
+
}
|
|
3826
|
+
|
|
3827
|
+
body.mobile .quests-detail-description {
|
|
3828
|
+
margin-bottom: 16px;
|
|
3530
3829
|
}
|
|
3531
3830
|
|
|
3532
3831
|
body.mobile .quests-detail-description p {
|
|
3533
3832
|
font-size: 11px;
|
|
3833
|
+
line-height: 1.4;
|
|
3534
3834
|
}
|
|
3535
3835
|
|
|
3536
|
-
body.mobile .quests-objectives
|
|
3836
|
+
body.mobile .quests-detail-objectives {
|
|
3837
|
+
margin-bottom: 12px;
|
|
3838
|
+
}
|
|
3839
|
+
|
|
3840
|
+
body.mobile .quests-objectives-title,
|
|
3841
|
+
body.mobile .quests-rewards-title {
|
|
3537
3842
|
font-size: 12px;
|
|
3843
|
+
margin-bottom: 8px;
|
|
3844
|
+
}
|
|
3845
|
+
|
|
3846
|
+
body.mobile .quests-objectives-list {
|
|
3847
|
+
margin-bottom: 6px;
|
|
3848
|
+
}
|
|
3849
|
+
|
|
3850
|
+
body.mobile .quests-objective {
|
|
3851
|
+
padding: 6px 0;
|
|
3852
|
+
gap: 8px;
|
|
3853
|
+
}
|
|
3854
|
+
|
|
3855
|
+
body.mobile .quests-objective-icon {
|
|
3856
|
+
width: 14px;
|
|
3857
|
+
height: 14px;
|
|
3858
|
+
font-size: 10px;
|
|
3538
3859
|
}
|
|
3539
3860
|
|
|
3540
3861
|
body.mobile .quests-objective-text {
|
|
3541
|
-
font-size:
|
|
3862
|
+
font-size: 10px;
|
|
3863
|
+
line-height: 1.3;
|
|
3864
|
+
}
|
|
3865
|
+
|
|
3866
|
+
body.mobile .quests-reward-item {
|
|
3867
|
+
padding: 3px 8px;
|
|
3868
|
+
gap: 6px;
|
|
3869
|
+
border-radius: 6px;
|
|
3870
|
+
min-height: 24px;
|
|
3871
|
+
}
|
|
3872
|
+
|
|
3873
|
+
body.mobile .quests-reward-icon {
|
|
3874
|
+
width: 16px;
|
|
3875
|
+
height: 16px;
|
|
3876
|
+
}
|
|
3877
|
+
|
|
3878
|
+
body.mobile .quests-reward-exp-icon {
|
|
3879
|
+
font-size: 12px;
|
|
3880
|
+
width: 16px;
|
|
3881
|
+
}
|
|
3882
|
+
|
|
3883
|
+
body.mobile .quests-reward-text {
|
|
3884
|
+
font-size: 10px;
|
|
3885
|
+
font-weight: 500;
|
|
3542
3886
|
}
|
|
3543
3887
|
|
|
3544
3888
|
body.mobile .quests-empty-section {
|
|
3545
3889
|
padding: 12px 8px;
|
|
3546
|
-
font-size:
|
|
3890
|
+
font-size: 10px;
|
|
3891
|
+
line-height: 1.3;
|
|
3892
|
+
}
|
|
3893
|
+
|
|
3894
|
+
body.mobile .quests-empty-content {
|
|
3895
|
+
padding: 16px 12px;
|
|
3896
|
+
}
|
|
3897
|
+
|
|
3898
|
+
body.mobile .quests-empty-icon {
|
|
3899
|
+
font-size: 32px;
|
|
3900
|
+
margin-bottom: 8px;
|
|
3901
|
+
}
|
|
3902
|
+
|
|
3903
|
+
body.mobile .quests-empty-text {
|
|
3904
|
+
font-size: 11px;
|
|
3905
|
+
line-height: 1.3;
|
|
3906
|
+
padding: 0 6px;
|
|
3907
|
+
}
|
|
3908
|
+
|
|
3909
|
+
/* Mobile tooltip adjustments */
|
|
3910
|
+
body.mobile .quests-reward-item-tooltip {
|
|
3911
|
+
opacity: 0;
|
|
3912
|
+
visibility: hidden;
|
|
3913
|
+
transition: all 0.2s ease;
|
|
3914
|
+
}
|
|
3915
|
+
|
|
3916
|
+
body.mobile .quests-reward-item-tooltip.mobile-tooltip-visible {
|
|
3917
|
+
opacity: 1 !important;
|
|
3918
|
+
visibility: visible !important;
|
|
3919
|
+
}
|
|
3920
|
+
|
|
3921
|
+
/* Override mobile caret centering - keep caret over reward icon */
|
|
3922
|
+
body.mobile .quests-reward-item-tooltip-content::after {
|
|
3923
|
+
left: 15px !important;
|
|
3924
|
+
transform: translateX(-50%) !important;
|
|
3925
|
+
}
|
|
3926
|
+
|
|
3927
|
+
body.mobile .quests-reward-item-tooltip-content::before {
|
|
3928
|
+
left: 15px !important;
|
|
3929
|
+
transform: translateX(-50%) !important;
|
|
3547
3930
|
}
|
|
3548
3931
|
|
|
3549
3932
|
|
|
@@ -4450,155 +4833,149 @@ window.ItemTooltips = (function() {
|
|
|
4450
4833
|
.merchant-hotbar-slot.merchant-legendary { border-color: #F59E0B; }
|
|
4451
4834
|
|
|
4452
4835
|
/* Mobile styles */
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
}
|
|
4461
|
-
|
|
4462
|
-
body.mobile .merchant-overlay {
|
|
4463
|
-
gap: 8px;
|
|
4464
|
-
padding: 4px;
|
|
4465
|
-
}
|
|
4836
|
+
body.mobile {
|
|
4837
|
+
--merchant-slot-size: 44px;
|
|
4838
|
+
--merchant-hotbar-size: 44px;
|
|
4839
|
+
--merchant-icon-size: 32px;
|
|
4840
|
+
--merchant-gap: 4px;
|
|
4841
|
+
--merchant-padding: 8px;
|
|
4842
|
+
}
|
|
4466
4843
|
|
|
4467
|
-
|
|
4468
|
-
|
|
4469
|
-
|
|
4470
|
-
|
|
4471
|
-
min-width: 320px;
|
|
4472
|
-
}
|
|
4844
|
+
body.mobile .merchant-overlay {
|
|
4845
|
+
gap: 12px;
|
|
4846
|
+
padding: 8px;
|
|
4847
|
+
}
|
|
4473
4848
|
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4849
|
+
body.mobile .merchant-container,
|
|
4850
|
+
body.mobile .merchant-hotbar-container {
|
|
4851
|
+
width: auto;
|
|
4852
|
+
max-width: 560px;
|
|
4853
|
+
min-width: 340px;
|
|
4854
|
+
border-radius: 8px;
|
|
4855
|
+
}
|
|
4477
4856
|
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4857
|
+
body.mobile .merchant-header {
|
|
4858
|
+
padding: 8px 12px;
|
|
4859
|
+
border-radius: 8px 8px 0 0;
|
|
4860
|
+
}
|
|
4481
4861
|
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
}
|
|
4862
|
+
body.mobile .merchant-info {
|
|
4863
|
+
gap: 8px;
|
|
4864
|
+
}
|
|
4486
4865
|
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4866
|
+
body.mobile .merchant-avatar {
|
|
4867
|
+
width: 32px;
|
|
4868
|
+
height: 32px;
|
|
4869
|
+
}
|
|
4490
4870
|
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4871
|
+
body.mobile .merchant-name {
|
|
4872
|
+
font-size: 14px;
|
|
4873
|
+
}
|
|
4494
4874
|
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
font-size: 14px;
|
|
4499
|
-
}
|
|
4875
|
+
body.mobile .merchant-title {
|
|
4876
|
+
font-size: 12px;
|
|
4877
|
+
}
|
|
4500
4878
|
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
|
|
4879
|
+
body.mobile .merchant-close {
|
|
4880
|
+
width: 24px;
|
|
4881
|
+
height: 24px;
|
|
4882
|
+
font-size: 16px;
|
|
4883
|
+
}
|
|
4506
4884
|
|
|
4507
|
-
|
|
4508
|
-
|
|
4509
|
-
|
|
4510
|
-
|
|
4511
|
-
margin: 0 auto;
|
|
4512
|
-
}
|
|
4885
|
+
body.mobile .merchant-content {
|
|
4886
|
+
padding: 12px;
|
|
4887
|
+
gap: 12px;
|
|
4888
|
+
}
|
|
4513
4889
|
|
|
4514
|
-
|
|
4515
|
-
|
|
4516
|
-
|
|
4517
|
-
|
|
4518
|
-
|
|
4519
|
-
}
|
|
4890
|
+
body.mobile .merchant-grid,
|
|
4891
|
+
body.mobile .merchant-hotbar-grid {
|
|
4892
|
+
padding: 8px;
|
|
4893
|
+
border-radius: 6px;
|
|
4894
|
+
}
|
|
4520
4895
|
|
|
4521
|
-
|
|
4522
|
-
|
|
4523
|
-
|
|
4524
|
-
|
|
4896
|
+
body.mobile .merchant-hotbar-grid {
|
|
4897
|
+
justify-items: center;
|
|
4898
|
+
width: fit-content;
|
|
4899
|
+
margin: 0 auto;
|
|
4900
|
+
padding: 12px;
|
|
4901
|
+
border-radius: 0 0 6px 6px;
|
|
4902
|
+
}
|
|
4525
4903
|
|
|
4526
|
-
|
|
4527
|
-
|
|
4528
|
-
|
|
4529
|
-
|
|
4904
|
+
body.mobile .merchant-right-panel {
|
|
4905
|
+
padding: 8px;
|
|
4906
|
+
border-radius: 6px;
|
|
4907
|
+
flex: 0 0 184px;
|
|
4908
|
+
min-width: 184px;
|
|
4909
|
+
box-sizing: border-box;
|
|
4910
|
+
}
|
|
4530
4911
|
|
|
4531
|
-
|
|
4532
|
-
|
|
4533
|
-
|
|
4534
|
-
}
|
|
4912
|
+
body.mobile .merchant-panel-placeholder {
|
|
4913
|
+
font-size: 12px;
|
|
4914
|
+
}
|
|
4535
4915
|
|
|
4536
|
-
|
|
4537
|
-
|
|
4538
|
-
|
|
4539
|
-
|
|
4916
|
+
body.mobile .merchant-slot-content,
|
|
4917
|
+
body.mobile .merchant-hotbar-slot-content {
|
|
4918
|
+
font-size: 10px;
|
|
4919
|
+
}
|
|
4540
4920
|
|
|
4541
|
-
|
|
4542
|
-
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
right: 1px;
|
|
4546
|
-
min-width: 8px;
|
|
4547
|
-
}
|
|
4921
|
+
body.mobile .merchant-item-icon {
|
|
4922
|
+
width: 36px;
|
|
4923
|
+
height: 36px;
|
|
4924
|
+
}
|
|
4548
4925
|
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
right: 1px;
|
|
4554
|
-
}
|
|
4926
|
+
body.mobile .merchant-hotbar-slot-icon {
|
|
4927
|
+
width: 36px;
|
|
4928
|
+
height: 36px;
|
|
4929
|
+
}
|
|
4555
4930
|
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4931
|
+
body.mobile .merchant-slot-quantity {
|
|
4932
|
+
font-size: 8px;
|
|
4933
|
+
padding: 1px 3px;
|
|
4934
|
+
bottom: 2px;
|
|
4935
|
+
right: 2px;
|
|
4936
|
+
min-width: 10px;
|
|
4937
|
+
border-radius: 3px;
|
|
4938
|
+
}
|
|
4559
4939
|
|
|
4560
|
-
|
|
4561
|
-
|
|
4562
|
-
|
|
4563
|
-
|
|
4940
|
+
body.mobile .merchant-hotbar-slot-quantity {
|
|
4941
|
+
font-size: 8px;
|
|
4942
|
+
padding: 1px 3px;
|
|
4943
|
+
bottom: 2px;
|
|
4944
|
+
right: 2px;
|
|
4945
|
+
min-width: 12px;
|
|
4946
|
+
border-radius: 3px;
|
|
4947
|
+
}
|
|
4564
4948
|
|
|
4565
|
-
body.mobile .merchant-item-header {
|
|
4566
|
-
gap: 8px;
|
|
4567
|
-
padding: 6px;
|
|
4568
|
-
}
|
|
4569
4949
|
|
|
4570
|
-
body.mobile .merchant-item-actions {
|
|
4571
|
-
gap: 6px;
|
|
4572
|
-
}
|
|
4573
4950
|
|
|
4574
|
-
|
|
4575
|
-
|
|
4576
|
-
|
|
4577
|
-
|
|
4951
|
+
/* Mobile item details */
|
|
4952
|
+
body.mobile .merchant-item-details {
|
|
4953
|
+
min-width: 180px;
|
|
4954
|
+
gap: 8px;
|
|
4955
|
+
}
|
|
4578
4956
|
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4957
|
+
body.mobile .merchant-item-header {
|
|
4958
|
+
gap: 6px;
|
|
4959
|
+
}
|
|
4582
4960
|
|
|
4583
|
-
|
|
4584
|
-
|
|
4585
|
-
|
|
4961
|
+
body.mobile .merchant-item-actions {
|
|
4962
|
+
gap: 12px;
|
|
4963
|
+
}
|
|
4586
4964
|
|
|
4587
|
-
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
|
|
4591
|
-
|
|
4965
|
+
body.mobile .merchant-qty-btn {
|
|
4966
|
+
width: 24px;
|
|
4967
|
+
height: 24px;
|
|
4968
|
+
font-size: 12px;
|
|
4969
|
+
}
|
|
4592
4970
|
|
|
4593
|
-
|
|
4594
|
-
|
|
4595
|
-
|
|
4596
|
-
|
|
4971
|
+
body.mobile .merchant-qty-display {
|
|
4972
|
+
font-size: 12px;
|
|
4973
|
+
min-width: 20px;
|
|
4974
|
+
}
|
|
4597
4975
|
|
|
4598
|
-
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
}
|
|
4976
|
+
body.mobile .merchant-action-btn {
|
|
4977
|
+
padding: 8px 16px;
|
|
4978
|
+
font-size: 12px;
|
|
4602
4979
|
}
|
|
4603
4980
|
|
|
4604
4981
|
/* Button styles */
|
|
@@ -5513,37 +5890,40 @@ window.ItemTooltips = (function() {
|
|
|
5513
5890
|
|
|
5514
5891
|
|
|
5515
5892
|
/* Mobile responsive */
|
|
5516
|
-
|
|
5893
|
+
|
|
5517
5894
|
body.mobile {
|
|
5518
|
-
--crafting-slot-size:
|
|
5519
|
-
--crafting-icon-size:
|
|
5520
|
-
--crafting-gap:
|
|
5521
|
-
--crafting-padding:
|
|
5895
|
+
--crafting-slot-size: 44px;
|
|
5896
|
+
--crafting-icon-size: 32px;
|
|
5897
|
+
--crafting-gap: 4px;
|
|
5898
|
+
--crafting-padding: 8px;
|
|
5522
5899
|
}
|
|
5523
5900
|
|
|
5524
5901
|
body.mobile .crafting-container {
|
|
5525
5902
|
width: auto;
|
|
5526
|
-
max-width:
|
|
5527
|
-
min-width:
|
|
5903
|
+
max-width: 520px;
|
|
5904
|
+
min-width: 340px;
|
|
5905
|
+
border-radius: 8px;
|
|
5528
5906
|
}
|
|
5529
5907
|
|
|
5530
5908
|
body.mobile .crafting-content {
|
|
5531
|
-
padding:
|
|
5532
|
-
|
|
5533
|
-
gap: 8px;
|
|
5909
|
+
padding: 12px;
|
|
5910
|
+
gap: 12px;
|
|
5534
5911
|
}
|
|
5535
5912
|
|
|
5536
5913
|
body.mobile .crafting-grid {
|
|
5537
5914
|
justify-items: center;
|
|
5538
5915
|
width: fit-content;
|
|
5539
5916
|
margin: 0 auto;
|
|
5917
|
+
padding: 8px;
|
|
5918
|
+
border-radius: 6px;
|
|
5540
5919
|
}
|
|
5541
5920
|
|
|
5542
5921
|
body.mobile .crafting-right-panel {
|
|
5543
5922
|
width: auto;
|
|
5544
5923
|
flex: 1;
|
|
5545
|
-
min-height:
|
|
5924
|
+
min-height: 120px;
|
|
5546
5925
|
padding: var(--crafting-padding);
|
|
5926
|
+
border-radius: 6px;
|
|
5547
5927
|
}
|
|
5548
5928
|
|
|
5549
5929
|
body.mobile .crafting-panel-content {
|
|
@@ -5556,10 +5936,9 @@ window.ItemTooltips = (function() {
|
|
|
5556
5936
|
padding: 16px;
|
|
5557
5937
|
}
|
|
5558
5938
|
|
|
5559
|
-
|
|
5560
|
-
|
|
5561
5939
|
body.mobile .crafting-header {
|
|
5562
|
-
padding:
|
|
5940
|
+
padding: 8px 12px;
|
|
5941
|
+
border-radius: 8px 8px 0 0;
|
|
5563
5942
|
}
|
|
5564
5943
|
|
|
5565
5944
|
body.mobile .crafting-info {
|
|
@@ -5572,15 +5951,21 @@ window.ItemTooltips = (function() {
|
|
|
5572
5951
|
}
|
|
5573
5952
|
|
|
5574
5953
|
body.mobile .crafting-name {
|
|
5575
|
-
font-size:
|
|
5954
|
+
font-size: 14px;
|
|
5576
5955
|
}
|
|
5577
5956
|
|
|
5578
5957
|
body.mobile .crafting-title {
|
|
5579
|
-
font-size:
|
|
5958
|
+
font-size: 12px;
|
|
5959
|
+
}
|
|
5960
|
+
|
|
5961
|
+
body.mobile .crafting-close {
|
|
5962
|
+
width: 24px;
|
|
5963
|
+
height: 24px;
|
|
5964
|
+
font-size: 16px;
|
|
5580
5965
|
}
|
|
5581
5966
|
|
|
5582
5967
|
body.mobile .crafting-item-details {
|
|
5583
|
-
gap:
|
|
5968
|
+
gap: 8px;
|
|
5584
5969
|
}
|
|
5585
5970
|
|
|
5586
5971
|
body.mobile .crafting-item-header {
|
|
@@ -5590,71 +5975,85 @@ window.ItemTooltips = (function() {
|
|
|
5590
5975
|
}
|
|
5591
5976
|
|
|
5592
5977
|
body.mobile .crafting-item-header .crafting-item-icon {
|
|
5593
|
-
width:
|
|
5594
|
-
height:
|
|
5978
|
+
width: 28px;
|
|
5979
|
+
height: 28px;
|
|
5595
5980
|
}
|
|
5596
5981
|
|
|
5597
5982
|
body.mobile .crafting-item-name {
|
|
5598
|
-
font-size:
|
|
5983
|
+
font-size: 11px;
|
|
5599
5984
|
}
|
|
5600
5985
|
|
|
5601
5986
|
body.mobile .crafting-requirements-title {
|
|
5602
|
-
font-size:
|
|
5987
|
+
font-size: 11px;
|
|
5603
5988
|
}
|
|
5604
5989
|
|
|
5605
5990
|
body.mobile .crafting-requirements-list {
|
|
5606
5991
|
grid-template-columns: repeat(2, 1fr);
|
|
5607
|
-
gap:
|
|
5992
|
+
gap: 4px;
|
|
5608
5993
|
}
|
|
5609
5994
|
|
|
5610
5995
|
body.mobile .crafting-requirement-item {
|
|
5611
|
-
padding:
|
|
5612
|
-
min-height:
|
|
5613
|
-
gap:
|
|
5996
|
+
padding: 4px 6px;
|
|
5997
|
+
min-height: 32px;
|
|
5998
|
+
gap: 6px;
|
|
5999
|
+
border-radius: 6px;
|
|
5614
6000
|
}
|
|
5615
6001
|
|
|
5616
6002
|
body.mobile .crafting-requirement-icon {
|
|
5617
|
-
width:
|
|
5618
|
-
height:
|
|
6003
|
+
width: 18px;
|
|
6004
|
+
height: 18px;
|
|
5619
6005
|
}
|
|
5620
6006
|
|
|
5621
6007
|
body.mobile .crafting-requirement-name {
|
|
5622
|
-
font-size:
|
|
6008
|
+
font-size: 10px;
|
|
5623
6009
|
}
|
|
5624
6010
|
|
|
5625
6011
|
body.mobile .crafting-requirement-quantity {
|
|
5626
|
-
font-size:
|
|
5627
|
-
padding: 1px
|
|
6012
|
+
font-size: 9px;
|
|
6013
|
+
padding: 1px 3px;
|
|
5628
6014
|
}
|
|
5629
6015
|
|
|
5630
6016
|
body.mobile .crafting-no-requirements {
|
|
5631
|
-
font-size:
|
|
5632
|
-
padding:
|
|
6017
|
+
font-size: 11px;
|
|
6018
|
+
padding: 14px;
|
|
5633
6019
|
}
|
|
5634
6020
|
|
|
5635
6021
|
body.mobile .crafting-item-actions {
|
|
5636
|
-
padding-top:
|
|
6022
|
+
padding-top: 8px;
|
|
5637
6023
|
}
|
|
5638
6024
|
|
|
5639
6025
|
body.mobile .crafting-action-btn {
|
|
5640
|
-
padding:
|
|
5641
|
-
font-size:
|
|
6026
|
+
padding: 8px 14px;
|
|
6027
|
+
font-size: 11px;
|
|
5642
6028
|
}
|
|
5643
6029
|
|
|
5644
|
-
body.mobile .crafting-
|
|
6030
|
+
body.mobile .crafting-slot-quantity {
|
|
5645
6031
|
font-size: 8px;
|
|
5646
|
-
|
|
6032
|
+
padding: 1px 3px;
|
|
6033
|
+
bottom: 2px;
|
|
6034
|
+
right: 2px;
|
|
6035
|
+
min-width: 10px;
|
|
6036
|
+
border-radius: 3px;
|
|
6037
|
+
}
|
|
6038
|
+
|
|
6039
|
+
body.mobile .crafting-item-icon {
|
|
6040
|
+
width: 36px;
|
|
6041
|
+
height: 36px;
|
|
6042
|
+
}
|
|
6043
|
+
|
|
6044
|
+
body.mobile .crafting-item-stats {
|
|
6045
|
+
font-size: 9px;
|
|
6046
|
+
margin-top: 4px;
|
|
5647
6047
|
}
|
|
5648
6048
|
|
|
5649
6049
|
body.mobile .crafting-item-stats .stats-header {
|
|
5650
|
-
font-size:
|
|
6050
|
+
font-size: 9px;
|
|
5651
6051
|
}
|
|
5652
6052
|
|
|
5653
6053
|
body.mobile .crafting-item-description {
|
|
5654
|
-
font-size:
|
|
5655
|
-
margin-top:
|
|
6054
|
+
font-size: 9px;
|
|
6055
|
+
margin-top: 4px;
|
|
5656
6056
|
}
|
|
5657
|
-
}
|
|
5658
6057
|
</style>
|
|
5659
6058
|
|
|
5660
6059
|
|
|
@@ -6689,6 +7088,20 @@ window.ItemTooltips = (function() {
|
|
|
6689
7088
|
<div class="hud-crosshair-vertical"></div>
|
|
6690
7089
|
</div>
|
|
6691
7090
|
|
|
7091
|
+
<!-- Mobile Control Buttons -->
|
|
7092
|
+
<button class="hud-mobile-button" id="hud-attack-btn">
|
|
7093
|
+
<img src="{{CDN_ASSETS_URL}}/icons/skills/combat.png" alt="Attack" class="hud-mobile-button-icon">
|
|
7094
|
+
</button>
|
|
7095
|
+
<button class="hud-mobile-button" id="hud-dodge-btn">
|
|
7096
|
+
<img src="{{CDN_ASSETS_URL}}/icons/skills/agility.png" alt="Dodge" class="hud-mobile-button-icon">
|
|
7097
|
+
</button>
|
|
7098
|
+
<button class="hud-mobile-button" id="hud-jump-btn">
|
|
7099
|
+
<img src="{{CDN_ASSETS_URL}}/icons/buttons/jump.png" alt="Jump" class="hud-mobile-button-icon">
|
|
7100
|
+
</button>
|
|
7101
|
+
<button class="hud-mobile-button" id="hud-interact-btn">
|
|
7102
|
+
<img src="{{CDN_ASSETS_URL}}/icons/buttons/e-mobile.png" alt="Interact" class="hud-mobile-button-icon">
|
|
7103
|
+
</button>
|
|
7104
|
+
|
|
6692
7105
|
<!-- Hotbar -->
|
|
6693
7106
|
<div class="hud-hotbar-container">
|
|
6694
7107
|
<div class="hud-hotbar-grid">
|
|
@@ -6820,6 +7233,17 @@ window.ItemTooltips = (function() {
|
|
|
6820
7233
|
|
|
6821
7234
|
// Setup death overlay respawn button
|
|
6822
7235
|
document.getElementById('hud-death-respawn-btn').addEventListener('click', handleRespawn);
|
|
7236
|
+
|
|
7237
|
+
// Setup mobile buttons
|
|
7238
|
+
document.getElementById('hud-attack-btn').addEventListener('touchstart', handleAttackTap);
|
|
7239
|
+
document.getElementById('hud-attack-btn').addEventListener('touchend', stopAutoAttack);
|
|
7240
|
+
document.getElementById('hud-attack-btn').addEventListener('touchcancel', stopAutoAttack);
|
|
7241
|
+
document.getElementById('hud-dodge-btn').addEventListener('touchstart', () => hytopia.pressInput('q', true));
|
|
7242
|
+
document.getElementById('hud-dodge-btn').addEventListener('touchend', () => hytopia.pressInput('q', false));
|
|
7243
|
+
document.getElementById('hud-jump-btn').addEventListener('touchstart', () => hytopia.pressInput('sp', true));
|
|
7244
|
+
document.getElementById('hud-jump-btn').addEventListener('touchend', () => hytopia.pressInput('sp', false));
|
|
7245
|
+
document.getElementById('hud-interact-btn').addEventListener('touchstart', () => hytopia.pressInput('e', true));
|
|
7246
|
+
document.getElementById('hud-interact-btn').addEventListener('touchend', () => hytopia.pressInput('e', false));
|
|
6823
7247
|
}
|
|
6824
7248
|
|
|
6825
7249
|
function updateHudQuestCount(activeCount, completedCount) {
|
|
@@ -7078,6 +7502,49 @@ window.ItemTooltips = (function() {
|
|
|
7078
7502
|
}
|
|
7079
7503
|
}
|
|
7080
7504
|
|
|
7505
|
+
// Auto-attack system
|
|
7506
|
+
let autoAttackInterval = null;
|
|
7507
|
+
let lastTapTime = 0;
|
|
7508
|
+
|
|
7509
|
+
|
|
7510
|
+
function handleAttackTap() {
|
|
7511
|
+
const currentTime = Date.now();
|
|
7512
|
+
|
|
7513
|
+
// Double tap detected (within 300ms)
|
|
7514
|
+
if (currentTime - lastTapTime < 300 && lastTapTime > 0) {
|
|
7515
|
+
stopAutoAttack();
|
|
7516
|
+
hytopia.pressInput('mr', true);
|
|
7517
|
+
setTimeout(() => hytopia.pressInput('mr', false), 100);
|
|
7518
|
+
lastTapTime = 0;
|
|
7519
|
+
return;
|
|
7520
|
+
}
|
|
7521
|
+
|
|
7522
|
+
// Single tap - start auto attack
|
|
7523
|
+
lastTapTime = currentTime;
|
|
7524
|
+
startAutoAttack();
|
|
7525
|
+
}
|
|
7526
|
+
|
|
7527
|
+
function startAutoAttack() {
|
|
7528
|
+
if (autoAttackInterval) return;
|
|
7529
|
+
|
|
7530
|
+
// Immediate first attack
|
|
7531
|
+
hytopia.pressInput('ml', true);
|
|
7532
|
+
setTimeout(() => hytopia.pressInput('ml', false), 100);
|
|
7533
|
+
|
|
7534
|
+
// Repeat every 500ms
|
|
7535
|
+
autoAttackInterval = setInterval(() => {
|
|
7536
|
+
hytopia.pressInput('ml', true);
|
|
7537
|
+
setTimeout(() => hytopia.pressInput('ml', false), 100);
|
|
7538
|
+
}, 500);
|
|
7539
|
+
}
|
|
7540
|
+
|
|
7541
|
+
function stopAutoAttack() {
|
|
7542
|
+
if (autoAttackInterval) {
|
|
7543
|
+
clearInterval(autoAttackInterval);
|
|
7544
|
+
autoAttackInterval = null;
|
|
7545
|
+
}
|
|
7546
|
+
}
|
|
7547
|
+
|
|
7081
7548
|
// Initialize HUD
|
|
7082
7549
|
initializeHUD();
|
|
7083
7550
|
|
|
@@ -8003,181 +8470,312 @@ window.ItemTooltips = (function() {
|
|
|
8003
8470
|
}
|
|
8004
8471
|
}
|
|
8005
8472
|
|
|
8473
|
+
/* ============================================
|
|
8474
|
+
MOBILE CONTROL BUTTONS
|
|
8475
|
+
============================================ */
|
|
8476
|
+
|
|
8477
|
+
.hud-mobile-button {
|
|
8478
|
+
width: 50px;
|
|
8479
|
+
height: 50px;
|
|
8480
|
+
background: linear-gradient(145deg, var(--hud-primary), var(--hud-secondary));
|
|
8481
|
+
border: 2px solid var(--hud-border);
|
|
8482
|
+
border-radius: 50%;
|
|
8483
|
+
display: none;
|
|
8484
|
+
align-items: center;
|
|
8485
|
+
justify-content: center;
|
|
8486
|
+
padding: 0;
|
|
8487
|
+
position: absolute;
|
|
8488
|
+
overflow: hidden;
|
|
8489
|
+
transition: all var(--hud-transition);
|
|
8490
|
+
box-shadow: var(--hud-box-shadow), var(--hud-inset-shadow);
|
|
8491
|
+
pointer-events: auto;
|
|
8492
|
+
|
|
8493
|
+
/* Mobile optimizations */
|
|
8494
|
+
-webkit-tap-highlight-color: transparent;
|
|
8495
|
+
-webkit-touch-callout: none;
|
|
8496
|
+
user-select: none;
|
|
8497
|
+
outline: none;
|
|
8498
|
+
}
|
|
8499
|
+
|
|
8500
|
+
/* Individual button positioning */
|
|
8501
|
+
#hud-attack-btn {
|
|
8502
|
+
bottom: 50px;
|
|
8503
|
+
right: 70px;
|
|
8504
|
+
height: 70px;
|
|
8505
|
+
width: 70px;
|
|
8506
|
+
}
|
|
8507
|
+
|
|
8508
|
+
#hud-dodge-btn {
|
|
8509
|
+
bottom: 50px;
|
|
8510
|
+
right: 155px;
|
|
8511
|
+
}
|
|
8512
|
+
|
|
8513
|
+
#hud-jump-btn {
|
|
8514
|
+
bottom: 130px;
|
|
8515
|
+
right: 50px;
|
|
8516
|
+
}
|
|
8517
|
+
|
|
8518
|
+
#hud-interact-btn {
|
|
8519
|
+
bottom: 120px;
|
|
8520
|
+
right: 130px;
|
|
8521
|
+
}
|
|
8522
|
+
|
|
8523
|
+
.hud-mobile-button:active {
|
|
8524
|
+
transform: scale(0.95);
|
|
8525
|
+
box-shadow: var(--hud-box-shadow);
|
|
8526
|
+
}
|
|
8527
|
+
|
|
8528
|
+
.hud-mobile-button-icon {
|
|
8529
|
+
width: 100%;
|
|
8530
|
+
height: 100%;
|
|
8531
|
+
border-radius: 50%;
|
|
8532
|
+
object-fit: contain;
|
|
8533
|
+
opacity: 0.85;
|
|
8534
|
+
transition: opacity var(--hud-transition);
|
|
8535
|
+
filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.8));
|
|
8536
|
+
}
|
|
8537
|
+
|
|
8538
|
+
.hud-mobile-button:active .hud-mobile-button-icon {
|
|
8539
|
+
opacity: 1;
|
|
8540
|
+
}
|
|
8541
|
+
|
|
8542
|
+
|
|
8543
|
+
|
|
8006
8544
|
/* ============================================
|
|
8007
8545
|
MOBILE RESPONSIVE
|
|
8008
8546
|
============================================ */
|
|
8009
8547
|
|
|
8010
|
-
|
|
8011
|
-
:
|
|
8012
|
-
|
|
8013
|
-
|
|
8014
|
-
|
|
8015
|
-
|
|
8016
|
-
|
|
8017
|
-
|
|
8018
|
-
|
|
8548
|
+
body.mobile {
|
|
8549
|
+
--hud-hotbar-size: 44px;
|
|
8550
|
+
--hud-bar-height: 16px;
|
|
8551
|
+
--hud-bar-width: 160px;
|
|
8552
|
+
--hud-hotbar-gap: 5px;
|
|
8553
|
+
--hud-status-gap: 10px;
|
|
8554
|
+
--hud-clock-size: 10px;
|
|
8555
|
+
--hud-actions-gap: 10px;
|
|
8556
|
+
}
|
|
8019
8557
|
|
|
8020
|
-
|
|
8021
|
-
|
|
8022
|
-
|
|
8558
|
+
/* Show mobile buttons only on mobile */
|
|
8559
|
+
body.mobile .hud-mobile-button {
|
|
8560
|
+
display: flex;
|
|
8561
|
+
}
|
|
8023
8562
|
|
|
8024
|
-
|
|
8025
|
-
|
|
8026
|
-
|
|
8027
|
-
}
|
|
8563
|
+
body.mobile .hud-hotbar-container {
|
|
8564
|
+
bottom: 8px;
|
|
8565
|
+
}
|
|
8028
8566
|
|
|
8029
|
-
|
|
8030
|
-
|
|
8031
|
-
|
|
8567
|
+
body.mobile .hud-hotbar-grid {
|
|
8568
|
+
padding: 8px;
|
|
8569
|
+
border-radius: 8px;
|
|
8570
|
+
gap: 4px;
|
|
8571
|
+
}
|
|
8032
8572
|
|
|
8033
|
-
|
|
8034
|
-
|
|
8035
|
-
|
|
8036
|
-
|
|
8573
|
+
body.mobile .hud-status-container {
|
|
8574
|
+
bottom: 82px;
|
|
8575
|
+
gap: 16px;
|
|
8576
|
+
}
|
|
8037
8577
|
|
|
8038
|
-
|
|
8039
|
-
|
|
8040
|
-
|
|
8578
|
+
body.mobile .hud-clock-container {
|
|
8579
|
+
top: 16px;
|
|
8580
|
+
right: 16px;
|
|
8581
|
+
}
|
|
8041
8582
|
|
|
8042
|
-
|
|
8043
|
-
|
|
8044
|
-
|
|
8583
|
+
body.mobile .hud-clock {
|
|
8584
|
+
padding: 8px 10px;
|
|
8585
|
+
border-radius: 8px;
|
|
8586
|
+
}
|
|
8045
8587
|
|
|
8046
|
-
|
|
8047
|
-
|
|
8048
|
-
|
|
8049
|
-
|
|
8588
|
+
body.mobile .hud-hotbar-slot {
|
|
8589
|
+
border-radius: 8px;
|
|
8590
|
+
border-width: 2px;
|
|
8591
|
+
}
|
|
8050
8592
|
|
|
8051
|
-
|
|
8052
|
-
|
|
8053
|
-
|
|
8054
|
-
}
|
|
8593
|
+
body.mobile .hud-hotbar-slot-content {
|
|
8594
|
+
font-size: 12px;
|
|
8595
|
+
}
|
|
8055
8596
|
|
|
8056
|
-
|
|
8057
|
-
|
|
8058
|
-
|
|
8059
|
-
|
|
8597
|
+
body.mobile .hud-hotbar-slot-icon {
|
|
8598
|
+
width: 32px;
|
|
8599
|
+
height: 32px;
|
|
8600
|
+
}
|
|
8060
8601
|
|
|
8061
|
-
|
|
8062
|
-
|
|
8063
|
-
|
|
8064
|
-
|
|
8602
|
+
body.mobile .hud-hotbar-slot-quantity {
|
|
8603
|
+
font-size: 8px;
|
|
8604
|
+
padding: 1px 3px;
|
|
8605
|
+
bottom: 2px;
|
|
8606
|
+
right: 2px;
|
|
8607
|
+
}
|
|
8065
8608
|
|
|
8066
|
-
|
|
8067
|
-
|
|
8068
|
-
|
|
8069
|
-
|
|
8609
|
+
body.mobile .hud-health-bar,
|
|
8610
|
+
body.mobile .hud-exp-bar {
|
|
8611
|
+
border-radius: 8px;
|
|
8612
|
+
}
|
|
8070
8613
|
|
|
8071
|
-
|
|
8072
|
-
|
|
8073
|
-
|
|
8074
|
-
|
|
8614
|
+
body.mobile .hud-health-text,
|
|
8615
|
+
body.mobile .hud-exp-text {
|
|
8616
|
+
font-size: 10px;
|
|
8617
|
+
}
|
|
8075
8618
|
|
|
8076
|
-
|
|
8077
|
-
|
|
8078
|
-
|
|
8619
|
+
body.mobile .hud-exp-gain {
|
|
8620
|
+
font-size: 12px;
|
|
8621
|
+
left: calc(var(--hud-bar-width) + var(--hud-status-gap) + var(--hud-bar-width) / 2);
|
|
8622
|
+
}
|
|
8079
8623
|
|
|
8080
|
-
|
|
8081
|
-
|
|
8082
|
-
|
|
8083
|
-
|
|
8084
|
-
|
|
8085
|
-
font-size: 8px;
|
|
8086
|
-
}
|
|
8624
|
+
body.mobile .hud-action-buttons {
|
|
8625
|
+
top: 55px;
|
|
8626
|
+
right: 16px;
|
|
8627
|
+
gap: 10px;
|
|
8628
|
+
}
|
|
8087
8629
|
|
|
8088
|
-
|
|
8089
|
-
|
|
8090
|
-
|
|
8091
|
-
|
|
8092
|
-
|
|
8093
|
-
|
|
8094
|
-
}
|
|
8630
|
+
body.mobile .hud-action-button {
|
|
8631
|
+
width: 44px;
|
|
8632
|
+
height: 44px;
|
|
8633
|
+
border-radius: 8px;
|
|
8634
|
+
border-width: 2px;
|
|
8635
|
+
}
|
|
8095
8636
|
|
|
8096
|
-
|
|
8097
|
-
|
|
8098
|
-
|
|
8637
|
+
body.mobile .hud-action-button-icon {
|
|
8638
|
+
width: 44px;
|
|
8639
|
+
height: 44px;
|
|
8640
|
+
}
|
|
8099
8641
|
|
|
8100
|
-
|
|
8101
|
-
|
|
8102
|
-
|
|
8103
|
-
right: 66px;
|
|
8104
|
-
gap: 8px;
|
|
8105
|
-
}
|
|
8642
|
+
body.mobile .hud-action-tooltip {
|
|
8643
|
+
display: none;
|
|
8644
|
+
}
|
|
8106
8645
|
|
|
8107
|
-
|
|
8108
|
-
|
|
8109
|
-
|
|
8110
|
-
|
|
8111
|
-
|
|
8112
|
-
|
|
8646
|
+
body.mobile .hud-action-key-indicator {
|
|
8647
|
+
width: 16px;
|
|
8648
|
+
height: 16px;
|
|
8649
|
+
top: -6px;
|
|
8650
|
+
right: -6px;
|
|
8651
|
+
font-size: 8px;
|
|
8652
|
+
border-radius: 6px;
|
|
8653
|
+
}
|
|
8113
8654
|
|
|
8114
|
-
|
|
8115
|
-
|
|
8116
|
-
|
|
8655
|
+
body.mobile .hud-quest-count-indicator {
|
|
8656
|
+
width: 16px;
|
|
8657
|
+
height: 16px;
|
|
8658
|
+
top: -6px;
|
|
8659
|
+
left: -6px;
|
|
8660
|
+
font-size: 9px;
|
|
8661
|
+
}
|
|
8117
8662
|
|
|
8118
|
-
|
|
8119
|
-
|
|
8120
|
-
|
|
8663
|
+
body.mobile .hud-help-notification-indicator {
|
|
8664
|
+
width: 12px;
|
|
8665
|
+
height: 12px;
|
|
8666
|
+
top: -5px;
|
|
8667
|
+
left: -5px;
|
|
8668
|
+
}
|
|
8121
8669
|
|
|
8122
|
-
|
|
8123
|
-
|
|
8124
|
-
|
|
8125
|
-
}
|
|
8670
|
+
body.mobile .hud-help-icon {
|
|
8671
|
+
font-size: 20px;
|
|
8672
|
+
}
|
|
8126
8673
|
|
|
8127
|
-
|
|
8128
|
-
|
|
8129
|
-
|
|
8130
|
-
|
|
8674
|
+
/* Notification Mobile Adjustments */
|
|
8675
|
+
body.mobile .hud-notification-container {
|
|
8676
|
+
top: 55px;
|
|
8677
|
+
right: 70px;
|
|
8678
|
+
gap: 8px;
|
|
8679
|
+
}
|
|
8131
8680
|
|
|
8132
|
-
|
|
8133
|
-
|
|
8134
|
-
|
|
8135
|
-
|
|
8136
|
-
|
|
8137
|
-
|
|
8681
|
+
body.mobile .hud-notification {
|
|
8682
|
+
min-width: 160px;
|
|
8683
|
+
max-width: 240px;
|
|
8684
|
+
padding: 10px 12px;
|
|
8685
|
+
font-size: 10px;
|
|
8686
|
+
border-radius: 8px;
|
|
8687
|
+
}
|
|
8138
8688
|
|
|
8139
|
-
|
|
8140
|
-
|
|
8141
|
-
|
|
8142
|
-
opacity: 1;
|
|
8143
|
-
}
|
|
8144
|
-
}
|
|
8689
|
+
body.mobile .hud-notification-content {
|
|
8690
|
+
gap: 8px;
|
|
8691
|
+
}
|
|
8145
8692
|
|
|
8146
|
-
|
|
8147
|
-
|
|
8148
|
-
|
|
8149
|
-
|
|
8150
|
-
|
|
8693
|
+
body.mobile .hud-notification-icon {
|
|
8694
|
+
width: 14px;
|
|
8695
|
+
height: 14px;
|
|
8696
|
+
font-size: 10px;
|
|
8697
|
+
}
|
|
8151
8698
|
|
|
8152
|
-
|
|
8153
|
-
|
|
8154
|
-
|
|
8155
|
-
letter-spacing: 0.05em;
|
|
8156
|
-
}
|
|
8699
|
+
body.mobile .hud-notification-text {
|
|
8700
|
+
font-size: 10px;
|
|
8701
|
+
}
|
|
8157
8702
|
|
|
8158
|
-
|
|
8159
|
-
|
|
8160
|
-
|
|
8161
|
-
|
|
8703
|
+
body.mobile .hud-crosshair-horizontal {
|
|
8704
|
+
width: 10px;
|
|
8705
|
+
height: 2px;
|
|
8706
|
+
left: -5px;
|
|
8707
|
+
top: -1px;
|
|
8708
|
+
}
|
|
8162
8709
|
|
|
8163
|
-
|
|
8164
|
-
|
|
8165
|
-
|
|
8710
|
+
body.mobile .hud-crosshair-vertical {
|
|
8711
|
+
width: 2px;
|
|
8712
|
+
height: 10px;
|
|
8713
|
+
top: -5px;
|
|
8714
|
+
left: -1px;
|
|
8715
|
+
}
|
|
8166
8716
|
|
|
8167
|
-
|
|
8168
|
-
|
|
8169
|
-
|
|
8170
|
-
|
|
8171
|
-
|
|
8717
|
+
/* Area Banner Mobile */
|
|
8718
|
+
body.mobile .hud-area-banner-text {
|
|
8719
|
+
font-size: clamp(1.8rem, 9vw, 3rem);
|
|
8720
|
+
letter-spacing: 0.05em;
|
|
8721
|
+
margin: 0 0 4px 0;
|
|
8722
|
+
}
|
|
8723
|
+
|
|
8724
|
+
body.mobile .hud-area-banner-underline {
|
|
8725
|
+
height: 4px;
|
|
8726
|
+
}
|
|
8727
|
+
|
|
8728
|
+
body.mobile .hud-area-banner.show .hud-area-banner-underline {
|
|
8729
|
+
animation: underlineExpandMobile 1.2s ease-out 0.8s forwards;
|
|
8730
|
+
}
|
|
8731
|
+
|
|
8732
|
+
@keyframes underlineExpandMobile {
|
|
8733
|
+
to {
|
|
8734
|
+
width: min(300px, 80vw);
|
|
8735
|
+
opacity: 1;
|
|
8172
8736
|
}
|
|
8737
|
+
}
|
|
8173
8738
|
|
|
8174
|
-
|
|
8175
|
-
|
|
8176
|
-
|
|
8177
|
-
|
|
8739
|
+
/* Death Overlay Mobile */
|
|
8740
|
+
body.mobile .hud-death-content {
|
|
8741
|
+
margin: 0 16px;
|
|
8742
|
+
max-width: 90vw;
|
|
8743
|
+
}
|
|
8744
|
+
|
|
8745
|
+
body.mobile .hud-death-title {
|
|
8746
|
+
font-size: clamp(1.8rem, 9vw, 3.5rem);
|
|
8747
|
+
margin: 0 0 4px 0;
|
|
8748
|
+
letter-spacing: 0.05em;
|
|
8749
|
+
}
|
|
8750
|
+
|
|
8751
|
+
body.mobile .hud-death-subtitle {
|
|
8752
|
+
font-size: clamp(0.8rem, 4vw, 1rem);
|
|
8753
|
+
margin: 0 0 10px 0;
|
|
8754
|
+
}
|
|
8755
|
+
|
|
8756
|
+
body.mobile .hud-death-underline {
|
|
8757
|
+
margin: 0 auto 18px auto;
|
|
8758
|
+
height: 3px;
|
|
8759
|
+
}
|
|
8760
|
+
|
|
8761
|
+
body.mobile .hud-death-overlay.show .hud-death-underline {
|
|
8762
|
+
animation: deathUnderlineExpandMobile 1.2s ease-out 0.8s forwards;
|
|
8763
|
+
}
|
|
8764
|
+
|
|
8765
|
+
@keyframes deathUnderlineExpandMobile {
|
|
8766
|
+
to {
|
|
8767
|
+
width: min(220px, 75vw);
|
|
8768
|
+
opacity: 1;
|
|
8178
8769
|
}
|
|
8179
8770
|
}
|
|
8180
8771
|
|
|
8772
|
+
body.mobile .hud-death-respawn-btn {
|
|
8773
|
+
font-size: 12px;
|
|
8774
|
+
padding: 10px 20px;
|
|
8775
|
+
min-width: 100px;
|
|
8776
|
+
border-radius: 8px;
|
|
8777
|
+
}
|
|
8778
|
+
|
|
8181
8779
|
/* ============================================
|
|
8182
8780
|
HIGH DPI DISPLAYS
|
|
8183
8781
|
============================================ */
|