-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtileAtlasCalculator.js
More file actions
61 lines (53 loc) · 3.19 KB
/
Copy pathtileAtlasCalculator.js
File metadata and controls
61 lines (53 loc) · 3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**
* Функция для вычисления координат в спрайт-атласе по ID тайла
* @param {number} tileId - ID тайла (начиная с 0)
* @param {number} tileSize - Размер тайла в пикселях (по умолчанию 32)
* @param {number} columns - Количество столбцов в атласе (по умолчанию 64)
* @returns {Object} Объект с координатами x, y и размерами w, h для создания PIXI.Rectangle
*/
function getAtlasCoordinates(tileId, tileSize = 32, columns = 64) {
// Проверяем, что ID тайла не превышает допустимое значение
const maxTiles = (2048 / tileSize) * (3040 / tileSize); // Максимальное количество тайлов в атласе
if (tileId < 0 || tileId >= maxTiles) {
throw new Error(`Tile ID ${tileId} выходит за пределы допустимого диапазона (0-${maxTiles-1})`);
}
// Вычисляем координаты в атласе
const x = (tileId % columns) * tileSize;
const y = Math.floor(tileId / columns) * tileSize;
return new PIXI.Rectangle(x, y, tileSize, tileSize);
}
/**
* Функция для создания PIXI.Rectangle по ID тайла
* @param {number} tileId - ID тайла (начиная с 0)
* @param {number} tileSize - Размер тайла в пикселях (по умолчанию 32)
* @param {number} columns - Количество столбцов в атласе (по умолчанию 64)
* @returns {PIXI.Rectangle} Прямоугольник для вырезания тайла из атласа
*/
function createTileRectangle(tileId, tileSize = 32, columns = 64) {
// Функция getAtlasCoordinates теперь возвращает PIXI.Rectangle напрямую
return getAtlasCoordinates(tileId, tileSize, columns);
}
// Пример использования:
/*
// Пример 1: Получить координаты для тайла с ID 10
const coords10 = getAtlasCoordinates(10);
console.log(`Тайл ID 10: x=${coords10.x}, y=${coords10.y}`); // x=320, y=0 (10-й тайл в 1-й строке)
// Пример 2: Получить координаты для тайла с ID 65 (второй тайл во 2-й строке)
const coords65 = getAtlasCoordinates(65);
console.log(`Тайл ID 65: x=${coords65.x}, y=${coords65.y}`); // x=32, y=32
// Пример 3: Создать PIXI.Rectangle для тайла с ID 100
const rect100 = createTileRectangle(100);
console.log(rect100); // Rectangle { x: 448, y: 96, width: 32, height: 32 }
*/
// Делаем функции доступными глобально для использования в других скриптах
if (typeof window !== 'undefined') {
window.getAtlasCoordinates = getAtlasCoordinates;
window.createTileRectangle = createTileRectangle;
}
// Экспортируем функции для использования в других модулях
if (typeof module !== 'undefined' && module.exports) {
module.exports = {
getAtlasCoordinates,
createTileRectangle
};
}