Skip to content

Commit

Permalink
feat: autonomus queueDisplay
Browse files Browse the repository at this point in the history
  • Loading branch information
Pejosonic committed Aug 7, 2024
1 parent 97753ab commit 1ae6b7e
Showing 1 changed file with 47 additions and 7 deletions.
54 changes: 47 additions & 7 deletions src/queueDisplay/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { EasingFunction, Entity, TextAlignMode, TransformType } from '@dcl/sdk/ecs'
import { Color4, Quaternion, Vector3 } from '@dcl/sdk/math'
import * as playersQueue from '../queue/index'
import { getSDK } from '../sdk'
import { queue } from '..'

export enum SCREENS {
addToQueue,
Expand All @@ -18,12 +18,13 @@ let myPosEntity: Entity
let active = false
let currentScreen: number
const screensAtlas = 'mini-game-assets/images/GameSigns.png'
const frameModel = 'mini-game-assets/models/workstation_display.glb'
const frameModel = 'mini-game-assets/models/queueDisplay/workstation_display.glb'
let timer = 0
let timer2 = 0
let showEnterScreen = true

export function init(transform: TransformType) {
const { engine, Transform, GltfContainer, Material, MeshRenderer, VisibilityComponent } = getSDK()
const { engine, Transform, GltfContainer, Material, MeshRenderer, VisibilityComponent, players } = getSDK()

currentScreen = SCREENS.addToQueue
positionActive = transform
Expand Down Expand Up @@ -66,6 +67,44 @@ export function init(transform: TransformType) {
rotation: Quaternion.fromEulerDegrees(0, 180, 0)
})
VisibilityComponent.create(myPosEntity, { visible: false })

let queueDisplayTimer = 0
engine.addSystem(
(dt: number) => {
queueDisplayTimer += dt

if (queueDisplayTimer < 0.25) return
queueDisplayTimer = 0

const playerInQueue = queue.getQueue().find((item) => item.player.address === players.getPlayer()?.userId)
if (playerInQueue) {
if (!queue.isActive()) {
enable()
} else if (showEnterScreen) {
showEnterScreen = false
setScreen(SCREENS.playNext)

//wait 2 sec and disable
let closeTimer = 2
engine.addSystem(
(dt: number) => {
closeTimer -= dt
if (closeTimer > 0) return
closeTimer = 2
disable()
engine.removeSystem('delayDisable')
},
undefined,
'delayDisable'
)
}
} else {
disable()
}
},
undefined,
'queueDisplaySystem'
)
}

function getScreenUVs(screen: number): number[] {
Expand Down Expand Up @@ -96,7 +135,7 @@ function getScreenUVs(screen: number): number[] {
]
}

export function enable() {
function enable() {
if (active) return
const { engine, Transform, Tween } = getSDK()

Expand Down Expand Up @@ -126,11 +165,12 @@ export function enable() {
)
}

export function disable() {
function disable() {
if (!active) return
const { engine, Transform, Tween } = getSDK()

active = false
showEnterScreen = true
const { position } = Transform.get(frameEntity)
Tween.createOrReplace(frameEntity, {
mode: Tween.Mode.Move({
Expand All @@ -144,7 +184,7 @@ export function disable() {
engine.removeSystem(updateListSystem)
}

export function setScreen(screenIndex: number) {
function setScreen(screenIndex: number) {
const { engine, VisibilityComponent, MeshRenderer } = getSDK()

if (screenIndex === SCREENS.queueList) {
Expand All @@ -168,7 +208,7 @@ function updateListSystem(dt: number) {
}
timer = 0

const playerQueue = playersQueue.getQueue()
const playerQueue = queue.getQueue()
const playerNames = playerQueue.map((item) => players.getPlayer({ userId: item.player.address })?.name).slice(1)
const myPos = playerQueue.findIndex((item) => item.player.address === players.getPlayer()?.userId)

Expand Down

0 comments on commit 1ae6b7e

Please sign in to comment.