Renaming biggestAvailableArray to biggestAvailableArea + removing duplicated code.

This commit is contained in:
David Négrier 2021-06-21 14:07:03 +02:00
parent 227575043b
commit 77a4d23301
9 changed files with 45 additions and 91 deletions

View File

@ -2,7 +2,7 @@
import Peer from "./Peer.svelte"; import Peer from "./Peer.svelte";
import {layoutStore} from "../../Stores/LayoutStore"; import {layoutStore} from "../../Stores/LayoutStore";
import {afterUpdate, onDestroy} from "svelte"; import {afterUpdate, onDestroy} from "svelte";
import {biggestAvailableArrayStore} from "../../Stores/BiggestAvailableArrayStore"; import {biggestAvailableAreaStore} from "../../Stores/BiggestAvailableAreaStore";
let cssClass = 'one-col'; let cssClass = 'one-col';
@ -24,7 +24,7 @@
}); });
afterUpdate(() => { afterUpdate(() => {
biggestAvailableArrayStore.recompute(); biggestAvailableAreaStore.recompute();
}) })
</script> </script>

View File

@ -1,17 +1,7 @@
<script lang="typescript"> <script lang="typescript">
import type {ScreenSharingLocalMedia} from "../../Stores/ScreenSharingStore"; import type {ScreenSharingLocalMedia} from "../../Stores/ScreenSharingStore";
import {videoFocusStore} from "../../Stores/VideoFocusStore"; import {videoFocusStore} from "../../Stores/VideoFocusStore";
import {srcObject} from "./utils";
function srcObject(node: HTMLVideoElement, stream: MediaStream) {
node.srcObject = stream;
return {
update(newStream: MediaStream) {
if (node.srcObject != newStream) {
node.srcObject = newStream
}
}
}
}
export let peer : ScreenSharingLocalMedia; export let peer : ScreenSharingLocalMedia;
let stream = peer.stream; let stream = peer.stream;

View File

@ -3,10 +3,10 @@
import {layoutStore} from "../../Stores/LayoutStore"; import {layoutStore} from "../../Stores/LayoutStore";
import {videoFocusStore} from "../../Stores/VideoFocusStore"; import {videoFocusStore} from "../../Stores/VideoFocusStore";
import {afterUpdate} from "svelte"; import {afterUpdate} from "svelte";
import {biggestAvailableArrayStore} from "../../Stores/BiggestAvailableArrayStore"; import {biggestAvailableAreaStore} from "../../Stores/BiggestAvailableAreaStore";
afterUpdate(() => { afterUpdate(() => {
biggestAvailableArrayStore.recompute(); biggestAvailableAreaStore.recompute();
}) })
</script> </script>

View File

@ -1,39 +1,13 @@
<script lang="ts"> <script lang="ts">
import type {ScreenSharingPeer} from "../../WebRtc/ScreenSharingPeer"; import type {ScreenSharingPeer} from "../../WebRtc/ScreenSharingPeer";
import {videoFocusStore} from "../../Stores/VideoFocusStore"; import {videoFocusStore} from "../../Stores/VideoFocusStore";
import {getColorByString, srcObject} from "./utils";
export let peer: ScreenSharingPeer; export let peer: ScreenSharingPeer;
let streamStore = peer.streamStore; let streamStore = peer.streamStore;
let name = peer.userName; let name = peer.userName;
let statusStore = peer.statusStore; let statusStore = peer.statusStore;
function srcObject(node: HTMLVideoElement, stream: MediaStream) {
node.srcObject = stream;
return {
update(newStream: MediaStream) {
if (node.srcObject != newStream) {
node.srcObject = newStream
}
}
}
}
function getColorByString(str: string) : string|null {
let hash = 0;
if (str.length === 0) {
return null;
}
for (let i = 0; i < str.length; i++) {
hash = str.charCodeAt(i) + ((hash << 5) - hash);
hash = hash & hash;
}
let color = '#';
for (let i = 0; i < 3; i++) {
const value = (hash >> (i * 8)) & 255;
color += ('00' + value.toString(16)).substr(-2);
}
return color;
}
</script> </script>
<div class="video-container"> <div class="video-container">

View File

