UNPKG

react-simple-game-engine

Version:

[WIP] not able to use in currently. <!-- Document cumming soon... -->

230 lines (229 loc) 9.58 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; import OutOfScopeP5 from "p5"; import { useEffect, useState } from "react"; import { Sound } from "./classes/sound"; var outOfScopeP5; document.addEventListener("DOMContentLoaded", function () { var noop = document.createElement("div"); noop.style.position = "absolute"; noop.style.zIndex = "-1"; noop.style.top = "-100%"; noop.style.left = "-100%"; document.body.appendChild(noop); setTimeout(function () { outOfScopeP5 = new OutOfScopeP5(function (skt) { }, noop); }, 0); }); export function createAssetImage(src) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (res, rej) { outOfScopeP5.loadImage(src, function (p5Img) { p5Img.domImg = new Image(); p5Img.domImg.src = src; res(p5Img); }, rej); })]; }); }); } export function createAssetSound(src, type) { return __awaiter(this, void 0, void 0, function () { var media; return __generator(this, function (_a) { media = new Sound(type); return [2 /*return*/, new Promise(function (res, rej) { // media.native.oncanplaythrough = function () { // res(media); // }; media.native.onloadedmetadata = function () { res(media); }; // media.native.onloadeddata = function (e) { // console.log("ee 2", e); // }; media.native.onerror = function (e) { if (e instanceof Event) { var targetError = e.currentTarget.error; rej({ fullSrc: e.currentTarget.src, src: src, code: targetError.code, }); } else { rej(e); } }; // media.native.setAttribute("preload", "metadata"); // media.native.setAttribute("type", "audio/wav"); media.native.src = src; })]; }); }); } export function tick(delay) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (res) { if (delay != null) { setTimeout(res, delay); } else { // wait forever } })]; }); }); } export function copyProperties(source, target) { for (var key in target) { if (target[key] !== undefined) { source[key] = target[key]; } } } export function parallel(items, each, limit) { if (limit === void 0) { limit = 3; } return __awaiter(this, void 0, void 0, function () { var queue, results, _loop_1, _i, queue_1, index; return __generator(this, function (_a) { switch (_a.label) { case 0: queue = Array.from({ length: Math.ceil(items.length / limit) }).map(function (_, i) { return i; }); results = []; _loop_1 = function (index) { var start, end, _items, _b, _c, _d; return __generator(this, function (_e) { switch (_e.label) { case 0: start = index * limit; end = start + limit; _items = items.slice(start, end); _c = (_b = results.push).apply; _d = [results]; return [4 /*yield*/, Promise.all(_items.map(function (item, i) { return each(item, { index: i, realIndex: start + i }); }))]; case 1: _c.apply(_b, _d.concat([(_e.sent())])); return [2 /*return*/]; } }); }; _i = 0, queue_1 = queue; _a.label = 1; case 1: if (!(_i < queue_1.length)) return [3 /*break*/, 4]; index = queue_1[_i]; return [5 /*yield**/, _loop_1(index)]; case 2: _a.sent(); _a.label = 3; case 3: _i++; return [3 /*break*/, 1]; case 4: return [2 /*return*/, results]; } }); }); } export function useWindowSize() { var _a = useState({ width: window.innerWidth, height: window.innerHeight, }), size = _a[0], setSize = _a[1]; useEffect(function () { function onResize() { setSize({ width: window.innerWidth, height: window.innerHeight }); } window.addEventListener("resize", onResize); return function () { window.removeEventListener("resize", onResize); }; }, []); return size; } export function toText(obj) { var arr = Array.isArray(obj) ? obj : [obj]; try { return "[".concat(arr .map(function (o) { return o && typeof o === "object" ? "{".concat(Object.keys(o) .map(function (k) { return "".concat(k, ": ").concat(o[k]); }) .join(", "), "}") : o; }) .join(", "), "]"); } catch (error) { return obj; } } var ENGINE_CLASS_PREFIX = "spt-hc_rsgn_"; export function getClassName(cls) { return ENGINE_CLASS_PREFIX + cls; } export function genId(length) { if (length === void 0) { length = 12; } var result = ""; var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; var charactersLength = characters.length; for (var i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } export function getPlatform() { var _a; var navigator = window.navigator; if (navigator) { var platform; if ((_a = navigator.userAgentData) === null || _a === void 0 ? void 0 : _a.platform) { platform = navigator.userAgentData.platform; } else { platform = navigator.platform; } return platform; } return "unknown"; } export function isRealPhone() { var _isRealPhone = /Android|webOS|iPhone|iPad|iPod|Opera Mini/i.test(getPlatform()); return _isRealPhone; }