aboutsummaryrefslogtreecommitdiff
path: root/webAO/utils
diff options
context:
space:
mode:
authorcaleb.mabry.15@cnu.edu <caleb.mabry.15@cnu.edu>2022-03-10 23:21:38 -0500
committercaleb.mabry.15@cnu.edu <caleb.mabry.15@cnu.edu>2022-03-10 23:21:38 -0500
commitdc208478fd18a4e28c0083641bf405170859fc58 (patch)
tree1fad0ecbaf5639d02908b5f9c9f31f1878ee446c /webAO/utils
parent6dd1b296c2dd1d7462dd8514dff43db59ac8dd19 (diff)
Magnum Opus pt1
Diffstat (limited to 'webAO/utils')
-rw-r--r--webAO/utils/fileExists.js17
-rw-r--r--webAO/utils/fileExistsSync.js11
-rw-r--r--webAO/utils/getAnimLength.js22
-rw-r--r--webAO/utils/getResources.js39
-rw-r--r--webAO/utils/queryParser.js9
5 files changed, 98 insertions, 0 deletions
diff --git a/webAO/utils/fileExists.js b/webAO/utils/fileExists.js
new file mode 100644
index 0000000..261acda
--- /dev/null
+++ b/webAO/utils/fileExists.js
@@ -0,0 +1,17 @@
+const fileExists = async (url) => {
+ const xhr = new XMLHttpRequest();
+ xhr.open('GET', url, true);
+ xhr.onload = function (e) {
+ if (xhr.readyState === 4) {
+ if (xhr.status === 200) {
+ return true;
+ }
+ return false;
+ }
+ };
+ xhr.onerror = function (e) {
+ return false;
+ };
+ xhr.send(null);
+};
+export default fileExists;
diff --git a/webAO/utils/fileExistsSync.js b/webAO/utils/fileExistsSync.js
new file mode 100644
index 0000000..1d7fde2
--- /dev/null
+++ b/webAO/utils/fileExistsSync.js
@@ -0,0 +1,11 @@
+const fileExistsSync = (url) => {
+ try {
+ const http = new XMLHttpRequest();
+ http.open('HEAD', url, false);
+ http.send();
+ return http.status != 404;
+ } catch (e) {
+ return false;
+ }
+};
+export default fileExistsSync;
diff --git a/webAO/utils/getAnimLength.js b/webAO/utils/getAnimLength.js
new file mode 100644
index 0000000..e64703f
--- /dev/null
+++ b/webAO/utils/getAnimLength.js
@@ -0,0 +1,22 @@
+import calculatorHandler from './calculatorHandler';
+import fileExists from './fileExists.js';
+/**
+ * Gets animation length. If the animation cannot be found, it will
+ * silently fail and return 0 instead.
+ * @param {string} filename the animation file name
+ */
+
+const getAnimLength = async (url) => {
+ const extensions = ['.gif', '.webp'];
+ for (const extension of extensions) {
+ const urlWithExtension = url + extension;
+ const exists = await fileExists(urlWithExtension);
+ if (exists) {
+ const fileBuffer = await requestBuffer(urlWithExtension);
+ const length = calculatorHandler[extension](fileBuffer);
+ return length;
+ }
+ }
+ return 0;
+};
+export default getAnimLength;
diff --git a/webAO/utils/getResources.js b/webAO/utils/getResources.js
new file mode 100644
index 0000000..a0c513e
--- /dev/null
+++ b/webAO/utils/getResources.js
@@ -0,0 +1,39 @@
+const getResources = (AO_HOST, THEME) => ({
+ holdit: {
+ src: `${AO_HOST}misc/default/holdit_bubble.png`,
+ duration: 720,
+ },
+ objection: {
+ src: `${AO_HOST}misc/default/objection_bubble.png`,
+ duration: 720,
+ },
+ takethat: {
+ src: `${AO_HOST}misc/default/takethat_bubble.png`,
+ duration: 840,
+ },
+ custom: {
+ src: '',
+ duration: 840,
+ },
+ witnesstestimony: {
+ src: `${AO_HOST}themes/${THEME}/witnesstestimony.gif`,
+ duration: 1560,
+ sfx: `${AO_HOST}sounds/general/sfx-testimony.opus`,
+ },
+ crossexamination: {
+ src: `${AO_HOST}themes/${THEME}/crossexamination.gif`,
+ duration: 1600,
+ sfx: `${AO_HOST}sounds/general/sfx-testimony2.opus`,
+ },
+ guilty: {
+ src: `${AO_HOST}themes/${THEME}/guilty.gif`,
+ duration: 2870,
+ sfx: `${AO_HOST}sounds/general/sfx-guilty.opus`,
+ },
+ notguilty: {
+ src: `${AO_HOST}themes/${THEME}/notguilty.gif`,
+ duration: 2440,
+ sfx: `${AO_HOST}sounds/general/sfx-notguilty.opus`,
+ },
+});
+export default getResources;
diff --git a/webAO/utils/queryParser.js b/webAO/utils/queryParser.js
new file mode 100644
index 0000000..1c2b83a
--- /dev/null
+++ b/webAO/utils/queryParser.js
@@ -0,0 +1,9 @@
+// Get the arguments from the URL bar
+const queryParser = () => {
+ const queryDict = {};
+ location.search.substr(1).split('&').forEach((item) => {
+ queryDict[item.split('=')[0]] = item.split('=')[1];
+ });
+ return queryDict;
+};
+export default queryParser;