63 lines
2.3 KiB
TypeScript
63 lines
2.3 KiB
TypeScript
interface Topper {
|
|
id: number; // ID элемента
|
|
name: string; // Название
|
|
filename: string; // Имя файла
|
|
model: string; // Модель
|
|
}
|
|
|
|
export const baseToppers = [
|
|
{ name: 'Ровный', filename: 'icon_stolb_verh_3.svg', model: 'top' },
|
|
{ name: 'Вершина 1', filename: 'icon_stolb_verh_2.svg', model: 'decor1' },
|
|
{ name: 'Вершина 2', filename: 'icon_stolb_verh_1.svg', model: 'decor2' },
|
|
].map((el, i) => Object.assign(el, { id: i }))
|
|
|
|
export const aristoToppers = [
|
|
{ name: 'Колпак', filename: 'icon_stolb_verh_1.svg', model: 'aristo1' },
|
|
].map((el, i) => Object.assign(el, { id: i }))
|
|
|
|
export const allToppers = {
|
|
'baseToppers': baseToppers,
|
|
'aristoToppers': aristoToppers,
|
|
} as { [key: string]: Topper[] }
|
|
|
|
function getToppersByType(type: string | null): any {
|
|
if (!type) type = 'NONE'
|
|
// Проверяем, существует ли указанный тип в объекте allToppers
|
|
if (allToppers[type]) {
|
|
return allToppers[type];
|
|
}
|
|
|
|
// Если типа нет, берем первый доступный элемент из allToppers
|
|
const keys = Object.keys(allToppers);
|
|
if (keys.length > 0) {
|
|
const firstKey = keys[0];
|
|
return allToppers[firstKey];
|
|
}
|
|
|
|
// Если объект allToppers пустой, возвращаем значение по умолчанию (например, пустой массив)
|
|
return [];
|
|
}
|
|
export const getFilename = (id: toppersIds, type: string | null) => {
|
|
let toppers = getToppersByType(type)
|
|
|
|
const el = toppers.find((el: Topper) => el.id == id)
|
|
if (!el || !el.filename) return undefined
|
|
return `/topper/${el?.filename}`
|
|
}
|
|
|
|
export const getName = (id: toppersIds, type: string | null) => {
|
|
let toppers = getToppersByType(type)
|
|
|
|
const el = toppers.find((el: Topper) => el.id == id)
|
|
if (!el || !el.filename) return undefined
|
|
return el.name
|
|
}
|
|
export const getModel = (id: toppersIds, type: string | null) => {
|
|
let toppers = getToppersByType(type)
|
|
|
|
let el = toppers.find((el: Topper) => el.id == id)
|
|
if (!el || !el.filename) return undefined
|
|
return `/models_one/pillar/topper/${el?.model}.glb`
|
|
}
|
|
|
|
export type toppersIds = typeof allToppers[string][number]['id'] |