Merge branch 'development' into landing-2026
BIN
public/images/fienta/banner.png
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
public/images/fienta/expo_area.png
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
public/images/fienta/main_tournament.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
public/images/fienta/mini_tournaments.png
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
public/images/fienta/overview.png
Normal file
|
After Width: | Height: | Size: 4.7 MiB |
BIN
public/sponsors/Global-productions.png
Normal file
|
After Width: | Height: | Size: 112 KiB |
BIN
public/sponsors/alzgamer.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
public/sponsors/k-space_ee-white.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
@@ -7,6 +7,12 @@ import { useEffect, useRef, useState, useMemo } from "react";
|
|||||||
import { EyeClosed, Eye } from "lucide-react";
|
import { EyeClosed, Eye } from "lucide-react";
|
||||||
import SectionDivider from "@/components/SectionDivider";
|
import SectionDivider from "@/components/SectionDivider";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
|
import {
|
||||||
|
roomNameKeys,
|
||||||
|
staticRoomNames,
|
||||||
|
roomMeta,
|
||||||
|
RoomNameKey,
|
||||||
|
} from "@/data/roomNames";
|
||||||
import gamedevData from "@/data/gamedev.json";
|
import gamedevData from "@/data/gamedev.json";
|
||||||
|
|
||||||
// Define interface for the ref with toggle function
|
// Define interface for the ref with toggle function
|
||||||
@@ -26,27 +32,19 @@ export default function Expo() {
|
|||||||
const currentViewRef = useRef<"tudengimaja" | "fuajee">("fuajee");
|
const currentViewRef = useRef<"tudengimaja" | "fuajee">("fuajee");
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
|
||||||
// Define room names with translations
|
// Room names using translations and staticRoomNames
|
||||||
const roomNames = useMemo(
|
const roomNames = useMemo(() => {
|
||||||
() => ({
|
const names: Record<RoomNameKey, string> = {} as never;
|
||||||
boardGames: t("expo.areas.boardGames"),
|
roomNameKeys.forEach((key) => {
|
||||||
bar: t("expo.areas.bar"),
|
if (staticRoomNames[key]) {
|
||||||
eval: "EVAL",
|
names[key] = staticRoomNames[key]!;
|
||||||
simRacing: t("expo.areas.simRacing"),
|
} else {
|
||||||
fighting: t("expo.areas.fighting"),
|
// fallback to translation key or just key
|
||||||
lvlup: "LVLup!",
|
names[key] = t(`expo.areas.${key}`, { default: key });
|
||||||
redbull: "Red Bull",
|
}
|
||||||
// fuajee rooms
|
});
|
||||||
estoniagamedev: t("expo.areas.estoniagamedev"),
|
return names;
|
||||||
info: t("expo.areas.info"),
|
}, [t]);
|
||||||
tartuyk: t("expo.areas.tartuyk"),
|
|
||||||
tly: t("expo.areas.tly"),
|
|
||||||
gameup: "GameUP!",
|
|
||||||
ittk: t("expo.areas.ittk"),
|
|
||||||
photobooth: t("expo.areas.photobooth"),
|
|
||||||
}),
|
|
||||||
[t],
|
|
||||||
);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!mountRef.current) return;
|
if (!mountRef.current) return;
|
||||||
@@ -129,20 +127,7 @@ export default function Expo() {
|
|||||||
directionalLight.shadow.mapSize.height = 2048;
|
directionalLight.shadow.mapSize.height = 2048;
|
||||||
scene.add(directionalLight);
|
scene.add(directionalLight);
|
||||||
|
|
||||||
// Room colors and names
|
// Create individual rooms as rectangles with custom positions using roomMeta
|
||||||
const roomColors = [
|
|
||||||
0x343434, // Gray - Lauamängude ala
|
|
||||||
0x4ecdc4, // Turquoise - Baariala
|
|
||||||
0xffe66d, // Yellow - EVAL
|
|
||||||
0xff6600, // Orange - Redbull Sim Racing
|
|
||||||
0xff1493, // Deep Pink - Võitlusmängu ala
|
|
||||||
0x3498db, // Blue - Sony
|
|
||||||
0x2ecc71, // Green - Lava
|
|
||||||
0x080682, // Dark Blue - LVLup!
|
|
||||||
0xc02841, // Red - RedBull
|
|
||||||
];
|
|
||||||
|
|
||||||
// Create individual rooms as rectangles with custom positions
|
|
||||||
const rooms: THREE.Mesh[] = [];
|
const rooms: THREE.Mesh[] = [];
|
||||||
const roomData: Array<{
|
const roomData: Array<{
|
||||||
mesh: THREE.Mesh;
|
mesh: THREE.Mesh;
|
||||||
@@ -153,115 +138,36 @@ export default function Expo() {
|
|||||||
}> = [];
|
}> = [];
|
||||||
const dividers: THREE.Mesh[] = [];
|
const dividers: THREE.Mesh[] = [];
|
||||||
|
|
||||||
// Define rooms with custom positions, sizes and colors
|
// Generate rooms for tudengimaja and fuajee using roomMeta
|
||||||
const roomDefinitions = [
|
roomNameKeys.forEach((key) => {
|
||||||
{
|
const metas = roomMeta[key];
|
||||||
width: 7,
|
if (!metas) return;
|
||||||
height: 0.7,
|
metas.forEach((meta) => {
|
||||||
depth: 3,
|
if (meta.view !== "tudengimaja") return;
|
||||||
x: 2.5,
|
const geometry = new THREE.BoxGeometry(
|
||||||
z: 4,
|
meta.size.width,
|
||||||
color: roomColors[0],
|
meta.size.height,
|
||||||
name: roomNames.boardGames,
|
meta.size.depth,
|
||||||
},
|
);
|
||||||
{
|
const material = new THREE.MeshLambertMaterial({
|
||||||
width: 3.5,
|
color: meta.color,
|
||||||
height: 0.7,
|
});
|
||||||
depth: 1.2,
|
const room = new THREE.Mesh(geometry, material);
|
||||||
x: 0.7,
|
room.position.set(meta.position.x, meta.position.y, meta.position.z);
|
||||||
z: -0.3,
|
room.castShadow = true;
|
||||||
color: roomColors[1],
|
room.receiveShadow = true;
|
||||||
name: roomNames.bar,
|
room.userData = { name: roomNames[key], originalColor: meta.color };
|
||||||
},
|
|
||||||
{
|
|
||||||
width: 1.8,
|
|
||||||
height: 0.7,
|
|
||||||
depth: 1.5,
|
|
||||||
x: 1,
|
|
||||||
z: -3.5,
|
|
||||||
color: roomColors[2],
|
|
||||||
name: roomNames.eval,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
width: 2,
|
|
||||||
height: 0.7,
|
|
||||||
depth: 4.5,
|
|
||||||
x: 5.2,
|
|
||||||
z: -2,
|
|
||||||
color: roomColors[3],
|
|
||||||
name: roomNames.simRacing,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
width: 3,
|
|
||||||
height: 0.7,
|
|
||||||
depth: 1.5,
|
|
||||||
x: -1.7,
|
|
||||||
z: -3.5,
|
|
||||||
color: roomColors[4],
|
|
||||||
name: roomNames.fighting,
|
|
||||||
},
|
|
||||||
// {
|
|
||||||
// width: 1.8,
|
|
||||||
// height: 0.7,
|
|
||||||
// depth: 1.5,
|
|
||||||
// x: -4.3,
|
|
||||||
// z: -3.5,
|
|
||||||
// color: roomColors[5],
|
|
||||||
// name: "Sony",
|
|
||||||
// },
|
|
||||||
{
|
|
||||||
width: 3,
|
|
||||||
height: 0.7,
|
|
||||||
depth: 1.7,
|
|
||||||
x: -3.5,
|
|
||||||
z: -0.5,
|
|
||||||
color: roomColors[7],
|
|
||||||
name: roomNames.lvlup,
|
|
||||||
},
|
|
||||||
//{
|
|
||||||
// width: 2,
|
|
||||||
// height: 0.7,
|
|
||||||
// depth: 4,
|
|
||||||
// x: -6.4,
|
|
||||||
// z: -2.3,
|
|
||||||
// color: roomColors[6],
|
|
||||||
// name: "Lava",
|
|
||||||
//},
|
|
||||||
{
|
|
||||||
width: 1.8,
|
|
||||||
height: 0.7,
|
|
||||||
depth: 1.5,
|
|
||||||
x: 3,
|
|
||||||
z: -3.5,
|
|
||||||
color: roomColors[8],
|
|
||||||
name: roomNames.redbull,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
roomDefinitions.forEach((roomDef) => {
|
scene.add(room);
|
||||||
const geometry = new THREE.BoxGeometry(
|
rooms.push(room);
|
||||||
roomDef.width,
|
|
||||||
roomDef.height,
|
|
||||||
roomDef.depth,
|
|
||||||
);
|
|
||||||
const material = new THREE.MeshLambertMaterial({
|
|
||||||
color: roomDef.color,
|
|
||||||
});
|
|
||||||
|
|
||||||
const room = new THREE.Mesh(geometry, material);
|
roomData.push({
|
||||||
room.position.set(roomDef.x, roomDef.height / 2, roomDef.z);
|
mesh: room,
|
||||||
room.castShadow = true;
|
name: roomNames[key],
|
||||||
room.receiveShadow = true;
|
originalColor: meta.color,
|
||||||
room.userData = { name: roomDef.name, originalColor: roomDef.color };
|
originalScale: room.scale.clone(),
|
||||||
|
view: "tudengimaja",
|
||||||
scene.add(room);
|
});
|
||||||
rooms.push(room);
|
|
||||||
roomData.push({
|
|
||||||
mesh: room,
|
|
||||||
name: roomDef.name,
|
|
||||||
originalColor: roomDef.color,
|
|
||||||
originalScale: room.scale.clone(),
|
|
||||||
view: "tudengimaja",
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -275,9 +181,9 @@ export default function Expo() {
|
|||||||
) => {
|
) => {
|
||||||
const wallGeometry = new THREE.BoxGeometry(width, height, depth);
|
const wallGeometry = new THREE.BoxGeometry(width, height, depth);
|
||||||
const wallMaterial = new THREE.MeshLambertMaterial({
|
const wallMaterial = new THREE.MeshLambertMaterial({
|
||||||
color: 0x555555,
|
color: 0x2e5570,
|
||||||
transparent: true,
|
// transparent: true,
|
||||||
opacity: 0,
|
// opacity: 0,
|
||||||
});
|
});
|
||||||
|
|
||||||
const wall = new THREE.Mesh(wallGeometry, wallMaterial);
|
const wall = new THREE.Mesh(wallGeometry, wallMaterial);
|
||||||
@@ -288,8 +194,10 @@ export default function Expo() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Add strategic dividers between major areas
|
// Add strategic dividers between major areas
|
||||||
createTogglableDivider(10, 2, 2, -2.5, 1.5); // Wall between main entrance
|
createTogglableDivider(2, 2, 1, -6.5, 1); // Wall behind photowall
|
||||||
createTogglableDivider(2, 2, 2, 5.5, 1.5); // Wall right next to Lauamängud & Redbull Sim Racing
|
createTogglableDivider(4, 2, 2, -3.5, 1.5); // Wall between main entrance
|
||||||
|
createTogglableDivider(2, 2, 1, -0.5, 1.5); // Wall behind bar
|
||||||
|
createTogglableDivider(2, 2, 2, 1.5, 1.5); // Wall between main entrance
|
||||||
|
|
||||||
// Store dividers reference for later access
|
// Store dividers reference for later access
|
||||||
dividersRef = [...dividers];
|
dividersRef = [...dividers];
|
||||||
@@ -306,10 +214,7 @@ export default function Expo() {
|
|||||||
|
|
||||||
// Second ground plane
|
// Second ground plane
|
||||||
const groundGeometry2 = new THREE.PlaneGeometry(2, 7);
|
const groundGeometry2 = new THREE.PlaneGeometry(2, 7);
|
||||||
const groundMaterial2 = new THREE.MeshLambertMaterial({
|
const ground2 = new THREE.Mesh(groundGeometry2, groundMaterial);
|
||||||
color: 0xcccccc,
|
|
||||||
});
|
|
||||||
const ground2 = new THREE.Mesh(groundGeometry2, groundMaterial2);
|
|
||||||
ground2.rotation.x = -Math.PI / 2;
|
ground2.rotation.x = -Math.PI / 2;
|
||||||
ground2.position.x = -12.2;
|
ground2.position.x = -12.2;
|
||||||
ground2.position.y = -5;
|
ground2.position.y = -5;
|
||||||
@@ -362,119 +267,39 @@ export default function Expo() {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
// Function to create example rooms for fuajee
|
// Function to create rooms for fuajee using roomMeta
|
||||||
const createfuajeeRooms = () => {
|
const createfuajeeRooms = () => {
|
||||||
const fuajeeRoomColors = [
|
roomNameKeys.forEach((key) => {
|
||||||
0x7b1642, // ITÜK - Cherry Red
|
const metas = roomMeta[key];
|
||||||
0x365591, // Light Blue - Tartu Ülikool
|
if (!metas) return;
|
||||||
0xa82838, // Red - Tallinna Ülikool
|
metas.forEach((meta) => {
|
||||||
0x183bbf, // Dark Blue - Eesti Gamedev
|
if (meta.view !== "fuajee") return;
|
||||||
0xd12e7d, // Purple - Taltech
|
const geometry = new THREE.BoxGeometry(
|
||||||
0x228b22, // Green - GameUP
|
meta.size.width,
|
||||||
0xff6347, // Orange - Info
|
meta.size.height,
|
||||||
0x20b2aa, // Light Sea Green - Photobooth
|
meta.size.depth,
|
||||||
];
|
);
|
||||||
|
const material = new THREE.MeshLambertMaterial({
|
||||||
|
color: meta.color,
|
||||||
|
});
|
||||||
|
|
||||||
const fuajeeRoomDefinitions = [
|
const room = new THREE.Mesh(geometry, material);
|
||||||
{
|
room.position.set(meta.position.x, meta.position.y, meta.position.z);
|
||||||
width: 5,
|
room.castShadow = true;
|
||||||
height: 0.5,
|
room.receiveShadow = true;
|
||||||
depth: 3.5,
|
room.userData = { name: roomNames[key], originalColor: meta.color };
|
||||||
x: -6,
|
room.visible = true; // Initially visible for fuajee default
|
||||||
z: 2.8,
|
|
||||||
color: fuajeeRoomColors[4],
|
|
||||||
name: roomNames.ittk,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
width: 5,
|
|
||||||
height: 0.5,
|
|
||||||
depth: 2,
|
|
||||||
x: 2.2,
|
|
||||||
z: -1.5,
|
|
||||||
color: fuajeeRoomColors[1],
|
|
||||||
name: roomNames.tartuyk,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
width: 6,
|
|
||||||
height: 0.5,
|
|
||||||
depth: 2,
|
|
||||||
x: -5.8,
|
|
||||||
z: -1.2,
|
|
||||||
color: fuajeeRoomColors[3],
|
|
||||||
name: roomNames.estoniagamedev,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
width: 2,
|
|
||||||
height: 0.5,
|
|
||||||
depth: 2,
|
|
||||||
x: -1.5,
|
|
||||||
z: -1.5,
|
|
||||||
color: fuajeeRoomColors[6],
|
|
||||||
name: roomNames.info,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
width: 2,
|
|
||||||
height: 0.5,
|
|
||||||
depth: 1.5,
|
|
||||||
x: 6,
|
|
||||||
z: -1.7,
|
|
||||||
color: fuajeeRoomColors[2],
|
|
||||||
name: roomNames.tly,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
width: 2,
|
|
||||||
height: 0.5,
|
|
||||||
depth: 1.5,
|
|
||||||
x: 11,
|
|
||||||
z: -1.7,
|
|
||||||
color: fuajeeRoomColors[4],
|
|
||||||
name: roomNames.ittk,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
width: 2,
|
|
||||||
height: 0.5,
|
|
||||||
depth: 1.5,
|
|
||||||
x: 13.5,
|
|
||||||
z: -1.7,
|
|
||||||
color: fuajeeRoomColors[7],
|
|
||||||
name: roomNames.photobooth,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
width: 2,
|
|
||||||
height: 0.5,
|
|
||||||
depth: 1.5,
|
|
||||||
x: 8.5,
|
|
||||||
z: -1.7,
|
|
||||||
color: fuajeeRoomColors[5],
|
|
||||||
name: roomNames.gameup,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
fuajeeRoomDefinitions.forEach((roomDef) => {
|
scene.add(room);
|
||||||
const geometry = new THREE.BoxGeometry(
|
fuajeeRooms.push(room);
|
||||||
roomDef.width,
|
|
||||||
roomDef.height,
|
|
||||||
roomDef.depth,
|
|
||||||
);
|
|
||||||
const material = new THREE.MeshLambertMaterial({
|
|
||||||
color: roomDef.color,
|
|
||||||
});
|
|
||||||
|
|
||||||
const room = new THREE.Mesh(geometry, material);
|
roomData.push({
|
||||||
room.position.set(roomDef.x, roomDef.height / 2 + 2, roomDef.z);
|
mesh: room,
|
||||||
room.castShadow = true;
|
name: roomNames[key],
|
||||||
room.receiveShadow = true;
|
originalColor: meta.color,
|
||||||
room.userData = { name: roomDef.name, originalColor: roomDef.color };
|
originalScale: room.scale.clone(),
|
||||||
room.visible = true; // Initially visible for fuajee default
|
view: "fuajee",
|
||||||
|
});
|
||||||
scene.add(room);
|
|
||||||
fuajeeRooms.push(room);
|
|
||||||
roomData.push({
|
|
||||||
mesh: room,
|
|
||||||
name: roomDef.name,
|
|
||||||
originalColor: roomDef.color,
|
|
||||||
originalScale: room.scale.clone(),
|
|
||||||
view: "fuajee",
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -738,6 +563,7 @@ export default function Expo() {
|
|||||||
|
|
||||||
{currentView === "tudengimaja" && (
|
{currentView === "tudengimaja" && (
|
||||||
<div className="flex flex-wrap gap-4 pb-4">
|
<div className="flex flex-wrap gap-4 pb-4">
|
||||||
|
{/* Bar */}
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<div
|
<div
|
||||||
className="w-4 h-4 border border-gray-300"
|
className="w-4 h-4 border border-gray-300"
|
||||||
@@ -747,69 +573,116 @@ export default function Expo() {
|
|||||||
{t("expo.areas.bar")}
|
{t("expo.areas.bar")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
{/* EVAL */}
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<div
|
<div
|
||||||
className="w-4 h-4 border border-gray-300"
|
className="w-4 h-4 border border-gray-300"
|
||||||
style={{ backgroundColor: "#ffe66d" }}
|
style={{ backgroundColor: "#4d86f7" }}
|
||||||
></div>
|
></div>
|
||||||
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
EVAL
|
EVAL
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
{/* LVLup */}
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<div
|
<div
|
||||||
className="w-4 h-4 border border-gray-300"
|
className="w-4 h-4 border border-gray-300"
|
||||||
style={{ backgroundColor: "#343434" }}
|
style={{ backgroundColor: "#d34e35" }}
|
||||||
></div>
|
|
||||||
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
|
||||||
{t("expo.areas.boardGames")}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div className="flex items-center gap-2">
|
|
||||||
<div
|
|
||||||
className="w-4 h-4 border border-gray-300"
|
|
||||||
style={{ backgroundColor: "#080682" }}
|
|
||||||
></div>
|
></div>
|
||||||
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
LVLup!
|
LVLup!
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
{/* Red Bull */}
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<div
|
<div
|
||||||
className="w-4 h-4 border border-gray-300"
|
className="w-4 h-4 border border-gray-300"
|
||||||
style={{ backgroundColor: "#C02841" }}
|
style={{ backgroundColor: "#c02841" }}
|
||||||
></div>
|
></div>
|
||||||
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
Red Bull
|
Red Bull
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
{/* Sim Racing */}
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<div
|
<div
|
||||||
className="w-4 h-4 border border-gray-300"
|
className="w-4 h-4 border border-gray-300"
|
||||||
style={{ backgroundColor: "#ff6600" }}
|
style={{ backgroundColor: "#d8b43c" }}
|
||||||
></div>
|
></div>
|
||||||
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
{t("expo.areas.simRacing")}
|
{t("expo.areas.simRacing")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="items-center gap-2 hidden">
|
{/* Fighting */}
|
||||||
<div
|
|
||||||
className="w-4 h-4 border border-gray-300"
|
|
||||||
style={{ backgroundColor: "#3498db" }}
|
|
||||||
></div>
|
|
||||||
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
|
||||||
Sony
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<div
|
<div
|
||||||
className="w-4 h-4 border border-gray-300"
|
className="w-4 h-4 border border-gray-300"
|
||||||
style={{ backgroundColor: "#ff1493" }}
|
style={{ backgroundColor: "#a8f494" }}
|
||||||
></div>
|
></div>
|
||||||
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
{t("expo.areas.fighting")}
|
{t("expo.areas.fighting")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
{/* K-space */}
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<div
|
||||||
|
className="w-4 h-4 border border-gray-300"
|
||||||
|
style={{ backgroundColor: "#2c5da3" }}
|
||||||
|
></div>
|
||||||
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
|
K-space.ee
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{/* Photowall */}
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<div
|
||||||
|
className="w-4 h-4 border border-gray-300"
|
||||||
|
style={{ backgroundColor: "#d12e7d" }}
|
||||||
|
></div>
|
||||||
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
|
{t("expo.areas.photowall")}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{/* Buckshot Roulette */}
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<div
|
||||||
|
className="w-4 h-4 border border-gray-300"
|
||||||
|
style={{ backgroundColor: "#edb4b1" }}
|
||||||
|
></div>
|
||||||
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
|
Buckshot Roulette
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{/* Chill Area */}
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<div
|
||||||
|
className="w-4 h-4 border border-gray-300"
|
||||||
|
style={{ backgroundColor: "#05512e" }}
|
||||||
|
></div>
|
||||||
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
|
{t("expo.areas.chillArea")}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{/* Alzgamer */}
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<div
|
||||||
|
className="w-4 h-4 border border-gray-300"
|
||||||
|
style={{ backgroundColor: "#d08331" }}
|
||||||
|
></div>
|
||||||
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
|
Alzgamer
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{/* WC */}
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<div
|
||||||
|
className="w-4 h-4 border border-gray-300"
|
||||||
|
style={{ backgroundColor: "#332b5d" }}
|
||||||
|
></div>
|
||||||
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
|
WC
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
@@ -857,7 +730,7 @@ export default function Expo() {
|
|||||||
style={{ backgroundColor: "#20b2aa" }}
|
style={{ backgroundColor: "#20b2aa" }}
|
||||||
></div>
|
></div>
|
||||||
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
|
||||||
{t("expo.areas.photobooth")}
|
{t("expo.areas.studentformula")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
@@ -944,6 +817,12 @@ export default function Expo() {
|
|||||||
roomNames.fighting,
|
roomNames.fighting,
|
||||||
roomNames.lvlup,
|
roomNames.lvlup,
|
||||||
roomNames.redbull,
|
roomNames.redbull,
|
||||||
|
roomNames.kspace,
|
||||||
|
roomNames.photowall,
|
||||||
|
roomNames.buckshotroulette,
|
||||||
|
roomNames.wc,
|
||||||
|
roomNames.chillArea,
|
||||||
|
roomNames.alzgamer,
|
||||||
].includes(hoveredRoom)) ||
|
].includes(hoveredRoom)) ||
|
||||||
(currentView === "fuajee" &&
|
(currentView === "fuajee" &&
|
||||||
[
|
[
|
||||||
@@ -952,8 +831,8 @@ export default function Expo() {
|
|||||||
roomNames.info,
|
roomNames.info,
|
||||||
roomNames.tly,
|
roomNames.tly,
|
||||||
roomNames.ittk,
|
roomNames.ittk,
|
||||||
roomNames.photobooth,
|
|
||||||
roomNames.gameup,
|
roomNames.gameup,
|
||||||
|
roomNames.studentformula,
|
||||||
].includes(hoveredRoom))) && (
|
].includes(hoveredRoom))) && (
|
||||||
<div
|
<div
|
||||||
className="fixed bg-black bg-opacity-80 text-white px-3 py-2 rounded-lg text-sm pointer-events-none z-50"
|
className="fixed bg-black bg-opacity-80 text-white px-3 py-2 rounded-lg text-sm pointer-events-none z-50"
|
||||||
@@ -979,7 +858,9 @@ export default function Expo() {
|
|||||||
MINITURNIIRID
|
MINITURNIIRID
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-[#2A2C3F] dark:text-[#EEE5E5] text-lg mb-4">
|
<p className="text-[#2A2C3F] dark:text-[#EEE5E5] text-lg mb-4">
|
||||||
TipiLANil toimub mitmeid erinevaid lõbusaid ja võistlushimu tekitavaid miniturniire. Osaleda saavad ka niisama külastajad! Auhinnafond on kõigi turniiride peale 1250€.
|
TipiLANil toimub mitmeid erinevaid lõbusaid ja võistlushimu
|
||||||
|
tekitavaid miniturniire. Osaleda saavad ka niisama külastajad!
|
||||||
|
Auhinnafond on kõigi turniiride peale 1250€.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex-shrink-0 relative overflow-hidden">
|
<div className="flex-shrink-0 relative overflow-hidden">
|
||||||
@@ -987,11 +868,11 @@ export default function Expo() {
|
|||||||
src="/images/minitournament_logo.png"
|
src="/images/minitournament_logo.png"
|
||||||
alt="Miniturniirid logo"
|
alt="Miniturniirid logo"
|
||||||
style={{
|
style={{
|
||||||
width: '649.7214965820312px',
|
width: "649.7214965820312px",
|
||||||
height: '400.99997840027544px',
|
height: "400.99997840027544px",
|
||||||
transform: 'rotate(0deg)',
|
transform: "rotate(0deg)",
|
||||||
opacity: 1,
|
opacity: 1,
|
||||||
position: 'relative'
|
position: "relative",
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -1022,12 +903,12 @@ export default function Expo() {
|
|||||||
<h3
|
<h3
|
||||||
className="text-[#2A2C3F] dark:text-[#EEE5E5]"
|
className="text-[#2A2C3F] dark:text-[#EEE5E5]"
|
||||||
style={{
|
style={{
|
||||||
fontFamily: 'Work Sans',
|
fontFamily: "Work Sans",
|
||||||
fontWeight: 700,
|
fontWeight: 700,
|
||||||
fontSize: '36px',
|
fontSize: "36px",
|
||||||
lineHeight: '100%',
|
lineHeight: "100%",
|
||||||
letterSpacing: '-3%',
|
letterSpacing: "-3%",
|
||||||
verticalAlign: 'middle'
|
verticalAlign: "middle",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Chill-ala koos turniiride otseülekandega
|
Chill-ala koos turniiride otseülekandega
|
||||||
@@ -1048,12 +929,12 @@ export default function Expo() {
|
|||||||
<h3
|
<h3
|
||||||
className="text-[#2A2C3F] dark:text-[#EEE5E5]"
|
className="text-[#2A2C3F] dark:text-[#EEE5E5]"
|
||||||
style={{
|
style={{
|
||||||
fontFamily: 'Work Sans',
|
fontFamily: "Work Sans",
|
||||||
fontWeight: 700,
|
fontWeight: 700,
|
||||||
fontSize: '36px',
|
fontSize: "36px",
|
||||||
lineHeight: '100%',
|
lineHeight: "100%",
|
||||||
letterSpacing: '-3%',
|
letterSpacing: "-3%",
|
||||||
verticalAlign: 'middle'
|
verticalAlign: "middle",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Mänguklubi lauamängud ja konsoolid
|
Mänguklubi lauamängud ja konsoolid
|
||||||
@@ -1074,12 +955,12 @@ export default function Expo() {
|
|||||||
<h3
|
<h3
|
||||||
className="text-[#2A2C3F] dark:text-[#EEE5E5]"
|
className="text-[#2A2C3F] dark:text-[#EEE5E5]"
|
||||||
style={{
|
style={{
|
||||||
fontFamily: 'Work Sans',
|
fontFamily: "Work Sans",
|
||||||
fontWeight: 700,
|
fontWeight: 700,
|
||||||
fontSize: '36px',
|
fontSize: "36px",
|
||||||
lineHeight: '100%',
|
lineHeight: "100%",
|
||||||
letterSpacing: '-3%',
|
letterSpacing: "-3%",
|
||||||
verticalAlign: 'middle'
|
verticalAlign: "middle",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Baariala jookide ja snäkkidega
|
Baariala jookide ja snäkkidega
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ export default async function Home({
|
|||||||
|
|
||||||
{/* Sponsors */}
|
{/* Sponsors */}
|
||||||
<Sponsors />
|
<Sponsors />
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,11 +49,11 @@ export default async function RulesMenu({
|
|||||||
{/* Minitourn. link coming soon*/}
|
{/* Minitourn. link coming soon*/}
|
||||||
{/*<Link href="">*/}
|
{/*<Link href="">*/}
|
||||||
{/* ajutine div. kui asendate lingiga, siis saab selle ära võtta */}
|
{/* ajutine div. kui asendate lingiga, siis saab selle ära võtta */}
|
||||||
<div>
|
<div className="cursor-not-allowed">
|
||||||
<div className={`${boxStyle} bg-[#1F5673] py-16 px-8`}>
|
<div
|
||||||
<h2 className={`${boxTextStyle}`}>
|
className={`${boxStyle} bg-[#1F5673] py-16 px-8 opacity-50 pointer-events-none`}
|
||||||
{t("rules.miniRules")}
|
>
|
||||||
</h2>
|
<h2 className={`${boxTextStyle}`}>{t("rules.miniRules")}</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/*</Link>*/}
|
{/*</Link>*/}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
||||||
import Link from "next/link";
|
import Sponsors from "@/components/Sponsors";
|
||||||
import Image from "next/image";
|
import { Link } from "@/i18n/routing";
|
||||||
import { getTranslations, setRequestLocale } from "next-intl/server";
|
import { getTranslations, setRequestLocale } from "next-intl/server";
|
||||||
|
import Image from "next/image";
|
||||||
|
|
||||||
export default async function Home({
|
export default async function Home({
|
||||||
params,
|
params,
|
||||||
@@ -73,7 +74,7 @@ export default async function Home({
|
|||||||
>
|
>
|
||||||
<div className="cursor-pointer flex flex-row justify-between gap-4 items-center">
|
<div className="cursor-pointer flex flex-row justify-between gap-4 items-center">
|
||||||
<h2
|
<h2
|
||||||
className={`text-[clamp(2rem,1.8rem+1vw,3rem)] ${vipnagorgialla.className} font-bold italic uppercase dark:text-[#EEE5E5] text-[#2A2C3F] dark:group-hover:text-[#2A2C3F] group-hover:text-black`}
|
className={`text-[clamp(2rem,1.8rem+1vw,3rem)] ${vipnagorgialla.className} font-bold italic break-normal uppercase dark:text-[#EEE5E5] text-[#2A2C3F] dark:group-hover:text-[#2A2C3F] group-hover:text-black`}
|
||||||
>
|
>
|
||||||
{t("navigation.tournaments")}
|
{t("navigation.tournaments")}
|
||||||
</h2>
|
</h2>
|
||||||
@@ -129,114 +130,11 @@ export default async function Home({
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h2 className="text-[clamp(2.5rem,2.25rem+1.25vw,3.75rem)] text-[#007CAB] dark:text-[#00A3E0] dark:group-hover:text-[#EEE5E5] group-hover:text-[#EEE5E5]">
|
<h2 className="text-[clamp(2.5rem,2.25rem+1.25vw,3.75rem)] text-[#007CAB] dark:text-[#00A3E0] dark:group-hover:text-[#EEE5E5] group-hover:text-[#EEE5E5]">
|
||||||
24.-26. okt.
|
{t("home.sections.dateAndLocation")}
|
||||||
</h2>
|
</h2>
|
||||||
</Link>
|
</Link>
|
||||||
{/* Sponsors */}
|
{/* Sponsors */}
|
||||||
<div
|
<Sponsors />
|
||||||
className={`p-12 flex flex-col ${vipnagorgialla.className} font-bold italic border-b-3 border-[#1F5673]`}
|
|
||||||
>
|
|
||||||
<div className="text-left flex flex-col justify-between xl:justify-start">
|
|
||||||
<h3 className="text-4xl md:text-5xl dark:text-[#EEE5E5] text-[#2A2C3F] group-hover:text-black pb-8">
|
|
||||||
{t("home.sections.poweredBy")}
|
|
||||||
</h3>
|
|
||||||
<div className="flex flex-row flex-wrap gap-8 md:gap-18 items-center">
|
|
||||||
<Link href="https://taltech.ee" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/taltech-color.png"
|
|
||||||
alt="Taltech (Tallinna Tehnikaülikool)"
|
|
||||||
width={192}
|
|
||||||
height={192}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
<Link href="https://www.redbull.com/ee-et/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/redbull.png"
|
|
||||||
alt="Redbull"
|
|
||||||
width={80}
|
|
||||||
height={80}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
<Link href="https://www.alecoq.ee" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/alecoq.svg"
|
|
||||||
alt="Alecoq"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
<Link href="https://www.simracing.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/EVAL.png"
|
|
||||||
alt="EVAL"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
<Link href="https://balsnack.ee" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/balsnack.svg"
|
|
||||||
alt="Balsnack"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
<Link
|
|
||||||
href="https://www.rara.ee/sundmused/interaktiivne-videomangude-muuseum-lvlup/"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<Image
|
|
||||||
src="/sponsors/lvlup_logo_export.svg"
|
|
||||||
alt="LVLup!"
|
|
||||||
width={192}
|
|
||||||
height={192}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
<Link href="https://www.facebook.com/bfglOfficial" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/BFGL.png"
|
|
||||||
alt="BFGL"
|
|
||||||
width={192}
|
|
||||||
height={192}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
<Link href="https://www.tallinn.ee/et/haridus" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/Tallinna_Haridusamet_logo_RGB.svg"
|
|
||||||
alt="Tallinna Haridusamet"
|
|
||||||
width={192}
|
|
||||||
height={192}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
<Link href="https://www.militaarseiklus.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/militaarseiklus.png"
|
|
||||||
alt="Militaarseiklus"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
<Link href="https://www.arvutimuuseum.ee" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/arvutimuuseum.svg"
|
|
||||||
alt="Arvutimuuseum"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain not-dark:invert"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ const Footer = () => {
|
|||||||
{/* Social media */}
|
{/* Social media */}
|
||||||
<div className="flex flex-row">
|
<div className="flex flex-row">
|
||||||
<a
|
<a
|
||||||
href="https://discord.gg/tipilan"
|
href="https://discord.gg/pPhhatZAfA"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
className="mx-4 ml-0 md:ml-4"
|
className="mx-4 ml-0 md:ml-4"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
|
|||||||
@@ -8,7 +8,10 @@ interface SponsorsProps {
|
|||||||
className?: string;
|
className?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Sponsors({ showTitle = true, className = "" }: SponsorsProps) {
|
export default function Sponsors({
|
||||||
|
showTitle = true,
|
||||||
|
className = "",
|
||||||
|
}: SponsorsProps) {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -109,7 +112,10 @@ export default function Sponsors({ showTitle = true, className = "" }: SponsorsP
|
|||||||
className="object-contain"
|
className="object-contain"
|
||||||
/>
|
/>
|
||||||
</NextLink>
|
</NextLink>
|
||||||
<NextLink href="https://www.linkedin.com/company/gamedev-guild/" target="_blank">
|
<NextLink
|
||||||
|
href="https://www.linkedin.com/company/gamedev-guild/"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
<Image
|
<Image
|
||||||
src="/sponsors/estonian_gamedev_guild.png"
|
src="/sponsors/estonian_gamedev_guild.png"
|
||||||
alt="Estonian Gamedev Guild"
|
alt="Estonian Gamedev Guild"
|
||||||
@@ -163,7 +169,33 @@ export default function Sponsors({ showTitle = true, className = "" }: SponsorsP
|
|||||||
className="object-contain"
|
className="object-contain"
|
||||||
/>
|
/>
|
||||||
</NextLink>
|
</NextLink>
|
||||||
|
<NextLink href="https://alzgamer.ee/" target="_blank">
|
||||||
|
<Image
|
||||||
|
src="/sponsors/alzgamer.png"
|
||||||
|
alt="AlzGamer"
|
||||||
|
width={200}
|
||||||
|
height={200}
|
||||||
|
className="object-contain"
|
||||||
|
/>
|
||||||
|
</NextLink>
|
||||||
|
<NextLink href="https://k-space.ee/" target="_blank">
|
||||||
|
<Image
|
||||||
|
src="/sponsors/k-space_ee-white.png"
|
||||||
|
alt="K-Space"
|
||||||
|
width={200}
|
||||||
|
height={200}
|
||||||
|
className="object-contain not-dark:invert"
|
||||||
|
/>
|
||||||
|
</NextLink>
|
||||||
|
<NextLink href="https://globalproductions.ee/" target="_blank">
|
||||||
|
<Image
|
||||||
|
src="/sponsors/Global-productions.png"
|
||||||
|
alt="Global Productions"
|
||||||
|
width={200}
|
||||||
|
height={200}
|
||||||
|
className="object-contain"
|
||||||
|
/>
|
||||||
|
</NextLink>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "eleball",
|
"id": "eleball",
|
||||||
"name": "Eleball",
|
"name": "EleBall",
|
||||||
"logo": "/images/EXPO/GameDev logos/Eleball.png",
|
"logo": "/images/EXPO/GameDev logos/Eleball.png",
|
||||||
"developer": "Pulsar Twin",
|
"developer": "Pulsar Twin",
|
||||||
"description": ""
|
"description": ""
|
||||||
@@ -29,8 +29,8 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cyber-dog-rescue",
|
"id": "cyber-doc-rogue",
|
||||||
"name": "Cyber Dog Rescue",
|
"name": "CYBER DOC ROGUE",
|
||||||
"logo": "/images/EXPO/GameDev logos/Cyber_Doc_Rogue.png",
|
"logo": "/images/EXPO/GameDev logos/Cyber_Doc_Rogue.png",
|
||||||
"developer": "HRA Interactive",
|
"developer": "HRA Interactive",
|
||||||
"description": ""
|
"description": ""
|
||||||
@@ -121,11 +121,18 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "war-thorn",
|
"id": "war-torn",
|
||||||
"name": "War-thorn",
|
"name": "War-torn",
|
||||||
"logo": "/images/EXPO/GameDev logos/War_torn.png",
|
"logo": "/images/EXPO/GameDev logos/War_torn.png",
|
||||||
"developer": "KingOfTheEnd, ForgottenCup",
|
"developer": "KingOfTheEnd, ForgottenCup",
|
||||||
"description": ""
|
"description": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "type-n-magic",
|
||||||
|
"name": "Type 'n Magic",
|
||||||
|
"logo": "/images/EXPO/ylikoolid/type_n_magic.png",
|
||||||
|
"developer": "Mikhail Fiadotau",
|
||||||
|
"description": ""
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"universities": [
|
"universities": [
|
||||||
@@ -182,7 +189,7 @@
|
|||||||
"id": "nullis",
|
"id": "nullis",
|
||||||
"name": "Nullis",
|
"name": "Nullis",
|
||||||
"logo": "/images/EXPO/GameDev logos/Nullis.png",
|
"logo": "/images/EXPO/GameDev logos/Nullis.png",
|
||||||
"university": "Tallinna Tehnikaülikool",
|
"university": "Tartu Ülikool",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -219,13 +226,6 @@
|
|||||||
"logo": "/images/EXPO/ylikoolid/magic_mineral.png",
|
"logo": "/images/EXPO/ylikoolid/magic_mineral.png",
|
||||||
"university": "Tallinna Ülikool",
|
"university": "Tallinna Ülikool",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "type-n-magic",
|
|
||||||
"name": "Type 'n Magic",
|
|
||||||
"logo": "/images/EXPO/ylikoolid/type_n_magic.png",
|
|
||||||
"university": "Tallinna Ülikool",
|
|
||||||
"description": ""
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
218
src/data/roomNames.ts
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
export const roomNameKeys = [
|
||||||
|
"boardGames",
|
||||||
|
"bar",
|
||||||
|
"eval",
|
||||||
|
"simRacing",
|
||||||
|
"fighting",
|
||||||
|
"lvlup",
|
||||||
|
"redbull",
|
||||||
|
"kspace",
|
||||||
|
"photowall",
|
||||||
|
"buckshotroulette",
|
||||||
|
"chillArea",
|
||||||
|
"estoniagamedev",
|
||||||
|
"info",
|
||||||
|
"tartuyk",
|
||||||
|
"tly",
|
||||||
|
"gameup",
|
||||||
|
"ittk",
|
||||||
|
"wc",
|
||||||
|
"alzgamer",
|
||||||
|
"studentformula",
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
export type RoomNameKey = (typeof roomNameKeys)[number];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Static room names that do not require translation.
|
||||||
|
* Centralizing here allows easy management and expansion.
|
||||||
|
*/
|
||||||
|
export const staticRoomNames: Partial<Record<RoomNameKey, string>> = {
|
||||||
|
eval: "EVAL",
|
||||||
|
redbull: "Red Bull",
|
||||||
|
kspace: "K-space.ee",
|
||||||
|
buckshotroulette: "Buckshot Roulette",
|
||||||
|
gameup: "GameUP! Academy",
|
||||||
|
wc: "WC",
|
||||||
|
alzgamer: "Alzgamer",
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Room metadata for tudengimaja and fuajee rooms.
|
||||||
|
* Centralizes size, position, and color for easier management.
|
||||||
|
*/
|
||||||
|
export interface RoomMeta {
|
||||||
|
color: number;
|
||||||
|
size: { width: number; height: number; depth: number };
|
||||||
|
position: { x: number; y: number; z: number };
|
||||||
|
view: "tudengimaja" | "fuajee";
|
||||||
|
}
|
||||||
|
|
||||||
|
export const roomMeta: Partial<Record<RoomNameKey, RoomMeta[]>> = {
|
||||||
|
// tudengimaja rooms
|
||||||
|
lvlup: [
|
||||||
|
{
|
||||||
|
color: 0xd34e35,
|
||||||
|
size: { width: 7, height: 0.7, depth: 2 },
|
||||||
|
position: { x: 2.8, y: 0, z: 4.75 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
kspace: [
|
||||||
|
{
|
||||||
|
color: 0x2c5da3,
|
||||||
|
size: { width: 5, height: 0.7, depth: 2 },
|
||||||
|
position: { x: -3.2, y: 0, z: 4.75 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
bar: [
|
||||||
|
{
|
||||||
|
color: 0x4ecdc4,
|
||||||
|
size: { width: 2, height: 0.7, depth: 0.7 },
|
||||||
|
position: { x: -0.5, y: 0, z: 1 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
eval: [
|
||||||
|
{
|
||||||
|
color: 0x4d86f7,
|
||||||
|
size: { width: 2, height: 0.7, depth: 1.5 },
|
||||||
|
position: { x: 1.7, y: 0, z: -3.8 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
simRacing: [
|
||||||
|
{
|
||||||
|
color: 0xd8b43c,
|
||||||
|
size: { width: 1.5, height: 0.7, depth: 5 },
|
||||||
|
position: { x: -6.8, y: 0, z: -2.2 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
redbull: [
|
||||||
|
{
|
||||||
|
color: 0xc02841,
|
||||||
|
size: { width: 2, height: 0.7, depth: 1.5 },
|
||||||
|
position: { x: -3.9, y: 0, z: -3.8 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
fighting: [
|
||||||
|
{
|
||||||
|
color: 0xa8f494,
|
||||||
|
size: { width: 3.5, height: 0.7, depth: 1.5 },
|
||||||
|
position: { x: -1.1, y: 0, z: -3.8 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
photowall: [
|
||||||
|
{
|
||||||
|
color: 0xd12e7d,
|
||||||
|
size: { width: 2, height: 0.7, depth: 1 },
|
||||||
|
position: { x: -6.6, y: 0, z: 1.9 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
buckshotroulette: [
|
||||||
|
{
|
||||||
|
color: 0xedb4b1,
|
||||||
|
size: { width: 2, height: 0.7, depth: 1.5 },
|
||||||
|
position: { x: 3.7, y: 0, z: -3.8 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
chillArea: [
|
||||||
|
{
|
||||||
|
color: 0x05512e,
|
||||||
|
size: { width: 1.5, height: 0.7, depth: 5 },
|
||||||
|
position: { x: 5.5, y: 0, z: -2.1 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
color: 0x05512e,
|
||||||
|
size: { width: 3.8, height: 0.7, depth: 1.5 },
|
||||||
|
position: { x: 0.4, y: 0, z: -0.2 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
alzgamer: [
|
||||||
|
{
|
||||||
|
color: 0xd08331,
|
||||||
|
size: { width: 3.5, height: 0.7, depth: 1.5 },
|
||||||
|
position: { x: -3.3, y: 0, z: -0.2 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
wc: [
|
||||||
|
{
|
||||||
|
color: 0x332b5d,
|
||||||
|
size: { width: 2, height: 0.7, depth: 2 },
|
||||||
|
position: { x: 5.3, y: 0, z: 1.5 },
|
||||||
|
view: "tudengimaja",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
// fuajee rooms
|
||||||
|
ittk: [
|
||||||
|
{
|
||||||
|
color: 0xd12e7d,
|
||||||
|
size: { width: 4.5, height: 0.5, depth: 3 },
|
||||||
|
position: { x: -3.8, y: 0, z: 3.3 },
|
||||||
|
view: "fuajee",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
tartuyk: [
|
||||||
|
{
|
||||||
|
color: 0x365591,
|
||||||
|
size: { width: 5, height: 0.5, depth: 2.5 },
|
||||||
|
position: { x: 2.7, y: 0, z: -1.7 },
|
||||||
|
view: "fuajee",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
estoniagamedev: [
|
||||||
|
{
|
||||||
|
color: 0x183bbf,
|
||||||
|
size: { width: 6, height: 0.5, depth: 2.5 },
|
||||||
|
position: { x: -5.8, y: 0, z: -1.7 },
|
||||||
|
view: "fuajee",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
color: 0x183bbf,
|
||||||
|
size: { width: 2, height: 0.5, depth: 5.5 },
|
||||||
|
position: { x: -7.7, y: 0, z: 2.1 },
|
||||||
|
view: "fuajee",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
color: 0xff6347,
|
||||||
|
size: { width: 2, height: 0.5, depth: 2 },
|
||||||
|
position: { x: -1, y: 0, z: -2 },
|
||||||
|
view: "fuajee",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
tly: [
|
||||||
|
{
|
||||||
|
color: 0xa82838,
|
||||||
|
size: { width: 4, height: 0.5, depth: 2 },
|
||||||
|
position: { x: 7.5, y: 0, z: -1.8 },
|
||||||
|
view: "fuajee",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
gameup: [
|
||||||
|
{
|
||||||
|
color: 0x228b22,
|
||||||
|
size: { width: 2, height: 0.5, depth: 1.5 },
|
||||||
|
position: { x: 10.7, y: 0, z: -2 },
|
||||||
|
view: "fuajee",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
studentformula: [
|
||||||
|
{
|
||||||
|
color: 0x20b2aa,
|
||||||
|
size: { width: 2.5, height: 0.5, depth: 1.5 },
|
||||||
|
position: { x: 13, y: 0, z: -2 },
|
||||||
|
view: "fuajee",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
"computerParticipant": {
|
"computerParticipant": {
|
||||||
"title": "Computer Participant",
|
"title": "Computer Participant",
|
||||||
"earlyPrice": "8€",
|
"earlyPrice": "8€",
|
||||||
"latePrice":"10€",
|
"latePrice": "10€",
|
||||||
"features": [
|
"features": [
|
||||||
"Personal desk, power and internet connection",
|
"Personal desk, power and internet connection",
|
||||||
"Access to expo area",
|
"Access to expo area",
|
||||||
@@ -199,7 +199,7 @@
|
|||||||
"auditorium": "Auditorium",
|
"auditorium": "Auditorium",
|
||||||
"studentHouse": "Student House (Tudengimaja)",
|
"studentHouse": "Student House (Tudengimaja)",
|
||||||
"auditoriumAndStudentHouse": "Auditorium and Student House",
|
"auditoriumAndStudentHouse": "Auditorium and Student House",
|
||||||
"entranceHall": "Entrance Hall"
|
"entranceHall": "Lobby"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stream": {
|
"stream": {
|
||||||
@@ -227,18 +227,21 @@
|
|||||||
"title": "Expo Area",
|
"title": "Expo Area",
|
||||||
"description": "The TipiLAN expo area hosts companies, additional activities and lectures.",
|
"description": "The TipiLAN expo area hosts companies, additional activities and lectures.",
|
||||||
"areas": {
|
"areas": {
|
||||||
"bar": "Bar Area",
|
"bar": "Bar",
|
||||||
"boardGames": "Board Games Area",
|
"boardGames": "Board Games Area",
|
||||||
"simRacing": "Red Bull Sim Racing",
|
"simRacing": "Red Bull Rally Simulators",
|
||||||
"fighting": "Fighting Games Area",
|
"fighting": "Baltic Fighting Games League",
|
||||||
"photobooth": "Photo booth",
|
|
||||||
"ityk": "TalTech IT Faculty Student Council",
|
"ityk": "TalTech IT Faculty Student Council",
|
||||||
"tartuyk": "Tartu University",
|
"tartuyk": "Tartu University",
|
||||||
"estoniagamedev": "Estonia Gamedev",
|
"estoniagamedev": "Estonian game developers",
|
||||||
"info": "Information booth",
|
"info": "Information booth",
|
||||||
"tly": "Tallinn University",
|
"tly": "Tallinn University",
|
||||||
"ittk": "TalTech School of Information Technologies",
|
"ittk": "TalTech School of IT",
|
||||||
"gameup": "GameUP!"
|
"gameup": "GameUP!",
|
||||||
|
"photowall": "Photo wall",
|
||||||
|
"lvlup": "LVLup! video game museum",
|
||||||
|
"studentformula": "Student Formula",
|
||||||
|
"chillArea": "Chill area"
|
||||||
},
|
},
|
||||||
"hide": "Hide walls",
|
"hide": "Hide walls",
|
||||||
"show": "Show walls"
|
"show": "Show walls"
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
"computerParticipant": {
|
"computerParticipant": {
|
||||||
"title": "Arvutiga osaleja",
|
"title": "Arvutiga osaleja",
|
||||||
"earlyPrice": "8€",
|
"earlyPrice": "8€",
|
||||||
"latePrice":"10€",
|
"latePrice": "10€",
|
||||||
"features": [
|
"features": [
|
||||||
"Isiklik laud, voolu- ja internetiühendus",
|
"Isiklik laud, voolu- ja internetiühendus",
|
||||||
"Ligipääs messialale",
|
"Ligipääs messialale",
|
||||||
@@ -228,18 +228,21 @@
|
|||||||
"title": "Messiala",
|
"title": "Messiala",
|
||||||
"description": "TipiLANi messialal paiknevad ettevõtted, lisategevused ja toimuvad loengud.",
|
"description": "TipiLANi messialal paiknevad ettevõtted, lisategevused ja toimuvad loengud.",
|
||||||
"areas": {
|
"areas": {
|
||||||
"bar": "Baariala",
|
"bar": "Baar",
|
||||||
"boardGames": "Lauamängude ala",
|
"boardGames": "Lauamängude ala",
|
||||||
"simRacing": "Red Bull Sim Racing",
|
"simRacing": "Red Bull rallisimulaatorid",
|
||||||
"fighting": "Võitlusmängu ala",
|
"fighting": "Balti Võitlusmängude Liiga",
|
||||||
"photobooth": "Fotoboks",
|
|
||||||
"ityk": "IT-teaduskonna üliõpilaskogu",
|
"ityk": "IT-teaduskonna üliõpilaskogu",
|
||||||
"tartuyk": "Tartu Ülikool",
|
"tartuyk": "Tartu Ülikool",
|
||||||
"estoniagamedev": "Eesti Gamedev",
|
"estoniagamedev": "Eesti mänguarendajad",
|
||||||
"info": "Infoboks",
|
"info": "Infoboks",
|
||||||
"tly": "Tallinna Ülikool",
|
"tly": "Tallinna Ülikool",
|
||||||
"ittk": "TalTech IT-Teaduskond",
|
"ittk": "TalTech IT-Teaduskond",
|
||||||
"gameup": "GameUP!"
|
"gameup": "GameUP!",
|
||||||
|
"photowall": "Fotosein",
|
||||||
|
"lvlup": "LVLup! videomängude muuseum",
|
||||||
|
"studentformula": "Tudengivormel",
|
||||||
|
"chillArea": "Chill-ala"
|
||||||
},
|
},
|
||||||
"hide": "Peida seinad",
|
"hide": "Peida seinad",
|
||||||
"show": "Näita seinu"
|
"show": "Näita seinu"
|
||||||
|
|||||||