2009scape-website/services/m=funorb/gamelist.html
Bart Ribbers 4eda43f39b
Use templates better to remove a ton of code duplication (#254)
* Fix broken links in update posts

They were using relative links still which became invalid by moving
directories. It's better to link stuff absolutely anyway.

* Remove unused 'secure' registration and login pages

* Remove obsolete parse.py

* Use templates better to remove a ton of code duplication

Where it made sense I converted HTML pages to Markdown to ease writing
and discourage custom styling as much as possible. These pages can still
use custom HTML when necessary, and some do, but they are easier to read
and understand now.
2024-06-02 19:15:26 +10:00

681 lines
31 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en" xmlns:IE>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="en" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="PRAGMA" content="NO-CACHE" />
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
<meta
name="keywords"
content="Play Free Online Games, puzzle games, platform games, arcade games, shooter games, action games, java games, casual games, racing games, word games, retro games, classic games, browser games, strategy games, multiplayer games, arcanists, Jagex"
/>
<meta
name="description"
content="2009scape Funorb, free online browser-based Flash games ported to Javascript via Ruffle!"
/>
<meta
name="title"
content="FunOrb - Flash Games List - Bringing back Flash Games to Browsers with 2009scape and RuffleQ"
/>
<meta name="Author" content="2009scape.org" />
<meta name="Copyright" content="Copyright 2009scape.org" />
<meta name="ROBOTS" content="INDEX, FOLLOW" />
<meta name="classification" content="GENERAL" />
<meta name="rating" content="General" />
<meta name="Distribution" content="global" />
<meta name="Identifier-URL" content="https://2009scape.org" />
<link rel="icon" type="image/vnd.microsoft.icon" href="/favicon.ico" />
<link rel="SHORTCUT ICON" href="/favicon.ico" />
<title>2009scape Funorb - Legacy Flash Archive</title>
<style type="text/css" media="screen">
/*\*/
@import url(./css/global-44.css);
/**/
</style>
<script
type="text/javascript"
src="https://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"
></script>
<style type="text/css" media="screen">
/*\*/
@import url("./css/gamelist-3.css");
/**/
</style>
<script type="text/javascript">
function ajax_debug(text) {
if (document.getElementById("javascript-debug-pane"))
document.getElementById("javascript-debug-pane").value += text + "\n";
}
function httpRequest() {
// Create the requestHandler
try {
this.requestHandler = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e1) {
try {
this.requestHandler = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
this.requestHandler = false;
}
}
if (!this.requestHandler && window.createRequest) {
try {
this.requestHandler = window.createRequest();
} catch (e) {
this.requestHandler = false;
}
}
if (!this.requestHandler && typeof XMLHttpRequest != "undefined") {
try {
this.requestHandler = new XMLHttpRequest();
} catch (e) {
this.requestHandler = false;
}
}
ajax_debug("New httpRequest created");
}
httpRequest.prototype.handleChange = function () {
//ajax_debug("ReadyState changed to " + this.requestHandler.readyState);
if (this.requestHandler.readyState == 4 && this.callback)
this.callback(this.requestHandler.responseText);
};
httpRequest.prototype.get = function (url, callback) {
ajax_debug(
"GET " +
url +
(callback == null ? " (no callback)" : " (with callback)")
);
var copy = this;
this.requestHandler.onreadystatechange = function () {
copy.handleChange();
};
if (callback) this.callback = callback;
else this.callback = null;
this.requestHandler.open("GET", url, true);
this.requestHandler.send(null);
};
function ajax_describe(what) {
a = "";
for (part in what)
try {
a += part + "=" + what[part] + "\n";
} catch (e) {}
return a;
}
function throwaway_request(url) {
var req = new httpRequest();
req.get(url);
}
function callback_request(url, callback) {
var req = new httpRequest();
req.get(url, callback);
}
</script>
<script type="text/javascript">
var current_game;
function getElementsByClass(tagName, tagClass) {
// get all elements of type tagName with class tagClass
var elements = document.getElementsByTagName(tagName);
var returnElements = [];
for (var i = 0; i < elements.length; i++) {
if (elements[i].classList.contains(tagClass)) {
returnElements.push(elements[i]);
}
}
return returnElements;
}
function updateFilters() {
var gameboxes = getElementsByClass("div", "gamelistentry");
var playerMode = document.getElementById("playerBox").value;
var genreMode = document.getElementById("genreBox").value;
var nogames = true;
for (i = 0; i < gameboxes.length; i++) {
if (
(playerMode == 1 &&
!gameboxes[i].classList.contains("singleplayer")) ||
(playerMode == 2 && !gameboxes[i].classList.contains("multiplayer"))
) {
gameboxes[i].style.display = "none";
} else if (genreMode == 0) {
// no genre selected
gameboxes[i].style.display = "inline";
nogames = false;
} else {
// check if gameboxes[i].classList.contains(genreMode)
if (gameboxes[i].classList.contains(genreMode)) {
gameboxes[i].style.display = "inline";
nogames = false;
} else {
gameboxes[i].style.display = "none";
}
}
}
var guide = document.getElementById("guide");
if (nogames) {
guide.innerHTML =
"Sorry, no games matched your search! Please try again to find a game.";
guide.style.color = "#f00";
} else {
guide.innerHTML =
"Please use the dropdown menus to select the type of game you would like to play.";
guide.style.color = "#DAD6D5";
}
}
function initList() {
document.getElementById("playerBox").value = 0;
document.getElementById("genreBox").value = 0;
}
window.onload = initList;
</script>
</head>
<body id="navGames">
<a name="top"></a>
<table id="wrapper">
<tbody>
<tr>
<td class="center bodyTheme">
<div class="bodyBackground">
<div class="bodyTheme">
<div id="container">
<div id="header">
<div id="navigation">
<div class="lft"></div>
<div class="rght"></div>
<div class="container">
<a id="logo" href="index.html"
><b>
<img
src="img/images/layout/logo_voidhunters.jpg"
alt="FunOrb"
/> </b
></a>
<div id="shell">
<div class="lft"></div>
<div class="rght"></div>
<div id="teleText">
<h1 id="welcomeText">
Welcome to FunOrb - The Best in Free Online Games
</h1>
<span id="teletext_inner">
While this website is a recreation of FunOrb, the
games hosted on it are old Flash archives. We hope
you enjoy your time here!</span
>
</div>
</div>
</div>
<div class="clear"></div>
<!-- Start of Menu -->
<ul class="menu">
<li class="top p1">
<a href="index.html" id="home" class="top_link"
><span>Home</span></a
>
</li>
<li class="top p2">
<a id="games" class="top_link" href="gamelist.html"
><span>Games</span><!--[if IE 7]><!--></a
><!--<![endif]-->
<!--[if lte IE 6]><table><tr><td><![endif]-->
<ul class="sub">
<li>
<a href="gamelist.html" class="fly">All Games</a>
</li>
<li>
<a href="gamelist.html" class="fly"
>Single-Player Games</a
>
</li>
<li>
<a href="gamelist.html" class="fly last"
>Multiplayer Games</a
>
</li>
</ul>
<!--[if lte IE 6]></td></tr></table></a><![endif]-->
</li>
<li class="top p3">
<a id="account" class="top_link" href="/index.html"
><span>RuneScape</span><!--[if IE 7]><!--></a
><!--<![endif]-->
<!--[if lte IE 6]><table><tr><td><![endif]-->
<ul class="sub">
<li>
<a href="https://rsc.vet/" class="fly"
>2001Scape (OpenRSC)</a
>
</li>
<li>
<a href="https://rsc.vet/" class="fly"
>2003Scape (OpenRSC)</a
>
</li>
<li>
<a href="https://2004scape.org/" class="fly"
>2004Scape (Not yet released)</a
>
</li>
<li>
<a href="https://2006scape.org/" class="fly"
>2006Scape</a
>
</li>
<li>
<a href="https://2009scape.org/" class="fly"
>2009Scape</a
>
</li>
<li>
<a href="https://2011scape.com/" class="fly"
>2011Scape</a
>
</li>
<li>
<a href="https://darkan.org/" class="fly last"
>2012Scape (Darkan)</a
>
</li>
</ul>
<!--[if lte IE 6]></td></tr></table></a><![endif]-->
</li>
<li class="top p4">
<a
id="forums"
class="top_link"
href="https://forum.2009scape.org/index.php"
><span>Community</span><!--[if IE 7]><!--></a
><!--<![endif]-->
<!--[if lte IE 6]><table><tr><td><![endif]-->
<ul class="sub">
<li>
<a
href="https://forum.2009scape.org/viewforum.php?f=26-website-games"
class="fly"
>Webgame Subforum</a
>
</li>
<li>
<a
href="https://forum.2009scape.org/viewtopic.php?t=472-post-your-game-requests-here-v2"
class="fly"
>Suggest a Game</a
>
</li>
<li>
<a
href="https://www.reddit.com/r/Funorb/"
class="fly"
>Funorb Reddit</a
>
</li>
<li>
<a
href="https://www.reddit.com/r/2009scape/"
class="fly"
>2009scape Reddit</a
>
</li>
<li>
<a href="https://gitlab.com/2009scape" class="fly"
>2009scape Github</a
>
</li>
<li>
<a href="https://gitlab.com/2009scape" class="fly"
>2009scape Gitlab</a
>
</li>
<li>
<a
href="https://discord.gg/YY7WSttN7H"
class="fly last"
>Discord</a
>
</li>
</ul>
<!--[if lte IE 6]></td></tr></table></a><![endif]-->
</li>
<li class="top p5">
<a
id="help"
class="top_link"
href="https://forum.2009scape.org/viewforum.php?f=8-support"
><span>Help</span><!--[if IE 7]><!--></a
><!--<![endif]-->
<!--[if lte IE 6]><table><tr><td><![endif]-->
<ul class="sub">
<li>
<a
href="https://forum.2009scape.org/viewforum.php?f=8-support"
class="fly"
>Ask on the Forums</a
>
</li>
<li>
<a
href="https://github.com/2009scape/2009scape.github.io/issues"
class="fly last"
>Submit A Bug Report</a
>
</li>
</ul>
<!--[if lte IE 6]></td></tr></table></a><![endif]-->
</li>
<li class="top p11">
<a id="empty" class="top_link"><span>&nbsp;</span></a>
</li>
<li class="top p10">
<a id="empty" class="top_link"><span>&nbsp;</span></a>
</li>
<li class="top p8">
<a
href="https://github.com/2009scape/2009scape.github.io"
id="signIn"
class="top_link"
><span>Source Code</span></a
>
</li>
</ul>
<!-- End of Menu -->
</div>
<br class="clear" />
</div>
<div id="page_content">
<a name="common_section"></a>
<div class="section" id="common_section">
<div class="sectionHeader">
<div class="sectionHeaderRight">
<div class="sectionTitle">Game List</div>
</div>
</div>
<div class="sectionBorder">
<div class="sectionBackground">
<div class="sectionContent">
<div class="sectionContainerContent">
<a name="gamelist"></a>
<div class="subsection" id="gamelist" style="">
<div class="subsectionHeader">
<div class="subsectionTitle">
<div id="guide">
Please use the dropdown menus to select
the type of game you would like to play.
</div>
</div>
</div>
<div class="subsectionContent">
<form id="filterform" action="gamelist.html">
<label for="playerBox">Players:</label>
<select
onchange="updateFilters()"
name="playerBox"
id="playerBox"
>
<option value="0">All</option>
<option value="1">Single-Player</option>
<option value="2">Multiplayer</option>
</select>
<label for="genreBox">Genre:</label>
<select
onchange="updateFilters()"
name="genreBox"
id="genreBox"
>
<option value="0" selected="selected">
All
</option>
<option value="action">Action</option>
<option value="puzzle">Puzzle</option>
<option value="shooter">Shooters</option>
<option value="sport">Sport</option>
<option value="strategy">Strategy</option>
<option value="mmo">MMO</option>
<option value="other">Other</option>
</select>
<input
class="button"
id="filtersumbit"
type="submit"
value="Submit filters"
/>
<script type="text/javascript">
document.getElementById(
"filtersumbit"
).style.display = "none";
</script>
<span id="multigenre"
>Some games may belong to more than one
genre.</span
>
</form>
<div id="gamesBegin"></div>
<script>
fetch("data.json").then(
async (response) => {
const data = await response.json();
for (key in data) {
const gameData = data[key];
const gameListEntry =
document.createElement("div");
gameListEntry.classList.add(
"gamelistentry"
);
for (genre in gameData.genres) {
gameListEntry.classList.add(
gameData.genres[genre]
);
}
if (gameData.multiplayer) {
gameListEntry.classList.add(
"multiplayer"
);
} else {
gameListEntry.classList.add(
"singleplayer"
);
}
const gameImage =
document.createElement("div");
gameImage.classList.add("gameimage");
const gameImageLink =
document.createElement("a");
gameImageLink.href = `./games/${gameData.id}`;
const gameImageImg =
document.createElement("img");
gameImageImg.src = gameData.image;
gameImageImg.alt = `${gameData.name} image`;
gameImageLink.appendChild(
gameImageImg
);
gameImage.appendChild(gameImageLink);
gameListEntry.appendChild(gameImage);
const gameText =
document.createElement("div");
gameText.classList.add("gametext");
const gameTitle =
document.createElement("div");
gameTitle.classList.add("gametitle");
const gameTitleLink =
document.createElement("a");
gameTitleLink.href = `./games/${gameData.id}`;
gameTitleLink.innerText =
gameData.name;
gameTitle.appendChild(gameTitleLink);
gameText.appendChild(gameTitle);
const gameDesc =
document.createElement("div");
gameDesc.classList.add("gamedesc");
gameDesc.innerText =
gameData.description;
gameText.appendChild(gameDesc);
const gameGenre =
document.createElement("div");
gameGenre.classList.add("genre");
const gameGenreDiv =
document.createElement("div");
const gameGenreLink =
document.createElement("a");
gameGenreLink.href = "gamelist.html";
gameGenreLink.style.textTransform =
"capitalize";
gameGenreLink.innerText =
gameData.genres[0];
gameGenreDiv.appendChild(
gameGenreLink
);
gameGenre.appendChild(gameGenreDiv);
gameText.appendChild(gameGenre);
const gameLinks =
document.createElement("div");
gameLinks.classList.add("links");
const gameInfo =
document.createElement("a");
gameInfo.classList.add("buttonInfo");
gameInfo.href = "info.html";
gameLinks.appendChild(gameInfo);
const gamePlay =
document.createElement("a");
gamePlay.classList.add(
"buttonPlaySmall"
);
gamePlay.href = `./games/${gameData.id}`;
gamePlay.innerText = "Play";
gameLinks.appendChild(gamePlay);
gameText.appendChild(gameLinks);
gameListEntry.appendChild(gameText);
document
.getElementById("gamesBegin")
.appendChild(gameListEntry);
}
}
);
</script>
<!-- Example of what it looked like in pure HTML
<div class="gamelistentry">
<div class="gameimage">
<a onclick="suffixize(this)" href="arcanistsmulti/play.html">
<img src="img/images/game/arcanistsmulti/small.jpg" alt="" />
</a>
</div>
<div class="gametext">
<div class="gametitle">
<a onclick="suffixize(this)" href="arcanistsmulti/play.html">Arcanists</a>
</div>
<div class="gamedesc">
Magic and mayhem-filled multiplayer
matches.
</div>
<div class="genre">
<div>
<a href="gamelist.html">Strategy</a>
</div>
</div>
<div class="links">
<a class="buttonInfo" href="info.html"></a>
<a onclick="suffixize(this)" class="buttonPlaySmall"
href="arcanistsmulti/play.html">Play</a>
</div>
</div>
</div>
-->
<br class="clear" />
</div>
</div>
</div>
</div>
<div class="sectionFooter">
<div></div>
</div>
</div>
</div>
</div>
</div>
<div id="copyRight">
<div id="languagefooter">
Quick Links:&nbsp;
<a href="https://forum.2009scape.org/"
><img
alt="Forums"
src="img/forum/icons/suggestions_comments.gif"
/>Forums</a
>
<a href="https://discord.gg/YY7WSttN7H"
><img
alt="Discord"
src="img/forum/icons/forum_recent_updates.gif"
/>Discord</a
>
<a href="https://2009scape.org/"
><img
alt="2009scape.org"
src="img/forum/icons/forum_jmod_clans.gif"
/>2009scape</a
>
<a href="./index.html"
><img
alt="Funorb home"
src="img/forum/icons/platform.gif"
/>Funorb</a
>
</div>
<div class="cr">
<p>
Copyright &copy; 2023 under AGPL.
<strong
>2009Scape is not affiliated with RuneScape or Jagex
Ltd.</strong
><br />
</p>
<p>
Use of our Game's source code is subject to our
<a href="/site/terms"
>Terms &amp; Conditions</a
>
and
<a href="/site/privacy">Privacy Policy</a
>.<br />
</p>
</div>
<div id="jagex">
<a href="/" target="_blank">
<img
src="/site/2009scape-resources/img/branding/logo-footer-dark.webp"
width="110"
height="33"
alt="2009Scape Logo"
/>
</a>
</div>
</div>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>