mirror of
https://github.com/nzp-team/nzp-team.github.io.git
synced 2024-11-10 06:31:46 +00:00
Move NZ:P game to index
This commit is contained in:
parent
b8de36bf0b
commit
fd29a43045
8 changed files with 203 additions and 204 deletions
8
.github/workflows/webgl-update.yml
vendored
8
.github/workflows/webgl-update.yml
vendored
|
@ -28,19 +28,19 @@ jobs:
|
|||
- name: Create .PK3
|
||||
run: |
|
||||
cd $GITHUB_WORKSPACE
|
||||
rm latest/nzp/game.pk3
|
||||
rm nzp/game.pk3
|
||||
mkdir tmp
|
||||
unzip -q pc-nzp-assets.zip -d tmp/
|
||||
unzip -q fte-nzp-qc.zip -d tmp/nzp/
|
||||
mv build-version.txt tmp/nzp/version.txt
|
||||
cd tmp/nzp/
|
||||
zip -r ../../latest/nzp/game.pk3 ./*
|
||||
zip -r ../../nzp/game.pk3 ./*
|
||||
- name: Replace WebAssembly files
|
||||
run: |
|
||||
cd $GITHUB_WORKSPACE
|
||||
unzip -q pc-nzp-web.zip -d tmp/
|
||||
mv tmp/ftewebgl.wasm latest/
|
||||
mv tmp/ftewebgl.js latest/
|
||||
mv tmp/ftewebgl.wasm ./
|
||||
mv tmp/ftewebgl.js ./
|
||||
- name: Trash stuff
|
||||
run: |
|
||||
cd $GITHUB_WORKSPACE
|
||||
|
|
200
index.html
200
index.html
|
@ -1 +1,199 @@
|
|||
hello world!
|
||||
<!doctype html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name=viewport content="width=device-width, initial-scale=1">
|
||||
<meta content="Nazi Zombies: Portable" property="og:title" />
|
||||
<meta content="Call of Duty: Zombies de-make, now in your browser via WebGL!" property="og:description" />
|
||||
<meta content="https://nzp-team.github.io/latest/game.html" property="og:url" />
|
||||
<meta content="hhttps://nzp-team.github.io/latest/nzportable.ico" property="og:image" />
|
||||
<meta content="#6e0d00" data-react-helmet="true" name="theme-color" />
|
||||
<title>NZ: Portable</title>
|
||||
<link rel="icon" href="nzportable.ico">
|
||||
<style>
|
||||
html,body { background-color:#000000; color:#808080; height:100%;width:100%;margin:0;padding:0;}
|
||||
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
|
||||
div.emscripten { text-align: center; padding:0; margin: 0;}
|
||||
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
|
||||
canvas.emscripten { border: 0px none; width:100%; height:100%; padding:0; margin: 0;}
|
||||
</style>
|
||||
</head>
|
||||
<body ondrop="gotdrop(event);" ondragover="event.preventDefault()">
|
||||
<div class="emscripten" id="status">Please allow/unblock our javascript to play.</div>
|
||||
<div id="dropzone" ondrop="gotdrop(event);" ondragover="event.preventDefault()" hidden=1>Drop Zone</div>
|
||||
<button type="button" onclick="begin()" id="begin" hidden=1>Click To Begin!</button>
|
||||
<div class="emscripten">
|
||||
<progress value="0" max="100" id="progress" hidden=1></progress>
|
||||
</div>
|
||||
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" hidden=1></canvas>
|
||||
<script type='text/javascript'>
|
||||
// connect to canvas
|
||||
var Module = {
|
||||
files:
|
||||
{ //these can be arraybuffers(you'll need a helper to define those) or promises(fte will block till they complete), or strings (which will be interpretted as urls and downloaded before any C code is run)
|
||||
//note that the code below will skip the file-drop prompt if there's any files specified here (or there's a #foo.fmf file specified)
|
||||
// "default.fmf": "default.fmf",
|
||||
// "id1/pak0.pak": "pak0.pak",
|
||||
"default.fmf" : "default.fmf",
|
||||
"nzp/game.pk3" : "nzp/game.pk3"
|
||||
|
||||
},
|
||||
print: function(msg)
|
||||
{ //stdout...
|
||||
console.log(msg);
|
||||
},
|
||||
printErr: function(text)
|
||||
{ //stderr...
|
||||
console.log(text);
|
||||
},
|
||||
canvas: document.getElementById('canvas'), //for webgl to attach to
|
||||
setStatus: function(text)
|
||||
{ //gets spammed some prints during startup. blame emscripten.
|
||||
if (Module.setStatus.interval)
|
||||
clearInterval(Module.setStatus.interval);
|
||||
var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
|
||||
var statusElement = document.getElementById('status');
|
||||
var progressElement = document.getElementById('progress');
|
||||
if (m) {
|
||||
text = m[1];
|
||||
progressElement.value = parseInt(m[2])*100;
|
||||
progressElement.max = parseInt(m[4])*100;
|
||||
progressElement.hidden = false;
|
||||
} else {
|
||||
progressElement.value = null;
|
||||
progressElement.max = null;
|
||||
progressElement.hidden = true;
|
||||
}
|
||||
statusElement.innerHTML = text;
|
||||
statusElement.hidden = text.length==0;
|
||||
},
|
||||
// preRun: [],
|
||||
totalDependencies: 0,
|
||||
monitorRunDependencies: function(left)
|
||||
{ //progress is progress...
|
||||
this.totalDependencies = Math.max(this.totalDependencies, left);
|
||||
Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
|
||||
},
|
||||
// onRuntimeInitialized: function(){},
|
||||
postRun:
|
||||
[ //each of these are called after main was run. we should have our mainloop set up now
|
||||
function()
|
||||
{
|
||||
if (Module["sched"] === undefined)
|
||||
{ //our main function failed to set up the main loop. ie: main didn't get called. panic.
|
||||
alert("Unable to initialise. You may need to restart your browser. If you get this often and inconsistently, consider using a 64bit browser instead.");
|
||||
Module.setStatus("Initialisation Failure");
|
||||
}
|
||||
}
|
||||
],
|
||||
};
|
||||
function begin()
|
||||
{
|
||||
if (Module.began)
|
||||
return;
|
||||
Module.began = true;
|
||||
document.getElementById('dropzone').hidden = true;
|
||||
document.getElementById('begin').hidden = true;
|
||||
Module.setStatus('Downloading...');
|
||||
|
||||
// make a script. do it the hard way for the error.
|
||||
var s = document.createElement('script');
|
||||
// set it up
|
||||
s.setAttribute('src',"ftewebgl.js");
|
||||
s.setAttribute('type',"text/javascript");
|
||||
s.setAttribute('charset',"utf-8");
|
||||
s.addEventListener('error', function() {alert("Oh noes! we got an error!"); Module.setStatus("Unable to download engine javascript");}, false);
|
||||
// add to DOM
|
||||
document.head.appendChild(s);
|
||||
}
|
||||
|
||||
//stuff to facilitate our drag+drop filesystem support
|
||||
function fixupfilepath(fname, path)
|
||||
{ //we just have a filename, try to guess where to put it.
|
||||
if (path != "")
|
||||
return path+fname; //already has a path. use it. this allows people to drag+drop gamedirs.
|
||||
var ext = fname.substr(fname.lastIndexOf('.') + 1);
|
||||
if (ext == 'fmf' || ext == 'kpf') //these are the only files that really make sense in the root.
|
||||
return fname;
|
||||
if (ext == 'bsp' || ext == 'map' || ext == 'lit' || ext == 'lux')
|
||||
return "id1/maps/" + fname; //bsps get their own extra subdir
|
||||
return "id1/" + fname; //probably a pak. maybe a cfg, no idea really.
|
||||
}
|
||||
function showfiles()
|
||||
{ //print the pending file list in some pretty way
|
||||
if (Module.began)
|
||||
return;
|
||||
Module.setStatus('');
|
||||
document.getElementById('dropzone').hidden = false;
|
||||
document.getElementById('begin').hidden = false;
|
||||
var nt = "Drag gamedirs or individual package files here to make them available!<br/>Active Files:<br/><pre>";
|
||||
var keys = Object.keys(Module.files);
|
||||
for(var i = 0; i < keys.length; i++)
|
||||
{
|
||||
if (Module.files[keys[i]] instanceof ArrayBuffer)
|
||||
{
|
||||
var sz = Module.files[keys[i]].byteLength;
|
||||
if (sz > 512*1024)
|
||||
sz = (sz / (1024*1024)) + "mb";
|
||||
else if (sz > 512)
|
||||
sz = (sz / 1024) + "kb";
|
||||
else
|
||||
sz = (sz) + " bytes";
|
||||
nt += " " + keys[i] + " ("+sz+")<br/>";
|
||||
}
|
||||
else
|
||||
nt += " " + keys[i] + "<br/>";
|
||||
}
|
||||
nt += "</pre>("+keys.length+" files)";
|
||||
document.getElementById('dropzone').innerHTML = nt;
|
||||
}
|
||||
function scanfiles(item,path)
|
||||
{ //for directory drops
|
||||
if (item.isFile)
|
||||
{
|
||||
item.file(function(f)
|
||||
{
|
||||
let n = fixupfilepath(f.name, path);
|
||||
Module.files[n]=f.arrayBuffer(); //actually a promise...
|
||||
Module.files[n].then(buf=>{Module.files[n]=buf;showfiles();}); //try and resolve it now.
|
||||
});
|
||||
}
|
||||
else if (item.isDirectory)
|
||||
{
|
||||
// Get folder contents
|
||||
var dirReader = item.createReader();
|
||||
dirReader.readEntries(function(entries)
|
||||
{
|
||||
for (var i=0; i<entries.length; i++)
|
||||
scanfiles(entries[i], path + item.name + "/");
|
||||
});
|
||||
}
|
||||
}
|
||||
function gotdrop(ev)
|
||||
{ //user drag+dropped something.
|
||||
ev.preventDefault();
|
||||
for (var i = 0; i < ev.dataTransfer.items.length; i++)
|
||||
if (ev.dataTransfer.items[i].webkitGetAsEntry)
|
||||
{
|
||||
var d = ev.dataTransfer.items[i].webkitGetAsEntry();
|
||||
if (d)
|
||||
scanfiles(d, "");
|
||||
}
|
||||
else if (ev.dataTransfer.items[i].kind === 'file')
|
||||
{
|
||||
var f = ev.dataTransfer.items[i].getAsFile();
|
||||
var n = fixupfilepath(f.name);
|
||||
Module.files[n]=f.arrayBuffer(); //actually a promise...
|
||||
Module.files[n].then(buf=>{Module.files[n]=buf;showfiles();}); //try and resolve it now.
|
||||
}
|
||||
showfiles();
|
||||
}
|
||||
if (window.location.hash != "" || Object.keys(Module.files).length)
|
||||
begin(); //if the url has a #foo.fmf then just begin instantly,
|
||||
else
|
||||
showfiles(); //otherwise show our lame file dropper and wait for the user to click 'go'.
|
||||
</script>
|
||||
<img src="https://hits.sh/hits.sh/nzp-team.github.io/latest/game.html/hits.svg" style="opacity:0;width:0px;">
|
||||
</body>
|
||||
</html>
|
||||
|
|
199
latest/game.html
199
latest/game.html
|
@ -1,199 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name=viewport content="width=device-width, initial-scale=1">
|
||||
<meta content="Nazi Zombies: Portable" property="og:title" />
|
||||
<meta content="Call of Duty: Zombies de-make, now in your browser via WebGL!" property="og:description" />
|
||||
<meta content="https://nzp-team.github.io/latest/game.html" property="og:url" />
|
||||
<meta content="hhttps://nzp-team.github.io/latest/nzportable.ico" property="og:image" />
|
||||
<meta content="#6e0d00" data-react-helmet="true" name="theme-color" />
|
||||
<title>NZ: Portable</title>
|
||||
<link rel="icon" href="nzportable.ico">
|
||||
<style>
|
||||
html,body { background-color:#000000; color:#808080; height:100%;width:100%;margin:0;padding:0;}
|
||||
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
|
||||
div.emscripten { text-align: center; padding:0; margin: 0;}
|
||||
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
|
||||
canvas.emscripten { border: 0px none; width:100%; height:100%; padding:0; margin: 0;}
|
||||
</style>
|
||||
</head>
|
||||
<body ondrop="gotdrop(event);" ondragover="event.preventDefault()">
|
||||
<div class="emscripten" id="status">Please allow/unblock our javascript to play.</div>
|
||||
<div id="dropzone" ondrop="gotdrop(event);" ondragover="event.preventDefault()" hidden=1>Drop Zone</div>
|
||||
<button type="button" onclick="begin()" id="begin" hidden=1>Click To Begin!</button>
|
||||
<div class="emscripten">
|
||||
<progress value="0" max="100" id="progress" hidden=1></progress>
|
||||
</div>
|
||||
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" hidden=1></canvas>
|
||||
<script type='text/javascript'>
|
||||
// connect to canvas
|
||||
var Module = {
|
||||
files:
|
||||
{ //these can be arraybuffers(you'll need a helper to define those) or promises(fte will block till they complete), or strings (which will be interpretted as urls and downloaded before any C code is run)
|
||||
//note that the code below will skip the file-drop prompt if there's any files specified here (or there's a #foo.fmf file specified)
|
||||
// "default.fmf": "default.fmf",
|
||||
// "id1/pak0.pak": "pak0.pak",
|
||||
"default.fmf" : "default.fmf",
|
||||
"nzp/game.pk3" : "nzp/game.pk3"
|
||||
|
||||
},
|
||||
print: function(msg)
|
||||
{ //stdout...
|
||||
console.log(msg);
|
||||
},
|
||||
printErr: function(text)
|
||||
{ //stderr...
|
||||
console.log(text);
|
||||
},
|
||||
canvas: document.getElementById('canvas'), //for webgl to attach to
|
||||
setStatus: function(text)
|
||||
{ //gets spammed some prints during startup. blame emscripten.
|
||||
if (Module.setStatus.interval)
|
||||
clearInterval(Module.setStatus.interval);
|
||||
var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
|
||||
var statusElement = document.getElementById('status');
|
||||
var progressElement = document.getElementById('progress');
|
||||
if (m) {
|
||||
text = m[1];
|
||||
progressElement.value = parseInt(m[2])*100;
|
||||
progressElement.max = parseInt(m[4])*100;
|
||||
progressElement.hidden = false;
|
||||
} else {
|
||||
progressElement.value = null;
|
||||
progressElement.max = null;
|
||||
progressElement.hidden = true;
|
||||
}
|
||||
statusElement.innerHTML = text;
|
||||
statusElement.hidden = text.length==0;
|
||||
},
|
||||
// preRun: [],
|
||||
totalDependencies: 0,
|
||||
monitorRunDependencies: function(left)
|
||||
{ //progress is progress...
|
||||
this.totalDependencies = Math.max(this.totalDependencies, left);
|
||||
Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
|
||||
},
|
||||
// onRuntimeInitialized: function(){},
|
||||
postRun:
|
||||
[ //each of these are called after main was run. we should have our mainloop set up now
|
||||
function()
|
||||
{
|
||||
if (Module["sched"] === undefined)
|
||||
{ //our main function failed to set up the main loop. ie: main didn't get called. panic.
|
||||
alert("Unable to initialise. You may need to restart your browser. If you get this often and inconsistently, consider using a 64bit browser instead.");
|
||||
Module.setStatus("Initialisation Failure");
|
||||
}
|
||||
}
|
||||
],
|
||||
};
|
||||
function begin()
|
||||
{
|
||||
if (Module.began)
|
||||
return;
|
||||
Module.began = true;
|
||||
document.getElementById('dropzone').hidden = true;
|
||||
document.getElementById('begin').hidden = true;
|
||||
Module.setStatus('Downloading...');
|
||||
|
||||
// make a script. do it the hard way for the error.
|
||||
var s = document.createElement('script');
|
||||
// set it up
|
||||
s.setAttribute('src',"ftewebgl.js");
|
||||
s.setAttribute('type',"text/javascript");
|
||||
s.setAttribute('charset',"utf-8");
|
||||
s.addEventListener('error', function() {alert("Oh noes! we got an error!"); Module.setStatus("Unable to download engine javascript");}, false);
|
||||
// add to DOM
|
||||
document.head.appendChild(s);
|
||||
}
|
||||
|
||||
//stuff to facilitate our drag+drop filesystem support
|
||||
function fixupfilepath(fname, path)
|
||||
{ //we just have a filename, try to guess where to put it.
|
||||
if (path != "")
|
||||
return path+fname; //already has a path. use it. this allows people to drag+drop gamedirs.
|
||||
var ext = fname.substr(fname.lastIndexOf('.') + 1);
|
||||
if (ext == 'fmf' || ext == 'kpf') //these are the only files that really make sense in the root.
|
||||
return fname;
|
||||
if (ext == 'bsp' || ext == 'map' || ext == 'lit' || ext == 'lux')
|
||||
return "id1/maps/" + fname; //bsps get their own extra subdir
|
||||
return "id1/" + fname; //probably a pak. maybe a cfg, no idea really.
|
||||
}
|
||||
function showfiles()
|
||||
{ //print the pending file list in some pretty way
|
||||
if (Module.began)
|
||||
return;
|
||||
Module.setStatus('');
|
||||
document.getElementById('dropzone').hidden = false;
|
||||
document.getElementById('begin').hidden = false;
|
||||
var nt = "Drag gamedirs or individual package files here to make them available!<br/>Active Files:<br/><pre>";
|
||||
var keys = Object.keys(Module.files);
|
||||
for(var i = 0; i < keys.length; i++)
|
||||
{
|
||||
if (Module.files[keys[i]] instanceof ArrayBuffer)
|
||||
{
|
||||
var sz = Module.files[keys[i]].byteLength;
|
||||
if (sz > 512*1024)
|
||||
sz = (sz / (1024*1024)) + "mb";
|
||||
else if (sz > 512)
|
||||
sz = (sz / 1024) + "kb";
|
||||
else
|
||||
sz = (sz) + " bytes";
|
||||
nt += " " + keys[i] + " ("+sz+")<br/>";
|
||||
}
|
||||
else
|
||||
nt += " " + keys[i] + "<br/>";
|
||||
}
|
||||
nt += "</pre>("+keys.length+" files)";
|
||||
document.getElementById('dropzone').innerHTML = nt;
|
||||
}
|
||||
function scanfiles(item,path)
|
||||
{ //for directory drops
|
||||
if (item.isFile)
|
||||
{
|
||||
item.file(function(f)
|
||||
{
|
||||
let n = fixupfilepath(f.name, path);
|
||||
Module.files[n]=f.arrayBuffer(); //actually a promise...
|
||||
Module.files[n].then(buf=>{Module.files[n]=buf;showfiles();}); //try and resolve it now.
|
||||
});
|
||||
}
|
||||
else if (item.isDirectory)
|
||||
{
|
||||
// Get folder contents
|
||||
var dirReader = item.createReader();
|
||||
dirReader.readEntries(function(entries)
|
||||
{
|
||||
for (var i=0; i<entries.length; i++)
|
||||
scanfiles(entries[i], path + item.name + "/");
|
||||
});
|
||||
}
|
||||
}
|
||||
function gotdrop(ev)
|
||||
{ //user drag+dropped something.
|
||||
ev.preventDefault();
|
||||
for (var i = 0; i < ev.dataTransfer.items.length; i++)
|
||||
if (ev.dataTransfer.items[i].webkitGetAsEntry)
|
||||
{
|
||||
var d = ev.dataTransfer.items[i].webkitGetAsEntry();
|
||||
if (d)
|
||||
scanfiles(d, "");
|
||||
}
|
||||
else if (ev.dataTransfer.items[i].kind === 'file')
|
||||
{
|
||||
var f = ev.dataTransfer.items[i].getAsFile();
|
||||
var n = fixupfilepath(f.name);
|
||||
Module.files[n]=f.arrayBuffer(); //actually a promise...
|
||||
Module.files[n].then(buf=>{Module.files[n]=buf;showfiles();}); //try and resolve it now.
|
||||
}
|
||||
showfiles();
|
||||
}
|
||||
if (window.location.hash != "" || Object.keys(Module.files).length)
|
||||
begin(); //if the url has a #foo.fmf then just begin instantly,
|
||||
else
|
||||
showfiles(); //otherwise show our lame file dropper and wait for the user to click 'go'.
|
||||
</script>
|
||||
<img src="https://hits.sh/hits.sh/nzp-team.github.io/latest/game.html/hits.svg" style="opacity:0;width:0px;">
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Loading…
Reference in a new issue