Adding history support

Arriving on a new map now changes the URL.
All URLs starting with _ are automatically redirected to index.html by the web server
This commit is contained in:
David Négrier 2020-05-12 00:07:50 +02:00
parent 9417e4a4d2
commit daa559738b
4 changed files with 40 additions and 0 deletions

23
front/dist/.htaccess vendored Normal file
View File

@ -0,0 +1,23 @@
DirectoryIndex index.html
# By default, Apache does not evaluate symbolic links if you did not enable this
# feature in your server configuration. Uncomment the following line if you
# install assets as symlinks or if you experience problems related to symlinks
# when compiling LESS/Sass/CoffeScript assets.
# Options FollowSymlinks
# Disabling MultiViews prevents unwanted negotiation, e.g. "/index" should not resolve
# to the front controller "/index.php" but be rewritten to "/index.php/index".
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /
# If the requested filename exists, simply serve it.
# We only want to let Apache serve files and not directories.
# Rewrite all other queries starting with _ to index.ts.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule "^_/" "/index.ts" [L]

View File

@ -5,6 +5,7 @@
<meta name="viewport" <meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta http-equiv="X-UA-Compatible" content="ie=edge">
<base href="/">
<link rel="stylesheet" href="/resources/style/style.css"> <link rel="stylesheet" href="/resources/style/style.css">
<title>Document</title> <title>Document</title>
</head> </head>

View File

@ -151,6 +151,15 @@ export class GameScene extends Phaser.Scene implements GameSceneInterface, Creat
context.strokeStyle = '#ffffff'; context.strokeStyle = '#ffffff';
context.stroke(); context.stroke();
this.circleTexture.refresh(); this.circleTexture.refresh();
// Let's alter browser history
let url = new URL(this.MapUrlFile);
let path = '/_/'+url.host+url.pathname;
if (url.hash) {
// FIXME: entry should be dictated by a property passed to init()
path += '#'+url.hash;
}
window.history.pushState({}, null, path);
} }
private getExitSceneUrl(layer: ITiledMapLayer): string|undefined { private getExitSceneUrl(layer: ITiledMapLayer): string|undefined {

View File

@ -8,6 +8,12 @@ module.exports = {
contentBase: './dist', contentBase: './dist',
host: '0.0.0.0', host: '0.0.0.0',
disableHostCheck: true, disableHostCheck: true,
historyApiFallback: {
rewrites: [
{ from: /^_\/.*$/, to: '/index.html' }
],
disableDotRule: true
},
}, },
module: { module: {
rules: [ rules: [
@ -24,6 +30,7 @@ module.exports = {
output: { output: {
filename: 'bundle.js', filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, 'dist'),
publicPath: '/'
}, },
plugins: [ plugins: [
new webpack.ProvidePlugin({ new webpack.ProvidePlugin({