@ -6,6 +6,7 @@
import blockSignImg from "./images/blockSign.svg"; import blockSignImg from "./images/blockSign.svg";
import {videoFocusStore} from "../../Stores/VideoFocusStore"; import {videoFocusStore} from "../../Stores/VideoFocusStore";
import {showReportScreenStore} from "../../Stores/ShowReportScreenStore"; import {showReportScreenStore} from "../../Stores/ShowReportScreenStore";
import {getColorByString, srcObject} from "./utils";
export let peer: VideoPeer; export let peer: VideoPeer;
let streamStore = peer.streamStore; let streamStore = peer.streamStore;
@ -13,34 +14,6 @@
let statusStore = peer.statusStore; let statusStore = peer.statusStore;
let constraintStore = peer.constraintsStore; let constraintStore = peer.constraintsStore;
function getColorByString(str: string) : string|null {
let hash = 0;
if (str.length === 0) {
return null;
}
for (let i = 0; i < str.length; i++) {
hash = str.charCodeAt(i) + ((hash << 5) - hash);
hash = hash & hash;
}
let color = '#';
for (let i = 0; i < 3; i++) {
const value = (hash >> (i * 8)) & 255;
color += ('00' + value.toString(16)).substr(-2);
}
return color;
}
function srcObject(node: HTMLVideoElement, stream: MediaStream) {
node.srcObject = stream;
return {
update(newStream: MediaStream) {
if (node.srcObject != newStream) {
node.srcObject = newStream
}
}
}
}
function openReport(peer: VideoPeer): void { function openReport(peer: VideoPeer): void {
showReportScreenStore.set({ userId:peer.userId, userName: peer.userName }); showReportScreenStore.set({ userId:peer.userId, userName: peer.userName });
} }

View File

@ -0,0 +1,27 @@
export function getColorByString(str: string) : string|null {
let hash = 0;
if (str.length === 0) {
return null;
}
for (let i = 0; i < str.length; i++) {
hash = str.charCodeAt(i) + ((hash << 5) - hash);
hash = hash & hash;
}
let color = '#';
for (let i = 0; i < 3; i++) {
const value = (hash >> (i * 8)) & 255;
color += ('00' + value.toString(16)).substr(-2);
}
return color;
}
export function srcObject(node: HTMLVideoElement, stream: MediaStream) {
node.srcObject = stream;
return {
update(newStream: MediaStream) {
if (node.srcObject != newStream) {
node.srcObject = newStream
}
}
}
}

View File

