forked from Simnation/Main
2 lines
15 KiB
JavaScript
2 lines
15 KiB
JavaScript
import{Q as I}from"./QTooltip.9d840032.js";import{_ as R,R as O,P as A,o as r,X as p,a7 as h,a as c,w as a,a6 as E,T as b,r as T,a5 as k,U as y,c as g,W as x,V as f,ab as C,ao as P,Y as $,Z as _,S as M,a9 as Y,L as w,aO as D,bC as N,aF as L}from"./app-014d9ed9.js";import{F as j,I as H,E as V,A as G,Q as z,a as B}from"./EditGameItem.ca08f00f.js";import{B as q}from"./BasicDialog.9dd9de92.js";import{B as Q}from"./BasicPrompt.0f8aac67.js";import{d as X}from"./utils.9ce591f3.js";import{e as U}from"./export-file.dc78ba05.js";import"./position-engine.65ebcb34.js";import"./selection.2a17b691.js";import"./externalHosting.js";import"./QImg.91aecb73.js";import"./QItemLabel.b6dd3adb.js";import"./QSelect.d7ce3d4c.js";import"./rtl.b51694b1.js";import"./QMarkupTable.ba6854cc.js";import"./QForm.8d79ab03.js";const F={name:"Inventory",components:{FakeItem:j,Item:H},data(){return{RESOURCE:O,ACTION:A,loading:!1,amount:0,supportStashSlots:250,playerSlots:0,inventory:[],supStash:[],dragging:!1,dragAndDrop:{shiftX:null,shiftY:null,clonedElement:null,itemIndex:null,selectedElement:null}}},computed:{isMobile(){return this.$q.platform.is.mobile}},methods:{can:X,isNumeric(e){return/^-?\d+$/.test(e)},async loadInventory(){await this.$axios.get(`/api/players/${this.$route.params.citizenid}/inventory`).then(e=>{const t=e.data.resCode,s=e.data.inventory,l=e.data.playerSlots,n=e.data.stash;if(!t||!s||!l||!n){this.$q.notify({message:"Error",position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.inventory.msg.error.${e.data.resMsg}`)}),setTimeout(this.$router.back(),1500);return}this.updateInventory(s,l),this.updateStash(n)}).catch(()=>{this.$q.notify({message:"Error",position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t("components.inventory.msg.error.failedLoad")}),this.$q.dialog({component:q,componentProps:{title:this.$i18n.t("components.inventory.msg.error.fixPlayer"),message:this.$i18n.t("components.inventory.msg.error.fixPlayerText")},cancel:!0,persistent:!0}).onOk(()=>{this.$axios.post(`/api/players/${this.$route.params.citizenid}/inventory/fix-items`).then(e=>{const{resCode:t,resMsg:s,resItems:l}=e.data;if(!t){this.$q.notify({message:"Error",position:"top",color:"red",icon:"fas fa-exclamation-triangle"}),this.$router.push({name:"game-player-list"});return}U("deletedItems.txt",Object.entries(l).map(([n,i])=>`Slot ${n}: ${JSON.stringify(i,null,4)}`).join(`
|
|
`)),this.$q.dialog({component:Q,componentProps:{title:this.$i18n.t("general.success"),message:this.$i18n.t("components.inventory.msg.success.fixedPlayerItems")},persistent:!0}).onDismiss(()=>{this.$router.push({name:"game-player-detail",params:{citizenid:this.$route.params.citizenid}}).then(()=>{this.$router.go()})})})}).onCancel(()=>{this.$router.back()})})},updateInventory(e,t){const s=Object.keys(e).length>t?Object.keys(e).length:t,l=new Array(s).fill(null);for(const[n,i]of Object.entries(e)){const m=i.slot;l[m-1]=i}this.playerSlots=t,this.inventory=l},updateStash(e){const t=Object.keys(e).length>this.supportStashSlots?Object.keys(e).length:this.supportStashSlots,s=new Array(t).fill(null);for(const[l,n]of Object.entries(e)){const i=n.slot;s[i-1]=n}this.supStash=s},getTarget(e){const t=e.changedTouches?e.changedTouches[0]:!1;let s=e.target;return t&&(s=document.elementFromPoint(t.clientX,t.clientY)),s},selectItem(e){if(!this.can(A.GAME.PLAYER.INVENTORY,O.GAME)||this.dragging)return;this.dragging=!0;const t=document.getElementById(e.target.id);if(!t){this.dragging=!1;return}const s=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,l=(s||e).clientX,n=(s||e).clientY;this.dragAndDrop.shiftX=l-t.getBoundingClientRect().left,this.dragAndDrop.shiftY=n-t.getBoundingClientRect().top,this.dragAndDrop.selectedElement={style:t.style,classList:t.classList.toString()},this.dragAndDrop.itemIndex=e.target.id;const i=t.cloneNode(!0);i.id=`cloned-${t.id}`,document.getElementById("app").append(i),this.clonedElement=document.getElementById(`cloned-${t.id}`),this.clonedElement.style.left=`${l-this.dragAndDrop.shiftX}px`,this.clonedElement.style.top=`${n-this.dragAndDrop.shiftY}px`,this.clonedElement.classList.add("item-clone"),this.clonedElement.style.position="absolute",t.style.pointerEvents="none",t.style.setProperty("opacity","0.2","important"),document.addEventListener("mouseup",this.dropItem),document.addEventListener("touchend",this.dropItem),document.addEventListener("touchmove",this.updatePosition,{passive:!1}),document.addEventListener("mousemove",this.updatePosition)},updatePosition(e){const t=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,s=(t||e).clientX,l=(t||e).clientY;this.clonedElement.style.left=`${s-this.dragAndDrop.shiftX}px`,this.clonedElement.style.top=`${l-this.dragAndDrop.shiftY}px`,this.mouseOver(e),e.preventDefault()},mouseOver(e){const t=this.getTarget(e);if(this.lastHoverID){const s=document.getElementById(this.lastHoverID);s.style.setProperty("border","2px solid transparent"),s.children[0].classList.remove("text-negative"),this.lastHoverID=null}if(!(!e||!t||!t.id||t.id==="")){if(!this.lastHoverID&&t.id==="delete:0"){const s=document.getElementById(t.id);s.style.setProperty("border","2px dashed var(--q-negative)","important"),s.children[0].classList.add("text-negative"),this.lastHoverID=t.id}if(!this.lastHoverID&&t.id==="edit:0"){const s=document.getElementById(t.id);s.style.setProperty("border","2px dashed var(--q-primary)","important"),s.children[0].classList.add("text-primary"),this.lastHoverID=t.id}}},async dropItem(e){this.dragging=!1;const t=this.getTarget(e);if(this.lastHoverID){const o=document.getElementById(this.lastHoverID);o.style.setProperty("border","2px solid transparent"),o.children[0].classList.remove("text-negative"),o.children[0].classList.remove("text-primary"),this.lastHoverID=null}document.removeEventListener("mouseup",this.dropItem),document.removeEventListener("touchend",this.dropItem),document.removeEventListener("touchmove",this.updatePosition),document.removeEventListener("mousemove",this.updatePosition),this.clonedElement.remove();const s=document.getElementById(this.dragAndDrop.itemIndex);if(s.style.pointerEvents="all",s.style.setProperty("opacity","1.0","important"),!e||!t||!t.id||t.id==="")return;const[l,n]=t.id.split(":");if(!l||!this.isNumeric(n))return;const[i,m]=this.dragAndDrop.itemIndex.split(":");if(!(!i||!this.isNumeric(m)||m===n&&i===l)){if(this.loading=!0,t.id==="delete:0"){this.$q.dialog({component:q,componentProps:{title:this.$i18n.t("components.inventory.deleteHeader"),message:this.$i18n.t("components.inventory.deleteMsg")},cancel:!0,persistent:!0}).onOk(()=>{this.$axios.post(`/api/players/${this.$route.params.citizenid}/inventory/delete`,{fromStorage:i,fromSlot:parseInt(m)+1,amount:this.amount}).then(o=>{const d=o.data.resCode;if(this.loading=!1,!d){const u=o.data.resMsg;this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.inventory.msg.error.${u}`)});return}this.$q.notify({message:this.$i18n.t("general.success"),position:"top",color:"green",icon:"fas fa-check",caption:this.$i18n.t("general.deleted")})}).catch(o=>{console.error(o),this.loading=!1})}).onCancel(()=>{this.loading=!1});return}if(t.id==="edit:0"){this.$q.dialog({component:V,componentProps:{title:this.$i18n.t("components.item.edit"),item:this.getItem(i,m)},cancel:!0,persistent:!0}).onOk(o=>{o.item.amount<=0&&(o.item.amount=1),this.$axios.post(`/api/players/${this.$route.params.citizenid}/inventory/edit`,{fromStorage:i,fromSlot:parseInt(m)+1,item:o.item}).then(d=>{const u=d.data.resCode;if(this.loading=!1,!u){const v=d.data.resMsg;this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.inventory.msg.error.${v}`)});return}this.$q.notify({message:this.$i18n.t("general.success"),position:"top",color:"green",icon:"fas fa-check",caption:this.$i18n.t("general.saved")})}).catch(d=>{console.error(d),this.loading=!1})}).onCancel(()=>{this.loading=!1});return}await this.$axios.post(`/api/players/${this.$route.params.citizenid}/inventory/move`,{fromStorage:i,toStorage:l,fromSlot:parseInt(m)+1,toSlot:parseInt(n)+1,amount:this.amount}).then(o=>{const d=o.data.resCode;if(this.loading=!1,!d){const u=o.data.resMsg;this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.item.msg.error.${u}`)}),u==="moved"&&this.loadInventory()}})}},addItem(e){this.$q.dialog({component:G,componentProps:{title:this.$i18n.t("components.inventory.addItemHeader")},cancel:!0,persistent:!0}).onOk(t=>{if(!t.item.name){this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t("components.inventory.msg.error.noItemName")});return}this.loading=!0,t.item.amount||(t.item.amount=1),this.$axios.post(`/api/players/${this.$route.params.citizenid}/inventory/add`,{storage:e,item:t.item}).then(s=>{const l=s.data.resCode;if(this.loading=!1,!l){const n=s.data.resMsg;this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.inventory.msg.error.${n}`)});return}this.$q.notify({message:this.$i18n.t("general.success"),position:"top",color:"green",icon:"fas fa-check",caption:this.$i18n.t("general.added")})}).catch(s=>{console.error(s),this.loading=!1})}).onCancel(()=>{this.loading=!1})},clearInventory(){this.$q.dialog({component:q,componentProps:{title:this.$i18n.t("components.inventory.clearInvHeader"),message:this.$i18n.t("components.inventory.clearInvMsg")},cancel:!0,persistent:!0}).onOk(()=>{this.loading=!0,this.$axios.post(`/api/players/${this.$route.params.citizenid}/inventory/clear`).then(e=>{const t=e.data.resCode;if(this.loading=!1,!t){const s=e.data.resMsg;this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.inventory.msg.error.${s}`)});return}this.$q.notify({message:this.$i18n.t("general.success"),position:"top",color:"green",icon:"fas fa-check",caption:this.$i18n.t("general.cleared")})}).catch(e=>{console.error(e),this.loading=!1})}).onCancel(()=>{this.loading=!1})},getItem(e,t){return(e==="p"?this.inventory:this.supStash)[t]}},async mounted(){await this.loadInventory(),this.sockets.subscribe(`inventory::${this.$route.params.citizenid}`,e=>{this.updateInventory(e.items,this.playerSlots)}),this.sockets.subscribe("supstash::update",e=>{this.updateStash(e.stash)}),this.$socket.emit("room::join",`inventory:${this.$route.params.citizenid}`),this.$socket.emit("room::join","supstash")},beforeUnmount(){this.sockets.unsubscribe(`inventory::${this.$route.params.citizenid}`),this.sockets.unsubscribe("supstash::update"),this.$socket.emit("room::leave",`inventory:${this.$route.params.citizenid}`),this.$socket.emit("room::leave","supstash")}},J={class:"row justify-between"},W={class:"row"},Z={class:"text-h6"},K=["id"],ee={class:"extra-dropzone row justify-center items-center text-main"},te={class:"extra-dropzone row justify-center items-center text-main"},se={class:"row"},ne={class:"text-h6"},oe=["id"];function ie(e,t,s,l,n,i){const m=T("item"),S=T("fake-item");return r(),p("div",J,[h("div",{class:b(["q-pa-sm",{"full-width":i.isMobile}])},[c(E,{class:"bg-secondary"},{default:a(()=>[c(k,{class:"col-12"},{default:a(()=>[h("div",W,[h("div",Z,y(e.$t("components.inventory.playerInventory")),1),i.can(n.ACTION.GAME.PLAYER.INVENTORY,n.RESOURCE.GAME)?(r(),g(C,{key:0,color:"primary",icon:"add",class:"q-ml-auto",onClick:t[0]||(t[0]=o=>i.addItem("p"))},{default:a(()=>[n.dragging?f("",!0):(r(),g(I,{key:0},{default:a(()=>[x(y(e.$t("components.inventory.addItemTip")),1)]),_:1}))]),_:1})):f("",!0),i.can(n.ACTION.GAME.PLAYER.INVENTORY,n.RESOURCE.GAME)?(r(),g(C,{key:1,color:"primary",icon:"clear",class:"q-ml-sm",onClick:i.clearInventory},{default:a(()=>[n.dragging?f("",!0):(r(),g(I,{key:0},{default:a(()=>[x(y(e.$t("components.inventory.clearInvTip")),1)]),_:1}))]),_:1},8,["onClick"])):f("",!0)])]),_:1}),c(k,{class:"col-12 inventory-wrapper q-pa-none"},{default:a(()=>[c(P,{appear:"","enter-active-class":"animated fadeIn","leave-active-class":"animated fadeOut"},{default:a(()=>[h("div",{class:b(i.isMobile?"inventory-container-mobile":"inventory-container")},[(r(!0),p($,null,_(n.inventory,(o,d)=>w((r(),p("div",D({key:`p-${d}`,class:"item-slot",id:`p:${d}`},N(o?{mousedown:i.selectItem,touchstart:i.selectItem}:{},!0)),[o?(r(),p($,{key:0},[c(m,{item:o,isPlayer:!0},null,8,["item"]),o.info&&Object.keys(o.info).length!==0&&!n.dragging?(r(),g(I,{key:0,offset:[0,8]},{default:a(()=>[(r(!0),p($,null,_(o.info,(u,v)=>(r(),p("div",{key:`p-${d}-${v}`},y(v)+": "+y(u),1))),128))]),_:2},1024)):f("",!0)],64)):(r(),g(S,{key:1,slotNumber:d+1},null,8,["slotNumber"]))],16,K)),[[L,!n.loading]])),128))],2)]),_:1})]),_:1}),c(z,{dark:"",showing:n.loading},{default:a(()=>[c(B,{color:"primary",size:"2em"})]),_:1},8,["showing"])]),_:1})],2),h("div",{class:b(["q-pa-sm self-center actions",{"full-width":i.isMobile}])},[c(E,{class:"bg-secondary q-mb-md",id:"edit:0",style:{border:"2px solid transparent"}},{default:a(()=>[h("div",ee,[c(M,{name:"edit",size:"5vh"})])]),_:1}),c(E,{class:"bg-secondary"},{default:a(()=>[c(Y,{"label-color":"primary","input-style":{color:"var(--q-main)"},filled:"",type:"number",modelValue:n.amount,"onUpdate:modelValue":t[1]||(t[1]=o=>n.amount=o),modelModifiers:{number:!0},label:e.$t("components.inventory.amount")},null,8,["input-style","modelValue","label"])]),_:1}),c(E,{class:"bg-secondary q-mt-md",id:"delete:0",style:{border:"2px solid transparent"}},{default:a(()=>[h("div",te,[c(M,{name:"delete",size:"5vh"})])]),_:1})],2),h("div",{class:b(["q-pa-sm",{"full-width":i.isMobile}])},[c(E,{class:"bg-secondary"},{default:a(()=>[c(k,{class:"col-12"},{default:a(()=>[h("div",se,[h("div",ne,y(e.$t("components.inventory.supporterStash")),1),i.can(n.ACTION.GAME.PLAYER.INVENTORY,n.RESOURCE.GAME)?(r(),g(C,{key:0,color:"primary",icon:"add",class:"q-ml-auto",onClick:t[2]||(t[2]=o=>i.addItem("s"))},{default:a(()=>[n.dragging?f("",!0):(r(),g(I,{key:0},{default:a(()=>[x(y(e.$t("components.inventory.addItemTip")),1)]),_:1}))]),_:1})):f("",!0)])]),_:1}),c(k,{class:"col-12 inventory-wrapper q-pa-none"},{default:a(()=>[c(P,{appear:"","enter-active-class":"animated fadeIn","leave-active-class":"animated fadeOut"},{default:a(()=>[h("div",{class:b(i.isMobile?"inventory-container-mobile":"inventory-container")},[(r(!0),p($,null,_(n.supStash,(o,d)=>w((r(),p("div",D({key:`s-${d}`,class:"item-slot",id:`s:${d}`},N(o?{mousedown:i.selectItem,touchstart:i.selectItem}:{},!0)),[o?(r(),p($,{key:0},[c(m,{item:o},null,8,["item"]),o.info&&Object.keys(o.info).length!==0&&!n.dragging?(r(),g(I,{key:0,offset:[0,8]},{default:a(()=>[(r(!0),p($,null,_(o.info,(u,v)=>(r(),p("div",{key:`p-${d}-${v}`},y(v)+": "+y(u),1))),128))]),_:2},1024)):f("",!0)],64)):(r(),g(S,{key:1}))],16,oe)),[[L,!n.loading]])),128))],2)]),_:1})]),_:1}),c(z,{dark:"",showing:n.loading},{default:a(()=>[c(B,{color:"primary",size:"2em"})]),_:1},8,["showing"])]),_:1})],2)])}const be=R(F,[["render",ie]]);export{be as default};
|