d2b8d7dc04
* Active authentication Oauth - Google authentication - GitHub authentication - Linkedin authentication Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Finish connexion et get user info connexion Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Fix lint error Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Change the expires token for 30 days Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Update connexion stratgey - Set last room when it will be created and not when connexion is openned - Add '/login' end point permit to logout and open iframe to log user - Add logout feature permit to logout in front Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Implement logout and revoke token with hydra Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Fix pull develop conflict Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Profile url (#1399) * Create function that permit to get profile URL Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Continue profil user Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Add menu and logout button Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Update last room use Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Profile callback permit to get url profile setting from admin Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Finish profile show Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Delete profileUrl will be not use today Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Correct lint Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Update size of iframe Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Delete console log Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com> * Update feedback ARP Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
71 lines
2.4 KiB
TypeScript
71 lines
2.4 KiB
TypeScript
import { writable } from "svelte/store";
|
|
import type { PlayerInterface } from "../Phaser/Game/PlayerInterface";
|
|
import type { RoomConnection } from "../Connexion/RoomConnection";
|
|
import { getRandomColor } from "../WebRtc/ColorGenerator";
|
|
import { localUserStore } from "../Connexion/LocalUserStore";
|
|
|
|
let idCount = 0;
|
|
|
|
/**
|
|
* A store that contains the list of players currently known.
|
|
*/
|
|
function createPlayersStore() {
|
|
let players = new Map<number, PlayerInterface>();
|
|
|
|
const { subscribe, set, update } = writable(players);
|
|
|
|
return {
|
|
subscribe,
|
|
connectToRoomConnection: (roomConnection: RoomConnection) => {
|
|
players = new Map<number, PlayerInterface>();
|
|
set(players);
|
|
roomConnection.onUserJoins((message) => {
|
|
update((users) => {
|
|
users.set(message.userId, {
|
|
userId: message.userId,
|
|
name: message.name,
|
|
characterLayers: message.characterLayers,
|
|
visitCardUrl: message.visitCardUrl,
|
|
companion: message.companion,
|
|
userUuid: message.userUuid,
|
|
color: getRandomColor(),
|
|
});
|
|
return users;
|
|
});
|
|
});
|
|
roomConnection.onUserLeft((userId) => {
|
|
update((users) => {
|
|
users.delete(userId);
|
|
return users;
|
|
});
|
|
});
|
|
},
|
|
getPlayerById(userId: number): PlayerInterface | undefined {
|
|
return players.get(userId);
|
|
},
|
|
addFacticePlayer(name: string): number {
|
|
let userId: number | null = null;
|
|
players.forEach((p) => {
|
|
if (p.name === name) userId = p.userId;
|
|
});
|
|
if (userId) return userId;
|
|
const newUserId = idCount--;
|
|
update((users) => {
|
|
users.set(newUserId, {
|
|
userId: newUserId,
|
|
name,
|
|
characterLayers: [],
|
|
visitCardUrl: null,
|
|
companion: null,
|
|
userUuid: "dummy",
|
|
color: getRandomColor(),
|
|
});
|
|
return users;
|
|
});
|
|
return newUserId;
|
|
},
|
|
};
|
|
}
|
|
|
|
export const playersStore = createPlayersStore();
|