Merge pull request #96 from Lapikud/development

Big refactor of messiala code, updated all areas
pull/101/head^2
Renkar 2 months ago committed by GitHub
commit 594559ae14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 437
      src/app/[locale]/messiala/page.tsx
  2. 218
      src/data/roomNames.ts
  3. 21
      translations/en.json
  4. 17
      translations/et.json

@ -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 };
},
{ scene.add(room);
width: 1.8, rooms.push(room);
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) => {
const geometry = new THREE.BoxGeometry(
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({
const fuajeeRoomDefinitions = [ color: meta.color,
{ });
width: 5,
height: 0.5,
depth: 3.5,
x: -6,
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) => {
const geometry = new THREE.BoxGeometry(
roomDef.width,
roomDef.height,
roomDef.depth,
);
const material = new THREE.MeshLambertMaterial({
color: roomDef.color,
});
const room = new THREE.Mesh(geometry, material);
room.position.set(roomDef.x, roomDef.height / 2 + 2, roomDef.z);
room.castShadow = true;
room.receiveShadow = true;
room.userData = { name: roomDef.name, originalColor: roomDef.color };
room.visible = true; // Initially visible for fuajee default
scene.add(room); const room = new THREE.Mesh(geometry, material);
fuajeeRooms.push(room); room.position.set(meta.position.x, meta.position.y, meta.position.z);
roomData.push({ room.castShadow = true;
mesh: room, room.receiveShadow = true;
name: roomDef.name, room.userData = { name: roomNames[key], originalColor: meta.color };
originalColor: roomDef.color, room.visible = true; // Initially visible for fuajee default
originalScale: room.scale.clone(),
view: "fuajee", scene.add(room);
fuajeeRooms.push(room);
roomData.push({
mesh: room,
name: roomNames[key],
originalColor: meta.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,15 +573,17 @@ 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>
{/* Board Games */}
<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"
@ -765,49 +593,104 @@ export default function Expo() {
{t("expo.areas.boardGames")} {t("expo.areas.boardGames")}
</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: "#080682" }} style={{ backgroundColor: "#d34e35" }}
></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="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: "#3498db" }} style={{ backgroundColor: "#a8f494" }}
></div> ></div>
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]"> <span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
Sony {t("expo.areas.fighting")}
</span> </span>
</div> </div>
{/* K-space */}
<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: "#2c5da3" }}
></div> ></div>
<span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]"> <span className="text-sm text-[#2A2C3F] dark:text-[#EEE5E5]">
{t("expo.areas.fighting")} 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> </span>
</div> </div>
</div> </div>
@ -857,7 +740,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 +827,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 +841,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"

@ -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",
},
],
};

@ -64,7 +64,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",
@ -174,7 +174,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": {
@ -202,18 +202,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"

@ -64,7 +64,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",
@ -203,18 +203,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"

Loading…
Cancel
Save