forked from Simnation/Main
fix
This commit is contained in:
parent
c01fa3bb74
commit
2ccf477c6c
49 changed files with 6 additions and 2 deletions
|
@ -0,0 +1,120 @@
|
|||
import { writable, Writable, get } from "svelte/store";
|
||||
import fetchNUI from '../utils/fetch';
|
||||
import type { Job, JobManifest, side, nuiUpdateJobMessage } from '../types/types';
|
||||
import PanelStore from "./PanelStore";
|
||||
|
||||
export interface nuiOpenMessage {
|
||||
activeJob: string;
|
||||
onDuty: boolean;
|
||||
jobs: JobManifest;
|
||||
side: side;
|
||||
}
|
||||
|
||||
interface JobState {
|
||||
jobManifest: Writable<JobManifest>;
|
||||
activeJob: Writable<string>;
|
||||
onDuty: Writable<boolean>;
|
||||
}
|
||||
|
||||
const store = () => {
|
||||
const JobStore: JobState = {
|
||||
jobManifest: writable({
|
||||
"civilian": [],
|
||||
"whitelist": [],
|
||||
}),
|
||||
activeJob: writable("police person"),
|
||||
onDuty: writable(false),
|
||||
}
|
||||
|
||||
const methods = {
|
||||
deleteJob(nuiName: string, nuiRank: number, category: string) {
|
||||
fetchNUI("removejob", {
|
||||
name: nuiName,
|
||||
grade: nuiRank,
|
||||
});
|
||||
// Remove job from list
|
||||
JobStore.jobManifest.update((state) => {
|
||||
state[category] = state[category].filter((element: Job) => element.name != nuiName);
|
||||
return state;
|
||||
});
|
||||
},
|
||||
receiveOpenMessage(data: nuiOpenMessage) {
|
||||
JobStore.jobManifest.set(data.jobs);
|
||||
JobStore.activeJob.set(data.activeJob);
|
||||
JobStore.onDuty.set(data.onDuty);
|
||||
PanelStore.side.set(data.side || "right");
|
||||
},
|
||||
recieveUpdateJob(data: nuiUpdateJobMessage) {
|
||||
const activeJob: string = get(JobStore.activeJob);
|
||||
if (activeJob == data.name) {
|
||||
JobStore.onDuty.set(data.onDuty);
|
||||
}
|
||||
|
||||
JobStore.jobManifest.update((state) => {
|
||||
function updateJob(kind: "whitelist" | "civilian", index: number) {
|
||||
let changeJob = state[kind][index];
|
||||
changeJob.grade = data.grade;
|
||||
changeJob.gradeLabel = data.gradeLabel;
|
||||
changeJob.salary = data.salary;
|
||||
}
|
||||
|
||||
function newJob(): Job {
|
||||
return {
|
||||
name: data.name,
|
||||
label: data.label,
|
||||
description: data.description,
|
||||
salary: data.salary,
|
||||
gradeLabel: data.gradeLabel,
|
||||
grade: data.grade,
|
||||
active: 0,
|
||||
icon: data.icon,
|
||||
}
|
||||
}
|
||||
|
||||
let findSameName = (job: Job) => {
|
||||
return job.name == data.name
|
||||
}
|
||||
|
||||
const accessString: "civilian" | "whitelist" = data.isWhitelist ? "whitelist" : "civilian";
|
||||
let index = state[accessString]?.findIndex(findSameName);
|
||||
|
||||
if (index != -1) {
|
||||
updateJob(accessString, index);
|
||||
} else {
|
||||
state[accessString] = [...state[accessString], newJob()]
|
||||
}
|
||||
|
||||
return state;
|
||||
})
|
||||
},
|
||||
async setActiveJob(jobName: string, nuiName: string, nuiRank: number) {
|
||||
JobStore.activeJob.set(jobName);
|
||||
// Needs to give back onDuty
|
||||
let data = await fetchNUI("selectjob", {
|
||||
name: nuiName,
|
||||
grade: nuiRank,
|
||||
});
|
||||
JobStore.onDuty.set(data?.onDuty);
|
||||
},
|
||||
unSetActiveJob() {
|
||||
JobStore.activeJob.set("");
|
||||
JobStore.onDuty.set(false);
|
||||
// Unselect current job by setting player to unemployed
|
||||
fetchNUI("selectjob", {
|
||||
name: 'unemployed',
|
||||
grade: 0,
|
||||
});
|
||||
},
|
||||
toggleDuty() {
|
||||
JobStore.onDuty.update(state => !state);
|
||||
fetchNUI('toggleduty', null);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...JobStore,
|
||||
...methods
|
||||
}
|
||||
}
|
||||
|
||||
export default store();
|
|
@ -0,0 +1,62 @@
|
|||
import { writable, Writable } from "svelte/store";
|
||||
import type { side } from '../types/types';
|
||||
import fetchNUI from '../utils/fetch';
|
||||
import CivilianSVG from '../components/atoms/svgs/CivilianSVG.svelte';
|
||||
import WhiteListSVG from '../components/atoms/svgs/WhitelistSVG.svelte';
|
||||
|
||||
interface panel {
|
||||
name: string;
|
||||
icon: any;
|
||||
}
|
||||
|
||||
interface PanelState {
|
||||
show: Writable<boolean>;
|
||||
panelActive: Writable<string>;
|
||||
panels: Writable<Array<panel>>;
|
||||
side: Writable<side>;
|
||||
}
|
||||
|
||||
const panels: Array<panel> = [
|
||||
{
|
||||
name: "whitelist",
|
||||
icon: WhiteListSVG,
|
||||
},
|
||||
{
|
||||
name: "civilian",
|
||||
icon: CivilianSVG,
|
||||
}
|
||||
]
|
||||
|
||||
const store = () => {
|
||||
const PanelStore: PanelState = {
|
||||
panelActive: writable(""),
|
||||
panels: writable(panels),
|
||||
show: writable(false),
|
||||
side: writable("right"),
|
||||
}
|
||||
|
||||
const methods = {
|
||||
handleKeyUp(event: KeyboardEvent) {
|
||||
if (event.key == "Escape") {
|
||||
methods.setShow(false);
|
||||
fetchNUI("closemenu", null);
|
||||
}
|
||||
},
|
||||
setActive(name: string) {
|
||||
PanelStore.panelActive.set(name);
|
||||
},
|
||||
setShow(show: boolean) {
|
||||
PanelStore.show.set(show);
|
||||
},
|
||||
setSide(side: side) {
|
||||
PanelStore.side.set(side);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...PanelStore,
|
||||
...methods
|
||||
}
|
||||
}
|
||||
|
||||
export default store();
|
|
@ -0,0 +1,2 @@
|
|||
const debugMode: boolean = import.meta.env.DEV;
|
||||
export default debugMode;
|
Loading…
Add table
Add a link
Reference in a new issue