merge latest dev + fix font
This commit is contained in:
commit
eee3956b60
4
front/dist/index.tmpl.html
vendored
4
front/dist/index.tmpl.html
vendored
@ -89,8 +89,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="audioplayer">
|
<div class="audioplayer">
|
||||||
<label id="label-audioplayer_decrease_while_talking" for="audioplayer_decrease_while_talking" title="decrease background volume by 50% when entering conversations">
|
<label id="label-audioplayer_decrease_while_talking" for="audioplayer_decrease_while_talking" title="decrease background volume by 50% when entering conversations">
|
||||||
reduce in conversations
|
<input type="checkbox" class="nes-checkbox is-dark" id="audioplayer_decrease_while_talking" checked />
|
||||||
<input type="checkbox" id="audioplayer_decrease_while_talking" checked />
|
<span>reduce in conversations</span>
|
||||||
</label>
|
</label>
|
||||||
<div id="audioplayer" style="visibility: hidden"></div>
|
<div id="audioplayer" style="visibility: hidden"></div>
|
||||||
</div>
|
</div>
|
||||||
|
3
front/dist/resources/html/gameMenuIcon.html
vendored
3
front/dist/resources/html/gameMenuIcon.html
vendored
@ -1,7 +1,4 @@
|
|||||||
<style>
|
<style>
|
||||||
#menuIcon button {
|
|
||||||
padding: 2px 8px;
|
|
||||||
}
|
|
||||||
#menuIcon button img{
|
#menuIcon button img{
|
||||||
width: 8px;
|
width: 8px;
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
import {selectCharacterSceneVisibleStore} from "../Stores/SelectCharacterStore";
|
import {selectCharacterSceneVisibleStore} from "../Stores/SelectCharacterStore";
|
||||||
import SelectCharacterScene from "./selectCharacter/SelectCharacterScene.svelte";
|
import SelectCharacterScene from "./selectCharacter/SelectCharacterScene.svelte";
|
||||||
import {customCharacterSceneVisibleStore} from "../Stores/CustomCharacterStore";
|
import {customCharacterSceneVisibleStore} from "../Stores/CustomCharacterStore";
|
||||||
|
import {errorStore} from "../Stores/ErrorStore";
|
||||||
import CustomCharacterScene from "./CustomCharacterScene/CustomCharacterScene.svelte";
|
import CustomCharacterScene from "./CustomCharacterScene/CustomCharacterScene.svelte";
|
||||||
import LoginScene from "./Login/LoginScene.svelte";
|
import LoginScene from "./Login/LoginScene.svelte";
|
||||||
import {loginSceneVisibleStore} from "../Stores/LoginSceneStore";
|
import {loginSceneVisibleStore} from "../Stores/LoginSceneStore";
|
||||||
@ -21,6 +22,7 @@
|
|||||||
import HelpCameraSettingsPopup from "./HelpCameraSettings/HelpCameraSettingsPopup.svelte";
|
import HelpCameraSettingsPopup from "./HelpCameraSettings/HelpCameraSettingsPopup.svelte";
|
||||||
import AudioPlaying from "./UI/AudioPlaying.svelte";
|
import AudioPlaying from "./UI/AudioPlaying.svelte";
|
||||||
import {soundPlayingStore} from "../Stores/SoundPlayingStore";
|
import {soundPlayingStore} from "../Stores/SoundPlayingStore";
|
||||||
|
import ErrorDialog from "./UI/ErrorDialog.svelte";
|
||||||
|
|
||||||
export let game: Game;
|
export let game: Game;
|
||||||
</script>
|
</script>
|
||||||
@ -78,4 +80,9 @@
|
|||||||
{#if $requestVisitCardsStore}
|
{#if $requestVisitCardsStore}
|
||||||
<VisitCard visitCardUrl={$requestVisitCardsStore}></VisitCard>
|
<VisitCard visitCardUrl={$requestVisitCardsStore}></VisitCard>
|
||||||
{/if}
|
{/if}
|
||||||
|
{#if $errorStore.length > 0}
|
||||||
|
<div>
|
||||||
|
<ErrorDialog></ErrorDialog>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
44
front/src/Components/UI/ErrorDialog.svelte
Normal file
44
front/src/Components/UI/ErrorDialog.svelte
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import {errorStore} from "../../Stores/ErrorStore";
|
||||||
|
|
||||||
|
function close(): boolean {
|
||||||
|
errorStore.clearMessages();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<dialog class="error-dialog nes-dialog is-dark is-rounded" id="dialog-dark-rounded" open>
|
||||||
|
<p class="nes-text is-error title">Error</p>
|
||||||
|
<div class="body">
|
||||||
|
{#each $errorStore as error}
|
||||||
|
<p>{error}</p>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
<div class="button-bar">
|
||||||
|
<button class="nes-btn is-error" on:click={close}>Close</button>
|
||||||
|
</div>
|
||||||
|
</dialog>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
dialog.error-dialog {
|
||||||
|
pointer-events: auto;
|
||||||
|
top: 10%;
|
||||||
|
|
||||||
|
.button-bar {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body {
|
||||||
|
max-height: 50vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-family: "Press Start 2P";
|
||||||
|
|
||||||
|
&.title {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
23
front/src/Stores/ErrorStore.ts
Normal file
23
front/src/Stores/ErrorStore.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import {writable} from "svelte/store";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A store that contains a list of error messages to be displayed.
|
||||||
|
*/
|
||||||
|
function createErrorStore() {
|
||||||
|
const { subscribe, set, update } = writable<string[]>([]);
|
||||||
|
|
||||||
|
return {
|
||||||
|
subscribe,
|
||||||
|
addErrorMessage: (e: string|Error): void => {
|
||||||
|
update((messages) => {
|
||||||
|
messages.push(e.toString());
|
||||||
|
return messages;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
clearMessages: (): void => {
|
||||||
|
set([]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export const errorStore = createErrorStore();
|
8
front/src/Stores/Errors/BrowserTooOldError.ts
Normal file
8
front/src/Stores/Errors/BrowserTooOldError.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
export class BrowserTooOldError extends Error {
|
||||||
|
static NAME = 'BrowserTooOldError';
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super('Unable to access your camera or microphone. Your browser is too old. Please consider upgrading your browser or try using a recent version of Chrome.');
|
||||||
|
this.name = BrowserTooOldError.NAME;
|
||||||
|
}
|
||||||
|
}
|
@ -4,6 +4,8 @@ import {localUserStore} from "../Connexion/LocalUserStore";
|
|||||||
import {ITiledMapGroupLayer, ITiledMapObjectLayer, ITiledMapTileLayer} from "../Phaser/Map/ITiledMap";
|
import {ITiledMapGroupLayer, ITiledMapObjectLayer, ITiledMapTileLayer} from "../Phaser/Map/ITiledMap";
|
||||||
import {userMovingStore} from "./GameStore";
|
import {userMovingStore} from "./GameStore";
|
||||||
import {HtmlUtils} from "../WebRtc/HtmlUtils";
|
import {HtmlUtils} from "../WebRtc/HtmlUtils";
|
||||||
|
import {BrowserTooOldError} from "./Errors/BrowserTooOldError";
|
||||||
|
import {errorStore} from "./ErrorStore";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A store that contains the camera state requested by the user (on or off).
|
* A store that contains the camera state requested by the user (on or off).
|
||||||
@ -420,10 +422,9 @@ export const localStreamStore = derived<Readable<MediaStreamConstraints>, LocalS
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
//throw new Error('Unable to access your camera or microphone. Your browser is too old.');
|
|
||||||
set({
|
set({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
error: new Error('Unable to access your camera or microphone. Your browser is too old. Please consider upgrading your browser or try using a recent version of Chrome.'),
|
error: new BrowserTooOldError(),
|
||||||
constraints
|
constraints
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@ -594,3 +595,11 @@ microphoneListStore.subscribe((devices) => {
|
|||||||
audioConstraintStore.setDeviceId(undefined);
|
audioConstraintStore.setDeviceId(undefined);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
localStreamStore.subscribe(streamResult => {
|
||||||
|
if (streamResult.type === 'error') {
|
||||||
|
if (streamResult.error.name === BrowserTooOldError.NAME) {
|
||||||
|
errorStore.addErrorMessage(streamResult.error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
@ -35,7 +35,12 @@ export class HtmlUtils {
|
|||||||
const urlRegex = /(https?:\/\/[^\s]+)/g;
|
const urlRegex = /(https?:\/\/[^\s]+)/g;
|
||||||
text = HtmlUtils.escapeHtml(text);
|
text = HtmlUtils.escapeHtml(text);
|
||||||
return text.replace(urlRegex, (url: string) => {
|
return text.replace(urlRegex, (url: string) => {
|
||||||
return '<a href="' + url + '" target="_blank" style=":visited {color: white}">' + url + '</a>';
|
const link = document.createElement('a');
|
||||||
|
link.href = url;
|
||||||
|
link.target = "_blank";
|
||||||
|
const text = document.createTextNode(url);
|
||||||
|
link.appendChild(text);
|
||||||
|
return link.outerHTML;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.top-right-btn{
|
.top-right-btn{
|
||||||
left: -6px;
|
left: -2px;
|
||||||
&#cowebsite-close {
|
&#cowebsite-close {
|
||||||
top: 0px;
|
top: 0px;
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
@import "~@fontsource/press-start-2p/index.css";
|
@import "~@fontsource/press-start-2p/index.css";
|
||||||
|
|
||||||
*{
|
*{
|
||||||
font-family: PixelFont-7,monospace;
|
font-family: "Press Start 2P",monospace;
|
||||||
}
|
|
||||||
|
|
||||||
.nes-btn {
|
|
||||||
font-family: "Press Start 2P";
|
|
||||||
}
|
}
|
||||||
|
@ -386,7 +386,7 @@ body {
|
|||||||
|
|
||||||
.audioplayer:first-child {
|
.audioplayer:first-child {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid: 2rem / 4rem 10rem;
|
grid: 2rem / 4rem 13rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.audioplayer>button,
|
.audioplayer>button,
|
||||||
@ -396,9 +396,11 @@ body {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
padding: 5px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.audioplayer>div {
|
.audioplayer>div {
|
||||||
|
padding: 0;
|
||||||
padding-right: 1.2rem;
|
padding-right: 1.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -415,6 +417,7 @@ body {
|
|||||||
#audioplayer_mute {
|
#audioplayer_mute {
|
||||||
max-width: 5rem;
|
max-width: 5rem;
|
||||||
border: none;
|
border: none;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#audioplayer_mute:focus,
|
#audioplayer_mute:focus,
|
||||||
@ -1131,6 +1134,10 @@ div.modal-report-user {
|
|||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.discussion .messages .message p a:visited{
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
.discussion .send-message{
|
.discussion .send-message{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 45px;
|
bottom: 45px;
|
||||||
|
Loading…
Reference in New Issue
Block a user