Ignore:
Timestamp:
Jan 31, 2018, 2:52:42 PM (7 years ago)
Author:
alloc
Message:

Fixes

Location:
binary-improvements/webserver/js
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/webserver/js/leaflet.layer.sdtdtiles.js

    r249 r315  
    44        var tileLayer = L.tileLayer('../map/{z}/{x}/{y}.png?t={time}', {
    55                maxZoom: isMiniMap ? mapinfo.maxzoom : mapinfo.maxzoom + 1,
    6                 minZoom: isMiniMap ? 0 : Math.max(0, mapinfo.maxzoom - 5),
     6                minZoom: isMiniMap ? -1 : Math.max(0, mapinfo.maxzoom - 5),
    77                maxNativeZoom: mapinfo.maxzoom,
     8                minNativeZoom: 0,
    89                tileSize: mapinfo.tilesize,
    9                 continuousWorld: true,
    10                 tms: true,
    11                 unloadInvisibleTiles: false,
    1210                time: initTime
    1311        });
    1412       
    15         // TileLayer w/ TMS=true fix for zoomlevel >= 8
    16         tileLayer._getWrapTileNum = function () {
    17                 return L.point(0, 0);
     13        tileLayer.getTileUrl = function (coords) {
     14                coords.y = (-coords.y) - 1;
     15                return L.TileLayer.prototype.getTileUrl.bind (tileLayer) (coords);
    1816        };
     17
    1918       
    2019        return tileLayer;
  • binary-improvements/webserver/js/leaflet.regionlayer.js

    r244 r315  
    44        }
    55
    6         var regionLayer = L.tileLayer.canvas({
     6        var regionLayer = L.gridLayer({
    77                maxZoom: mapinfo.maxzoom + 1,
    88                minZoom: 0,
    99                maxNativeZoom: mapinfo.maxzoom + 1,
    1010                tileSize: mapinfo.tilesize,
    11                 continuousWorld: true
    1211        });
    1312
    14         regionLayer.drawTile = function(canvas, tilePoint, zoom) {
    15                 var blockWorldSize = mapinfo.tilesize * Math.pow(2, mapinfo.maxzoom - zoom);
     13        regionLayer.createTile = function(tilePoint) {
     14                var blockWorldSize = mapinfo.tilesize * Math.pow(2, mapinfo.maxzoom - tilePoint.z);
    1615                var tileLeft = tilePoint.x * blockWorldSize;
    1716                var tileBottom = (-1-tilePoint.y) * blockWorldSize;
    1817                var blockPos = L.latLng(tileLeft, tileBottom);
    1918
     19                var canvas = L.DomUtil.create('canvas', 'leaflet-tile');
     20                canvas.width = mapinfo.tilesize;
     21                canvas.height = mapinfo.tilesize;
    2022                var ctx = canvas.getContext('2d');
    2123
     
    6365                        }
    6466                }
    65 
     67                return canvas;
    6668        }
    6769       
  • binary-improvements/webserver/js/map.js

    r306 r315  
    155155        //measure.addTo(map);
    156156
    157         //new L.Control.GameTime({}).addTo(map);
     157        new L.Control.GameTime({}).addTo(map);
    158158       
    159159        if (HasPermission ("webapi.getlandclaims")) {
     
    198198        });
    199199
    200         var openedPopup = null;
    201200        var updatingMarkers = false;
    202201
    203         map.on ("popupopen", function (event) {
    204                 console.log ("open");
    205                 console.log (event.popup._source);
    206                 openedPopup = event.popup._source;
    207         });
    208         map.on ("popupclose", function (event) {
    209                 if (!updatingMarkers) {
    210                         console.log ("close");
    211                         openedPopup = null;
    212                 }
    213         });
    214202
    215203        var setPlayerMarkers = function(data) {
    216                 var online = 0;
    217                 var offline = 0;
     204                var onlineIds = [];
    218205                updatingMarkers = true;
    219206                $.each( data, function( key, val ) {
     
    228215                                                : "")
    229216                                );
     217                                marker.on("move", function ( e ) {
     218                                        if ( this.isPopupOpen () ) {
     219                                                map.flyTo (e.latlng, map.getZoom ());
     220                                        }
     221                                });
    230222                                playersMappingList[val.steamid] = { online: !val.online };
     223                        }
     224                       
     225                        if (val.online) {
     226                                onlineIds.push (val.steamid);
    231227                        }
    232228                       
    233229                        oldpos = marker.getLatLng ();
    234                         if ( playersMappingList[val.steamid].online != val.online || oldpos.lat != val.position.x || oldpos.lng != val.position.z ) {
     230                        if ( playersMappingList[val.steamid].online != val.online ) {
    235231                                if (playersMappingList[val.steamid].online) {
    236232                                        playersOnlineMarkerGroup.removeLayer(marker);
     233                                        playersOfflineMarkerGroup.addLayer(marker);
    237234                                } else {
    238235                                        playersOfflineMarkerGroup.removeLayer(marker);
    239                                 }
     236                                        playersOnlineMarkerGroup.addLayer(marker);
     237                                }
     238                        }
     239                        if ( oldpos.lat != val.position.x || oldpos.lng != val.position.z ) {
    240240                                marker.setLatLng([val.position.x, val.position.z]);
    241241                                if (val.online) {
    242242                                                marker.setOpacity(1.0);
    243                                                 playersOnlineMarkerGroup.addLayer(marker);
    244243                                } else {
    245244                                                marker.setOpacity(0.5);
    246                                                 playersOfflineMarkerGroup.addLayer(marker);
    247245                                }
    248246                        }
     
    250248                        val.currentPosMarker = marker;
    251249                        playersMappingList[val.steamid] = val;
    252                
    253                         if (val.online)
     250                });
     251               
     252                var online = 0;
     253                var offline = 0;
     254                $.each ( playersMappingList, function ( key, val ) {
     255                        if ( val.online && onlineIds.indexOf (key) < 0 ) {
     256                                var marker = val.currentPosMarker;
     257                                playersOnlineMarkerGroup.removeLayer(marker);
     258                                playersOfflineMarkerGroup.addLayer(marker);
     259                                val.online = false;
     260                        }
     261                        if (val.online) {
    254262                                online++;
    255                         else
     263                        } else {
    256264                                offline++;
    257                 });
     265                        }
     266                });
     267               
    258268                updatingMarkers = false;
    259                 if (openedPopup != null) {
    260                         openedPopup.openPopup ();
    261                 }
     269
    262270                $( "#mapControlOnlineCount" ).text( online );
    263271                $( "#mapControlOfflineCount" ).text( offline );
     
    265273
    266274        var updatePlayerTimeout;
     275        var playerUpdateCount = -1;
    267276        var updatePlayerEvent = function() {
    268                 $.getJSON( "../api/getplayerslocation")
     277                playerUpdateCount++;
     278               
     279                $.getJSON( "../api/getplayerslocation" + ((playerUpdateCount % 15) == 0 ? "?offline=true" : ""))
    269280                .done(setPlayerMarkers)
    270281                .fail(function(jqxhr, textStatus, error) {
Note: See TracChangeset for help on using the changeset viewer.