workadventure/front/src/Stores/OutlineColorStore.ts

64 lines
1.4 KiB
TypeScript
Raw Normal View History

import { writable } from "svelte/store";
export function createColorStore() {
const { subscribe, set } = writable<number | undefined>(undefined);
2022-01-27 14:05:30 +01:00
let followColor: number | undefined = undefined;
let apiColor: number | undefined = undefined;
2022-02-02 13:30:49 +01:00
2022-01-27 14:05:30 +01:00
let pointedByPointer: boolean = false;
let pointedByCharacter: boolean = false;
const updateColor = () => {
2022-01-27 14:05:30 +01:00
if (pointedByPointer || pointedByCharacter) {
set(0xffff00);
} else {
2022-01-27 14:05:30 +01:00
set(followColor ?? apiColor);
}
};
return {
subscribe,
pointerOver() {
2022-01-27 14:05:30 +01:00
pointedByPointer = true;
updateColor();
},
pointerOut() {
2022-01-27 14:05:30 +01:00
pointedByPointer = false;
updateColor();
},
2022-01-27 14:05:30 +01:00
characterCloseBy() {
pointedByCharacter = true;
updateColor();
},
2022-01-27 14:05:30 +01:00
characterFarAway() {
pointedByCharacter = false;
updateColor();
},
setFollowColor(newColor: number) {
followColor = newColor;
updateColor();
},
removeFollowColor() {
followColor = undefined;
updateColor();
},
setApiColor(newColor: number) {
apiColor = newColor;
updateColor();
},
removeApiColor() {
apiColor = undefined;
updateColor();
},
};
}