@ -94,7 +94,7 @@ import {waScaleManager} from "../Services/WaScaleManager";
import {peerStore, screenSharingPeerStore} from "../../Stores/PeerStore"; import {peerStore, screenSharingPeerStore} from "../../Stores/PeerStore";
import {EmoteManager} from "./EmoteManager"; import {EmoteManager} from "./EmoteManager";
import {videoFocusStore} from "../../Stores/VideoFocusStore"; import {videoFocusStore} from "../../Stores/VideoFocusStore";
import {biggestAvailableArrayStore} from "../../Stores/BiggestAvailableArrayStore"; import {biggestAvailableAreaStore} from "../../Stores/BiggestAvailableAreaStore";
export interface GameSceneInitInterface { export interface GameSceneInitInterface {
initPosition: PointInterface|null, initPosition: PointInterface|null,
@ -508,8 +508,7 @@ export class GameScene extends DirtyScene {
this.reposition(); this.reposition();
// From now, this game scene will be notified of reposition events // From now, this game scene will be notified of reposition events
//layoutManager.setListener(this); biggestAvailableAreaStore.subscribe((box) => this.updateCameraOffset(box));
biggestAvailableArrayStore.subscribe((box) => this.updateCameraOffset(box));
this.triggerOnMapLayerPropertyChange(); this.triggerOnMapLayerPropertyChange();
this.listenToIframeEvents(); this.listenToIframeEvents();
@ -1115,7 +1114,7 @@ ${escapedMessage}
initCamera() { initCamera() {
this.cameras.main.setBounds(0,0, this.Map.widthInPixels, this.Map.heightInPixels); this.cameras.main.setBounds(0,0, this.Map.widthInPixels, this.Map.heightInPixels);
this.cameras.main.startFollow(this.CurrentPlayer, true); this.cameras.main.startFollow(this.CurrentPlayer, true);
biggestAvailableArrayStore.recompute(); biggestAvailableAreaStore.recompute();
} }
addLayer(Layer : Phaser.Tilemaps.TilemapLayer){ addLayer(Layer : Phaser.Tilemaps.TilemapLayer){
@ -1495,7 +1494,7 @@ ${escapedMessage}
this.openChatIcon.setY(this.game.renderer.height - 2); this.openChatIcon.setY(this.game.renderer.height - 2);
// Recompute camera offset if needed // Recompute camera offset if needed
biggestAvailableArrayStore.recompute(); biggestAvailableAreaStore.recompute();
} }
/** /**
@ -1571,6 +1570,6 @@ ${escapedMessage}
zoomByFactor(zoomFactor: number) { zoomByFactor(zoomFactor: number) {
waScaleManager.zoomModifier *= zoomFactor; waScaleManager.zoomModifier *= zoomFactor;
biggestAvailableArrayStore.recompute(); biggestAvailableAreaStore.recompute();
} }
} }

View File

@ -101,10 +101,6 @@ export class MenuScene extends Phaser.Scene {
worldFullWarningStream.stream.subscribe(() => this.showWorldCapacityWarning()); worldFullWarningStream.stream.subscribe(() => this.showWorldCapacityWarning());
} }
public openReport(userId: number, userName: string): void {
this.gameReportElement.open(userId, userName);
}
//todo put this method in a parent menuElement class //todo put this method in a parent menuElement class
static revealMenusAfterInit(menuElement: Phaser.GameObjects.DOMElement, rootDomId: string) { static revealMenusAfterInit(menuElement: Phaser.GameObjects.DOMElement, rootDomId: string) {
//Dom elements will appear inside the viewer screen when creating before being moved out of it, which create a flicker effect. //Dom elements will appear inside the viewer screen when creating before being moved out of it, which create a flicker effect.

View File

@ -1,16 +1,13 @@
import {derived, get, Readable, writable} from "svelte/store"; import {get, writable} from "svelte/store";
import type {Box} from "../WebRtc/LayoutManager"; import type {Box} from "../WebRtc/LayoutManager";
import {HtmlUtils} from "../WebRtc/HtmlUtils"; import {HtmlUtils} from "../WebRtc/HtmlUtils";
import {LayoutMode} from "../WebRtc/LayoutManager"; import {LayoutMode} from "../WebRtc/LayoutManager";
import {layoutModeStore} from "./LayoutStore"; import {layoutModeStore} from "./LayoutStore";
import {VideoPeer} from "../WebRtc/VideoPeer";
import {RemotePeer, SimplePeer} from "../WebRtc/SimplePeer";
import {ScreenSharingPeer} from "../WebRtc/ScreenSharingPeer";
/** /**
* Tries to find the biggest available box of remaining space (this is a space where we can center the character) * Tries to find the biggest available box of remaining space (this is a space where we can center the character)
*/ */
function findBiggestAvailableArray(): Box { function findBiggestAvailableArea(): Box {
const game = HtmlUtils.querySelectorOrFail<HTMLCanvasElement>('#game canvas'); const game = HtmlUtils.querySelectorOrFail<HTMLCanvasElement>('#game canvas');
if (get(layoutModeStore) === LayoutMode.VideoChat) { if (get(layoutModeStore) === LayoutMode.VideoChat) {
const children = document.querySelectorAll<HTMLDivElement>('div.chat-mode > div'); const children = document.querySelectorAll<HTMLDivElement>('div.chat-mode > div');
@ -45,7 +42,6 @@ function findBiggestAvailableArray(): Box {
} }
} }
if (area1 <= area2) { if (area1 <= area2) {
console.log('lastDiv', lastDiv.offsetTop, lastDiv.offsetHeight);
return { return {
xStart: 0, xStart: 0,
yStart: lastDiv.offsetTop + lastDiv.offsetHeight, yStart: lastDiv.offsetTop + lastDiv.offsetHeight,
@ -53,7 +49,6 @@ function findBiggestAvailableArray(): Box {
yEnd: game.offsetHeight yEnd: game.offsetHeight
} }
} else { } else {
console.log('lastDiv', lastDiv.offsetTop);
return { return {
xStart: lastDiv.offsetLeft + lastDiv.offsetWidth, xStart: lastDiv.offsetLeft + lastDiv.offsetWidth,
yStart: lastDiv.offsetTop, yStart: lastDiv.offsetTop,
@ -117,16 +112,16 @@ function findBiggestAvailableArray(): Box {
/** /**
* A store that contains the list of (video) peers we are connected to. * A store that contains the list of (video) peers we are connected to.
*/ */
function createBiggestAvailableArrayStore() { function createBiggestAvailableAreaStore() {
const { subscribe, set, update } = writable<Box>({xStart:0, yStart: 0, xEnd: 1, yEnd: 1}); const { subscribe, set } = writable<Box>({xStart:0, yStart: 0, xEnd: 1, yEnd: 1});
return { return {
subscribe, subscribe,
recompute: () => { recompute: () => {
set(findBiggestAvailableArray()); set(findBiggestAvailableArea());
} }
}; };
} }
export const biggestAvailableArrayStore = createBiggestAvailableArrayStore(); export const biggestAvailableAreaStore = createBiggestAvailableAreaStore();