Untitled

 avatar
unknown
javascript
3 years ago
7.5 kB
6
Indexable
javascript:
// sempaaj 09.02.2021
// troche kodu zapozyczone ze skryptu: Modyfikacja mapy - niestandardowe granice
// autor: grabie2

var hours = 12;

var villagesURL = '/map/village.txt';
var conquerURL = '/map/conquer.txt';
var villages = [];
var data = [];
var newdata = [];

var FinalText = "";

var req = new XMLHttpRequest();
req.open('GET', villagesURL, true);
req.onreadystatechange = function (e) {
    if (req.readyState == 4 && req.status == 200 && processConquers)
        processConquers(req.responseText);
    else
        console.log("Błąd podczas ładowania strony...\n");

};
req.send(null);

function processConquers(dataFromReq) {
    villages = dataFromReq.split('\n');

    for (var i = 0; i < villages.length - 1; i++) {
        villages[i] = villages[i].split(',');
    }

    var req = new XMLHttpRequest();
    req.open('GET', conquerURL, true);
    req.onreadystatechange = function (e) {
        if (req.readyState == 4 && req.status == 200 && callback)
            callback(req.responseText);
        else
            console.log("Błąd podczas ładowania strony...\n");

    };
    req.send(null);
}

function callback(dataFromReq) {
    data = dataFromReq.split('\n');

    for (var i = 0; i < data.length - 1; i++) {
        data[i] = data[i].split(',');
        if (Math.floor(Date.now() / 1000) - data[i][1] < hours * 60 * 60) {

            for (var j = 0; j < villages.length - 1; j++) {
                if (villages[j][0] == data[i][0])
                    var temp = [villages[j][2], villages[j][3]];
            }

            FinalText += temp[0] + "|" + temp[1] + " ";
            newdata.push(data[i]);
        }
    }
    test(FinalText);
}

function test(villages) {
    if (typeof TWMap !== 'object') {
        UI.InfoMessage('Skrypt działa tylko na ekranach na których widoczna jest mapa', 5000, 'error');
        return;
    }

    if (!window.gbOriginalSpawnSector)
        window.gbOriginalSpawnSector = TWMap.mapHandler.spawnSector;

    if (!window.gbOriginalMinimapLoadSector)
        window.gbOriginalMinimapLoadSector = TWMap.minimapHandler.loadSector;

    const originalSpawnSector = TWMap.mapHandler.spawnSector;
    const originalMinimapLoadSector = TWMap.minimapHandler.loadSector;

    villages = villages.split(" ");
    villages.pop();
    for (let i = 0; i < villages.length; i++) {
        villages[i] = villages[i].split("|");
        villages[i][0] = parseInt(villages[i][0]);
        villages[i][1] = parseInt(villages[i][1]);
    }

    TWMap.minimapHandler.loadSector = function (a) {
        originalMinimapLoadSector.apply(TWMap.minimapHandler, [a]);

        const map = a._map;
        const canvas = document.createElement("canvas");

        canvas.width = map.scale[0] * map.sectorSize;
        canvas.height = map.scale[1] * map.sectorSize;
        canvas.style.position = "absolute";
        canvas.style.zIndex = "10";

        a.appendElement(canvas, 0, 0);

        const context = canvas.getContext('2d');
        if (context) {
            const sector = {
                sx: a.x,
                ex: a.x + map.sectorSize,
                sy: a.y,
                ey: a.y + map.sectorSize,
            };

            context.strokeStyle = "white";
            context.lineWidth = 3;
            context.lineCap = "square";

            for (let i = 0; i < villages.length; i++) {
                context.beginPath();
                context.moveTo((villages[i][0] - sector.sx) * map.scale[0], (villages[i][1] - sector.sy) * map.scale[1]);

                context.lineTo((villages[i][0] + 1 - sector.sx) * map.scale[0], (villages[i][1] - sector.sy) * map.scale[1]);
                context.stroke();
                context.lineTo((villages[i][0] + 1 - sector.sx) * map.scale[0], (villages[i][1] + 1 - sector.sy) * map.scale[1]);
                context.stroke();
                context.lineTo((villages[i][0] - sector.sx) * map.scale[0], (villages[i][1] + 1 - sector.sy) * map.scale[1]);
                context.stroke();
                context.lineTo((villages[i][0] - sector.sx) * map.scale[0], (villages[i][1] - sector.sy) * map.scale[1]);
                context.stroke();
            }
        }
    }

    TWMap.mapHandler.spawnSector = function (e, a) {
        originalSpawnSector.apply(TWMap.mapHandler, [e, a]);

        const find_canvas = (a) => {
            let canvas = a._elements ? a._elements.find(e => e instanceof HTMLCanvasElement && (e.id || '').startsWith('map_canvas')) : null;
            if (!canvas) {
                const cavas_id = "map_canvas_" + a.x + "_" + a.y;
                canvas = document.getElementById(cavas_id);
            }
            if (!canvas) {
                a.spawn();
                const cavas_id = "map_canvas_" + a.x + "_" + a.y;
                canvas = document.getElementById(cavas_id);
            }
            return canvas;
        }

        let canvas = find_canvas(a);
        if (!canvas) {
            MapCanvas.createCanvas(a, e);
            canvas = find_canvas(a);
        }

        if (!canvas) {
            console.log("Cannot find canvas...");
            return;
        }

        const context = canvas.getContext('2d');
        const map = a._map;
        if (context) {
            const sectorBorderLines = [{
                    sx: a.x,
                    sy: a.y,
                    ex: a.x + map.sectorSize,
                    ey: a.y
                }, {
                    sx: a.x + map.sectorSize,
                    sy: a.y,
                    ex: a.x + map.sectorSize,
                    ey: a.y + map.sectorSize
                }, {
                    sx: a.x + map.sectorSize,
                    sy: a.y + map.sectorSize,
                    ex: a.x,
                    ey: a.x + map.sectorSize
                }, {
                    sx: a.x,
                    sy: a.x + map.sectorSize,
                    ex: a.x,
                    ey: a.y
                },
            ];
            const sector = {
                sx: a.x,
                ex: a.x + map.sectorSize,
                sy: a.y,
                ey: a.y + map.sectorSize,
            };

            context.strokeStyle = "white";
            context.lineWidth = 5;
            context.lineCap = "square";

            for (let i = 0; i < villages.length; i++) {
                context.beginPath();
                context.moveTo((villages[i][0] - sector.sx) * map.scale[0], (villages[i][1] - sector.sy) * map.scale[1]);

                context.lineTo((villages[i][0] + 1 - sector.sx) * map.scale[0], (villages[i][1] - sector.sy) * map.scale[1]);
                context.stroke();
                context.lineTo((villages[i][0] + 1 - sector.sx) * map.scale[0], (villages[i][1] + 1 - sector.sy) * map.scale[1]);
                context.stroke();
                context.lineTo((villages[i][0] - sector.sx) * map.scale[0], (villages[i][1] + 1 - sector.sy) * map.scale[1]);
                context.stroke();
                context.lineTo((villages[i][0] - sector.sx) * map.scale[0], (villages[i][1] - sector.sy) * map.scale[1]);
                context.stroke();
            }

        } else {
            console.log('Cannot create context!');
        }
    }
    TWMap.reload();
}
Editor is loading...