@@ -12,7 +12,7 @@ class Wish extends Model
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'wishes';
|
||||
protected $fillable = ['title', 'description', 'reward', 'owner_id', 'status', 'agent_id', 'guest_id', 'type', 'rune', 'color'];
|
||||
protected $fillable = ['title', 'description', 'reward', 'owner_id', 'status', 'agent_id', 'guest_id', 'icon_type', 'icon_rune', 'type', 'color'];
|
||||
|
||||
public function agent(): BelongsTo
|
||||
{
|
||||
|
||||
@@ -21,7 +21,8 @@ class WishFactory extends Factory
|
||||
'title' => fake()->sentence(),
|
||||
'description' => fake()->paragraph(),
|
||||
'reward' => fake()->word(),
|
||||
'rune' => fake()->numberBetween(0, 3),
|
||||
'icon_rune' => fake()->numberBetween(0, 3),
|
||||
'icon_type' => fake()->numberBetween(0, 3),
|
||||
'type' => fake()->numberBetween(0, 3),
|
||||
'color' => fake()->numberBetween(0, 255),
|
||||
];
|
||||
|
||||
@@ -21,7 +21,8 @@ return new class extends Migration
|
||||
$table->foreignUuid('guest_id')->nullable();
|
||||
$table->enum('status', ['open', 'promised', 'disabled', 'granted'])->default('open');
|
||||
$table->unsignedTinyInteger('type')->default(0);
|
||||
$table->unsignedTinyInteger('rune')->default(0);
|
||||
$table->unsignedTinyInteger('icon_type')->default(0);
|
||||
$table->unsignedTinyInteger('icon_rune')->default(0);
|
||||
$table->unsignedTinyInteger('color')->default(0);
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
User-agent: *
|
||||
Disallow:
|
||||
Disallow: /
|
||||
|
||||
|
After Width: | Height: | Size: 195 KiB |
|
After Width: | Height: | Size: 222 KiB |
|
After Width: | Height: | Size: 137 KiB |
|
After Width: | Height: | Size: 173 KiB |
|
After Width: | Height: | Size: 169 KiB |
|
After Width: | Height: | Size: 183 KiB |
|
After Width: | Height: | Size: 214 KiB |
|
After Width: | Height: | Size: 202 KiB |
|
After Width: | Height: | Size: 202 KiB |
|
After Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 783 B After Width: | Height: | Size: 783 B |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 964 B After Width: | Height: | Size: 964 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 909 B After Width: | Height: | Size: 909 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
@@ -1,24 +1,10 @@
|
||||
<script setup lang="ts">
|
||||
import {ref, onMounted} from 'vue';
|
||||
</script>
|
||||
import WishPanel from './WishPanel.vue';
|
||||
|
||||
<template>
|
||||
<div class="wish-main">
|
||||
<img :src="'/skonk/quest_backdrop_' + type + '.png'">
|
||||
<div class="wish-sub" v-if="type <= 2">
|
||||
<img :src="'/skonk/quest_backdrop_' + type + '_filter.png'" :style="'filter: hue-rotate(' + color + 'deg) saturate(0.5);'">
|
||||
</div>
|
||||
<div class="wish-sub" v-if="type <= 2">
|
||||
<img :src="'/skonk/quest_rune_' + rune + '.png'">
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
const panelOn = ref(false);
|
||||
|
||||
<script lang="ts">
|
||||
const types = ref(['/skonk/quest_backdrop_1.png'], )
|
||||
|
||||
export default {
|
||||
props: {
|
||||
const props = defineProps({
|
||||
type: {
|
||||
type: Number,
|
||||
default: 1,
|
||||
@@ -31,12 +17,27 @@
|
||||
type: Number,
|
||||
default: 0,
|
||||
}
|
||||
},
|
||||
setup(props) {
|
||||
}
|
||||
});
|
||||
|
||||
function openWish() {
|
||||
panelOn.value = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="wish-main" @click="openWish">
|
||||
<img :src="'/skonk/quest_backdrop_' + type + '.png'">
|
||||
<div class="wish-sub" v-if="type <= 1">
|
||||
<img :src="'/skonk/quest_backdrop_' + type + '_filter.png'" :style="'filter: hue-rotate(' + color + 'deg) saturate(0.5);'">
|
||||
</div>
|
||||
<div class="wish-sub" v-if="type <= 1">
|
||||
<img :src="'/skonk/quest_rune_' + rune + '.png'" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<WishPanel v-model="panelOn"/>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.wish-main {
|
||||
position: relative;
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
<script setup lang="ts">
|
||||
import { onMounted } from 'vue';
|
||||
|
||||
const panelOn = defineModel({default: false});
|
||||
|
||||
function handleClose(event:KeyboardEvent) {
|
||||
if (panelOn.value) if (event.key == 'Escape') panelOn.value = false;;
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
window.addEventListener('keydown', handleClose);
|
||||
});
|
||||
</script>
|
||||
|
||||
<template >
|
||||
<template v-if="panelOn">
|
||||
<div class="panel-container background" >
|
||||
|
||||
</div>
|
||||
<div class="panel-container main-panel">
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<style lang="css" scoped>
|
||||
|
||||
.background {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
|
||||
filter: opacity(30%);
|
||||
|
||||
background-color: black;
|
||||
z-index: 90;
|
||||
}
|
||||
|
||||
.main-panel {
|
||||
height: 90%;
|
||||
width: 90%;
|
||||
|
||||
filter: opacity(85%);
|
||||
|
||||
border-radius: 10px;
|
||||
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
.panel-container {
|
||||
position: absolute;
|
||||
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
|
||||
z-index: 100;
|
||||
}
|
||||
</style>
|
||||
@@ -17,7 +17,7 @@ const call = () => {
|
||||
|
||||
onMounted(() => {
|
||||
call();
|
||||
interval = setInterval(call, 30000);
|
||||
interval = setInterval(call, 10000);
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||