translation #52
This commit is contained in:
@@ -1,16 +1,7 @@
|
||||
<template>
|
||||
<!-- <v-navigation-drawer width="133" class="d-none">
|
||||
<v-btn-toggle variant="tonal" density="comfortable" class="ma-3" v-model="renderType" color="light-blue-darken-4">
|
||||
<v-btn value="ST" icon="mdi-video-3d-variant"></v-btn>
|
||||
<v-btn value="VR" icon="mdi-google-cardboard"></v-btn>
|
||||
<v-btn value="AG" icon="mdi-glasses"></v-btn>
|
||||
</v-btn-toggle>
|
||||
<v-btn-toggle variant="tonal" v-model="store.prefs.xr.depthSense" class="ma-3" density="comfortable" color="green-darken-2">
|
||||
<v-btn :value="true" icon="mdi-cube-outline"></v-btn>
|
||||
</v-btn-toggle>
|
||||
<v-btn icon="mdi-walk" @click="control"></v-btn>
|
||||
</v-navigation-drawer> -->
|
||||
<v-btn icon="mdi-fullscreen" @click="fullScreen"></v-btn>
|
||||
<v-navigation-drawer width="133" rail location="right">
|
||||
<v-btn icon="mdi-fullscreen" @click="fullScreen" variant="text" v-tooltip="l.fullScreen"></v-btn>
|
||||
</v-navigation-drawer>
|
||||
<div class="container my-3 position-relative ">
|
||||
<div ref="target" @click="targetClick" class="game-play-canvas"
|
||||
@mousedown="targetPointer($event, 'start')"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
</div>
|
||||
<asset-selector @select="assignCharacter" :type="['Character']">
|
||||
<template v-slot:activator="props">
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>Select character</v-btn>
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>{{ l.selectCharacter }}</v-btn>
|
||||
</template>
|
||||
</asset-selector>
|
||||
</template>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<template>
|
||||
<div v-if="modelValue.go">
|
||||
<v-select label="Dimension" v-model="modelValue.dimension" :items="['3x3', '5x4', '6x6']" density="compact"></v-select>
|
||||
<v-select :label="l.dimensions" v-model="modelValue.dimension" :items="['3x3', '5x4', '6x6']" density="compact"></v-select>
|
||||
<v-textarea :label="l.description" v-model="modelValue.introText"></v-textarea>
|
||||
<v-img :src="`/asset/thumb/${modelValue.go}.webp`" />
|
||||
<div class="text-caption text-center">{{ modelValue.title }}</div>
|
||||
</div>
|
||||
<asset-selector @select="assignTexture" :type="['Texture']">
|
||||
<template v-slot:activator="props">
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>Choose image object</v-btn>
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>{{ l.chooseImage }}</v-btn>
|
||||
</template>
|
||||
</asset-selector>
|
||||
</template>
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
<div>
|
||||
<asset-selector @select="assignGameObject" :type="['GameObject']">
|
||||
<template v-slot:activator="props">
|
||||
<v-btn v-bind="props" prepend-icon="mdi-panorama-outline" color="success" block>Choose game object</v-btn>
|
||||
<v-btn v-bind="props" prepend-icon="mdi-panorama-outline" color="success" block>{{ l.chooseGameObject }}</v-btn>
|
||||
</template>
|
||||
</asset-selector>
|
||||
<v-textarea :label="l.description" v-model="modelValue.description" class="mt-3"></v-textarea>
|
||||
<v-checkbox density="compact" v-model="modelValue.hud" hide-details label="Observe in head-up display"></v-checkbox>
|
||||
<v-checkbox density="compact" v-model="modelValue.exclude" hide-details label="Disable interactions"></v-checkbox>
|
||||
<v-checkbox density="compact" v-model="modelValue.noPhysics" hide-details label="Disable collisions"></v-checkbox>
|
||||
<v-checkbox density="compact" v-model="modelValue.hud" hide-details :label="l.viewInHUD"></v-checkbox>
|
||||
<v-checkbox density="compact" v-model="modelValue.exclude" hide-details :label="l.disableInteractions"></v-checkbox>
|
||||
<v-checkbox density="compact" v-model="modelValue.noPhysics" hide-details :label="l.disableCollisions"></v-checkbox>
|
||||
<v-img :src="`/asset/thumb/${modelValue.go}.webp`" />
|
||||
<div class="text-caption text-center">{{ modelValue.title }}</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<v-dialog max-width="1400" scrollable>
|
||||
<template v-slot:activator="{ props: activatorProps }">
|
||||
<v-btn v-bind="activatorProps">Manage Questions</v-btn>
|
||||
<v-btn v-bind="activatorProps">{{ l.manageQuestions }}</v-btn>
|
||||
</template>
|
||||
|
||||
<template v-slot:default="{ isActive }">
|
||||
@@ -10,7 +10,7 @@
|
||||
<div class="d-flex flex-wrap w-100">
|
||||
<v-card v-for="(n, ni) in modelValue.questions" class="v-col-6" variant="outlined" border="0">
|
||||
<v-card-item>
|
||||
<v-text-field density="compact" hide-details :label="`Question #${ni+1}`" v-model="n.q" class="py-2">
|
||||
<v-text-field density="compact" hide-details :label="`${l.question} #${ni+1}`" v-model="n.q" class="py-2">
|
||||
<template v-slot:append>
|
||||
<v-btn variant="plain" color="error" @click="deleteQuestion(ni)">
|
||||
<v-icon icon="mdi-delete-forever"></v-icon>
|
||||
@@ -18,12 +18,12 @@
|
||||
</template>
|
||||
</v-text-field>
|
||||
<v-text-field hide-details density="compact" v-model="n.a[0]" class="pb-2"
|
||||
label="Correct answer" icon-color="success" prepend-icon="mdi-check"></v-text-field>
|
||||
:label="l.correctAnswer" icon-color="success" prepend-icon="mdi-check"></v-text-field>
|
||||
<v-text-field hide-details density="compact" v-model="n.a[1]" class="pb-2"
|
||||
label="Wrong answer #1" icon-color="error" prepend-icon="mdi-close"></v-text-field>
|
||||
:label="`${l.wrongAnswer} #1`" icon-color="error" prepend-icon="mdi-close"></v-text-field>
|
||||
<v-text-field hide-details density="compact" v-model="n.a[2]" class="pb-2"
|
||||
label="Wrong answer #2" v-if="n.a[1]" icon-color="error" prepend-icon="mdi-close"></v-text-field>
|
||||
<v-text-field density="compact" hide-details label="Wrong answer hint" v-model="n.h" class="pb-2"></v-text-field>
|
||||
:label="`${l.wrongAnswer} #2`" v-if="n.a[1]" icon-color="error" prepend-icon="mdi-close"></v-text-field>
|
||||
<v-text-field density="compact" hide-details :label="l.wrongAnswerHint" v-model="n.h" class="pb-2"></v-text-field>
|
||||
</v-card-item>
|
||||
<v-divider></v-divider>
|
||||
</v-card>
|
||||
@@ -36,10 +36,10 @@
|
||||
</v-card>
|
||||
</template>
|
||||
</v-dialog>
|
||||
<v-checkbox v-model="modelValue.shuffle" hide-details label="Shuffle questions"></v-checkbox>
|
||||
<v-number-input density="compact" label="Correct answer points" v-model="modelValue.questionPoints"></v-number-input>
|
||||
<v-number-input density="compact" label="Wrong answer penalty points" v-model="modelValue.questionPenalty"></v-number-input>
|
||||
<v-select v-model="modelValue.style" :items="styles" density="compact" label="Visual style"></v-select>
|
||||
<v-checkbox v-model="modelValue.shuffle" hide-details :label="l.shuffleQuestions"></v-checkbox>
|
||||
<v-number-input density="compact" :label="l.correctAnswerPoints" v-model="modelValue.questionPoints"></v-number-input>
|
||||
<v-number-input density="compact" :label="l.wrongAnswerPenalty" v-model="modelValue.questionPenalty"></v-number-input>
|
||||
<v-select v-model="modelValue.style" :items="styles" density="compact" :label="l.visualStyle"></v-select>
|
||||
<SceneSwitcher v-model="mv"></SceneSwitcher>
|
||||
</template>
|
||||
|
||||
@@ -51,11 +51,11 @@ export default {
|
||||
data(){
|
||||
return {
|
||||
styles:[
|
||||
{ title: 'Lake reeds', value: 'quiz.gltf' },
|
||||
{ title: 'Grass and pavement pathway', value: 'quiz-s2.gltf' },
|
||||
{ title: 'Medieval Fortress', value: 'quiz-fortress.gltf' },
|
||||
{ title: 'Air Islands', value: 'quiz-on-air.gltf' },
|
||||
{ title: 'Red lake', value: 'quiz-red-lakes.gltf'}
|
||||
{ title: 'Lake reeds / тръстики в езерото', value: 'quiz.gltf' },
|
||||
{ title: 'Grass and pavement pathway / трева и паваж', value: 'quiz-s2.gltf' },
|
||||
{ title: 'Medieval Fortress / средновековна крепост', value: 'quiz-fortress.gltf' },
|
||||
{ title: 'Air Islands / острови във въздуха', value: 'quiz-on-air.gltf' },
|
||||
{ title: 'Red lake / червено езеро', value: 'quiz-red-lakes.gltf'}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<template>
|
||||
<div v-if="modelValue.go">
|
||||
<v-number-input density="compact" label="Number of elements" v-model="modelValue.c"></v-number-input>
|
||||
<v-number-input density="compact" :label="l.elementsCount" v-model="modelValue.c"></v-number-input>
|
||||
<v-textarea :label="l.description" v-model="modelValue.introText"></v-textarea>
|
||||
<v-img :src="`/asset/thumb/${modelValue.go}.webp`" />
|
||||
<div class="text-caption text-center">{{ modelValue.title }}</div>
|
||||
</div>
|
||||
<asset-selector @select="assignTexture" :type="['Texture']">
|
||||
<template v-slot:activator="props">
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>Choose image object</v-btn>
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>{{ l.chooseImage }}</v-btn>
|
||||
</template>
|
||||
</asset-selector>
|
||||
</template>
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<template>
|
||||
<div v-if="modelValue.go">
|
||||
<v-number-input density="compact" :precision="null" label="Particle width" v-model="modelValue.x"></v-number-input>
|
||||
<v-number-input density="compact" :precision="null" label="Particle height" v-model="modelValue.y"></v-number-input>
|
||||
<v-number-input density="compact" :precision="null" :label="l.particleWidth" v-model="modelValue.x"></v-number-input>
|
||||
<v-number-input density="compact" :precision="null" :label="l.particleHeight" v-model="modelValue.y"></v-number-input>
|
||||
|
||||
<v-number-input density="compact" :precision="null" label="Area width" v-model="modelValue.w"></v-number-input>
|
||||
<v-number-input density="compact" :precision="null" label="Area length" v-model="modelValue.h"></v-number-input>
|
||||
<v-number-input density="compact" :precision="null" :label="l.areaWidth" v-model="modelValue.w"></v-number-input>
|
||||
<v-number-input density="compact" :precision="null" :label="l.areaLength" v-model="modelValue.h"></v-number-input>
|
||||
|
||||
<v-number-input density="compact" label="Count" v-model="modelValue.count"></v-number-input>
|
||||
<v-number-input density="compact" :label="l.elementsCount" v-model="modelValue.count"></v-number-input>
|
||||
|
||||
<v-img :src="`/asset/thumb/${modelValue.go}.webp`" />
|
||||
<div class="text-caption text-center">{{ modelValue.title }}</div>
|
||||
</div>
|
||||
<asset-selector @select="assignTexture" :type="['Texture']">
|
||||
<template v-slot:activator="props">
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>Choose image object</v-btn>
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>{{ l.chooseImage }}</v-btn>
|
||||
</template>
|
||||
</asset-selector>
|
||||
</template>
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<template>
|
||||
<div v-if="modelValue.go">
|
||||
<v-number-input density="compact" label="Width" v-model="modelValue.w"></v-number-input>
|
||||
<v-number-input density="compact" label="Height" v-model="modelValue.h"></v-number-input>
|
||||
<v-number-input density="compact" :label="l.width" v-model="modelValue.w"></v-number-input>
|
||||
<v-number-input density="compact" :label="l.height" v-model="modelValue.h"></v-number-input>
|
||||
<v-textarea :label="l.description" v-model="modelValue.introText"></v-textarea>
|
||||
<v-img :src="`/asset/thumb/${modelValue.go}.webp`" />
|
||||
<div class="text-caption text-center">{{ modelValue.title }}</div>
|
||||
</div>
|
||||
<asset-selector @select="assignTexture" :type="['Texture']">
|
||||
<template v-slot:activator="props">
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>Choose image object</v-btn>
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>{{ l.chooseImage }}</v-btn>
|
||||
</template>
|
||||
</asset-selector>
|
||||
</template>
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<template>
|
||||
<div v-if="modelValue.go">
|
||||
<v-number-input density="compact" label="Width" v-model="modelValue.w"></v-number-input>
|
||||
<v-number-input density="compact" label="Height" v-model="modelValue.h"></v-number-input>
|
||||
<v-number-input density="compact" :label="l.width" v-model="modelValue.w"></v-number-input>
|
||||
<v-number-input density="compact" :label="l.height" v-model="modelValue.h"></v-number-input>
|
||||
<v-textarea :label="l.description" v-model="modelValue.introText"></v-textarea>
|
||||
<v-img :src="`/asset/thumb/${modelValue.go}.webp`" />
|
||||
<div class="text-caption text-center">{{ modelValue.title }}</div>
|
||||
</div>
|
||||
<asset-selector @select="assignTexture" :type="['Texture']">
|
||||
<template v-slot:activator="props">
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>Choose image object</v-btn>
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>{{ l.chooseImage }}</v-btn>
|
||||
</template>
|
||||
</asset-selector>
|
||||
</template>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<div>
|
||||
<v-select label="Switch to scene" v-model="modelValue.switchScene" density="compact"
|
||||
<v-select :label="l.switchToScene" v-model="modelValue.switchScene" density="compact"
|
||||
:items="scenes"></v-select>
|
||||
<v-select label="Switch type" v-model="modelValue.switchType" density="compact"
|
||||
<v-select :label="l.switchType" v-model="modelValue.switchType" density="compact"
|
||||
:items="switchTypes"></v-select>
|
||||
<!-- <div class="text-caption text-center">{{ modelValue.title }}</div> -->
|
||||
</div>
|
||||
@@ -18,15 +18,12 @@ export default {
|
||||
data(){
|
||||
return {
|
||||
active: false,
|
||||
switchTypes: [
|
||||
{ title: 'Award', value: 'award' },
|
||||
{ title: 'Sphere', value: 'sphere' },
|
||||
{ title: 'Sensor', value: 'sensor' }
|
||||
]
|
||||
switchTypes: ['award', 'sphere', 'sensor']
|
||||
}
|
||||
},
|
||||
mounted(){
|
||||
this.active = true;
|
||||
this.switchTypes = this.switchTypes.map(t=>({title: this.l.switchTypes[t], value: t}))
|
||||
},
|
||||
|
||||
props:{
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<div v-if="modelValue.go">
|
||||
<v-text-field hide-details density="compact" v-model="modelValue.q" class="pb-2" label="Question" icon-color="blue" prepend-icon="mdi-chat-question-outline"></v-text-field>
|
||||
<v-text-field hide-details density="compact" v-model="modelValue.a[0]" class="pb-2" label="Correct answer" icon-color="success" prepend-icon="mdi-check"></v-text-field>
|
||||
<v-text-field hide-details density="compact" v-model="modelValue.q" class="pb-2" :label="l.question" icon-color="blue" prepend-icon="mdi-chat-question-outline"></v-text-field>
|
||||
<v-text-field hide-details density="compact" v-model="modelValue.a[0]" class="pb-2" :label="l.correctAnswer" icon-color="success" prepend-icon="mdi-check"></v-text-field>
|
||||
<v-text-field v-for="i in 4" :key="i" hide-details density="compact" v-model="modelValue.a[i]"
|
||||
v-show="modelValue.a[i-1]" class="pb-2" :label="`Wrong answer #${i}`" icon-color="error"
|
||||
v-show="modelValue.a[i-1]" class="pb-2" :label="`${l.wrongAnswer} #${i}`" icon-color="error"
|
||||
prepend-icon="mdi-close"></v-text-field>
|
||||
<v-img :src="`/asset/thumb/${modelValue.go}.webp`" />
|
||||
<div class="text-caption text-center">{{ modelValue.title }}</div>
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
<div v-if="modelValue.go">
|
||||
<v-img :src="`/asset/thumb/${modelValue.go}.webp`" />
|
||||
<div class="text-caption text-center">{{ modelValue.title }}</div>
|
||||
<v-checkbox density="compact" v-model="modelValue.playInHud" hide-details label="Play in full screen"></v-checkbox>
|
||||
<v-checkbox density="compact" v-model="modelValue.playInHud" hide-details :label="l.viewInHUD"></v-checkbox>
|
||||
</div>
|
||||
<asset-selector @select="assignVideoObject" :type="['Video']">
|
||||
<template v-slot:activator="props">
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>Choose video object</v-btn>
|
||||
<v-btn v-bind="props" prepend-icon="mdi-video-box" color="deep-orange-darken-4" block>{{ l.chooseVideoObject }}</v-btn>
|
||||
</template>
|
||||
</asset-selector>
|
||||
</template>
|
||||
|
||||
@@ -22,22 +22,22 @@
|
||||
class="scene-switcher" marker-start="url(#arrow)" ></OffsetLine>
|
||||
</teleport>
|
||||
<v-card v-if="selected" :title="modelValue.title" class="mx-2" variant="text">
|
||||
<v-select label="Game Object Type" v-model="modelValue.type" density="compact" hide-details
|
||||
<v-select :label="l.gameObjectType" v-model="modelValue.type" density="compact" hide-details
|
||||
:items="InteractiveObjectTypes.map(e=>({title: e.name, value: e.id}))"></v-select>
|
||||
<v-form class="pt-4">
|
||||
<v-text-field density="compact" :label="l.name" v-model="modelValue.title"></v-text-field>
|
||||
<!-- <v-text-field density="compact" :label="l.id" v-model="modelValue.id"></v-text-field> -->
|
||||
<v-number-input density="compact" label="Completion points" v-model="modelValue.points"></v-number-input>
|
||||
<v-number-input density="compact" :label="l.completionPoints" v-model="modelValue.points"></v-number-input>
|
||||
</v-form>
|
||||
<div v-if="selected && modelValue.type">
|
||||
<component :is="modelValue.type" v-model="mv"></component>
|
||||
</div>
|
||||
|
||||
<v-card title="Activation requirements" v-if="modelValue.type != 'CharacterObject'">
|
||||
<v-number-input density="compact" label="Level score should be above" v-model="modelValue.activationScore"></v-number-input>
|
||||
<v-select density="compact" label="Following elements should be completed" v-model="modelValue.activationTriggers"
|
||||
<v-card :title="l.activationConditions" v-if="modelValue.type != 'CharacterObject'">
|
||||
<v-number-input density="compact" :label="l.minActivationScore" v-model="modelValue.activationScore"></v-number-input>
|
||||
<v-select density="compact" :label="l.completionElements" v-model="modelValue.activationTriggers"
|
||||
:items="parent.data.items.filter(v=>!v.data.exclude && v.data!==modelValue).map(v=>({title: v.data.title, value: v.data.id}))" multiple ></v-select>
|
||||
<v-select label="Activation Type" :items="activationTypes" density="compact" v-model="modelValue.activationType"></v-select>
|
||||
<v-select :label="l.activatoinType" :items="activationTypes" density="compact" v-model="modelValue.activationType"></v-select>
|
||||
</v-card>
|
||||
</v-card>
|
||||
|
||||
@@ -82,7 +82,7 @@ export default {
|
||||
return {
|
||||
InteractiveObjectTypes,
|
||||
active: false,
|
||||
activationTypes: [{ title:'Unlock', value:'unlock'}, { title:'Appear', value:'appear'}]
|
||||
activationTypes: ['unlock', 'appear'],
|
||||
}
|
||||
},
|
||||
mounted(){
|
||||
@@ -90,6 +90,7 @@ export default {
|
||||
this.modelValue.points ??= 10;
|
||||
this.modelValue.activationScore ??= 0;
|
||||
this.modelValue.type ??= 'GenericObject';
|
||||
this.activationTypes = this.activationTypes.map(t=>({title: this.l.activationTypes[t], value: t}))
|
||||
if (components[this.modelValue.type].__transform){
|
||||
components[this.modelValue.type].__transform(this.modelValue)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user