diff --git a/.prettierrc.json b/.prettierrc.json index 66e2335..1103a9f 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -3,6 +3,6 @@ "semi": false, "tabWidth": 2, "singleQuote": true, - "printWidth": 100, + "printWidth": 300, "trailingComma": "none" } \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index 0f18d2d..832afdf 100644 --- a/src/App.vue +++ b/src/App.vue @@ -15,20 +15,23 @@ import Register from '@/components/screens/Register.vue' import Characters from '@/components/screens/Characters.vue' import Game from '@/components/Game.vue' -const screen:Ref = ref('login'); -const socket = useSocketStore(); +const screen: Ref = ref('login') +const socket = useSocketStore() -socket.$subscribe((mutation, state) => { - if (!state.connection) { - screen.value = 'login'; - } - - if (state.connection){ - screen.value = 'characters'; - - if (state.character) { - screen.value = 'game'; +socket.$subscribe( + (mutation, state) => { + if (!state.connection) { + screen.value = 'login' } - } -}, { detached: true }) - \ No newline at end of file + + if (state.connection) { + screen.value = 'characters' + + if (state.character) { + screen.value = 'game' + } + } + }, + { detached: true } +) + diff --git a/src/assets/scss/_variables.scss b/src/assets/scss/_variables.scss index 0f82786..f999fcd 100644 --- a/src/assets/scss/_variables.scss +++ b/src/assets/scss/_variables.scss @@ -2,10 +2,10 @@ $white: #fff; $black: #000; $purple: #4741e6; -$lilac: #7B76FF; +$lilac: #7b76ff; $light-blue: #00c2ff; $red: #ff0000; $gray: #7f7f7f; $gray-2: #696969; $dark-gray: #454545; -$light-gray: #b1b2b5; \ No newline at end of file +$light-gray: #b1b2b5; diff --git a/src/assets/scss/login.scss b/src/assets/scss/login.scss index 526dab2..955855e 100644 --- a/src/assets/scss/login.scss +++ b/src/assets/scss/login.scss @@ -96,10 +96,17 @@ text-align: center; font-size: 3rem; color: $white; - text-shadow: -1px -1px 0 $gray, 1px -1px 0 $gray, -1px 1px 0 $gray, 1px 1px 0 $gray; + text-shadow: + -1px -1px 0 $gray, + 1px -1px 0 $gray, + -1px 1px 0 $gray, + 1px 1px 0 $gray; } -p, a, li, label { +p, +a, +li, +label { font-family: Arial, sans-serif; color: $white; } @@ -111,4 +118,4 @@ button { a { text-decoration: none; -} \ No newline at end of file +} diff --git a/src/assets/scss/main.scss b/src/assets/scss/main.scss index ed3340b..da1d39a 100644 --- a/src/assets/scss/main.scss +++ b/src/assets/scss/main.scss @@ -1,27 +1,32 @@ -@import "@/assets/scss/_variables"; +@import '@/assets/scss/_variables'; // Fonts @font-face { - font-family: GentiumPlus; - src: url('@/assets/fonts/Gentium_plus.ttf'); + font-family: GentiumPlus; + src: url('@/assets/fonts/Gentium_plus.ttf'); } body { - -ms-overflow-style: none; - scrollbar-width: none; - background: $black; - margin: 0; + -ms-overflow-style: none; + scrollbar-width: none; + background: $black; + margin: 0; - // Disable selection, might wanna comment when debugging - -webkit-user-select: none; /* Safari */ - -ms-user-select: none; /* IE 10 and IE 11 */ - user-select: none; /* Standard syntax */ + // Disable selection, might wanna comment when debugging + -webkit-user-select: none; /* Safari */ + -ms-user-select: none; /* IE 10 and IE 11 */ + user-select: none; /* Standard syntax */ } -h1, h2, h3, h4, h5, h6 { - font-family: GentiumPlus, serif; +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: GentiumPlus, serif; } ::-webkit-scrollbar { - display: none; -} \ No newline at end of file + display: none; +} diff --git a/src/components/Controls.vue b/src/components/Controls.vue index d8076c9..ad65677 100644 --- a/src/components/Controls.vue +++ b/src/components/Controls.vue @@ -7,55 +7,55 @@ import { ref } from 'vue' import config from '@/config' const scene = useScene() -const pointer_tile = ref(undefined); +const pointer_tile = ref(undefined) const props = defineProps({ layer: Phaser.Tilemaps.TilemapLayer }) const waypoint = ref({ visible: false, x: 0, - y: 0, + y: 0 }) function onPointerMove(pointer: Phaser.Input.Pointer) { - const px = scene.cameras.main.worldView.x + pointer.x; - const py = scene.cameras.main.worldView.y + pointer.y; + const px = scene.cameras.main.worldView.x + pointer.x + const py = scene.cameras.main.worldView.y + pointer.y - pointer_tile.value = getTile(px, py, props.layer); + pointer_tile.value = getTile(px, py, props.layer) if (pointer_tile.value) { - waypoint.value.visible = true; + waypoint.value.visible = true // Convert tile coordinates to world coordinates - const worldPoint = props.layer.tileToWorldXY(pointer_tile.value.x, pointer_tile.value.y); - waypoint.value.x = worldPoint.x + config.tile_size.y; - waypoint.value.y = worldPoint.y + config.tile_size.y; + const worldPoint = props.layer.tileToWorldXY(pointer_tile.value.x, pointer_tile.value.y) + waypoint.value.x = worldPoint.x + config.tile_size.y + waypoint.value.y = worldPoint.y + config.tile_size.y } else { - waypoint.value.visible = false; + waypoint.value.visible = false } } -scene.input.on(Phaser.Input.Events.POINTER_MOVE, onPointerMove); +scene.input.on(Phaser.Input.Events.POINTER_MOVE, onPointerMove) -function getTile (x: number, y: number, layer: Phaser.Tilemaps.TilemapLayer): Phaser.Tilemaps.Tile | undefined { - const tile: Phaser.Tilemaps.Tile = layer.getTileAtWorldXY(x, y); +function getTile(x: number, y: number, layer: Phaser.Tilemaps.TilemapLayer): Phaser.Tilemaps.Tile | undefined { + const tile: Phaser.Tilemaps.Tile = layer.getTileAtWorldXY(x, y) // console.log(x,y); // console.log('tile', tile); if (!tile) { - return undefined; + return undefined } - return tile; + return tile } -function getTileAt (iX: number, iY: number, layer: Phaser.Tilemaps.TilemapLayer): Phaser.Tilemaps.Tile | undefined { - const tile: Phaser.Tilemaps.Tile = layer.getTileAt(iX, iY); - if (tile) return tile; - else return undefined; +function getTileAt(iX: number, iY: number, layer: Phaser.Tilemaps.TilemapLayer): Phaser.Tilemaps.Tile | undefined { + const tile: Phaser.Tilemaps.Tile = layer.getTileAt(iX, iY) + if (tile) return tile + else return undefined } function getDepth(tile: Phaser.Tilemaps.Tile): number { - return 32; + return 32 } - \ No newline at end of file + diff --git a/src/components/Game.vue b/src/components/Game.vue index 3b7fd84..adf32af 100644 --- a/src/components/Game.vue +++ b/src/components/Game.vue @@ -18,7 +18,7 @@ \ No newline at end of file + diff --git a/src/components/game/Chat.vue b/src/components/game/Chat.vue index beb409f..8506996 100644 --- a/src/components/game/Chat.vue +++ b/src/components/game/Chat.vue @@ -1,13 +1,11 @@ - + \ No newline at end of file + diff --git a/src/components/game/Hud.vue b/src/components/game/Hud.vue index 9d29aa2..d5c22e9 100644 --- a/src/components/game/Hud.vue +++ b/src/components/game/Hud.vue @@ -1,54 +1,52 @@ - + \ No newline at end of file + } + .hud { + position: absolute; + left: 2rem; + top: 2rem; + width: 15rem; + height: 5rem; + background-image: url('/assets/clouds.png'); + background-position: center; + background-size: cover; + // background-color: rgba(127, 127, 127, 0.7); + clip-path: ellipse(3rem 3rem at 0% 0%) invert; + border-radius: 1rem; + border: 2px solid $white; + } +} + diff --git a/src/components/game/Menu.vue b/src/components/game/Menu.vue index 3d90b9c..9a273fd 100644 --- a/src/components/game/Menu.vue +++ b/src/components/game/Menu.vue @@ -1,106 +1,104 @@ - + \ No newline at end of file +} + diff --git a/src/components/screens/Characters.vue b/src/components/screens/Characters.vue index 190fbe7..71b83d1 100644 --- a/src/components/screens/Characters.vue +++ b/src/components/screens/Characters.vue @@ -1,50 +1,50 @@ @@ -92,7 +92,7 @@ function create() { @import '@/assets/scss/main'; .character-select-screen { - background-image: url("/assets/bglogin.png"); + background-image: url('/assets/bglogin.png'); .ui-wrapper { // vertical and vertical center height: 100vh; @@ -104,7 +104,6 @@ function create() { padding: 0 5rem; &::before { content: ''; - } .characters-wrapper { @@ -139,7 +138,6 @@ function create() { text-align: center; &::before { content: ''; - } img { width: 100px; @@ -155,7 +153,8 @@ function create() { cursor: pointer; } } - &::before, &::after { + &::before, + &::after { display: none; } } @@ -181,12 +180,11 @@ function create() { } // hide the radio buttons - input[type="radio"] { + input[type='radio'] { opacity: 0; height: 100%; width: 100%; position: absolute; - } label { @@ -251,7 +249,4 @@ function create() { margin: 0; } } - - - - \ No newline at end of file + diff --git a/src/components/screens/Login.vue b/src/components/screens/Login.vue index 017a8a5..b58b32f 100644 --- a/src/components/screens/Login.vue +++ b/src/components/screens/Login.vue @@ -6,11 +6,11 @@
- +
- +
@@ -28,10 +28,10 @@ \ No newline at end of file +@import '@/assets/scss/login'; + diff --git a/src/components/screens/Register.vue b/src/components/screens/Register.vue index af9fa97..cc340bc 100644 --- a/src/components/screens/Register.vue +++ b/src/components/screens/Register.vue @@ -1,3 +1 @@ - \ No newline at end of file + diff --git a/src/components/sprites/Character.vue b/src/components/sprites/Character.vue index a9f04b1..a782da9 100644 --- a/src/components/sprites/Character.vue +++ b/src/components/sprites/Character.vue @@ -11,7 +11,8 @@ fontStyle: 'bold', strokeThickness: 8, stroke: '#213547' - }" /> + }" + /> @@ -22,14 +23,14 @@ import { reactive, type Ref, ref } from 'vue' import config from '@/config' import { useSocketStore } from '@/stores/socket' -const socket = useSocketStore(); +const socket = useSocketStore() const props = defineProps({ layer: Phaser.Tilemaps.TilemapLayer, player: { type: Object, default: undefined - }, + } }) const scene = useScene() @@ -38,64 +39,64 @@ const scene = useScene() // console.log(time, delta); // }) -const position = reactive({ x: 0, y: 0 }); +const position = reactive({ x: 0, y: 0 }) if (props.player !== undefined) { - console.log('player', props.player); - position.x = props.player?.coords.x; - position.y = props.player?.coords.y; + console.log('player', props.player) + position.x = props.player?.coords.x + position.y = props.player?.coords.y } -const pointer_tile = ref(undefined); +const pointer_tile = ref(undefined) function onPointerClick(pointer: Phaser.Input.Pointer) { - const px = scene.cameras.main.worldView.x + pointer.x; - const py = scene.cameras.main.worldView.y + pointer.y; + const px = scene.cameras.main.worldView.x + pointer.x + const py = scene.cameras.main.worldView.y + pointer.y - pointer_tile.value = getTile(px, py, props.layer); + pointer_tile.value = getTile(px, py, props.layer) if (pointer_tile.value) { - const worldPoint = props.layer.tileToWorldXY(pointer_tile.value.x, pointer_tile.value.y); - position.x = worldPoint.x + config.tile_size.y; - position.y = worldPoint.y; + const worldPoint = props.layer.tileToWorldXY(pointer_tile.value.x, pointer_tile.value.y) + position.x = worldPoint.x + config.tile_size.y + position.y = worldPoint.y - socket.getConnection.emit('move', { x: position.x, y: position.y }); + socket.getConnection.emit('move', { x: position.x, y: position.y }) } //Directions for player sprites + animations if (px < 0 && py > 0) { - console.log('down left'); + console.log('down left') } else if (px < 0 && py < 0) { - console.log('top left'); + console.log('top left') } else if (px > 0 && py > 0) { - console.log('down right'); + console.log('down right') } else if (px > 0 && py < 0) { - console.log('top right'); + console.log('top right') } } if (!props.player) { - scene.input.on(Phaser.Input.Events.POINTER_UP, onPointerClick); + scene.input.on(Phaser.Input.Events.POINTER_UP, onPointerClick) } socket.getConnection.on('player_moved', (data: any) => { - console.log('player_moved', data); + console.log('player_moved', data) if (data.id !== props.player?.id) { - console.log('not you'); - return; + console.log('not you') + return } - position.x = data.coords.x; - position.y = data.coords.y; + position.x = data.coords.x + position.y = data.coords.y }) -function getTile (x: number, y: number, layer: Phaser.Tilemaps.TilemapLayer): Phaser.Tilemaps.Tile | undefined { - const tile: Phaser.Tilemaps.Tile = layer.getTileAtWorldXY(x, y); +function getTile(x: number, y: number, layer: Phaser.Tilemaps.TilemapLayer): Phaser.Tilemaps.Tile | undefined { + const tile: Phaser.Tilemaps.Tile = layer.getTileAtWorldXY(x, y) if (!tile) { - return undefined; + return undefined } - return tile; + return tile } - \ No newline at end of file + diff --git a/src/components/sprites/MapEntity.vue b/src/components/sprites/MapEntity.vue index 41a40c8..cc340bc 100644 --- a/src/components/sprites/MapEntity.vue +++ b/src/components/sprites/MapEntity.vue @@ -1 +1 @@ - \ No newline at end of file + diff --git a/src/components/sprites/NPC.vue b/src/components/sprites/NPC.vue index 41a40c8..cc340bc 100644 --- a/src/components/sprites/NPC.vue +++ b/src/components/sprites/NPC.vue @@ -1 +1 @@ - \ No newline at end of file + diff --git a/src/components/utilities/Modal.vue b/src/components/utilities/Modal.vue index 6382391..8d27731 100644 --- a/src/components/utilities/Modal.vue +++ b/src/components/utilities/Modal.vue @@ -1,14 +1,14 @@ @@ -20,64 +20,67 @@ const properties = defineProps({ type: Boolean, default: false } -}); +}) -watch(() => properties.isModalOpen, (value) => { - isModalOpenRef.value = value; -}); +watch( + () => properties.isModalOpen, + (value) => { + isModalOpenRef.value = value + } +) -const isModalOpenRef = ref(properties.isModalOpen); -const emit = defineEmits(["modal:close", "character:create"]); +const isModalOpenRef = ref(properties.isModalOpen) +const emit = defineEmits(['modal:close', 'character:create']) -function close () { - emit('modal:close'); +function close() { + emit('modal:close') } // make modal draggable -let startX = 0; -let startY = 0; -let initialX = 0; -let initialY = 0; -const x = ref(0); -const y = ref(0); -const isDragging = ref(false); +let startX = 0 +let startY = 0 +let initialX = 0 +let initialY = 0 +const x = ref(0) +const y = ref(0) +const isDragging = ref(false) // set modal position center of the screen onMounted(() => { - x.value = (window.innerWidth / 2) - 150; - y.value = (window.innerHeight / 2) - 100; -}); + x.value = window.innerWidth / 2 - 150 + y.value = window.innerHeight / 2 - 100 +}) const startDrag = (event: MouseEvent) => { - isDragging.value = true; - startX = event.clientX; - startY = event.clientY; - initialX = x.value; - initialY = y.value; - event.preventDefault(); -}; + isDragging.value = true + startX = event.clientX + startY = event.clientY + initialX = x.value + initialY = y.value + event.preventDefault() +} const drag = (event: MouseEvent) => { - if (!isDragging.value) return; - const dx = event.clientX - startX; - const dy = event.clientY - startY; - x.value = initialX + dx; - y.value = initialY + dy; -}; + if (!isDragging.value) return + const dx = event.clientX - startX + const dy = event.clientY - startY + x.value = initialX + dx + y.value = initialY + dy +} const stopDrag = () => { - isDragging.value = false; -}; + isDragging.value = false +} onMounted(() => { - addEventListener('mousemove', drag); - addEventListener('mouseup', stopDrag); -}); + addEventListener('mousemove', drag) + addEventListener('mouseup', stopDrag) +}) onUnmounted(() => { - removeEventListener('mousemove', drag); - removeEventListener('mouseup', stopDrag); -}); + removeEventListener('mousemove', drag) + removeEventListener('mouseup', stopDrag) +}) \ No newline at end of file + diff --git a/src/components/utilities/Notifications.vue b/src/components/utilities/Notifications.vue index f59b1c6..c88de18 100644 --- a/src/components/utilities/Notifications.vue +++ b/src/components/utilities/Notifications.vue @@ -1,10 +1,6 @@